You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem description
Hi. Recently, I have been making two compilations with common dependencies on the same filesystem, utilizing the robot, wait-on-lock-limit and wait-on-lock-interval features. The first process got to a point where it had to wait for the other to release the lock, i. e. the second process was currently compiling the first process' required dependency. After the lock was released, EasyBuild rebuilt said dependency instead of checking first whether the dependency is satisfied, which is not at all something I understood from the description of wait-on-lock-limit and wait-on-lock-interval functions (eb --confighelp) or from the documentation.
Begin compiling your required software whose dependency you are compiling at 1).
After 1) releases its lock, 2) recompiles the dependency and then proceeds as normal.
Attempt at reproduction
Dependency compilation:
easybuild@cn80:/apps/easybuild/easyconfigs-develop/easybuild/easyconfigs/i/ICU [develop]$ eb ICU-71.1-GCCcore-11.3.0.eb== Temporary log file in case of crash /tmp/eb-3m7i4sxe/easybuild-vu_k4r3v.log== resolving dependencies ...No conflicts detected!== Temporary log file(s) /tmp/eb-3m7i4sxe/easybuild-vu_k4r3v.log* have been removed.== Temporary directory /tmp/eb-3m7i4sxe has been removed.== Temporary log file in case of crash /tmp/eb-uxxfcco3/easybuild-pq_i0i3k.log== resolving dependencies ...== processing EasyBuild easyconfig /apps/easybuild/easyconfigs-develop/easybuild/easyconfigs/i/ICU/ICU-71.1-GCCcore-11.3.0.eb== building and installing ICU/71.1-GCCcore-11.3.0... >> installation prefix: /apps/all/ICU/71.1-GCCcore-11.3.0== fetching files... >> download succeeded: https://github.com/unicode-org/icu/releases/download/release-71-1/icu4c-71_1-src.tgz >> sources: >> /mnt/proj3/easybuild/sources/i/ICU/icu4c-71_1-src.tgz [SHA256: 67a7e6e51f61faf1306b6935333e13b2c48abd8da6d2f46ce6adca24b1e21ebf]== ... (took 5 secs)== creating build dir, resetting environment... >> build dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0== ... (took < 1 sec)== unpacking... >> running command: [started at: 2022-08-16 12:24:20] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0] [output logged in /tmp/eb-uxxfcco3/easybuild-run_cmd-16ry4868.log] tar xzf /mnt/proj3/easybuild/sources/i/ICU/icu4c-71_1-src.tgz >> command completed: exit 0, ran in < 1s== ... (took < 1 sec)== patching...== ... (took < 1 sec)== preparing... >> loading toolchain module: GCCcore/11.3.0 >> loading modules for build dependencies: >> * binutils/2.38-GCCcore-11.3.0 >> * Python/3.10.4-GCCcore-11.3.0-bare >> (no (runtime) dependencies specified) >> defining build environment for GCCcore/11.3.0 toolchain== ... (took 1 secs)== configuring... >> running command: [started at: 2022-08-16 12:24:22] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/eb-uxxfcco3/easybuild-run_cmd-n961zcfr.log] /mnt/proj3/easybuild/sources/generic/eb_v4.6.0/ConfigureMake/config.guess >> command completed: exit 0, ran in < 1s >> running command: [started at: 2022-08-16 12:24:22] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/eb-uxxfcco3/easybuild-run_cmd-v4f54bi9.log] ./configure --prefix=/apps/all/ICU/71.1-GCCcore-11.3.0 --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu >> command completed: exit 0, ran in 00h00m04s== ... (took 5 secs)== building... >> running command: [started at: 2022-08-16 12:24:27] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/eb-uxxfcco3/easybuild-run_cmd-gmrzxz5n.log] make -j 36 >> command completed: exit 0, ran in 00h00m26s== ... (took 26 secs)== testing...== ... (took < 1 sec)== installing... >> running command: [started at: 2022-08-16 12:24:54] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/eb-uxxfcco3/easybuild-run_cmd-rhgr8cgs.log] make install >> command completed: exit 0, ran in 00h00m01s== ... (took 1 secs)== taking care of extensions...== ... (took < 1 sec)== restore after iterating...== ... (took < 1 sec)== postprocessing...== ... (took < 1 sec)== sanity checking... >> file 'lib/libicudata.so' found: OK >> file 'lib/libicui18n.so' found: OK >> file 'lib/libicuio.so' found: OK >> file 'lib/libicutest.so' found: OK >> file 'lib/libicutu.so' found: OK >> file 'lib/libicuuc.so' found: OK >> (non-empty) directory 'bin' found: OK >> (non-empty) directory 'include/unicode' found: OK >> (non-empty) directory 'share/icu' found: OK >> (non-empty) directory 'share/man' found: OK >> loading modules: ICU/71.1-GCCcore-11.3.0...== ... (took < 1 sec)== cleaning up...== ... (took < 1 sec)== creating module... >> generating module file @ /apps/modules/all/ICU/71.1-GCCcore-11.3.0.lua== ... (took < 1 sec)== permissions...== ... (took < 1 sec)== packaging...== ... (took < 1 sec)== COMPLETED: Installation ended successfully (took 42 secs)== Results of the build can be found in the log file(s) /apps/all/ICU/71.1-GCCcore-11.3.0/easybuild/easybuild-ICU-71.1-20220816.122457.log== Build succeeded for 1 out of 1== Temporary log file(s) /tmp/eb-uxxfcco3/easybuild-pq_i0i3k.log* have been removed.== Temporary directory /tmp/eb-uxxfcco3 has been removed.
Compiling dependent software:
easybuild@cn80:/apps/easybuild/easyconfigs-develop/easybuild/easyconfigs/b/Boost [develop]$ eb Boost-1.79.0-GCC-11.3.0.eb== Temporary log file in case of crash /tmp/pbs.623215.isrv1/eb-ocne0gx1/easybuild-sb5200bi.log== resolving dependencies ...No conflicts detected!== Temporary log file(s) /tmp/pbs.623215.isrv1/eb-ocne0gx1/easybuild-sb5200bi.log* have been removed.== Temporary directory /tmp/pbs.623215.isrv1/eb-ocne0gx1 has been removed.== Temporary log file in case of crash /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-26g2hghw.log== resolving dependencies ...== processing EasyBuild easyconfig/apps/easybuild/easyconfigs-master/easybuild/easyconfigs/i/ICU/ICU-71.1-GCCcore-11.3.0.eb== building and installing ICU/71.1-GCCcore-11.3.0... >> installation prefix: /apps/all/ICU/71.1-GCCcore-11.3.0== lock /apps/easybuild/.locks/_apps_all_ICU_71.1-GCCcore-11.3.0.lock exists, waiting 60 seconds...== fetching files... >> sources: >> /mnt/proj3/easybuild/sources/i/ICU/icu4c-71_1-src.tgz [SHA256:67a7e6e51f61faf1306b6935333e13b2c48abd8da6d2f46ce6adca24b1e21ebf]== ... (took < 1 sec)== creating build dir, resetting environment... >> build dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0== ... (took < 1 sec)== unpacking... >> running command: [started at: 2022-08-16 12:25:19] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0] [output logged in /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-run_cmd-qioj6dwu.log] tar xzf /mnt/proj3/easybuild/sources/i/ICU/icu4c-71_1-src.tgz >> command completed: exit 0, ran in < 1s== ... (took < 1 sec)== patching...== ... (took < 1 sec)== preparing... >> loading toolchain module: GCCcore/11.3.0 >> loading modules for build dependencies: >> * binutils/2.38-GCCcore-11.3.0 >> * Python/3.10.4-GCCcore-11.3.0-bare >> (no (runtime) dependencies specified) >> defining build environment for GCCcore/11.3.0 toolchain== ... (took < 1 sec)== configuring... >> running command: [started at: 2022-08-16 12:25:21] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-run_cmd-1hl7yycb.log] /mnt/proj3/easybuild/sources/generic/eb_v4.6.0/ConfigureMake/config.guess >> command completed: exit 0, ran in < 1s >> running command: [started at: 2022-08-16 12:25:21] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-run_cmd-8vc0bx1e.log] ./configure --prefix=/apps/all/ICU/71.1-GCCcore-11.3.0 --build=x86_64-pc-linux-gnu--host=x86_64-pc-linux-gnu >> command completed: exit 0, ran in 00h00m03s== ... (took 3 secs)== building... >> running command: [started at: 2022-08-16 12:25:25] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-run_cmd-bdt2m7jt.log] make -j 36 >> command completed: exit 0, ran in 00h00m26s== ... (took 26 secs)== testing...== ... (took < 1 sec)== installing... >> running command: [started at: 2022-08-16 12:25:51] [working dir: /dev/shm/easybuild/build/ICU/71.1/GCCcore-11.3.0/icu/source] [output logged in /tmp/pbs.623215.isrv1/eb-77iz8xq0/easybuild-run_cmd-ancck6fk.log] make install >> command completed: exit 0, ran in 00h00m01s== ... (took 1 secs)== taking care of extensions...== ... (took < 1 sec)== restore after iterating...== ... (took < 1 sec)== postprocessing...== ... (took < 1 sec)== sanity checking... >> file 'lib/libicudata.so' found: OK >> file 'lib/libicui18n.so' found: OK >> file 'lib/libicuio.so' found: OK >> file 'lib/libicutest.so' found: OK >> file 'lib/libicutu.so' found: OK >> file 'lib/libicuuc.so' found: OK >> (non-empty) directory 'bin' found: OK >> (non-empty) directory 'include/unicode' found: OK >> (non-empty) directory 'share/icu' found: OK >> (non-empty) directory 'share/man' found: OK >> loading modules: ICU/71.1-GCCcore-11.3.0...== ... (took < 1 sec)== cleaning up...== ... (took < 1 sec)== creating module... >> generating module file @ /apps/modules/all/ICU/71.1-GCCcore-11.3.0.lua== ... (took < 1 sec)== permissions...== ... (took < 1 sec)== packaging...== ... (took < 1 sec)== COMPLETED: Installation ended successfully (took 1 min 35 secs)== Results of the build can be found in the log file(s)/apps/all/ICU/71.1-GCCcore-11.3.0/easybuild/easybuild-ICU-71.1-20220816.122554.log== processing EasyBuild easyconfig/apps/easybuild/easyconfigs-develop/easybuild/easyconfigs/b/Boost/Boost-1.79.0-GCC-11.3.0.eb== building and installing Boost/1.79.0-GCC-11.3.0...... (continues as usual) ...
Expected behavior
EasyBuild confighelp states the following:
...
# Wait interval (in seconds) to use when waiting for existing lock to be removed (type <class 'int'>; default: 60)#wait-on-lock-interval=
# Maximum amount of time (in seconds) to waituntil lock is released (0 means no waiting at all, exit with error; -1 means no waiting limit, keep waiting) (type <class 'int'>; default: 0)#wait-on-lock-limit=...
The precise behavior of these parameters is ambiguous and can lead to situations like mine; I was expecting EasyBuild to first check if the dependency was already satisfied instead of recompiling it (note that this compilation was not run with --force).
Where to reproduce
Due to the nature of the problem, it is reproducible on any system.
Additional context
We often compile software in parallel; I am not the only person at my workplace who is responsible for software. Situation described above happened to us more than once.
The text was updated successfully, but these errors were encountered:
Problem description
Hi. Recently, I have been making two compilations with common dependencies on the same filesystem, utilizing the
robot
,wait-on-lock-limit
andwait-on-lock-interval
features. The first process got to a point where it had to wait for the other to release the lock, i. e. the second process was currently compiling the first process' required dependency. After the lock was released, EasyBuild rebuilt said dependency instead of checking first whether the dependency is satisfied, which is not at all something I understood from the description ofwait-on-lock-limit
andwait-on-lock-interval
functions (eb --confighelp
) or from the documentation.Example
Steps to reproduce the behavior
Attempt at reproduction
Dependency compilation:
Compiling dependent software:
Expected behavior
EasyBuild
confighelp
states the following:The precise behavior of these parameters is ambiguous and can lead to situations like mine; I was expecting EasyBuild to first check if the dependency was already satisfied instead of recompiling it (note that this compilation was not run with --force).
Where to reproduce
Due to the nature of the problem, it is reproducible on any system.
Additional context
We often compile software in parallel; I am not the only person at my workplace who is responsible for software. Situation described above happened to us more than once.
The text was updated successfully, but these errors were encountered: