easybuild-framework 5.1.2__tar.gz → 5.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (676) hide show
  1. {easybuild_framework-5.1.2/easybuild_framework.egg-info → easybuild_framework-5.2.0}/PKG-INFO +2 -1
  2. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/RELEASE_NOTES +54 -0
  3. easybuild_framework-5.2.0/contrib/hooks/bumpOpenSSL.py +26 -0
  4. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/exceptions.py +24 -12
  5. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/fancylogger.py +3 -3
  6. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/generaloption.py +11 -8
  7. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/testing.py +19 -0
  8. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/wrapper.py +1 -1
  9. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyblock.py +43 -12
  10. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/default.py +1 -1
  11. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/easyconfig.py +9 -7
  12. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/templates.py +35 -4
  13. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/types.py +1 -1
  14. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/main.py +41 -15
  15. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/rpath_args.py +13 -1
  16. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/gcc.py +8 -0
  17. easybuild_framework-5.2.0/easybuild/toolchains/compiler/llvm_compilers.py +193 -0
  18. easybuild_framework-5.1.2/easybuild/toolchains/compiler/nvhpc.py → easybuild_framework-5.2.0/easybuild/toolchains/compiler/nvidia_compilers.py +5 -6
  19. easybuild_framework-5.2.0/easybuild/toolchains/lfbf.py +44 -0
  20. easybuild_framework-5.2.0/easybuild/toolchains/lfoss.py +88 -0
  21. easybuild_framework-5.2.0/easybuild/toolchains/linalg/nvblas.py +49 -0
  22. easybuild_framework-5.2.0/easybuild/toolchains/linalg/nvscalapack.py +57 -0
  23. easybuild_framework-5.2.0/easybuild/toolchains/llvm_compilers.py +45 -0
  24. easybuild_framework-5.2.0/easybuild/toolchains/lmpflf.py +45 -0
  25. easybuild_framework-5.2.0/easybuild/toolchains/lmpich.py +41 -0
  26. easybuild_framework-5.2.0/easybuild/toolchains/lompi.py +60 -0
  27. easybuild_framework-5.2.0/easybuild/toolchains/mpi/nvhpcx.py +55 -0
  28. easybuild_framework-5.2.0/easybuild/toolchains/nvhpc.py +47 -0
  29. easybuild_framework-5.1.2/easybuild/toolchains/nvhpc.py → easybuild_framework-5.2.0/easybuild/toolchains/nvidia_compilers.py +6 -4
  30. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/nvompi.py +5 -3
  31. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/nvompic.py +4 -4
  32. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/nvpsmpi.py +3 -3
  33. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/nvpsmpic.py +4 -4
  34. easybuild_framework-5.2.0/easybuild/tools/_toml_writer/__init__.py +4 -0
  35. easybuild_framework-5.2.0/easybuild/tools/_toml_writer/_writer.py +224 -0
  36. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/build_log.py +17 -11
  37. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/config.py +2 -1
  38. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/docs.py +2 -2
  39. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/filetools.py +38 -10
  40. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/github.py +25 -14
  41. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_generator.py +37 -8
  42. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/modules.py +6 -4
  43. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/options.py +14 -10
  44. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/gitrepo.py +3 -3
  45. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/run.py +33 -24
  46. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/systemtools.py +44 -1
  47. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/testing.py +13 -9
  48. easybuild_framework-5.2.0/easybuild/tools/tomllib/__init__.py +7 -0
  49. easybuild_framework-5.2.0/easybuild/tools/tomllib/tomli/__init__.py +8 -0
  50. easybuild_framework-5.2.0/easybuild/tools/tomllib/tomli/_parser.py +772 -0
  51. easybuild_framework-5.2.0/easybuild/tools/tomllib/tomli/_re.py +111 -0
  52. easybuild_framework-5.2.0/easybuild/tools/tomllib/tomli/_types.py +10 -0
  53. easybuild_framework-5.2.0/easybuild/tools/tomllib/tomli/py.typed +1 -0
  54. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/compiler.py +1 -0
  55. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/mpi.py +1 -0
  56. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/toolchain.py +76 -29
  57. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/variables.py +3 -3
  58. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/version.py +1 -1
  59. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0/easybuild_framework.egg-info}/PKG-INFO +2 -1
  60. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild_framework.egg-info/SOURCES.txt +25 -1
  61. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/setup.cfg +3 -4
  62. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/setup.py +20 -1
  63. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/build_log.py +22 -14
  64. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/config.py +0 -7
  65. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyblock.py +140 -22
  66. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfig.py +106 -52
  67. easybuild_framework-5.2.0/test/framework/easyconfigs/test_ecs/b/binutils/binutils-2.40-GCCcore-12.3.0.eb +14 -0
  68. easybuild_framework-5.2.0/test/framework/easyconfigs/test_ecs/g/GCC/GCC-12.3.0.eb +21 -0
  69. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCCcore/GCCcore-12.3.0.eb +5 -1
  70. easybuild_framework-5.2.0/test/framework/easyconfigs/test_ecs/g/gompi/gompi-2023a.eb +20 -0
  71. easybuild_framework-5.2.0/test/framework/easyconfigs/test_ecs/o/OpenMPI/OpenMPI-4.1.5-GCC-12.3.0.eb +13 -0
  72. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigversion.py +6 -4
  73. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/filetools.py +15 -6
  74. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/general.py +40 -0
  75. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/github.py +50 -35
  76. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/hooks.py +1 -1
  77. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/module_generator.py +60 -1
  78. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules.py +3 -5
  79. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/options.py +133 -101
  80. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/repository.py +4 -2
  81. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/run.py +15 -23
  82. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/toy.py +1 -1
  83. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/style.py +1 -1
  84. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/systemtools.py +80 -25
  85. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/toolchain.py +27 -14
  86. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/toy_build.py +19 -30
  87. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/tweak.py +2 -2
  88. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/utilities.py +44 -19
  89. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/CONTRIBUTING.md +0 -0
  90. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/LICENSE +0 -0
  91. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/MANIFEST.in +0 -0
  92. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/README.rst +0 -0
  93. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/contrib/hooks/README.rst +0 -0
  94. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/contrib/hooks/add_delete_configopt.py +0 -0
  95. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/contrib/hooks/hpc2n_hooks.py +0 -0
  96. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/__init__.py +0 -0
  97. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/_deprecated.py +0 -0
  98. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/__init__.py +0 -0
  99. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/frozendict.py +0 -0
  100. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/optcomplete.py +0 -0
  101. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/base/rest.py +0 -0
  102. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/__init__.py +0 -0
  103. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/__init__.py +0 -0
  104. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/constants.py +0 -0
  105. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/__init__.py +0 -0
  106. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/convert.py +0 -0
  107. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/format.py +0 -0
  108. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/one.py +0 -0
  109. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/pyheaderconfigobj.py +0 -0
  110. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/two.py +0 -0
  111. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/format/version.py +0 -0
  112. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/licenses.py +0 -0
  113. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/parser.py +0 -0
  114. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/style.py +0 -0
  115. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/tools.py +0 -0
  116. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easyconfig/tweak.py +0 -0
  117. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/easystack.py +0 -0
  118. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/extension.py +0 -0
  119. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/framework/extensioneasyblock.py +0 -0
  120. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/EasyBuild-reinstall-dev.sh +0 -0
  121. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/clean_gists.py +0 -0
  122. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/createSubmoduleDeps.sh +0 -0
  123. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/findPythonDeps.py +0 -0
  124. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/findUpdatedEcs.sh +0 -0
  125. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/fix_docs.py +0 -0
  126. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/install-EasyBuild-develop.sh +0 -0
  127. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/install-EasyBuild-sprint.sh +0 -0
  128. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/install_eb_dep.sh +0 -0
  129. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/mk_tmpl_easyblock_for.py +0 -0
  130. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/rpath_wrapper_template.sh.in +0 -0
  131. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/scripts/update-EasyBuild-develop.sh +0 -0
  132. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/__init__.py +0 -0
  133. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgmpich.py +0 -0
  134. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgmpolf.py +0 -0
  135. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgmvapich2.py +0 -0
  136. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgmvolf.py +0 -0
  137. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgompi.py +0 -0
  138. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/cgoolf.py +0 -0
  139. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/clanggcc.py +0 -0
  140. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/__init__.py +0 -0
  141. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/clang.py +0 -0
  142. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/craype.py +0 -0
  143. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/cuda.py +0 -0
  144. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/fujitsu.py +0 -0
  145. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/ibmxl.py +0 -0
  146. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/intel_compilers.py +0 -0
  147. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/inteliccifort.py +0 -0
  148. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/pgi.py +0 -0
  149. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/compiler/systemcompiler.py +0 -0
  150. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/craycce.py +0 -0
  151. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/craygnu.py +0 -0
  152. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/crayintel.py +0 -0
  153. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/craypgi.py +0 -0
  154. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fcc.py +0 -0
  155. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/ffmpi.py +0 -0
  156. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fft/__init__.py +0 -0
  157. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fft/fftw.py +0 -0
  158. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fft/fujitsufftw.py +0 -0
  159. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fft/intelfftw.py +0 -0
  160. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/foss.py +0 -0
  161. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fosscuda.py +0 -0
  162. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/fujitsu.py +0 -0
  163. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gcc.py +0 -0
  164. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gcccore.py +0 -0
  165. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gcccuda.py +0 -0
  166. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gfbf.py +0 -0
  167. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gimkl.py +0 -0
  168. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gimpi.py +0 -0
  169. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gimpic.py +0 -0
  170. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/giolf.py +0 -0
  171. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/giolfc.py +0 -0
  172. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmacml.py +0 -0
  173. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmkl.py +0 -0
  174. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmklc.py +0 -0
  175. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmpflf.py +0 -0
  176. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmpich.py +0 -0
  177. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmpich2.py +0 -0
  178. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmpit.py +0 -0
  179. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmpolf.py +0 -0
  180. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmvapich2.py +0 -0
  181. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gmvolf.py +0 -0
  182. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gnu.py +0 -0
  183. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/goalf.py +0 -0
  184. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gobff.py +0 -0
  185. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/goblf.py +0 -0
  186. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gofbf.py +0 -0
  187. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/golf.py +0 -0
  188. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/golfc.py +0 -0
  189. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gomkl.py +0 -0
  190. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gomklc.py +0 -0
  191. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gompi.py +0 -0
  192. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gompic.py +0 -0
  193. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/goolf.py +0 -0
  194. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/goolfc.py +0 -0
  195. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gpsmpi.py +0 -0
  196. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gpsolf.py +0 -0
  197. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gqacml.py +0 -0
  198. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gsmpi.py +0 -0
  199. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/gsolf.py +0 -0
  200. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iccifort.py +0 -0
  201. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iccifortcuda.py +0 -0
  202. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/ictce.py +0 -0
  203. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/ifbf.py +0 -0
  204. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iibff.py +0 -0
  205. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iimkl.py +0 -0
  206. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iimklc.py +0 -0
  207. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iimpi.py +0 -0
  208. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iimpic.py +0 -0
  209. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iiqmpi.py +0 -0
  210. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/impich.py +0 -0
  211. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/impmkl.py +0 -0
  212. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/intel-para.py +0 -0
  213. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/intel.py +0 -0
  214. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/intel_compilers.py +0 -0
  215. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/intelcuda.py +0 -0
  216. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iofbf.py +0 -0
  217. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iomkl.py +0 -0
  218. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iomklc.py +0 -0
  219. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iompi.py +0 -0
  220. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iompic.py +0 -0
  221. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/ipsmpi.py +0 -0
  222. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/iqacml.py +0 -0
  223. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/ismkl.py +0 -0
  224. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/__init__.py +0 -0
  225. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/acml.py +0 -0
  226. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/atlas.py +0 -0
  227. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/blacs.py +0 -0
  228. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/blis.py +0 -0
  229. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/flame.py +0 -0
  230. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/flexiblas.py +0 -0
  231. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/fujitsussl.py +0 -0
  232. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/gotoblas.py +0 -0
  233. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/intelmkl.py +0 -0
  234. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/lapack.py +0 -0
  235. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/libsci.py +0 -0
  236. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/openblas.py +0 -0
  237. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/linalg/scalapack.py +0 -0
  238. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/__init__.py +0 -0
  239. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/craympich.py +0 -0
  240. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/fujitsumpi.py +0 -0
  241. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/intelmpi.py +0 -0
  242. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/mpich.py +0 -0
  243. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/mpich2.py +0 -0
  244. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/mpitrampoline.py +0 -0
  245. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/mvapich2.py +0 -0
  246. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/openmpi.py +0 -0
  247. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/psmpi.py +0 -0
  248. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/qlogicmpi.py +0 -0
  249. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/mpi/spectrummpi.py +0 -0
  250. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/nvofbf.py +1 -1
  251. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/pgi.py +0 -0
  252. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/pmkl.py +0 -0
  253. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/pomkl.py +0 -0
  254. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/pompi.py +0 -0
  255. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/system.py +0 -0
  256. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/xlcxlf.py +0 -0
  257. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/xlmpich.py +0 -0
  258. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/xlmpich2.py +0 -0
  259. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/xlmvapich2.py +0 -0
  260. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/toolchains/xlompi.py +0 -0
  261. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/__init__.py +0 -0
  262. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/asyncprocess.py +0 -0
  263. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/build_details.py +0 -0
  264. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/configobj.py +0 -0
  265. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/__init__.py +0 -0
  266. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/apptainer.py +0 -0
  267. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/base.py +0 -0
  268. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/common.py +0 -0
  269. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/docker.py +0 -0
  270. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/singularity.py +0 -0
  271. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/containers/utils.py +0 -0
  272. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/convert.py +0 -0
  273. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/deprecated/__init__.py +0 -0
  274. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/environment.py +0 -0
  275. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/hooks.py +0 -0
  276. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/include.py +0 -0
  277. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/jenkins.py +0 -0
  278. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/job/__init__.py +0 -0
  279. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/job/backend.py +0 -0
  280. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/job/gc3pie.py +0 -0
  281. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/job/pbs_python.py +0 -0
  282. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/job/slurm.py +0 -0
  283. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/loose_version.py +0 -0
  284. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/__init__.py +0 -0
  285. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/categorized_hmns.py +0 -0
  286. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/categorized_mns.py +0 -0
  287. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/easybuild_mns.py +0 -0
  288. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/hierarchical_mns.py +0 -0
  289. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/migrate_from_eb_to_hmns.py +0 -0
  290. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/mns.py +0 -0
  291. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/toolchain.py +0 -0
  292. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/module_naming_scheme/utilities.py +0 -0
  293. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/multidiff.py +0 -0
  294. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/output.py +0 -0
  295. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/__init__.py +0 -0
  296. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/package_naming_scheme/__init__.py +0 -0
  297. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/package_naming_scheme/easybuild_deb_friendly_pns.py +0 -0
  298. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/package_naming_scheme/easybuild_pns.py +0 -0
  299. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/package_naming_scheme/pns.py +0 -0
  300. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/package/utilities.py +0 -0
  301. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/parallelbuild.py +0 -0
  302. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/py2vs3/__init__.py +0 -0
  303. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/py2vs3/py3.py +0 -0
  304. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/__init__.py +0 -0
  305. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/filerepo.py +0 -0
  306. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/hgrepo.py +0 -0
  307. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/repository.py +0 -0
  308. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/repository/svnrepo.py +0 -0
  309. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/robot.py +0 -0
  310. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/__init__.py +0 -0
  311. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/constants.py +0 -0
  312. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/fft.py +0 -0
  313. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/linalg.py +0 -0
  314. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/options.py +0 -0
  315. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/toolchainvariables.py +0 -0
  316. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/utilities.py +0 -0
  317. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/toolchain/variables.py +0 -0
  318. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild/tools/utilities.py +0 -0
  319. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild_framework.egg-info/dependency_links.txt +0 -0
  320. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/easybuild_framework.egg-info/top_level.txt +0 -0
  321. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/eb +0 -0
  322. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/eb_bash_completion.bash +0 -0
  323. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/eb_bash_completion_local.bash +0 -0
  324. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/etc/cray_external_modules_metadata.cfg +0 -0
  325. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/etc/ohpc_external_modules_metadata.cfg +0 -0
  326. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/minimal_bash_completion.bash +0 -0
  327. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/optcomplete.bash +0 -0
  328. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/__init__.py +0 -0
  329. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/__init__.py +0 -0
  330. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/asyncprocess.py +0 -0
  331. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/containers.py +0 -0
  332. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/docs.py +0 -0
  333. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigformat.py +0 -0
  334. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigparser.py +0 -0
  335. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/__archive__/i/intel/intel-2012a.eb +0 -0
  336. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/b/binutils/binutils-2.25-GCCcore-4.9.3.eb +0 -0
  337. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/b/binutils/binutils-2.26-GCCcore-4.9.3.eb +0 -0
  338. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/b/bzip2/bzip2-1.0.6-GCC-4.9.2.eb +0 -0
  339. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/CUDA/CUDA-10.1.243-iccifort-2019.4.243.eb +0 -0
  340. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/CUDA/CUDA-5.5.22-iccifort-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  341. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/CUDA/CUDA-5.5.22.eb +0 -0
  342. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/CUDA/CUDA-9.1.85-GCC-6.4.0-2.28.eb +0 -0
  343. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/CrayCCE/CrayCCE-5.1.29.eb +0 -0
  344. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/c/cpeGNU/cpeGNU-21.04.eb +0 -0
  345. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/FFTW/FFTW-3.3.3-GCC-4.8.2-serial.eb +0 -0
  346. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/FFTW/FFTW-3.3.7-GCC-6.4.0-2.28-serial.eb +0 -0
  347. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/FFTW/FFTW-3.3.7-gompi-2018a.eb +0 -0
  348. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/FFTW/FFTW-3.3.7-gompic-2018a.eb +0 -0
  349. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/foss/foss-2018a-broken.eb +0 -0
  350. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/foss/foss-2018a.eb +0 -0
  351. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/f/fosscuda/fosscuda-2018a.eb +0 -0
  352. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-10.2.0.eb +0 -0
  353. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.6.3.eb +0 -0
  354. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.6.4.eb +0 -0
  355. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.8.2.eb +0 -0
  356. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.8.3.eb +0 -0
  357. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.9.2.eb +0 -0
  358. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.9.3-2.25.eb +0 -0
  359. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-4.9.3-2.26.eb +0 -0
  360. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-6.4.0-2.28.eb +0 -0
  361. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCC/GCC-7.3.0-2.30.eb +0 -0
  362. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GCCcore/GCCcore-4.9.3.eb +0 -0
  363. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/GLib/GLib-2.77.1-GCCcore-12.3.0.eb +0 -0
  364. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gcccuda/gcccuda-2018a.eb +0 -0
  365. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gettext/gettext-0.21.1-GCCcore-12.3.0.eb +0 -0
  366. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gmvapich2/gmvapich2-15.11.eb +0 -0
  367. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/golf/golf-2018a.eb +0 -0
  368. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/golfc/golfc-2018a.eb +0 -0
  369. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gompi/gompi-2018a.eb +0 -0
  370. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gompi/gompi-2018b.eb +0 -0
  371. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gompic/gompic-2018a.eb +0 -0
  372. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.4-GCC-4.6.3.eb +0 -0
  373. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.4-GCC-4.9.3-2.26.eb +0 -0
  374. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.4-broken.eb +0 -0
  375. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.4.eb +0 -0
  376. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.5-foss-2018a.eb +0 -0
  377. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.5-intel-2018a.eb +0 -0
  378. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.6-GCC-4.9.2.eb +0 -0
  379. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/g/gzip/gzip-1.6-iccifort-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  380. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/HPL/HPL-2.1-CrayCCE-5.1.29.eb +0 -0
  381. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/hwloc/hwloc-1.11.8-GCC-4.6.4.eb +0 -0
  382. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/hwloc/hwloc-1.11.8-GCC-6.4.0-2.28.eb +0 -0
  383. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/hwloc/hwloc-1.11.8-GCC-7.3.0-2.30.eb +0 -0
  384. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/hwloc/hwloc-1.6.2-GCC-4.9.3-2.26.eb +0 -0
  385. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/h/hwloc/hwloc-1.8-gcccuda-2018a.eb +0 -0
  386. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/icc/icc-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  387. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iccifort/iccifort-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  388. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iccifort/iccifort-2019.4.243.eb +0 -0
  389. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iccifortcuda/iccifortcuda-2016.1.150.eb +0 -0
  390. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/ifort/ifort-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  391. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/ifort/ifort-2016.1.150.eb +0 -0
  392. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iimpi/iimpi-2016.01.eb +0 -0
  393. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iimpi/iimpi-2018a.eb +0 -0
  394. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iimpi/iimpi-2019.08.eb +0 -0
  395. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/iimpi/iimpi-2021a.eb +0 -0
  396. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/imkl/imkl-11.3.1.150-iimpi-2016.01.eb +0 -0
  397. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/imkl/imkl-2019.4.243-iimpi-2019.08.eb +0 -0
  398. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/imkl/imkl-2021.2.0-iimpi-2021a.eb +0 -0
  399. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/impi/impi-2019.4.243-iccifort-2019.4.243.eb +0 -0
  400. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/impi/impi-2021.2.0-intel-compilers-2021.2.0.eb +0 -0
  401. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/impi/impi-5.1.2.150-iccifort-2016.1.150-GCC-4.9.3-2.25.eb +0 -0
  402. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/impi/impi-5.1.2.150-iccifortcuda-2016.1.150.eb +0 -0
  403. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/impi/impi-5.1.2.150.eb +0 -0
  404. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/intel/intel-2018a.eb +0 -0
  405. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/i/intel-compilers/intel-compilers-2021.2.0.eb +0 -0
  406. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/l/libtoy/libtoy-0.0.eb +0 -0
  407. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/m/MVAPICH2/MVAPICH2-2.2a-GCC-4.9.3-2.25.eb +0 -0
  408. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/n/ncurses/ncurses-6.4-GCCcore-12.3.0.eb +0 -0
  409. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenBLAS/OpenBLAS-0.2.20-GCC-6.4.0-2.28.eb +0 -0
  410. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenBLAS/OpenBLAS-0.2.8-GCC-4.8.2-LAPACK-3.4.2.eb +0 -0
  411. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenMPI/OpenMPI-2.1.2-GCC-4.6.4.eb +0 -0
  412. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenMPI/OpenMPI-2.1.2-GCC-6.4.0-2.28.eb +0 -0
  413. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenMPI/OpenMPI-2.1.2-gcccuda-2018a.eb +0 -0
  414. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/o/OpenMPI/OpenMPI-3.1.1-GCC-7.3.0-2.30.eb +0 -0
  415. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/p/Python/Python-2.7.10-intel-2018a.eb +0 -0
  416. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/p/Python/Python-2.7.15.eb +0 -0
  417. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/p/Python/Python-3.7.2.eb +0 -0
  418. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/SQLite/SQLite-3.8.10.2-GCC-6.4.0-2.28.eb +0 -0
  419. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/SQLite/SQLite-3.8.10.2-foss-2018a.eb +0 -0
  420. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/SQLite/SQLite-3.8.10.2-gompi-2018a.eb +0 -0
  421. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2018a-OpenBLAS-0.2.20-broken.eb +0 -0
  422. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-2018a-OpenBLAS-0.2.20.eb +0 -0
  423. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/s/ScaLAPACK/ScaLAPACK-2.0.2-gompic-2018a-OpenBLAS-0.2.20.eb +0 -0
  424. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/checksums.json +0 -0
  425. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-deps.eb +0 -0
  426. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-gompi-2018a-test.eb +0 -0
  427. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-gompi-2018a.eb +0 -0
  428. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-iter.eb +0 -0
  429. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-multiple.eb +0 -0
  430. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0-test.eb +0 -0
  431. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy/toy-0.0.eb +0 -0
  432. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/t/toy-app/toy-app-0.0.eb +0 -0
  433. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/test_ecs/u/util-linux/util-linux-2.39-GCCcore-12.3.0.eb +0 -0
  434. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v1.0/g/GCC/GCC-4.6.3.eb +0 -0
  435. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v1.0/g/gzip/gzip-1.4-GCC-4.6.3.eb +0 -0
  436. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v1.0/g/gzip/gzip-1.4.eb +0 -0
  437. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v1.0/g/gzip/gzip-1.5-foss-2018a.eb +0 -0
  438. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v1.0/g/gzip/gzip-1.5-intel-2018a.eb +0 -0
  439. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/GCC.eb +0 -0
  440. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/doesnotexist.eb +0 -0
  441. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/foss.eb +0 -0
  442. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/gzip.eb +0 -0
  443. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/libpng.eb +0 -0
  444. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/toy-with-sections.eb +0 -0
  445. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easyconfigs/v2.0/toy.eb +0 -0
  446. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystack.py +0 -0
  447. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_basic.yaml +0 -0
  448. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_basic_dict.yaml +0 -0
  449. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_easyconfigs_dict.yaml +0 -0
  450. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_easyconfigs_opts.yaml +0 -0
  451. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_easyconfigs_str.yaml +0 -0
  452. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_easyconfigs_with_eb_ext.yaml +0 -0
  453. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_invalid_key.yaml +0 -0
  454. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_easystack_invalid_key2.yaml +0 -0
  455. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/easystacks/test_missing_easyconfigs_key.yaml +0 -0
  456. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/ebconfigobj.py +0 -0
  457. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/environment.py +0 -0
  458. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/format_convert.py +0 -0
  459. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/include.py +0 -0
  460. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/lib.py +0 -0
  461. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/license.py +0 -0
  462. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CUDA/9.1.85 +0 -0
  463. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Compiler/GCC/6.4.0-2.28/mpi/OpenMPI/2.1.2 +0 -0
  464. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Compiler/GCC/6.4.0-2.28/numlib/OpenBLAS/0.2.20 +0 -0
  465. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Compiler/GCC/6.4.0-2.28/system/hwloc/1.11.8 +0 -0
  466. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Core/compiler/GCC/6.4.0-2.28 +0 -0
  467. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Core/toolchain/foss/2018a +0 -0
  468. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/Core/toolchain/gompi/2018a +0 -0
  469. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/MPI/GCC/6.4.0-2.28/OpenMPI/2.1.2/numlib/FFTW/3.3.7 +0 -0
  470. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CategorizedHMNS/MPI/GCC/6.4.0-2.28/OpenMPI/2.1.2/numlib/ScaLAPACK/2.0.2-OpenBLAS-0.2.20 +0 -0
  471. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Clang/3.2-GCC-6.4.0-2.28 +0 -0
  472. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ClangGCC/1.1.2 +0 -0
  473. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Compiler/GCC/6.4.0-2.28/OpenMPI/2.1.2 +0 -0
  474. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Compiler/GCC/6.4.0-2.28/hwloc/1.11.8 +0 -0
  475. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Compiler/intel/2016.1.150-GCC-4.9.3-2.25/impi/5.1.2.150 +0 -0
  476. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/GCC/4.9.3-2.25 +0 -0
  477. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/GCC/6.4.0-2.28 +0 -0
  478. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/foss/2018a +0 -0
  479. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/gompi/2018a +0 -0
  480. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/icc/2016.1.150-GCC-4.9.3-2.25 +0 -0
  481. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/iccifort/2016.1.150-GCC-4.9.3-2.25 +0 -0
  482. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/ifort/2016.1.150-GCC-4.9.3-2.25 +0 -0
  483. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/Core/iimpi/2016.01 +0 -0
  484. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CrayCCE/2015.06-XC +0 -0
  485. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CrayGNU/2015.06-XC +0 -0
  486. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/CrayIntel/2015.06-XC +0 -0
  487. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/EasyBuild/fake +0 -0
  488. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW/3.3.10-GCC-12.3.0 +0 -0
  489. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW/3.3.7 +0 -0
  490. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW/3.3.7-cgompi-1.1.6 +0 -0
  491. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW/3.3.7-gompi-2018a +0 -0
  492. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW/3.3.7-gompi-2018b +0 -0
  493. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW.MPI/3.3.10-gompi-2023a +0 -0
  494. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FFTW.MPI/3.3.7 +0 -0
  495. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/FlexiBLAS/3.3.1-GCC-12.3.0 +0 -0
  496. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/.modulerc +0 -0
  497. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/12.3.0 +0 -0
  498. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/4.6.3 +0 -0
  499. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/4.6.4 +0 -0
  500. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/6.4.0-2.28 +0 -0
  501. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCC/7.3.0-2.30 +0 -0
  502. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCCcore/12.3.0 +0 -0
  503. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/GCCcore/6.2.0 +0 -0
  504. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Compiler/GCCcore/12.3.0/GLib/2.77.1 +0 -0
  505. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Compiler/GCCcore/12.3.0/gettext/0.21.1 +0 -0
  506. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Compiler/GCCcore/12.3.0/ncurses/6.4 +0 -0
  507. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Compiler/GCCcore/12.3.0/util-linux/2.39 +0 -0
  508. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Core/GCCcore/12.3.0 +0 -0
  509. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Core/gettext/0.21.1 +0 -0
  510. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/HierarchicalMNS/Core/ncurses/6.3 +0 -0
  511. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/MPI/GCC/6.4.0-2.28/OpenMPI/2.1.2/FFTW/3.3.7 +0 -0
  512. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/MPI/GCC/6.4.0-2.28/OpenMPI/2.1.2/OpenBLAS/0.2.20 +0 -0
  513. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/MPI/GCC/6.4.0-2.28/OpenMPI/2.1.2/ScaLAPACK/2.0.2-OpenBLAS-0.2.20 +0 -0
  514. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenBLAS/0.2.20-GCC-6.4.0-2.28 +0 -0
  515. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenBLAS/0.2.20-GCC-7.3.0-2.30 +0 -0
  516. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenBLAS/0.2.20-cgompi-1.1.6 +0 -0
  517. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenBLAS/0.3.23-GCC-12.3.0 +0 -0
  518. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenMPI/.2.1.2-GCC-6.4.0-2.28 +0 -0
  519. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenMPI/2.1.2-ClangGCC-1.1.2 +0 -0
  520. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenMPI/2.1.2-GCC-6.4.0-2.28 +0 -0
  521. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenMPI/3.1.1-GCC-7.3.0-2.30 +0 -0
  522. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/OpenMPI/4.1.5-GCC-12.3.0 +0 -0
  523. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PGI/16.7-GCC-5.4.0-2.26 +0 -0
  524. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PMIx/4.2.4-GCCcore-12.3.0 +0 -0
  525. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PrgEnv-cray/5.2.40 +0 -0
  526. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PrgEnv-gnu/5.2.40 +0 -0
  527. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PrgEnv-intel/5.2.40 +0 -0
  528. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/PrgEnv-pgi/5.2.40 +0 -0
  529. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ScaLAPACK/2.0.2-cgompi-1.1.6-OpenBLAS-0.2.20 +0 -0
  530. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ScaLAPACK/2.0.2-gompi-2018a-OpenBLAS-0.2.20 +0 -0
  531. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ScaLAPACK/2.0.2-gompi-2018b-OpenBLAS-0.2.20 +0 -0
  532. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ScaLAPACK/2.2.0-gompi-2023a-fb +0 -0
  533. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/UCC/1.2.0-GCCcore-12.3.0 +0 -0
  534. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/UCX/1.14.1-GCCcore-12.3.0 +0 -0
  535. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/binutils/2.40-GCCcore-12.3.0 +0 -0
  536. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/bzip2/.1.0.6.lua +0 -0
  537. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/cce/8.3.12 +0 -0
  538. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/cgompi/1.1.6 +0 -0
  539. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/cgoolf/1.1.6 +0 -0
  540. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/cray-libsci/13.0.4 +0 -0
  541. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/cray-mpich/7.2.2 +0 -0
  542. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/craype-test +0 -0
  543. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/foss/2018a +0 -0
  544. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/foss/2018a-FFTW.MPI +0 -0
  545. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/foss/2018a-brokenFFTW +0 -0
  546. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/foss/2023a +0 -0
  547. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/fosscuda/2018a +0 -0
  548. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/gcccuda/2018a +0 -0
  549. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/gompi/2018a +0 -0
  550. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/gompi/2018b +0 -0
  551. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/gompi/2023a +0 -0
  552. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/hwloc/1.11.8-ClangGCC-1.1.2 +0 -0
  553. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/hwloc/1.11.8-GCC-6.4.0-2.28 +0 -0
  554. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/hwloc/1.11.8-GCC-7.3.0-2.30 +0 -0
  555. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/hwloc/2.9.1-GCCcore-12.3.0 +0 -0
  556. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/icc/11.1.073 +0 -0
  557. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/icc/2018.1.163 +0 -0
  558. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/iccifort/2018.1.163 +0 -0
  559. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/iccifort/2019.5.281 +0 -0
  560. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/iccifortcuda/2018b +0 -0
  561. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/iccifortcuda/2019a +0 -0
  562. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ifort/11.1.073 +0 -0
  563. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/ifort/2018.1.163 +0 -0
  564. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/imkl/10.2.6.038 +0 -0
  565. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/imkl/2018.1.163 +0 -0
  566. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/imkl/2021.4.0 +0 -0
  567. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/imkl-FFTW/2021.4.0 +0 -0
  568. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/impi/2018.1.163 +0 -0
  569. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/impi/2021.4.0 +0 -0
  570. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/impi/4.0.0.028 +0 -0
  571. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel/15.0.1.133 +0 -0
  572. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel/2012a +0 -0
  573. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel/2018a +0 -0
  574. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel/2021b +0 -0
  575. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel-compilers/2021.4.0 +0 -0
  576. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel-compilers/2022.1.0 +0 -0
  577. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel-compilers/2022.2.0 +0 -0
  578. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/intel-compilers/2024.0.0 +0 -0
  579. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/libevent/2.1.12-GCCcore-12.3.0 +0 -0
  580. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/libfabric/1.18.0-GCCcore-12.3.0 +0 -0
  581. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/toy/.0.0-deps +0 -0
  582. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/toy/0.0 +0 -0
  583. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modules/zlib/1.2.13-GCCcore-12.3.0 +0 -0
  584. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/modulestool.py +0 -0
  585. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/output.py +0 -0
  586. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/package.py +0 -0
  587. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/parallelbuild.py +0 -0
  588. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/robot.py +0 -0
  589. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/__init__.py +0 -0
  590. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/__init__.py +0 -0
  591. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/b/binutils.py +0 -0
  592. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/b/blis.py +0 -0
  593. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/b/bzip2.py +0 -0
  594. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/c/cmake.py +0 -0
  595. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/e/__init__.py +0 -0
  596. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/e/easybuildmeta.py +0 -0
  597. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/__init__.py +0 -0
  598. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/fftw.py +0 -0
  599. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/fftwmpi.py +0 -0
  600. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/flex.py +0 -0
  601. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/foo.py +0 -0
  602. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/foofoo.py +0 -0
  603. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/f/freetype.py +0 -0
  604. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/g/__init__.py +0 -0
  605. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/g/gcc.py +0 -0
  606. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/__init__.py +0 -0
  607. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/bar.py +0 -0
  608. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/bundle.py +0 -0
  609. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/childcustomdummyextension.py +0 -0
  610. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/childdeprecateddummyextension.py +0 -0
  611. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/cmakemake.py +0 -0
  612. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/cmdcp.py +0 -0
  613. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/configuremake.py +0 -0
  614. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/customdummyextension.py +0 -0
  615. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/deprecateddummyextension.py +0 -0
  616. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/dummyextension.py +0 -0
  617. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/makecp.py +0 -0
  618. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/mesonninja.py +0 -0
  619. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/modulerc.py +0 -0
  620. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/perlbundle.py +0 -0
  621. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/pythonbundle.py +0 -0
  622. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/pythonpackage.py +0 -0
  623. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/tarball.py +0 -0
  624. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/toolchain.py +0 -0
  625. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/generic/toy_extension.py +0 -0
  626. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/h/__init__.py +0 -0
  627. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/h/hpl.py +0 -0
  628. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/l/__init__.py +0 -0
  629. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/l/libtoy.py +0 -0
  630. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/l/libxml2.py +0 -0
  631. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/l/llvm.py +0 -0
  632. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/m/mesa.py +0 -0
  633. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/o/__init__.py +0 -0
  634. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/o/openblas.py +0 -0
  635. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/o/openmpi.py +0 -0
  636. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/o/openssl_wrapper.py +0 -0
  637. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/p/perl.py +0 -0
  638. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/p/python.py +0 -0
  639. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/s/__init__.py +0 -0
  640. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/s/scalapack.py +0 -0
  641. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/__init__.py +0 -0
  642. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/toy_buggy.py +0 -0
  643. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/toy_deprecated.py +0 -0
  644. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/toy_eula.py +0 -0
  645. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/t/toytoy.py +0 -0
  646. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/easyblocks/x/xcrysden.py +0 -0
  647. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/tools/__init__.py +0 -0
  648. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/tools/module_naming_scheme/__init__.py +0 -0
  649. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/tools/module_naming_scheme/broken_module_naming_scheme.py +0 -0
  650. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/tools/module_naming_scheme/test_module_naming_scheme.py +0 -0
  651. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/easybuild/tools/module_naming_scheme/test_module_naming_scheme_more.py +0 -0
  652. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/not_an_easyconfig.eb +0 -0
  653. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/alt_toy/toy-0.0.tar.gz +0 -0
  654. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/alt_toy/toy-0.0_fix-silly-typo-in-printf-statement.patch +0 -0
  655. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/g/gzip/gzip-1.4.tar.gz +0 -0
  656. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/l/libtoy/libtoy-0.0.tar.gz +0 -0
  657. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/p/pi/dummy.tgz +0 -0
  658. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/t/toy/extensions/bar-0.0-local.tar.gz +0 -0
  659. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/t/toy/exts-git.tar.gz +0 -0
  660. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/extensions/bar-0.0.tar.gz +0 -0
  661. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/extensions/bar-0.0_fix-silly-typo-in-printf-statement.patch +0 -0
  662. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/extensions/bar-0.0_fix-very-silly-typo-in-printf-statement.patch +0 -0
  663. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/extensions/barbar-0.0.tar.gz +0 -0
  664. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/extensions/barbar-1.2.tar.gz +0 -0
  665. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-0.0.tar.gz +0 -0
  666. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-0.0_add-bug.patch +0 -0
  667. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-0.0_fix-README.patch +0 -0
  668. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-0.0_fix-silly-typo-in-printf-statement.patch +0 -0
  669. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-0.0_gzip.patch.gz +0 -0
  670. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy/toy-extra.txt +0 -0
  671. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/sandbox/sources/toy-app/toy-app-0.0.tar.gz +0 -0
  672. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/suite.py +0 -0
  673. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/toolchainvariables.py +0 -0
  674. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/type_checking.py +0 -0
  675. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/utilities_test.py +0 -0
  676. {easybuild_framework-5.1.2 → easybuild_framework-5.2.0}/test/framework/variables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easybuild-framework
