Skip to content
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
95ee3ec
Allow running julia package tests in a dedicated test_step
Crivella May 1, 2026
986870a
WIP
Crivella May 5, 2026
a9dfae3
WIP
Crivella May 6, 2026
17f1341
WIP - Use `Pkg.instantiate()` which removes the need to define a `mai…
Crivella May 7, 2026
82ae123
Implement test_dependencies
Crivella May 7, 2026
a980e1e
Add possibility to also have test-only dependencies
Crivella Jun 3, 2026
8fb7dd3
Add tests from 4122
Crivella Jun 4, 2026
53665af
Lint
Crivella Jun 4, 2026
8056a50
Add check to avoid duplicate cache from deps packages
Crivella Jun 4, 2026
c325f44
Improve sanity checks
Crivella Jun 4, 2026
b7754a3
Fix default EB to `JuliaPackage` to disable autodetection
Crivella Jun 5, 2026
3fadc3b
Handle DEPOT_PATH and LOAD_PATH in Julia's site startup script
Crivella Jun 5, 2026
3665035
lint
Crivella Jun 5, 2026
48d9bf3
Remove manual handling of TOML files
Crivella Jun 8, 2026
f9f1d89
Allow cache recompilation by other packages
Crivella Jun 8, 2026
53c8eef
Remove `subpackage_dirs` and `is_test_dependency` in favor of `start_…
Crivella Jun 8, 2026
e94a2b9
Check for all conflicts before failing
Crivella Jun 9, 2026
a3cc48a
Re-add possibility to have test-only deps with proper checks and remo…
Crivella Jun 9, 2026
a401696
Check for compile_cache only for Julia >= 1.8
Crivella Jun 9, 2026
df08e0a
Move compilation+build to `build_step` and allow `test_step` to be sk…
Crivella Jun 9, 2026
3c3b3cb
Automatically create and checks for safety wrappers
Crivella Jun 9, 2026
8560b91
lint
Crivella Jun 9, 2026
bedbc76
lint
Crivella Jun 9, 2026
82f8900
Clearer attribute name
Crivella Jun 9, 2026
cc6602f
Fix docstrings
Crivella Jun 9, 2026
db0bdc5
Update easybuild/easyblocks/generic/juliapackage.py
Crivella Jun 10, 2026
8441e74
Improve typehints and docstrings
Crivella Jun 10, 2026
6e5f0c4
Missing author
Crivella Jun 10, 2026
482c8fb
Move check into JuliaPackage
Crivella Jun 10, 2026
beaa68f
Allow both online and offline tests
Crivella Jun 10, 2026
764e925
Bundle itself should not be treated as an extension in the sanity che…
Crivella Jun 10, 2026
e100f57
lint
Crivella Jun 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 12 additions & 15 deletions easybuild/easyblocks/generic/juliabundle.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@
"""
import os

from easybuild.tools.build_log import EasyBuildError
from easybuild.easyblocks.generic.bundle import Bundle
from easybuild.easyblocks.generic.juliapackage import EXTS_FILTER_JULIA_PACKAGES, JuliaPackage
from easybuild.easyblocks.generic.juliapackage import JuliaPackage


class JuliaBundle(Bundle, JuliaPackage):
Expand All @@ -53,7 +54,13 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.cfg['exts_defaultclass'] = 'JuliaPackage'
self.cfg['exts_filter'] = EXTS_FILTER_JULIA_PACKAGES
# Ensure that Julia packages such as LLVM do not try to use the EB_LLVM easyblock
# many packages have names that overlap with EB easyblocks, and would end up using them as default class for
# extensions, which is not what we want here. We force to always use JuliaPackage unless explicitly specified
# otherwise in the easyconfig file.
self.cfg['exts_default_options'] = {
'easyblock': 'JuliaPackage',
}

# need to disable templating to ensure that actual value for exts_default_options is updated...
with self.cfg.disable_templating():
Expand All @@ -74,16 +81,10 @@ def __init__(self, *args, **kwargs):
}
]

self.log.info("exts_default_options: %s", self.cfg['exts_default_options'])

def prepare_step(self, *args, **kwargs):
"""Prepare for installing bundle of Julia packages."""
super().prepare_step(*args, **kwargs)
if self.cfg['is_test_dependency']:
Comment thread
Crivella marked this conversation as resolved.
Outdated
raise EasyBuildError("Test dependencies can only be defined as an extension, not as a bundle itself")

def install_step(self):
"""Prepare installation environment and dd all dependencies to project environment."""
self.prepare_julia_env()
self.include_pkg_dependencies()
self.log.info("exts_default_options: %s", self.cfg['exts_default_options'])

def sanity_check_step(self, *args, **kwargs):
"""Custom sanity check for bundle of Julia packages"""
Expand All @@ -92,7 +93,3 @@ def sanity_check_step(self, *args, **kwargs):
'dirs': [os.path.join('packages', self.name)],
}
super().sanity_check_step(custom_paths=custom_paths)

def make_module_extra(self, *args, **kwargs):
"""Custom module environment from JuliaPackage"""
return super().make_module_extra(*args, **kwargs)
Loading
Loading