|
| 1 | +#!/usr/bin/env python3 |
| 2 | + |
1 | 3 | import argparse |
2 | 4 | import bz2 |
3 | 5 | import glob |
|
14 | 16 |
|
15 | 17 | The script |
16 | 18 | - Determines all software that was installed in the reference prefix |
17 | | - - Sorts it in order of installation. For software that was later rebuild, the original installation time is used. |
| 19 | + - Sorts it in order of installation. For software that was later rebuilt, the original installation time is used. |
18 | 20 | - In the installation order, easyconfig names are added to easystack files |
19 | | - - A new easystack file is started when either the easybuild version to be used changes, or when the maximum build |
| 21 | + - A new easystack file is started when either the EasyBuild version to be used changes, or when the maximum build |
20 | 22 | time is exceeded (build times of the software in the reference software subdir are used to estimate this) |
21 | 23 |
|
22 | | -By sticking to the original order in which software was installed, using the robot should not be needed. Since nothing |
| 24 | +By sticking to the original order in which software was installed, using the robot option should not be needed. Since nothing |
23 | 25 | is installed by the robot, one is able to guarantee that the same easyconfigs and easyblocks are used that were |
24 | 26 | used during original installation time. |
25 | 27 |
|
|
29 | 31 | Example: |
30 | 32 |
|
31 | 33 | python3 eessi_software_reproduce_stack.py --reference-software-subdir=x86_64/amd/zen2 --eessi-version 2025.06 |
32 | | -
|
33 | 34 | will create easystacks that allow you to replicate the software installed in |
34 | 35 | /cvmfs/software.eessi.io/versions/2025.06/<eessi-version>/software/linux/<reference-software-subdir>, |
35 | | -provided the logs of these installations where backed up to |
| 36 | +provided the logs of these installations were backed up to |
36 | 37 | /cvmfs/software.eessi.io/versions/2025.06/<eessi-version>/software/linux/<reference-software-subdir>/reprod |
37 | 38 | (which was standard practice starting with EESSI version 2025.06). |
38 | 39 |
|
@@ -204,8 +205,7 @@ def inner_loop(software_name): |
204 | 205 |
|
205 | 206 | # Each worker in the pool creates its own software info dict. The result of the map function is a list of these dicts |
206 | 207 | # Here, we merge all these dicts into one. Note that we know the keys to be unique, so no risk of clashes |
207 | | - |
208 | | -software_info = {k: v for d in software_info_list if d for k, v in d.items()} # laatste dict bepaalt de waarde |
| 208 | +software_info = {k: v for d in software_info_list if d for k, v in d.items()} |
209 | 209 | print(f"Gathered information for {len(software_info)} software installations (including versions) in {root_dir}") |
210 | 210 | if args.debug: |
211 | 211 | import pprint |
|
0 commit comments