From 8b569c82e2ed296ebca3aa5eae7528e202851ac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Sun, 5 Oct 2025 23:56:56 +0200 Subject: [PATCH 01/34] Attempt to write python-search-path docs --- docs/python-search-path.md | 57 ++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 58 insertions(+) create mode 100644 docs/python-search-path.md diff --git a/docs/python-search-path.md b/docs/python-search-path.md new file mode 100644 index 000000000..17d2f47e0 --- /dev/null +++ b/docs/python-search-path.md @@ -0,0 +1,57 @@ +# Python search path + +In order to locate python packages in modules, easybuild has conventionally used the `PYTHONPATH` environment variable. However, this has several issues: + +1. `PYTHONPATH` has highest priority; it prevents users from makinga custom virtual environment on top of modules and shadowing packages. +2. Packages are picked up even for incompatible python versions, e.g. an OS installed old python 3.6 will break if packages from 3.12 exists in `PYTHONPATH`. +3. Modules can't have optional dependencies on different Python versions, as PYTHONPATH points directly to the `site-packages` subdirectory. +4. Packages with `pth` files can't work with PYTHONPATH and requires being added to the site dir. + +Unfortuanately, Python offers to environment variables to do the correct thing here. +To solve this (initially for multi-deps) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. +It is included in standard Python installations made with easybuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. + +This does the correct thing by only considering the correct Python version, and puts the module provided python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. + +## Using `--prefer-python-search-path` + +Since v5.0.0 the new global configuration option `--prefer-python-search-path` can be used to EasyBuild prefer the use of either `PYTHONPATH` or `EBPYTHONPREFIXES`. +For backwards compatibility with existing modules, EasyBuild was unfortunately required to keep `PYTHONPATH` as the default. +Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then PYTHONPATH must be used. If ulti-deps is used, then `EBPYTHONPREFIXES` is required. + +If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing python bundles you have installed and make sure to rebuild the modules. +Failure to do so might leave you with a few easyconfigs that requiring shadowing of older package versions not working correctly due to the import priority changing. + +If you are swithing to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. + +## Fixing existing modules + +You can convert existing modules by rebuilding them with `eb --module-only --rebuild ...`. +You can find the modules that use `PYTHONPATH` by e.g. grepping through your modules: + +```bash +grep --include '*.lua' -Rl 'PYTHONPATH.*site-packages' /path/to/modules/all +``` + +If you use the default module naming scheme + +```bash +cd $MODULEPATH +grep -Rl PYTHONPATH */*.lua | grep -v EasyBuild | sed -e 's+/+-+' | sed -e 's+lua$+eb+' | xargs eb --rebuild --module-only +``` + +If done correctly, your old module files will have gone from + +```lua +prepend_path("PYTHONPATH", pathJoin(root, "lib", "python3.12", "site-packages")) +# or +prepend_path("PYTHONPATH", pathJoin(root, "lib/python3.12/site-packages")) +``` + +to + +```lua +prepend_path("EBPYTHONPREFIXES", root) +``` + +Remember to back up all your module files first before rebuilding. diff --git a/mkdocs.yml b/mkdocs.yml index 6cb670066..e30a2a5ea 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,6 +73,7 @@ nav: - Cray support: cray-support.md - Customizing EasyBuild via hooks: hooks.md - Including Python modules: including-additional-python-modules.md + - Customize Python search path: python-search-path.md - Packaging support: packaging-support.md - RPATH support: rpath-support.md - Using external modules: using-external-modules.md From bbab73ec542acc4206aacc797d627fb72b2ace0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:06:41 +0200 Subject: [PATCH 02/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 17d2f47e0..4a62067f6 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -22,7 +22,7 @@ Note that the option is just the preferred option, if the package path doesn't f If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing python bundles you have installed and make sure to rebuild the modules. Failure to do so might leave you with a few easyconfigs that requiring shadowing of older package versions not working correctly due to the import priority changing. -If you are swithing to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. +If you are switching to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. ## Fixing existing modules From c24bc109bded9cf1dc424aa246baaa7232a9f06d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:06:54 +0200 Subject: [PATCH 03/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 4a62067f6..a5756cc2d 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -17,7 +17,7 @@ This does the correct thing by only considering the correct Python version, and Since v5.0.0 the new global configuration option `--prefer-python-search-path` can be used to EasyBuild prefer the use of either `PYTHONPATH` or `EBPYTHONPREFIXES`. For backwards compatibility with existing modules, EasyBuild was unfortunately required to keep `PYTHONPATH` as the default. -Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then PYTHONPATH must be used. If ulti-deps is used, then `EBPYTHONPREFIXES` is required. +Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then `PYTHONPATH` must be used. If multi-deps is used, then `EBPYTHONPREFIXES` is required. If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing python bundles you have installed and make sure to rebuild the modules. Failure to do so might leave you with a few easyconfigs that requiring shadowing of older package versions not working correctly due to the import priority changing. From 156ede79565eff1167fdcc87d9a0448f161f03a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:07:04 +0200 Subject: [PATCH 04/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index a5756cc2d..e539328b7 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -7,7 +7,7 @@ In order to locate python packages in modules, easybuild has conventionally used 3. Modules can't have optional dependencies on different Python versions, as PYTHONPATH points directly to the `site-packages` subdirectory. 4. Packages with `pth` files can't work with PYTHONPATH and requires being added to the site dir. -Unfortuanately, Python offers to environment variables to do the correct thing here. +Unfortunately, Python offers no environment variables to do the correct thing here. To solve this (initially for multi-deps) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. It is included in standard Python installations made with easybuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. From 71c01f7eef23e42a7695d6e90c8602f13b7a75af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:07:17 +0200 Subject: [PATCH 05/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index e539328b7..e6e6c8622 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -9,7 +9,7 @@ In order to locate python packages in modules, easybuild has conventionally used Unfortunately, Python offers no environment variables to do the correct thing here. To solve this (initially for multi-deps) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. -It is included in standard Python installations made with easybuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. +It is included in standard Python installations made with EasyBuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. This does the correct thing by only considering the correct Python version, and puts the module provided python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. From 69032fe87026fe4d89c145fc2ece7aea0c8425aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:07:30 +0200 Subject: [PATCH 06/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index e6e6c8622..eb627ead0 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -11,7 +11,7 @@ Unfortunately, Python offers no environment variables to do the correct thing he To solve this (initially for multi-deps) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. It is included in standard Python installations made with EasyBuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. -This does the correct thing by only considering the correct Python version, and puts the module provided python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. +This does the correct thing by only considering the correct Python version, and puts the module provided Python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. ## Using `--prefer-python-search-path` From 9e7d6c8709347a45efd991a0b9b6c4db87769d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 10:07:46 +0200 Subject: [PATCH 07/34] Typo fix from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index eb627ead0..5fc850c48 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -19,7 +19,7 @@ Since v5.0.0 the new global configuration option `--prefer-python-search-path` c For backwards compatibility with existing modules, EasyBuild was unfortunately required to keep `PYTHONPATH` as the default. Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then `PYTHONPATH` must be used. If multi-deps is used, then `EBPYTHONPREFIXES` is required. -If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing python bundles you have installed and make sure to rebuild the modules. +If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing Python bundles you have installed and make sure to rebuild the modules. Failure to do so might leave you with a few easyconfigs that requiring shadowing of older package versions not working correctly due to the import priority changing. If you are switching to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. From 8114ecd380fc1314c523f766650701f7fe70d30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:56:46 +0200 Subject: [PATCH 08/34] Apply suggestion from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 5fc850c48..57e8e2053 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -20,7 +20,7 @@ For backwards compatibility with existing modules, EasyBuild was unfortunately r Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then `PYTHONPATH` must be used. If multi-deps is used, then `EBPYTHONPREFIXES` is required. If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing Python bundles you have installed and make sure to rebuild the modules. -Failure to do so might leave you with a few easyconfigs that requiring shadowing of older package versions not working correctly due to the import priority changing. +Failure to do so might leave you with a few easyconfigs that require shadowing of older package versions not working correctly due to the import priority changing. If you are switching to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. From 6b1ee82474e103fb5008892440d58686fe5319bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:56:52 +0200 Subject: [PATCH 09/34] Apply suggestion from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 57e8e2053..8ca28752d 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -15,7 +15,7 @@ This does the correct thing by only considering the correct Python version, and ## Using `--prefer-python-search-path` -Since v5.0.0 the new global configuration option `--prefer-python-search-path` can be used to EasyBuild prefer the use of either `PYTHONPATH` or `EBPYTHONPREFIXES`. +Since v5.0.0 the new global configuration option `--prefer-python-search-path` can be used for EasyBuild to prefer the use of either `PYTHONPATH` or `EBPYTHONPREFIXES`. For backwards compatibility with existing modules, EasyBuild was unfortunately required to keep `PYTHONPATH` as the default. Note that the option is just the preferred option, if the package path doesn't follow the standard `lib/pythonY.X/site-packages` format then `PYTHONPATH` must be used. If multi-deps is used, then `EBPYTHONPREFIXES` is required. From 831c7f19a3daf59db0a59f932dc6b481ffdb9ef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:56:59 +0200 Subject: [PATCH 10/34] Apply suggestion from @smoors Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 8ca28752d..341d0d06d 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -1,6 +1,6 @@ # Python search path -In order to locate python packages in modules, easybuild has conventionally used the `PYTHONPATH` environment variable. However, this has several issues: +In order to locate python packages in modules, before v5.0.0, EasyBuild conventionally used the `PYTHONPATH` environment variable. However, this has several issues: 1. `PYTHONPATH` has highest priority; it prevents users from makinga custom virtual environment on top of modules and shadowing packages. 2. Packages are picked up even for incompatible python versions, e.g. an OS installed old python 3.6 will break if packages from 3.12 exists in `PYTHONPATH`. From 226392773f4b01d18ca9224cbb364614cbd4b8ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:57:05 +0200 Subject: [PATCH 11/34] Apply suggestion from @verdurin Co-authored-by: Adam Huffman --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 341d0d06d..cbde82ad2 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -2,7 +2,7 @@ In order to locate python packages in modules, before v5.0.0, EasyBuild conventionally used the `PYTHONPATH` environment variable. However, this has several issues: -1. `PYTHONPATH` has highest priority; it prevents users from makinga custom virtual environment on top of modules and shadowing packages. +1. `PYTHONPATH` has highest priority; it prevents users from making a custom virtual environment on top of modules and shadowing packages. 2. Packages are picked up even for incompatible python versions, e.g. an OS installed old python 3.6 will break if packages from 3.12 exists in `PYTHONPATH`. 3. Modules can't have optional dependencies on different Python versions, as PYTHONPATH points directly to the `site-packages` subdirectory. 4. Packages with `pth` files can't work with PYTHONPATH and requires being added to the site dir. From 9833430052023ffceb3aff1ee62aa92d1dbb97dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:57:12 +0200 Subject: [PATCH 12/34] Apply suggestion from @smoors Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index cbde82ad2..8413f39d6 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -8,7 +8,7 @@ In order to locate python packages in modules, before v5.0.0, EasyBuild conventi 4. Packages with `pth` files can't work with PYTHONPATH and requires being added to the site dir. Unfortunately, Python offers no environment variables to do the correct thing here. -To solve this (initially for multi-deps) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. +To solve this (initially for Python `multi_deps`) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. It is included in standard Python installations made with EasyBuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. This does the correct thing by only considering the correct Python version, and puts the module provided Python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. From ea7af4bb51ffeaa4757c072dd4a208f874ed8718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:57:18 +0200 Subject: [PATCH 13/34] Apply suggestion from @smoors Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 8413f39d6..9aa56fda8 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -11,7 +11,7 @@ Unfortunately, Python offers no environment variables to do the correct thing he To solve this (initially for Python `multi_deps`) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. It is included in standard Python installations made with EasyBuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. -This does the correct thing by only considering the correct Python version, and puts the module provided Python packages at the lowest priority path, allowing a user venv to shadow the packages correctly. +This does the correct thing by only considering the correct Python version, and puts Python packages provided by the environment module at the lowest priority, allowing a user venv to override them. ## Using `--prefer-python-search-path` From 1fd3c60f2e19bd66b45bf6c39bbe856dc3e1e6d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:57:24 +0200 Subject: [PATCH 14/34] Apply suggestion from @smoors Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 9aa56fda8..84188025f 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -9,7 +9,7 @@ In order to locate python packages in modules, before v5.0.0, EasyBuild conventi Unfortunately, Python offers no environment variables to do the correct thing here. To solve this (initially for Python `multi_deps`) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. -It is included in standard Python installations made with EasyBuild. You can opt out of having this `sitecustomize.py` if you have strong technical reasons to avoid it. +It is included in standard Python installations made with EasyBuild. You can opt out of using `sitecustomize.py` if you have strong technical reasons to avoid it. This does the correct thing by only considering the correct Python version, and puts Python packages provided by the environment module at the lowest priority, allowing a user venv to override them. From e30e7e3eb7430f767dd3ffb48e1ef1e8ba27a2ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Mon, 6 Oct 2025 12:57:30 +0200 Subject: [PATCH 15/34] Apply suggestion from @smoors Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 84188025f..800eec047 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -22,7 +22,7 @@ Note that the option is just the preferred option, if the package path doesn't f If you wish to switch to `EBPYTHONPREFIXES`, you should also traverse the existing Python bundles you have installed and make sure to rebuild the modules. Failure to do so might leave you with a few easyconfigs that require shadowing of older package versions not working correctly due to the import priority changing. -If you are switching to building a new tree, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. +If you are building a new software stack from scratch, you can safely switch this option to `EBPYTHONPREFIXES` and enjoy the benefits. ## Fixing existing modules From e12f63193f1959cb26c9d66b1622b7ae3da37ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 8 Oct 2025 11:22:51 +0200 Subject: [PATCH 16/34] Update docs/python-search-path.md Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 800eec047..4ee999a4d 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -1,4 +1,4 @@ -# Python search path +# Customizing Python search path In order to locate python packages in modules, before v5.0.0, EasyBuild conventionally used the `PYTHONPATH` environment variable. However, this has several issues: From bfa4584092ef274429bc26c1281441354b82ff84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 8 Oct 2025 11:23:01 +0200 Subject: [PATCH 17/34] Update docs/python-search-path.md Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 4ee999a4d..093a44f3c 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -1,6 +1,6 @@ # Customizing Python search path -In order to locate python packages in modules, before v5.0.0, EasyBuild conventionally used the `PYTHONPATH` environment variable. However, this has several issues: +In order to locate Python packages in modules, before v5.0.0, EasyBuild conventionally used the `PYTHONPATH` environment variable. However, this has several issues: 1. `PYTHONPATH` has highest priority; it prevents users from making a custom virtual environment on top of modules and shadowing packages. 2. Packages are picked up even for incompatible python versions, e.g. an OS installed old python 3.6 will break if packages from 3.12 exists in `PYTHONPATH`. From 576b59603d223780dcf01270aee0acd391fd2288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 8 Oct 2025 11:23:09 +0200 Subject: [PATCH 18/34] Update mkdocs.yml Co-authored-by: Sam Moors --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index e30a2a5ea..1b4aa1b02 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,7 +73,7 @@ nav: - Cray support: cray-support.md - Customizing EasyBuild via hooks: hooks.md - Including Python modules: including-additional-python-modules.md - - Customize Python search path: python-search-path.md + - Customizing Python search path: python-search-path.md - Packaging support: packaging-support.md - RPATH support: rpath-support.md - Using external modules: using-external-modules.md From d2182d60147edb4126624efea2499c70104f4e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20=C3=96hman?= Date: Wed, 8 Oct 2025 11:23:18 +0200 Subject: [PATCH 19/34] Update docs/python-search-path.md Co-authored-by: Sam Moors --- docs/python-search-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-search-path.md b/docs/python-search-path.md index 093a44f3c..7a766d581 100644 --- a/docs/python-search-path.md +++ b/docs/python-search-path.md @@ -11,7 +11,7 @@ Unfortunately, Python offers no environment variables to do the correct thing he To solve this (initially for Python `multi_deps`) EasyBuild has for a long time supported the use of the custom `EBPYTHONPREFIXES` via a `sitecustomize.py` script for the Python modules we build. It is included in standard Python installations made with EasyBuild. You can opt out of using `sitecustomize.py` if you have strong technical reasons to avoid it. -This does the correct thing by only considering the correct Python version, and puts Python packages provided by the environment module at the lowest priority, allowing a user venv to override them. +The `sitecustomize.py` script does the correct thing by only considering the correct Python version, and puts Python packages provided by the environment module at the lowest priority, allowing a user venv to override them. ## Using `--prefer-python-search-path` From 21543bcc181586da06c71063a21fba8d9d56d8df Mon Sep 17 00:00:00 2001 From: Lara Ramona Peeters <49882639+laraPPr@users.noreply.github.com> Date: Thu, 9 Oct 2025 12:37:28 +0200 Subject: [PATCH 20/34] Fix documentation on using `--stop` --- docs/partial-installations.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/partial-installations.md b/docs/partial-installations.md index 45d65cfda..402d4fb89 100644 --- a/docs/partial-installations.md +++ b/docs/partial-installations.md @@ -10,9 +10,9 @@ naming scheme). To stop the installation procedure *after* a specific step in the installation procedure, the `-s`/`--stop` command line option can be used; the name of the step must be supplied as an argument. -The following step names are recognized (listed in execution order): `fetch`, `ready`, `source`, `patch`, -`prepare`, `configure`, `build`, `test`, `install`, `extensions`, `package`, `postproc`, -`sanitycheck`, `cleanup`, `module`, `testcases`. +The following step names are recognized (listed in execution order): `fetch`, `ready`, `extract`, `patch`, +`prepare`, `configure`, `build`, `test`, `install`, `extensions`, `postiter`, `postproc`, +`sanitycheck`, `cleanup`, `module`, `permissions`, `package`, `testcases`. Example usage: From e8951a753ab189e7f1d3d8447fc84f351a32ed03 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Sat, 3 Aug 2024 01:21:08 +0200 Subject: [PATCH 21/34] Add a section on how to run a development instance of EasyBuild --- docs/contributing.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 75a67b0bb..d73e567ee 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -266,6 +266,41 @@ git checkout develop git pull upstream develop ``` +##### Running your development instance {: #running_your_development_instance } + +To run your development instance locally access to a copy of the +[easybuild-easyblocks](https://github.com/easybuilders/easybuild-easyblocks) and +the [easybuild-easyconfigs](https://github.com/easybuilders/easybuild-easyconfigs) +repositories is required. Assuming that you have cloned `easybuild-framework`, +`easybuild-easyblocks`, and `easybuild-easyconfigs` repositories in the safe +directory, say `EasyBuild`, your directory structure should resemble the +following: + +``` +EasyBuild +| ++- easybuild-framework ++- easybuild-easyblocks ++- easybuild-easyconfigs +``` + +To run the development instance, you need to add the framework and easyblocks +directories in the Python path, and the easyconfigs in the robot search path. + +You can also define the `PYTHONPATH` in inline format: + +```bash +PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --dry-run --robot=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs ReFrame-4.3.3.eb +``` + +For convenience, you can define an alias for the development instance of +EasyBuild as follows: + +```bash +alias eb="PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --robot-paths=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs:" +``` + + ### Opening a new pull request {: #contributing_creating_pull_requests } !!! note From b51886337002b8bb1873be5261f8111287886a3a Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Thu, 23 Oct 2025 21:31:11 +0200 Subject: [PATCH 22/34] [TYPO] Fix grammatical error Co-authored-by: ocaisa --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index d73e567ee..b843a417a 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -285,7 +285,7 @@ EasyBuild ``` To run the development instance, you need to add the framework and easyblocks -directories in the Python path, and the easyconfigs in the robot search path. +directories in the Python path, and the easyconfigs to the robot search path. You can also define the `PYTHONPATH` in inline format: From 642fb1461c13db1206b47ff845b5ada75cca3806 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Thu, 23 Oct 2025 21:34:17 +0200 Subject: [PATCH 23/34] Allow a development and a release version of eb in the same environment Co-authored-by: ocaisa --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index b843a417a..78652d8f2 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -297,7 +297,7 @@ For convenience, you can define an alias for the development instance of EasyBuild as follows: ```bash -alias eb="PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --robot-paths=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs:" +alias eb_devel="PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --robot-paths=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs:" ``` From bed4b09b5f856c530a5ae71dbd0fc0349fef1408 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Thu, 23 Oct 2025 21:59:28 +0200 Subject: [PATCH 24/34] Comment on the use of `--robot-paths` with development instances of eb Co-authored-by: ocaisa --- docs/contributing.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/contributing.md b/docs/contributing.md index 78652d8f2..00f994ea7 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -299,6 +299,7 @@ EasyBuild as follows: ```bash alias eb_devel="PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --robot-paths=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs:" ``` +`--robot-paths` updates the paths accessible to easybuild for searching, the `:` at the end of the value indicates to EasyBuild to retain it's default robot search paths. This approach still allows for further customisation via `--robot`. ### Opening a new pull request {: #contributing_creating_pull_requests } From 8e9fdc8dc0433dd933153c9c638016c79318baf7 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 01:53:10 +0200 Subject: [PATCH 25/34] Explain the configuration of robot search path The robot search path must be set explicitly in the development version of EasyBuild, as there is no default robot search path. This commit - emphasizes the need to always define the robot search path in the development version, and - explains how this explicit definition affects the normal operation of the robot search path environment variable and option. --- docs/contributing.md | 84 +++++++++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 21 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 00f994ea7..9da8718ac 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -268,39 +268,81 @@ git pull upstream develop ##### Running your development instance {: #running_your_development_instance } -To run your development instance locally access to a copy of the -[easybuild-easyblocks](https://github.com/easybuilders/easybuild-easyblocks) and -the [easybuild-easyconfigs](https://github.com/easybuilders/easybuild-easyconfigs) -repositories is required. Assuming that you have cloned `easybuild-framework`, -`easybuild-easyblocks`, and `easybuild-easyconfigs` repositories in the safe -directory, say `EasyBuild`, your directory structure should resemble the -following: +There are multiple ways to deploy a local development copy of EasyBuild. This +section presents a method that is more relevant when modifying the framework and +easyblock repositories. + +To deploy a local copy of EasyBuild clone the +[easybuild-framework](https://github.com/easybuilders/easybuild-framework), +[easybuild-easyblocks](https://github.com/easybuilders/easybuild-easyblocks), and +[easybuild-easyconfigs](https://github.com/easybuilders/easybuild-easyconfigs) +repositories in the same directory, say `EasyBuild`. After cloning these +repositories the content of the `EasyBuild` directory should be the following. ``` +$ tree -L 1 EasyBuild EasyBuild -| -+- easybuild-framework -+- easybuild-easyblocks -+- easybuild-easyconfigs +├── easybuild-easyblocks +├── easybuild-easyconfigs +└── easybuild-framework + +3 directories, 0 files +``` + +Export an environment variable with the path to the `EasyBuild` directory to +simplify commands calling the development instance of EasyBuild. + +``` shell +export EB_DEVEL_ROOT=/path/to/EasyBuild ``` -To run the development instance, you need to add the framework and easyblocks -directories in the Python path, and the easyconfigs to the robot search path. +To run the development instance, add the paths of the framework and easyblock +repositories to the Python path, and the path of the easyconfig repository to +the robot search path. -You can also define the `PYTHONPATH` in inline format: +For instance a command to install `ReFrame-4.3.3.ed` in inline format would be +the following. -```bash -PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --dry-run --robot=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs ReFrame-4.3.3.eb +``` shell +PYTHONPATH=${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH} EASYBUILD_ROBOT_PATHS=${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs ${EB_DEVEL_ROOT}/easybuild-framework/eb --dry-run --robot ReFrame-4.3.3.eb ``` -For convenience, you can define an alias for the development instance of -EasyBuild as follows: +Define an alias if you prefer to avoid defining all these variables each time +the development version EasyBuild is called. -```bash -alias eb_devel="PYTHONPATH=/path/to/EasyBuild/easybuild-framework:/path/to/EasyBuild/easybuild-easyblocks:${PYTHONPATH} /path/to/EasyBuild/easybuild-framework/eb --robot-paths=/path/to/EasyBuild/easybuild-easyconfigs/easybuild/easyconfigs:" +``` shell +alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH}" EASYBUILD_ROBOT_PATHS="${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs" ${EB_DEVEL_ROOT}/easybuild-framework/eb' ``` -`--robot-paths` updates the paths accessible to easybuild for searching, the `:` at the end of the value indicates to EasyBuild to retain it's default robot search paths. This approach still allows for further customisation via `--robot`. +??? note "Controlling the robot search path in development instances" + + There is no default value for the [robot search + path](/using-easybuild/#controlling_robot_search_path) in the development + instance. The robot search path is set explicitly using the + `EASYBUILD_ROBOT_PATHS` environment variable. As a result, expect that some + features of the `EASYBUILD_ROBOT_PATHS` and its accompanying command line + option, `--robot-paths` will not work with, `eb_devel`, the alias for the + EasyBuild development version. + + For instance, + + - you cannot use `EASYBUILD_ROBOT_PATHS` to set the robot path as it is + overridden in the alias `eb_devel`, and + - you cannot append in the default robot search path, with `--robot-paths`, + as it overrides the `EASYBUILD_ROBOT_PATHS` environment option. + + As a workarroun, + + - use `--robot-paths` to override the robot search path, and + - use the environment variable `EASYBUILD_ROBOT_PATHS` to explicitly modify + the robot search path. + + For instance to append to the development robot search path, use the + following command. + + ``` shell + eb_devel --robot-paths=${EASYBUILD_ROBOT_PATHS}:/path/0:/path/1 + ``` ### Opening a new pull request {: #contributing_creating_pull_requests } From c2b2c0167112c687dace78120a120b975f6cb240 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 11:17:17 +0200 Subject: [PATCH 26/34] Simplify the wording of the examples and fix typos --- docs/contributing.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 9da8718ac..ac128c583 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -276,8 +276,9 @@ To deploy a local copy of EasyBuild clone the [easybuild-framework](https://github.com/easybuilders/easybuild-framework), [easybuild-easyblocks](https://github.com/easybuilders/easybuild-easyblocks), and [easybuild-easyconfigs](https://github.com/easybuilders/easybuild-easyconfigs) -repositories in the same directory, say `EasyBuild`. After cloning these -repositories the content of the `EasyBuild` directory should be the following. +repositories in the same directory, for instance a directory name `EasyBuild`. +After cloning these repositories the content of the `EasyBuild` directory +should be the following. ``` $ tree -L 1 EasyBuild @@ -289,8 +290,9 @@ EasyBuild 3 directories, 0 files ``` -Export an environment variable with the path to the `EasyBuild` directory to -simplify commands calling the development instance of EasyBuild. +An environment variable with the path to the `EasyBuild` directory simplifies +calls to the development instance of EasyBuild significantly; define this +variable in the following manner. ``` shell export EB_DEVEL_ROOT=/path/to/EasyBuild @@ -300,20 +302,28 @@ To run the development instance, add the paths of the framework and easyblock repositories to the Python path, and the path of the easyconfig repository to the robot search path. -For instance a command to install `ReFrame-4.3.3.ed` in inline format would be -the following. +For instance, a command to install `ReFrame-4.3.3.ed` and its dependencies with +the required variables defined for in the command environment would be the +following. ``` shell -PYTHONPATH=${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH} EASYBUILD_ROBOT_PATHS=${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs ${EB_DEVEL_ROOT}/easybuild-framework/eb --dry-run --robot ReFrame-4.3.3.eb +PYTHONPATH=${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH} EASYBUILD_ROBOT_PATHS=${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs ${EB_DEVEL_ROOT}/easybuild-framework/eb --robot ReFrame-4.3.3.eb ``` -Define an alias if you prefer to avoid defining all these variables each time -the development version EasyBuild is called. +To avoid adding the variables in the environment of every single command while +maintaining the shell environment clean, an alias can be defined as follows. ``` shell alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH}" EASYBUILD_ROBOT_PATHS="${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs" ${EB_DEVEL_ROOT}/easybuild-framework/eb' ``` +With the alias defined the command to install `ReFrame-4.3.3.ed` and its +dependencies becomes the following. + +``` shell +eb_devel --robot ReFrame-4.3.3.eb +``` + ??? note "Controlling the robot search path in development instances" There is no default value for the [robot search @@ -331,7 +341,7 @@ alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT - you cannot append in the default robot search path, with `--robot-paths`, as it overrides the `EASYBUILD_ROBOT_PATHS` environment option. - As a workarroun, + As a workaround, - use `--robot-paths` to override the robot search path, and - use the environment variable `EASYBUILD_ROBOT_PATHS` to explicitly modify @@ -341,7 +351,7 @@ alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT following command. ``` shell - eb_devel --robot-paths=${EASYBUILD_ROBOT_PATHS}:/path/0:/path/1 + eb_devel --robot-paths=${EASYBUILD_ROBOT_PATHS}:/path/to/dir_0:/path/to/dir_1 --robot ReFrame-4.3.3.eb ``` ### Opening a new pull request {: #contributing_creating_pull_requests } From c96bc7035bd9f7b277f0054b6c7057ce4817c056 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 11:22:28 +0200 Subject: [PATCH 27/34] Fix type specifications in console blocks --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index ac128c583..5e78fa021 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -280,7 +280,7 @@ repositories in the same directory, for instance a directory name `EasyBuild`. After cloning these repositories the content of the `EasyBuild` directory should be the following. -``` +``` console $ tree -L 1 EasyBuild EasyBuild ├── easybuild-easyblocks From a6a1adbd9ed32bad657979fb6def2358d9f1430d Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 15:02:02 +0200 Subject: [PATCH 28/34] Explain why `--robot-paths` overrides the configuration of the alias Co-authored-by: ocaisa --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index 5e78fa021..26e5eb418 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -343,7 +343,7 @@ eb_devel --robot ReFrame-4.3.3.eb As a workaround, - - use `--robot-paths` to override the robot search path, and + - use `--robot-paths` to override the robot search path set via the alias, and - use the environment variable `EASYBUILD_ROBOT_PATHS` to explicitly modify the robot search path. From 91eb621e499f1a5a6ca7552c5a08f0f836b5f0a0 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 15:02:32 +0200 Subject: [PATCH 29/34] Fix typos and expressin errors Co-authored-by: ocaisa --- docs/contributing.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 26e5eb418..4a9dffd10 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -302,9 +302,9 @@ To run the development instance, add the paths of the framework and easyblock repositories to the Python path, and the path of the easyconfig repository to the robot search path. -For instance, a command to install `ReFrame-4.3.3.ed` and its dependencies with -the required variables defined for in the command environment would be the -following. +For instance, a command to install `ReFrame-4.3.3.eb` and its dependencies with +the necessary variables defined for the command environment would be the +following: ``` shell PYTHONPATH=${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH} EASYBUILD_ROBOT_PATHS=${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs ${EB_DEVEL_ROOT}/easybuild-framework/eb --robot ReFrame-4.3.3.eb From 28df4fcaa1caa38ddde093356d3f9e437eab6a04 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 15:03:21 +0200 Subject: [PATCH 30/34] Fix expression errors Co-authored-by: ocaisa --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index 4a9dffd10..dec57e8f0 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -311,7 +311,7 @@ PYTHONPATH=${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyb ``` To avoid adding the variables in the environment of every single command while -maintaining the shell environment clean, an alias can be defined as follows. +maintaining a clean shell environment, an alias can be defined as follows. ``` shell alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH}" EASYBUILD_ROBOT_PATHS="${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs" ${EB_DEVEL_ROOT}/easybuild-framework/eb' From 111bacf9d8b2ee9d05877ec061eb16121dff1884 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 15:03:50 +0200 Subject: [PATCH 31/34] Improve wording Co-authored-by: ocaisa --- docs/contributing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index dec57e8f0..b3af61df6 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -317,8 +317,8 @@ maintaining a clean shell environment, an alias can be defined as follows. alias eb_devel='PYTHONPATH="${EB_DEVEL_ROOT}/easybuild-framework:${EB_DEVEL_ROOT}/easybuild-easyblocks:${PYTHONPATH}" EASYBUILD_ROBOT_PATHS="${EB_DEVEL_ROOT}/easybuild-easyconfigs/easybuild/easyconfigs" ${EB_DEVEL_ROOT}/easybuild-framework/eb' ``` -With the alias defined the command to install `ReFrame-4.3.3.ed` and its -dependencies becomes the following. +With the alias defined, the command to install `ReFrame-4.3.3.eb` and its +dependencies now becomes the following: ``` shell eb_devel --robot ReFrame-4.3.3.eb From de4037fa64226458b54c2159f8aa0fdff5d701a0 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Fri, 24 Oct 2025 15:10:06 +0200 Subject: [PATCH 32/34] Fix expression error --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index b3af61df6..e2322f76c 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -331,7 +331,7 @@ eb_devel --robot ReFrame-4.3.3.eb instance. The robot search path is set explicitly using the `EASYBUILD_ROBOT_PATHS` environment variable. As a result, expect that some features of the `EASYBUILD_ROBOT_PATHS` and its accompanying command line - option, `--robot-paths` will not work with, `eb_devel`, the alias for the + option, `--robot-paths` will not work with `eb_devel`, the alias for the EasyBuild development version. For instance, From ed8bc497a8278bfdde04c0959888dd515a1b93e8 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 24 Oct 2025 15:16:56 +0200 Subject: [PATCH 33/34] Apply suggestion from @ocaisa --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index e2322f76c..0dbbc111a 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -338,7 +338,7 @@ eb_devel --robot ReFrame-4.3.3.eb - you cannot use `EASYBUILD_ROBOT_PATHS` to set the robot path as it is overridden in the alias `eb_devel`, and - - you cannot append in the default robot search path, with `--robot-paths`, + - you cannot append to the default robot search path, with `--robot-paths`, as it overrides the `EASYBUILD_ROBOT_PATHS` environment option. As a workaround, From 473266920d519c8b02642c621b00e963a3e3efef Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 24 Oct 2025 15:17:04 +0200 Subject: [PATCH 34/34] Apply suggestion from @ocaisa --- docs/contributing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 0dbbc111a..72a06e652 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -344,8 +344,8 @@ eb_devel --robot ReFrame-4.3.3.eb As a workaround, - use `--robot-paths` to override the robot search path set via the alias, and - - use the environment variable `EASYBUILD_ROBOT_PATHS` to explicitly modify - the robot search path. + - use the environment variable `EASYBUILD_ROBOT_PATHS` to access the + the robot search path set by the alias so that you can append to it. For instance to append to the development robot search path, use the following command.