Skip to content

Commit e8281ed

Browse files
committed
Trying with simple copy
1 parent ecee094 commit e8281ed

File tree

2 files changed

+56
-8
lines changed

2 files changed

+56
-8
lines changed

easybuild/framework/easyblock.py

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,19 @@ def __init__(self, ec, logfile=None):
191191
self.cfg = ec
192192
else:
193193
raise EasyBuildError("Value of incorrect type passed to EasyBlock constructor: %s ('%s')", type(ec), ec)
194+
195+
# are we running in developer mode?
196+
self.developer = build_option('developer')
197+
198+
# This is needed in case custom easyblocks do a reparse of the EC file (e.g. quantum espresso)
199+
if self.developer and not self.version.endswith('-dev'):
200+
old_vers = ec['version']
201+
new_vers = old_vers + '-dev'
202+
ec['version'] = new_vers
203+
for key in ['short_mod_name', 'full_mod_name']:
204+
prev = getattr(ec, key)
205+
new = prev.replace(f'/{old_vers}', f'/{new_vers}')
206+
setattr(ec, key, new)
194207

195208
# modules interface with default MODULEPATH
196209
self.modules_tool = self.cfg.modules_tool
@@ -2792,15 +2805,29 @@ def extract_step(self):
27922805
"""
27932806
Unpack the source files.
27942807
"""
2795-
for src in self.src:
2796-
self.log.info("Unpacking source %s" % src['name'])
2797-
srcdir = extract_file(src['path'], self.builddir, cmd=src['cmd'],
2798-
extra_options=self.cfg['unpack_options'], change_into_dir=False)
2799-
change_dir(srcdir)
2800-
if srcdir:
2801-
self.src[self.src.index(src)]['finalpath'] = srcdir
2808+
developer_pth = self.developer
2809+
if developer_pth:
2810+
if self.start_dir:
2811+
dst_name = self.start_dir
28022812
else:
2803-
raise EasyBuildError("Unpacking source %s failed", src['name'])
2813+
dst_name = os.path.basename(developer_pth)
2814+
dest = os.path.join(self.builddir, dst_name)
2815+
copy_dir(
2816+
developer_pth, dest,
2817+
ignore=lambda pth,elem: [_ for _ in elem if _ in ['.git', '.svn', '.hg']]
2818+
)
2819+
self.cfg['start_dir'] = dest
2820+
self.log.info("Content of develop path %s copied to %s (new start_dir)", developer_pth, dest)
2821+
else:
2822+
for src in self.src:
2823+
self.log.info("Unpacking source %s" % src['name'])
2824+
srcdir = extract_file(src['path'], self.builddir, cmd=src['cmd'],
2825+
extra_options=self.cfg['unpack_options'], change_into_dir=False)
2826+
change_dir(srcdir)
2827+
if srcdir:
2828+
self.src[self.src.index(src)]['finalpath'] = srcdir
2829+
else:
2830+
raise EasyBuildError("Unpacking source %s failed", src['name'])
28042831

28052832
def patch_step(self, beginpath=None, patches=None):
28062833
"""
@@ -4192,6 +4219,12 @@ def skip_step(self, step, skippable):
41924219
skip_test_step = build_option('skip_test_step')
41934220
skipsteps = self.cfg['skipsteps']
41944221

4222+
developer_skip = (
4223+
FETCH_STEP,
4224+
PATCH_STEP,
4225+
EXTENSIONS_STEP,
4226+
)
4227+
41954228
# under --skip, sanity check is not skipped
41964229
cli_skip = self.skip and step != SANITYCHECK_STEP
41974230

@@ -4227,6 +4260,9 @@ def skip_step(self, step, skippable):
42274260
elif skip_test_step and step == TEST_STEP:
42284261
self.log.info("Skipping %s step as requested via skip-test-step", step)
42294262
skip = True
4263+
elif self.developer and step in developer_skip:
4264+
self.log.info("Skipping %s step because of --developer", step)
4265+
skip = True
42304266

42314267
else:
42324268
msg = "Not skipping %s step (skippable: %s, skip: %s, skipsteps: %s, module_only: %s, force: %s, "

easybuild/main.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,18 @@ def process_eb_args(eb_args, eb_go, cfg_settings, modtool, testing, init_session
448448
options.inject_checksums, options.inject_checksums_to_json, options.sanity_check_only
449449
))
450450

451+
if build_option('developer'):
452+
for ec in easyconfigs:
453+
_ec = ec['ec']
454+
old_vers = _ec['version']
455+
new_vers = old_vers + '-dev'
456+
_ec['version'] = new_vers
457+
for key in ['short_mod_name', 'full_mod_name']:
458+
prev = getattr(_ec, key)
459+
new = prev.replace(f'/{old_vers}', f'/{new_vers}')
460+
ec[key] = new
461+
setattr(_ec, key, new)
462+
451463
# skip modules that are already installed unless forced, or unless an option is used that warrants not skipping
452464
if not keep_available_modules:
453465
retained_ecs = skip_available(easyconfigs, modtool)

0 commit comments

Comments
 (0)