Skip to content

Commit d9e0713

Browse files
author
Alan O'Cais
committed
Also put easyblocks used by extensions in reprod directory
1 parent 4208302 commit d9e0713

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

easybuild/framework/easyblock.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3437,18 +3437,25 @@ def reproduce_build(app, reprod_dir_root):
34373437
except NotImplementedError as err:
34383438
_log.warning("Unable to dump easyconfig instance to %s: %s", reprod_spec, err)
34393439

3440-
# also archive the relevant easyblocks
3440+
# also archive all the relevant easyblocks (including any used by extensions)
34413441
reprod_easyblock_dir = os.path.join(reprod_dir, 'easyblocks')
3442-
for easyblock_class in inspect.getmro(type(app)):
3443-
easyblock_path = inspect.getsourcefile(easyblock_class)
3444-
easyblock_basedir, easyblock_filename = os.path.split(easyblock_path)
3445-
# if we reach EasyBlock or ExtensionEasyBlock class, we are done
3446-
# (ExtensionEasyblock is hardcoded to avoid a cyclical import)
3447-
if easyblock_class.__name__ in [EasyBlock.__name__, 'ExtensionEasyBlock']:
3448-
break
3449-
else:
3450-
copy_file(easyblock_path, os.path.join(reprod_easyblock_dir, easyblock_filename))
3451-
_log.info("Dumped easyblock %s required for reproduction to %s", easyblock_filename, reprod_easyblock_dir)
3442+
easyblock_instances = [app] + app.ext_instances
3443+
easyblock_paths = set()
3444+
for easyblock_instance in easyblock_instances:
3445+
for easyblock_class in inspect.getmro(type(easyblock_instance)):
3446+
easyblock_path = inspect.getsourcefile(easyblock_class)
3447+
easyblock_basedir, easyblock_filename = os.path.split(easyblock_path)
3448+
# if we reach EasyBlock or ExtensionEasyBlock class, we are done
3449+
# (ExtensionEasyblock is hardcoded to avoid a cyclical import)
3450+
if easyblock_class.__name__ in [EasyBlock.__name__, 'ExtensionEasyBlock']:
3451+
break
3452+
else:
3453+
easyblock_paths.add(easyblock_path)
3454+
for easyblock_path in easyblock_paths:
3455+
copy_file(easyblock_path, os.path.join(reprod_easyblock_dir, easyblock_filename))
3456+
_log.info("Dumped easyblock %s required for reproduction to %s", easyblock_filename, reprod_easyblock_dir)
3457+
3458+
34523459

34533460
# if there is a hook file we should also archive it
34543461
hooks_path = build_option('hooks')

0 commit comments

Comments
 (0)