3
- Version: 5.1.2
3
+ Version: 5.2.0
4
4
  Summary: The EasyBuild framework supports the creation of custom easyblocks that implement support for installing particular (groups of) software packages.
5
5
  Home-page: https://easybuild.io
6
6
  Author: EasyBuild community
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
23
24
  Classifier: Topic :: Software Development :: Build Tools
24
25
  License-File: LICENSE
25
26
  Dynamic: author
@@ -4,6 +4,60 @@ For more detailed information, please see the git log.
4
4
  These release notes can also be consulted at https://docs.easybuild.io/release-notes .
5
5
 
6
6
 
7
+ v5.2.0 (23 Dec 2025)
8
+ --------------------
9
+
10
+ feature release
11
+
12
+ - new features:
13
+ - add support for NVHPC toolchain with nvidia-compilers, NVHPCX, NVBLAS, and NVScaLAPACK (#4927, #5073)
14
+ - add support for LLVM-based toolchains `lfoss` and `lmpflf` (+ subtoolchains `llvm-compilers`, `lfbf`, `lompi`, `lmpich`) (#4914)
15
+ - various other enhancements, including:
16
+ - add support for `--disable-robot` (#4781)
17
+ - make specifying `exts_defaultclass` optional (#4800)
18
+ - retry fetching source file for extensions from PyPI with alternative filename (with `-` replaced with `_` in extension name) (#4943)
19
+ - handle `post_install_patches` in GitHub uploads (#5016)
20
+ - take into account alternative name `post_install_patches` when checking checksums (#5017)
21
+ - improve test report formatting (#5018)
22
+ - add `--keep-going` option to fail at the end not at first failing installation + use proper exit code as determined by `main` function (#5022)
23
+ - add templates for source with just version numbers (like `VERSION_TAR_GZ` and `V_VERSION_TAR_GZ`) (#5025)
24
+ - add templates for patch versions (#5028)
25
+ - add `search_path_vars_headers` and `search_path_vars_linker` properties to `Toolchain` (#5031)
26
+ - print total runtime of all builds (#5032)
27
+ - unset `$PROMPT_COMMAND` in `cmd.sh` shell (#5034)
28
+ - add `runtime_only` options to `EasyConfig.dependency_names` method (#5044)
29
+ - remove superflous `module list` call in `ModulesTool.load` (#5046)
30
+ - add backtrace to logged exception (#5047)
31
+ - add support for both `$VAR` and `${VAR}` variable formats in `modextravars` (#5049)
32
+ - show more readable error message when uploading gist or posting comment failed (#5056)
33
+ - set `$___EASYBUILD___` environment variable to '`EasyBuild`' to indicate that you're in an EasyBuild session (#5058)
34
+ - vendor a copy of `tomli` in `easybuild.tools.tomllib` (#5063)
35
+ - allow `f` suffix in CUDA compute capabilities (#5067)
36
+ - vendor copy of tomli-w 1.2.0, use it to implement `dump_toml` function in `easybuild.tools.filetools` (#5071)
37
+ - various bug fixes, including:
38
+ - pass correct `-march` option on RISC-V systems when `optarch` toolchain option is enabled (#5029)
39
+ - pass dependencies to `toolchain.prepare` when setting up build environment for extensions (#5023, #5041)
40
+ - also pick up on toolchain components in `Toolchain._add_dependency_variables` (#5042, #5048)
41
+ - don't append empty component to `start_dir` in `EasyBlock.guess_start_dir` (#5057)
42
+ - enhancements and fixes for test suite:
43
+ - also with test Python 3.14 (#4992)
44
+ - fix `test_gitrepo` in case global Git configuration is not in place (#5013)
45
+ - introduce `saved_env` context manager for restoring environment in tests (#5015)
46
+ - add decorator to ignore PR test failures due to rate limit (#5019)
47
+ - also run tests with Lmod 9.0 (#5026)
48
+ - enable flake8-comprehension code style check and fix issues (#5043)
49
+ - disable trace output by default in tests (#5053)
50
+ - add back CI for Python 3.6 by using `pyenv` (#5064)
51
+ - fix `test_github_det_commit_status` by using more recent commits (#5066)
52
+ - fix ignoring of URLError in `test_copy_ec_from_commit` (#5077)
53
+ - other changes:
54
+ - deprecate support for running EasyBuild with Python < 3.9 (#4966)
55
+ - make command environment of shell commands more discoverable in the log (#4999, #5078)
56
+ - don't show command string again when showing in which folder it runs (#5003)
57
+ - remove escaping when converting `EasyBuildError` to a string (#5009)
58
+ - add example hook for updating OpenSSL 1.x dependency to 3.x (#5035)
59
+
60
+
7
61
  v5.1.2 (26 Sept 2025)
8
62
  ---------------------
9
63
 
@@ -0,0 +1,26 @@
1
+ from easybuild.framework.easyconfig.constants import EASYCONFIG_CONSTANTS
2
+
3
+
4
+ def parse_hook(ec, *args, **kwargs):
5
+ """
6
+ EasyBuild parse hook for EL9+ compatibility
7
+ """
8
+ # looks like [('zlib', '1.2.13'), ('OpenSSL', '1.1', '', {'name': 'system', 'version': 'system'})]
9
+ raw_deps = ec['dependencies'] if 'dependencies' in ec else []
10
+
11
+ # Check if OpenSSL is in any dependency tuple's first element
12
+ openssl_found = any(dep[0] == 'OpenSSL' for dep in raw_deps)
13
+
14
+ # if found, replace its version - second element in the tuple with '3'.
15
+ if openssl_found:
16
+ print(f"[openssl1->3 hook] OpenSSL found in dependencies of {ec['name']}, replacing with OpenSSL 3")
17
+ for i, dep in enumerate(raw_deps):
18
+ if dep[0] == 'OpenSSL' and dep[1] == '1.1':
19
+ raw_deps[i] = ('OpenSSL', '3', '', EASYCONFIG_CONSTANTS['SYSTEM'][0])
20
+ break
21
+
22
+ else:
23
+ # no need to do anything
24
+ return
25
+
26
+ ec['dependencies'] = raw_deps
@@ -91,6 +91,7 @@ class LoggedException(Exception):
91
91
  if args:
92
92
  msg = msg % args
93
93
 
94
+ backtrace = []
94
95
  if self.LOC_INFO_TOP_PKG_NAMES is not None:
95
96
  # determine correct frame to fetch location information from
96
97
  frames_up = 1
@@ -101,19 +102,30 @@ class LoggedException(Exception):
101
102
  if self.INCLUDE_LOCATION:
102
103
  # figure out where error was raised from
103
104
  # current frame: this constructor, one frame above: location where LoggedException was created/raised
104
- frameinfo = inspect.getouterframes(inspect.currentframe())[frames_up]
105
-
106
- # determine short location of Python module where error was raised from,
107
- # i.e. starting with an entry from LOC_INFO_TOP_PKG_NAMES
108
- path_parts = frameinfo[1].split(os.path.sep)
109
- if path_parts[0] == '':
110
- path_parts[0] = os.path.sep
111
- top_indices = [path_parts.index(n) for n in self.LOC_INFO_TOP_PKG_NAMES if n in path_parts]
112
- relpath = os.path.join(*path_parts[max(top_indices or [0]):])
105
+ frames = inspect.getouterframes(inspect.currentframe())[frames_up:]
106
+ backtrace = []
107
+ for frame in frames:
108
+ # determine short location of Python module where error was raised from,
109
+ # i.e. starting with an entry from LOC_INFO_TOP_PKG_NAMES
110
+ path_parts = frame[1].split(os.path.sep)
111
+ if path_parts[0] == '':
112
+ path_parts[0] = os.path.sep
113
+ try:
114
+ top_idx = max(path_parts.index(n) for n in self.LOC_INFO_TOP_PKG_NAMES if n in path_parts)
115
+ except ValueError:
116
+ # If none found (outside PKG) stop backtrace if we have at least 1 entry
117
+ if backtrace:
118
+ break
119
+ relpath = frame[1]
120
+ else:
121
+ relpath = os.path.join(*path_parts[top_idx:])
122
+ backtrace.append(f'{relpath}:{frame[2]} in {frame[3]}')
113
123
 
114
124
  # include location info at the end of the message
115
125
  # for example: "Nope, giving up (at easybuild/tools/somemodule.py:123 in some_function)"
116
- msg = "%s (at %s:%s in %s)" % (msg, relpath, frameinfo[2], frameinfo[3])
126
+ msg = f"{msg} (at {backtrace[0]})"
127
+
128
+ super().__init__(msg)
117
129
 
118
130
  logger = kwargs.get('logger', None)
119
131
  # try to use logger defined in caller's environment
@@ -123,6 +135,6 @@ class LoggedException(Exception):
123
135
  if logger is None:
124
136
  logger = self.LOGGER_MODULE.getLogger()
125
137
 
138
+ if backtrace:
139
+ msg += '\nCallstack:\n\t' + '\n\t'.join(backtrace)
126
140
  getattr(logger, self.LOGGING_METHOD_NAME)(msg)
127
-
128
- super().__init__(msg)
@@ -435,7 +435,7 @@ def thread_name():
435
435
  """
436
436
  returns the current threads name
437
437
  """
438
- return threading.currentThread().getName()
438
+ return threading.current_thread().name
439
439
 
440
440
 
441
441
  def getLogger(name=None, fname=False, clsname=False, fancyrecord=None):
@@ -577,8 +577,8 @@ def logToFile(filename, enable=True, filehandler=None, name=None, max_bytes=MAX_
577
577
  'mode': 'a',
578
578
  'maxBytes': max_bytes,
579
579
  'backupCount': backup_count,
580
+ 'encoding': 'utf-8',
580
581
  }
581
- handleropts['encoding'] = 'utf-8'
582
582
  # logging to a file is going to create the file later on, so let's try to be helpful and create the path if needed
583
583
  directory = os.path.dirname(filename)
584
584
  if not os.path.exists(directory):
@@ -783,7 +783,7 @@ def getAllExistingLoggers():
783
783
  """
784
784
  # not-so-well documented manager (in 2.6 and later)
785
785
  # return list of (name,logger) tuple
786
- return [x for x in logging.Logger.manager.loggerDict.items()] + [(logging.root.name, logging.root)]
786
+ return list(logging.Logger.manager.loggerDict.items()) + [(logging.root.name, logging.root)]
787
787
 
788
788
 
789
789
  def getAllNonFancyloggers():
@@ -185,6 +185,8 @@ class ExtOption(CompleterOption):
185
185
  - set default to None if no option passed,
186
186
  - set to default if option without value passed,
187
187
  - set to value if option with value passed
188
+ - store_or_False: Same as store_or_None, but set to False instead of None
189
+ - Additionally supports --disable-
188
190
 
189
191
  Types:
190
192
  - strlist, strtuple : convert comma-separated string in a list resp. tuple of strings
@@ -196,14 +198,15 @@ class ExtOption(CompleterOption):
196
198
 
197
199
  ENABLE = 'enable' # do nothing
198
200
  DISABLE = 'disable' # inverse action
201
+ STORE_OR_FALSE = 'store_or_False'
199
202
 
200
203
  EXTOPTION_EXTRA_OPTIONS = ('date', 'datetime', 'regex', 'add', 'add_first', 'add_flex',)
201
- EXTOPTION_STORE_OR = ('store_or_None', 'help') # callback type
204
+ EXTOPTION_STORE_OR = ('store_or_None', STORE_OR_FALSE, 'help') # callback type
202
205
  EXTOPTION_LOG = ('store_debuglog', 'store_infolog', 'store_warninglog',)
203
206
  EXTOPTION_HELP = ('shorthelp', 'confighelp', 'help')
204
207
 
205
208
  ACTIONS = Option.ACTIONS + EXTOPTION_EXTRA_OPTIONS + EXTOPTION_STORE_OR + EXTOPTION_LOG + EXTOPTION_HELP
206
- STORE_ACTIONS = Option.STORE_ACTIONS + EXTOPTION_EXTRA_OPTIONS + EXTOPTION_LOG + ('store_or_None',)
209
+ STORE_ACTIONS = Option.STORE_ACTIONS + EXTOPTION_EXTRA_OPTIONS + EXTOPTION_LOG + ('store_or_None', STORE_OR_FALSE)
207
210
  TYPED_ACTIONS = Option.TYPED_ACTIONS + EXTOPTION_EXTRA_OPTIONS + EXTOPTION_STORE_OR
208
211
  ALWAYS_TYPED_ACTIONS = Option.ALWAYS_TYPED_ACTIONS + EXTOPTION_EXTRA_OPTIONS
209
212
 
@@ -232,7 +235,9 @@ class ExtOption(CompleterOption):
232
235
  """Callback for supporting options with optional values."""
233
236
  # see http://stackoverflow.com/questions/1229146/parsing-empty-options-in-python
234
237
  # ugly code, optparse is crap
235
- if parser.rargs and not parser.rargs[0].startswith('-'):
238
+ if option.store_or == self.STORE_OR_FALSE and opt_str.startswith("--%s-" % self.DISABLE):
239
+ val = False
240
+ elif parser.rargs and not parser.rargs[0].startswith('-'):
236
241
  val = option.check_value(opt_str, parser.rargs.pop(0))
237
242
  else:
238
243
  val = kwargs.get('orig_default', None)
@@ -250,11 +255,7 @@ class ExtOption(CompleterOption):
250
255
  'orig_default': copy.deepcopy(self.default),
251
256
  }
252
257
  self.action = 'callback' # act as callback
253
-
254
- if self.store_or in self.EXTOPTION_STORE_OR:
255
- self.default = None
256
- else:
257
- self.log.raiseException("_set_attrs: unknown store_or %s" % self.store_or, exception=ValueError)
258
+ self.default = False if self.action == self.STORE_OR_FALSE else None
258
259
 
259
260
  def process(self, opt, value, values, parser):
260
261
  """Handle option-as-value issues before actually processing option."""
@@ -1219,6 +1220,8 @@ class GeneralOption:
1219
1220
  if action in self.parser.option_class.BOOLEAN_ACTIONS:
1220
1221
  args.append("--%s-%s" % (self.parser.option_class.ENABLE, opt_name))
1221
1222
  args.append("--%s-%s" % (self.parser.option_class.DISABLE, opt_name))
1223
+ elif action == self.parser.option_class.STORE_OR_FALSE:
1224
+ args.append("--%s-%s" % (self.parser.option_class.DISABLE, opt_name))
1222
1225
 
1223
1226
  # force passed_kwargs as final nameds
1224
1227
  nameds.update(passed_kwargs)
@@ -201,6 +201,15 @@ class TestCase(OrigTestCase):
201
201
  """Return output captured from stderr until now."""
202
202
  return sys.stderr.getvalue()
203
203
 
204
+ @contextmanager
205
+ def mocked_stdout(self):
206
+ """Context manager to mock stdout"""
207
+ self.mock_stdout(True)
208
+ try:
209
+ yield sys.stdout
210
+ finally:
211
+ self.mock_stdout(False)
212
+
204
213
  @contextmanager
205
214
  def mocked_stdout_stderr(self, mock_stdout=True, mock_stderr=True):
206
215
  """Context manager to mock stdout and stderr"""
@@ -221,6 +230,16 @@ class TestCase(OrigTestCase):
221
230
  if mock_stderr:
222
231
  self.mock_stderr(False)
223
232
 
233
+ @contextmanager
234
+ def saved_env(self):
235
+ """Context manager to reset environment to state when it was entered"""
236
+ orig_env = os.environ.copy()
237
+ try:
238
+ yield
239
+ finally:
240
+ os.environ.clear()
241
+ os.environ.update(orig_env)
242
+
224
243
  def tearDown(self):
225
244
  """Cleanup after running a test."""
226
245
  self.mock_stdout(False)
@@ -39,7 +39,7 @@ class WrapperMeta(type):
39
39
  # create proxies for wrapped object's double-underscore attributes
40
40
  type.__init__(cls, name, bases, dct)
41
41
  if cls.__wraps__:
42
- ignore = set("__%s__" % n for n in cls.__ignore__.split())
42
+ ignore = {"__%s__" % n for n in cls.__ignore__.split()}
43
43
  for name in dir(cls.__wraps__):
44
44
  if name.startswith("__"):
45
45
  if name not in ignore and name not in dct:
@@ -42,6 +42,7 @@ Authors:
42
42
  * Caspar van Leeuwen (SURF)
43
43
  * Jan Andre Reuter (Juelich Supercomputing Centre)
44
44
  * Jasper Grimm (UoY)
45
+ * Alex Domingo (Vrije Universiteit Brussel)
45
46
  """
46
47
  import concurrent
47
48
  import copy
@@ -730,9 +731,13 @@ class EasyBlock:
730
731
 
731
732
  # if no sources are specified via 'sources', fall back to 'source_tmpl'
732
733
  src_fn = ext_options.get('source_tmpl')
734
+ is_pypi_source = False
733
735
  if src_fn is None:
734
736
  # use default template for name of source file if none is specified
735
737
  src_fn = '%(name)s-%(version)s.tar.gz'
738
+ if len(source_urls) == 1 and PYPI_PKG_URL_PATTERN in source_urls[0]:
739
+ # allow retrying with alternative download_filename
740
+ is_pypi_source = True
736
741
  elif not isinstance(src_fn, str):
737
742
  error_msg = "source_tmpl value must be a string! (found value of type '%s'): %s"
738
743
  raise EasyBuildError(error_msg, type(src_fn).__name__, src_fn)
@@ -742,7 +747,17 @@ class EasyBlock:
742
747
  if fetch_files:
743
748
  src_path = self.obtain_file(src_fn, extension=True, urls=source_urls,
744
749
  force_download=force_download,
745
- download_instructions=download_instructions)
750
+ download_instructions=download_instructions,
751
+ warning_only=is_pypi_source)
752
+ if not src_path and is_pypi_source:
753
+ # retry with alternative download_filename
754
+ alt_name = resolve_template('%(name)s', template_values).replace("-", "_")
755
+ src_version = resolve_template('%(version)s', template_values)
756
+ alt_download_fn = f'{alt_name}-{src_version}.tar.gz'
757
+ src_path = self.obtain_file(src_fn, extension=True, urls=source_urls,
758
+ force_download=force_download,
759
+ download_instructions=download_instructions,
760
+ download_filename=alt_download_fn)
746
761
  if src_path:
747
762
  ext_src.update({'src': src_path})
748
763
  else:
@@ -2126,7 +2141,8 @@ class EasyBlock:
2126
2141
  self.log.debug("List of loaded modules: %s", self.modules_tool.list())
2127
2142
  # don't reload modules for toolchain, there is no need
2128
2143
  # since they will be loaded already by the fake module
2129
- ext.toolchain.prepare(onlymod=self.cfg['onlytcmod'], silent=True, loadmod=False,
2144
+ ext.toolchain.prepare(onlymod=self.cfg['onlytcmod'], deps=self.cfg.dependencies(),
2145
+ silent=True, loadmod=False,
2130
2146
  rpath_filter_dirs=self.rpath_filter_dirs,
2131
2147
  rpath_include_dirs=self.rpath_include_dirs,
2132
2148
  rpath_wrappers_dir=self.rpath_wrappers_dir)
@@ -2288,7 +2304,8 @@ class EasyBlock:
2288
2304
  with self.fake_module_environment(with_build_deps=True):
2289
2305
  # don't reload modules for toolchain, there is no
2290
2306
  # need since they will be loaded by the fake module
2291
- ext.toolchain.prepare(onlymod=self.cfg['onlytcmod'], silent=True, loadmod=False,
2307
+ ext.toolchain.prepare(onlymod=self.cfg['onlytcmod'], deps=self.cfg.dependencies(),
2308
+ silent=True, loadmod=False,
2292
2309
  rpath_filter_dirs=self.rpath_filter_dirs,
2293
2310
  rpath_include_dirs=self.rpath_include_dirs,
2294
2311
  rpath_wrappers_dir=self.rpath_wrappers_dir)
@@ -2366,7 +2383,7 @@ class EasyBlock:
2366
2383
  # make sure start_dir subdir exists (cfr. check below)
2367
2384
  mkdir(os.path.join(topdir, start_dir), parents=True)
2368
2385
 
2369
- abs_start_dir = os.path.join(topdir, start_dir)
2386
+ abs_start_dir = os.path.join(topdir, start_dir) if start_dir else topdir
2370
2387
  if topdir.endswith(start_dir) and not os.path.exists(abs_start_dir):
2371
2388
  self.cfg['start_dir'] = topdir
2372
2389
  else:
@@ -2743,7 +2760,8 @@ class EasyBlock:
2743
2760
  try:
2744
2761
  sources = ent.get('sources', [])
2745
2762
  data_sources = ent.get('data_sources', [])
2746
- patches = ent.get('patches', []) + ent.get('postinstallpatches', [])
2763
+ patches = ent.get('patches', []) + ent.get(ALTERNATIVE_EASYCONFIG_PARAMETERS['post_install_patches'],
2764
+ ent.get('post_install_patches', []))
2747
2765
  checksums = ent.get('checksums', [])
2748
2766
  except EasyBuildError:
2749
2767
  if isinstance(ent, EasyConfig):
@@ -3009,9 +3027,21 @@ class EasyBlock:
3009
3027
  self.modules_tool.load(extra_modules)
3010
3028
 
3011
3029
  # Setup CUDA cache if required. If we don't do this, CUDA will use the $HOME for its cache files
3012
- if get_software_root('CUDA') or get_software_root('CUDAcore'):
3030
+ if get_software_root('CUDA') or get_software_root('CUDAcore') or get_software_root('nvidia-compilers'):
3013
3031
  self.set_up_cuda_cache()
3014
3032
 
3033
+ # Set CUDA compute capabilities from default value in nvidia-compiler/NVHPC toolchains
3034
+ if get_software_root('nvidia-compilers'):
3035
+ cuda_cc_cfg = self.cfg.get('cuda_compute_capabilities')
3036
+ cuda_cc_opt = build_option('cuda_compute_capabilities')
3037
+ cuda_cc_nvhpc = os.getenv('EBNVHPCCUDACC', None)
3038
+ if not cuda_cc_cfg and not cuda_cc_opt and cuda_cc_nvhpc:
3039
+ self.cfg['cuda_compute_capabilities'] = cuda_cc_nvhpc.split(',')
3040
+ self.log.info(
3041
+ "Updated empty 'cuda_compute_capabilities' option with default CUDA compute capability "
3042
+ f"defined in nvidia-compilers: {self.cfg['cuda_compute_capabilities']}"
3043
+ )
3044
+
3015
3045
  # guess directory to start configure/build/install process in, and move there
3016
3046
  if start_dir:
3017
3047
  self.guess_start_dir()
@@ -3076,8 +3106,10 @@ class EasyBlock:
3076
3106
  # proper way: derive module path from specified class name
3077
3107
  default_class = exts_defaultclass
3078
3108
  default_class_modpath = get_module_path(default_class, generic=True)
3109
+ elif exts_defaultclass is None:
3110
+ default_class = default_class_modpath = None
3079
3111
  else:
3080
- error_msg = "Improper default extension class specification, should be string: %s (%s)"
3112
+ error_msg = "Improper default extension class specification, should be string or None: %s (%s)"
3081
3113
  raise EasyBuildError(error_msg, exts_defaultclass, type(exts_defaultclass))
3082
3114
 
3083
3115
  exts_cnt = len(self.exts)
@@ -3129,8 +3161,11 @@ class EasyBlock:
3129
3161
  "for extension %s: %s",
3130
3162
  class_name, mod_path, ext_name, err)
3131
3163
 
3132
- # fallback attempt: use default class
3164
+ # fallback attempt: use default class if any
3133
3165
  if inst is None:
3166
+ if not default_class:
3167
+ raise EasyBuildError("ERROR: No default extension class set for %s and no explicit or custom "
3168
+ "easyblock found for extension %s", self.name, ext_name)
3134
3169
  try:
3135
3170
  cls = get_class_for(default_class_modpath, default_class)
3136
3171
  self.log.debug("Obtained class %s for installing extension %s", cls, ext_name)
@@ -3170,10 +3205,6 @@ class EasyBlock:
3170
3205
 
3171
3206
  self.prepare_for_extensions()
3172
3207
 
3173
- # we really need a default class
3174
- if not self.cfg['exts_defaultclass'] and install:
3175
- raise EasyBuildError("ERROR: No default extension class set for %s", self.name)
3176
-
3177
3208
  if fetch:
3178
3209
  self.update_exts_progress_bar("fetching extension sources/patches")
3179
3210
  self.exts = self.collect_exts_file_info(fetch_files=True)
@@ -189,7 +189,7 @@ DEFAULT_CONFIG = {
189
189
  # EXTENSIONS easyconfig parameters
190
190
  'exts_download_dep_fail': [False, "Fail if downloaded dependencies are detected for extensions", EXTENSIONS],
191
191
  'exts_classmap': [{}, "Map of extension name to class for handling build and installation.", EXTENSIONS],
192
- 'exts_defaultclass': [None, "List of module for and name of the default extension class", EXTENSIONS],
192
+ 'exts_defaultclass': [None, "Name of default easyblock for extensions", EXTENSIONS],
193
193
  'exts_default_options': [{}, "List of default options for extensions", EXTENSIONS],
194
194
  'exts_filter': [None, ("Extension filter details: template for cmd and input to cmd "
195
195
  "(templates for ext_name, ext_version and src)."), EXTENSIONS],
@@ -261,7 +261,7 @@ def det_subtoolchain_version(current_tc, subtoolchain_names, optional_toolchains
261
261
 
262
262
  for subtoolchain_name in subtoolchain_names:
263
263
 
264
- uniq_subtc_versions = set([subtc['version'] for subtc in cands if subtc['name'] == subtoolchain_name])
264
+ uniq_subtc_versions = {subtc['version'] for subtc in cands if subtc['name'] == subtoolchain_name}
265
265
 
266
266
  # system toolchain: bottom of the hierarchy
267
267
  if is_system_toolchain(subtoolchain_name):
@@ -318,8 +318,8 @@ def get_toolchain_hierarchy(parent_toolchain, incl_capabilities=False):
318
318
  # obtain list of all possible subtoolchains
319
319
  _, all_tc_classes = search_toolchain('')
320
320
  subtoolchains = {tc_class.NAME: getattr(tc_class, 'SUBTOOLCHAIN', None) for tc_class in all_tc_classes}
321
- optional_toolchains = set(tc_class.NAME for tc_class in all_tc_classes if getattr(tc_class, 'OPTIONAL', False))
322
- composite_toolchains = set(tc_class.NAME for tc_class in all_tc_classes if len(tc_class.__bases__) > 1)
321
+ optional_toolchains = {tc_class.NAME for tc_class in all_tc_classes if getattr(tc_class, 'OPTIONAL', False)}
322
+ composite_toolchains = {tc_class.NAME for tc_class in all_tc_classes if len(tc_class.__bases__) > 1}
323
323
 
324
324
  # the parent toolchain is at the top of the hierarchy,
325
325
  # we need a copy so that adding capabilities (below) doesn't affect the original object
@@ -682,7 +682,7 @@ class EasyConfig:
682
682
  # For easyconfig parameters that are dictionaries, input value must also be a dictionary
683
683
  if isinstance(self[key], dict) and not isinstance(value, dict):
684
684
  msg = "Can't update configuration value for %s, because the attempted"
685
- msg += "update value (%s), is not a dictionary (type: %s)."
685
+ msg += " update value (%s), is not a dictionary (type: %s)."
686
686
  raise EasyBuildError(msg, key, value, type(value))
687
687
 
688
688
  # Grab current parameter value so we can modify it
@@ -1219,14 +1219,16 @@ class EasyConfig:
1219
1219
 
1220
1220
  return retained_deps
1221
1221
 
1222
- def dependency_names(self, build_only=False):
1222
+ def dependency_names(self, build_only=False, runtime_only=False):
1223
1223
  """
1224
1224
  Return a set of names of all (direct) dependencies after filtering.
1225
1225
  Iterable builddependencies are flattened when not iterating.
1226
1226
 
1227
1227
  :param build_only: only return build dependencies, discard others
1228
+ :param runtime_only: only return runtime dependencies, discard others
1228
1229
  """
1229
- return {dep['name'] for dep in self.dependencies(build_only=build_only) if dep['name']}
1230
+ return {dep['name'] for dep in self.dependencies(build_only=build_only, runtime_only=runtime_only)
1231
+ if dep['name']}
1230
1232
 
1231
1233
  def builddependencies(self):
1232
1234
  """
@@ -1279,7 +1281,7 @@ class EasyConfig:
1279
1281
  else:
1280
1282
  self.log.debug("Found easyconfig for toolchain %s version %s: %s", tcname, tcversion, tc_ecfile)
1281
1283
  tc_ec = process_easyconfig(tc_ecfile)[0]
1282
- tcdeps = tc_ec['ec'].dependencies()
1284
+ tcdeps = tc_ec['ec'].dependencies(runtime_only=True)
1283
1285
  self.log.debug("Toolchain dependencies based on easyconfig: %s", tcdeps)
1284
1286
 
1285
1287
  self._toolchain = get_toolchain(self['toolchain'], self['toolchainopts'],
@@ -33,14 +33,14 @@ Authors:
33
33
  * Fotis Georgatos (Uni.Lu, NTUA)
34
34
  * Kenneth Hoste (Ghent University)
35
35
  """
36
- import re
36
+ import os
37
37
  import platform
38
+ import re
38
39
 
39
40
  from easybuild.base import fancylogger
40
41
  from easybuild.tools.build_log import EasyBuildError
41
- from easybuild.tools.systemtools import get_shared_lib_ext, pick_dep_version
42
42
  from easybuild.tools.config import build_option
43
-
43
+ from easybuild.tools.systemtools import get_shared_lib_ext, pick_dep_version
44
44
 
45
45
  _log = fancylogger.getLogger('easyconfig.templates', fname=False)
46
46
 
@@ -50,9 +50,12 @@ TEMPLATE_NAMES_EASYCONFIG = {
50
50
  'nameletter': 'First letter of software name',
51
51
  'toolchain_name': 'Toolchain name',
52
52
  'toolchain_version': 'Toolchain version',
53
+ 'version_major_minor_patch': "Major.Minor.Patch version",
53
54
  'version_major_minor': "Major.Minor version",
54
55
  'version_major': 'Major version',
56
+ 'version_minor_patch': 'Minor.Patch version',
55
57
  'version_minor': 'Minor version',
58
+ 'version_patch': 'Patch version',
56
59
  }
57
60
  # derived from EasyConfig._config
58
61
  TEMPLATE_NAMES_CONFIG = [
@@ -85,6 +88,10 @@ TEMPLATE_SOFTWARE_VERSIONS = {
85
88
  'Python': 'py',
86
89
  'R': 'r',
87
90
  }
91
+ TEMPLATE_CUDA_VERSION_NVHPC = [
92
+ 'nvidia_compilers',
93
+ 'NVHPC',
94
+ ]
88
95
  # template values which are only generated dynamically
89
96
  TEMPLATE_NAMES_DYNAMIC = {
90
97
  'arch': 'System architecture (e.g. x86_64, aarch64, ppc64le, ...)',
@@ -97,6 +104,7 @@ TEMPLATE_NAMES_DYNAMIC = {
97
104
  "--cuda-compute-capabilities configuration option or "
98
105
  "via cuda_compute_capabilities easyconfig parameter",
99
106
  'cuda_cc_cmake': 'List of CUDA compute capabilities suitable for use with $CUDAARCHS in CMake 3.18+',
107
+ 'cuda_cc_nvhpc': 'List of CUDA compute capabilities suitable for use with -gpu option in NVHPC compilers',
100
108
  'cuda_cc_space_sep': 'Space-separated list of CUDA compute capabilities',
101
109
  'cuda_cc_space_sep_no_period':
102
110
  "Space-separated list of CUDA compute capabilities, without periods (e.g. '80 90').",
@@ -204,9 +212,12 @@ ALTERNATIVE_EASYCONFIG_TEMPLATES = {
204
212
  'r_short_ver': 'rshortver',
205
213
  'r_ver': 'rver',
206
214
  'toolchain_ver': 'toolchain_version',
215
+ 'ver_maj_min_patch': 'version_major_minor_patch',
207
216
  'ver_maj_min': 'version_major_minor',
208
217
  'ver_maj': 'version_major',
218
+ 'ver_min_patch': 'version_minor_patch',
209
219
  'ver_min': 'version_minor',
220
+ 'ver_patch': 'version_patch',
210
221
  'version_prefix': 'versionprefix',
211
222
  'version_suffix': 'versionsuffix',
212
223
  }
@@ -270,7 +281,10 @@ for ext in EXTENSIONS:
270
281
  TEMPLATE_CONSTANTS.update({
271
282
  'SOURCE_%s' % suffix: ('%(name)s-%(version)s.' + ext, "Source .%s bundle" % ext),
272
283
  'SOURCELOWER_%s' % suffix: ('%(namelower)s-%(version)s.' + ext, "Source .%s bundle with lowercase name" % ext),
284
+ 'VERSION_%s' % suffix: ('%(version)s.' + ext, "Source filename <version>.%s common at GitHub" % ext),
285
+ 'V_VERSION_%s' % suffix: ('v%(version)s.' + ext, "Source filename v<version>.%s common at GitHub" % ext),
273
286
  })
287
+
274
288
  for pyver in ('py2.py3', 'py2', 'py3'):
275
289
  if pyver == 'py2.py3':
276
290
  desc = 'Python 2 & Python 3'
@@ -343,11 +357,16 @@ def template_constant_dict(config, ignore=None, toolchain=None):
343
357
  minor = version[1]
344
358
  template_values['version_minor'] = minor
345
359
  template_values['version_major_minor'] = '.'.join([major, minor])
360
+ if len(version) > 2:
361
+ patch = version[2]
362
+ template_values['version_patch'] = patch
363
+ template_values['version_minor_patch'] = '.'.join([minor, patch])
364
+ template_values['version_major_minor_patch'] = '.'.join([major, minor, patch])
346
365
  except IndexError:
347
366
  # if there is no minor version, skip it
348
367
  pass
349
368
  # only go through this once
350
- ignore.extend(['version_major', 'version_minor', 'version_major_minor'])
369
+ ignore.extend(name for name in TEMPLATE_NAMES_EASYCONFIG if name.startswith('version_'))
351
370
 
352
371
  elif name.endswith('letter'):
353
372
  # parse first letters
@@ -429,6 +448,17 @@ def template_constant_dict(config, ignore=None, toolchain=None):
429
448
  template_values['%sminver' % pref] = dep_version_parts[1]
430
449
  template_values['%sshortver' % pref] = '.'.join(dep_version_parts[:2])
431
450
 
451
+ # step 2.1: CUDA templates in NVHPC
452
+ if toolchain is not None and hasattr(toolchain, 'name') and toolchain.name in TEMPLATE_CUDA_VERSION_NVHPC:
453
+ cuda_version = os.getenv("EBNVHPCCUDAVER", None)
454
+ if cuda_version:
455
+ cuda_version_parts = cuda_version.split('.')
456
+ template_values['cudaver'] = cuda_version
457
+ template_values['cudamajver'] = cuda_version_parts[0]
458
+ if len(cuda_version_parts) > 1:
459
+ template_values['cudaminver'] = cuda_version_parts[1]
460
+ template_values['cudashortver'] = '.'.join(cuda_version_parts[:2])
461
+
432
462
  # step 3: add remaining from config
433
463
  for name in TEMPLATE_NAMES_CONFIG:
434
464
  if name in ignore:
@@ -475,6 +505,7 @@ def template_constant_dict(config, ignore=None, toolchain=None):
475
505
  template_values['cuda_cc_space_sep_no_period'] = ' '.join(cc.replace('.', '') for cc in cuda_cc)
476
506
  template_values['cuda_cc_semicolon_sep'] = ';'.join(cuda_cc)
477
507
  template_values['cuda_cc_cmake'] = ';'.join(cc.replace('.', '') for cc in cuda_cc)
508
+ template_values['cuda_cc_nvhpc'] = ','.join(f"cc{cc.replace('.', '')}" for cc in cuda_cc)
478
509
  int_values = [cc.replace('.', '') for cc in cuda_cc]
479
510
  template_values['cuda_int_comma_sep'] = ','.join(int_values)
480
511
  template_values['cuda_int_space_sep'] = ' '.join(int_values)
@@ -541,7 +541,7 @@ def _to_checksum(checksum, list_level=0, allow_dict=True):
541
541
  # When we already are in a tuple no further recursion is allowed -> set list_level very high
542
542
  return tuple(_to_checksum(x, list_level=99, allow_dict=allow_dict) for x in checksum)
543
543
  else:
544
- return list(_to_checksum(x, list_level=list_level+1, allow_dict=allow_dict) for x in checksum)
544
+ return [_to_checksum(x, list_level=list_level+1, allow_dict=allow_dict) for x in checksum]
545
545
  elif isinstance(checksum, dict) and allow_dict:
546
546
  return {key: _to_checksum(value, allow_dict=False) for key, value in checksum.items()}
547
547