Skip to content

Commit c822234

Browse files
committed
Merge branch 'develop' into optarch-map
2 parents 4b9d41d + c1b05d9 commit c822234

File tree

380 files changed

+15355
-8779
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

380 files changed

+15355
-8779
lines changed

.github/workflows/container_tests.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ jobs:
1717
python: [3.7]
1818
fail-fast: false
1919
steps:
20-
- uses: actions/checkout@v3
20+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2121

2222
- name: set up Python
23-
uses: actions/setup-python@v4
23+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
2424
with:
2525
python-version: ${{matrix.python}}
2626
architecture: x64
2727

2828
- name: install OS & Python packages
2929
run: |
3030
# for modules tool
31-
APT_PKGS="lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
31+
APT_PKGS="lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"
3232
# for building Singularity images
3333
APT_PKGS+=" rpm dnf"
3434

.github/workflows/container_tests_apptainer.yml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ jobs:
1515
strategy:
1616
matrix:
1717
python: [3.7]
18-
apptainer: [1.0.0, 1.1.7]
18+
apptainer: [1.0.0, 1.1.7, 1.3.6]
1919
fail-fast: false
2020
steps:
21-
- uses: actions/checkout@v3
21+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2222

2323
- name: set up Python
24-
uses: actions/setup-python@v3
24+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
2525
with:
2626
python-version: ${{matrix.python}}
2727
architecture: x64
@@ -31,7 +31,7 @@ jobs:
3131
# for building CentOS 7 container images
3232
APT_PKGS="rpm dnf"
3333
# for modules tool
34-
APT_PKGS+=" lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
34+
APT_PKGS+=" lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"
3535
3636
# Avoid apt-get update, as we don't really need it,
3737
# and it does more harm than good (it's fairly expensive, and it results in flaky test runs)
@@ -41,12 +41,6 @@ jobs:
4141
sudo apt-get install $APT_PKGS
4242
fi
4343
44-
# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
45-
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
46-
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
47-
sudo ln -s /usr/lib/x86_64-linux-gnu/lua/5.2/posix_c.so /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so
48-
fi
49-
5044
- name: install Lmod
5145
run: |
5246
# avoid downloading modules tool sources into easybuild-framework dir

.github/workflows/eb_command.yml

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,19 @@ concurrency:
1111

1212
jobs:
1313
test-eb:
14-
runs-on: ubuntu-20.04
1514
strategy:
1615
matrix:
17-
python: [3.6, 3.7, 3.8, 3.9, '3.10', '3.11']
16+
python: [3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
17+
include:
18+
- python: 3.7
19+
os: ubuntu-22.04
1820
fail-fast: false
21+
runs-on: ${{matrix.os || 'ubuntu-24.04'}}
1922
steps:
20-
- uses: actions/checkout@v3
23+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2124

2225
- name: set up Python
23-
uses: actions/setup-python@v4
26+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
2427
with:
2528
python-version: ${{matrix.python}}
2629
architecture: x64
@@ -32,9 +35,13 @@ jobs:
3235
# update to latest pip, check version
3336
pip install --upgrade pip
3437
pip --version
38+
if ! python -c "import distutils" 2> /dev/null; then
39+
# we need setuptools for distutils in Python 3.12+, needed for python setup.py sdist
40+
pip install --upgrade setuptools
41+
fi
3542
3643
# for modules tool
37-
APT_PKGS="lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
44+
APT_PKGS="lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"
3845
3946
# Avoid apt-get update, as we don't really need it,
4047
# and it does more harm than good (it's fairly expensive, and it results in flaky test runs)
@@ -44,12 +51,6 @@ jobs:
4451
sudo apt-get install $APT_PKGS
4552
fi
4653
47-
# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
48-
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
49-
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
50-
sudo ln -s /usr/lib/x86_64-linux-gnu/lua/5.2/posix_c.so /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so
51-
fi
52-
5354
- name: install modules tool
5455
run: |
5556
# avoid downloading modules tool sources into easybuild-framework dir
@@ -91,7 +92,7 @@ jobs:
9192
pymajver=$(python -c 'import sys; print(sys.version_info[0])')
9293
pymajminver=$(python -c 'import sys; print(".".join(str(x) for x in sys.version_info[:2]))')
9394
# check patterns in verbose output
94-
for pattern in "^>> Considering .python.\.\.\." "^>> .python. version: ${pymajminver}\.[0-9]\+, which matches Python ${pymajver} version requirement" "^>> 'python' is able to import 'easybuild.framework', so retaining it" "^>> Selected Python command: python \(.*/bin/python\)" "^This is EasyBuild 4\.[0-9.]\+"; do
95+
for pattern in "^>> Considering .python3.\.\.\." "^>> .python3. version: ${pymajminver}\.[0-9]\+, which matches Python ${pymajver} version requirement" "^>> 'python3' is able to import 'easybuild.framework', so retaining it" "^>> Selected Python command: python3 \(.*/bin/python3\)" "^This is EasyBuild 5\.[0-9.]\+"; do
9596
echo "Looking for pattern \"${pattern}\" in eb_version.out..."
9697
grep "$pattern" eb_version.out
9798
done
@@ -103,7 +104,7 @@ jobs:
103104
for eb_python in "python${pymajver}" "python${pymajminver}"; do
104105
export EB_PYTHON="${eb_python}"
105106
eb --version | tee eb_version.out 2>&1
106-
for pattern in "^>> Considering .${eb_python}.\.\.\." "^>> .${eb_python}. version: ${pymajminver}\.[0-9]\+, which matches Python ${pymajver} version requirement" "^>> '${eb_python}' is able to import 'easybuild.framework', so retaining it" "^>> Selected Python command: ${eb_python} \(.*/bin/${eb_python}\)" "^This is EasyBuild 4\.[0-9.]\+"; do
107+
for pattern in "^>> Considering .${eb_python}.\.\.\." "^>> .${eb_python}. version: ${pymajminver}\.[0-9]\+, which matches Python ${pymajver} version requirement" "^>> '${eb_python}' is able to import 'easybuild.framework', so retaining it" "^>> Selected Python command: ${eb_python} \(.*/bin/${eb_python}\)" "^This is EasyBuild 5\.[0-9.]\+"; do
107108
echo "Looking for pattern \"${pattern}\" in eb_version.out..."
108109
grep "$pattern" eb_version.out
109110
done

.github/workflows/end2end.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@ jobs:
77
strategy:
88
matrix:
99
container:
10-
- centos-7.9
1110
- centos-8.5
12-
- fedora-36
11+
- fedora-41
1312
- opensuse-15.4
14-
- rockylinux-8.8
15-
- rockylinux-9.2
13+
- rockylinux-8.10
14+
- rockylinux-9.5
1615
- ubuntu-20.04
1716
- ubuntu-22.04
17+
- ubuntu-24.04
1818
fail-fast: false
1919
container:
2020
image: ghcr.io/easybuilders/${{ matrix.container }}-amd64
2121
steps:
2222
- name: Check out the repo
23-
uses: actions/checkout@v3
23+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2424

2525
- name: download and unpack easyblocks and easyconfigs repositories
2626
run: |
@@ -49,6 +49,7 @@ jobs:
4949
"eb --show-system-info"
5050
"eb --check-eb-deps"
5151
"eb --show-config"
52+
"eb -x bzip2-1.0.8.eb"
5253
)
5354
for cmd in "${cmds[@]}"; do
5455
echo ">>> $cmd"
@@ -58,4 +59,8 @@ jobs:
5859
- name: End-to-end test of installing bzip2 with EasyBuild
5960
shell: bash
6061
run: |
61-
sudo -u easybuild bash -l -c "source /tmp/eb_env; eb bzip2-1.0.8.eb --trace --robot"
62+
EB_ARGS=''
63+
if [[ "${{ matrix.container }}" == "fedora-41" ]] || [[ "${{ matrix.container }}" == "ubuntu-24.04" ]]; then
64+
EB_ARGS='--filter-deps=binutils'
65+
fi
66+
sudo -u easybuild bash -l -c "source /tmp/eb_env; eb bzip2-1.0.8.eb --trace --robot ${EB_ARGS}"

.github/workflows/linting.yml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@ concurrency:
1010

1111
jobs:
1212
python-linting:
13-
runs-on: ubuntu-20.04
1413
strategy:
1514
matrix:
16-
python-version: [3.6, 3.7, 3.8, 3.9, '3.10', '3.11']
17-
15+
python: [3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
16+
include:
17+
- python: 3.7
18+
os: ubuntu-22.04
19+
fail-fast: false
20+
runs-on: ${{matrix.os || 'ubuntu-24.04'}}
1821
steps:
19-
- uses: actions/checkout@v3
22+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2023

2124
- name: set up Python
22-
uses: actions/setup-python@v4
25+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
2326
with:
2427
python-version: ${{ matrix.python-version }}
2528

@@ -30,10 +33,4 @@ jobs:
3033
3134
- name: Run flake8 to verify PEP8-compliance of Python code
3235
run: |
33-
# don't check py2vs3/py3.py when testing with Python 2, and vice versa
34-
if [[ "${{ matrix.python-version }}" =~ "2." ]]; then
35-
py_excl=py3
36-
else
37-
py_excl=py2
38-
fi
39-
flake8 --exclude ./easybuild/tools/py2vs3/${py_excl}.py
36+
flake8

.github/workflows/unit_tests.yml

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -11,61 +11,55 @@ concurrency:
1111

1212
jobs:
1313
setup:
14-
runs-on: ubuntu-20.04
14+
runs-on: ubuntu-latest
1515
outputs:
16-
lmod7: Lmod-7.8.22
17-
lmod8: Lmod-8.7.6
18-
modulesTcl: modules-tcl-1.147
19-
modules3: modules-3.2.10
20-
modules4: modules-4.1.4
16+
lmod8: Lmod-8.7.58
17+
modules4: modules-4.5.3
18+
modules5: modules-5.3.1
2119
steps:
2220
- run: "true"
2321
build:
2422
needs: setup
25-
runs-on: ubuntu-20.04
23+
runs-on: ${{matrix.os || 'ubuntu-24.04'}}
2624
strategy:
2725
matrix:
28-
python: [3.6]
26+
# Python 3.10 is default in Ubuntu 22.04
27+
python: ['3.10']
2928
modules_tool:
3029
# use variables defined by 'setup' job above, see also
3130
# https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#needs-context
32-
- ${{needs.setup.outputs.lmod7}}
3331
- ${{needs.setup.outputs.lmod8}}
34-
- ${{needs.setup.outputs.modulesTcl}}
35-
- ${{needs.setup.outputs.modules3}}
3632
- ${{needs.setup.outputs.modules4}}
37-
lc_all: [""]
33+
- ${{needs.setup.outputs.modules5}}
3834
include:
39-
# Test different Python 3 versions with Lmod 8.x
40-
- python: 3.7
35+
# Test different Python 3 versions with Lmod 8.x (with both Lua and Tcl module syntax)
36+
- python: '3.7'
4137
modules_tool: ${{needs.setup.outputs.lmod8}}
42-
- python: 3.8
38+
os: ubuntu-22.04
39+
- python: '3.8'
4340
modules_tool: ${{needs.setup.outputs.lmod8}}
44-
- python: 3.9
45-
modules_tool: ${{needs.setup.outputs.lmod8}}
46-
- python: '3.10'
41+
- python: '3.9'
4742
modules_tool: ${{needs.setup.outputs.lmod8}}
4843
- python: '3.11'
4944
modules_tool: ${{needs.setup.outputs.lmod8}}
50-
# There may be encoding errors in Python 3 which are hidden when an UTF-8 encoding is set
51-
# Hence run the tests (again) with LC_ALL=C and Python 3.6 (or any < 3.7)
52-
- python: 3.6
45+
- python: '3.12'
46+
modules_tool: ${{needs.setup.outputs.lmod8}}
47+
- python: '3.13'
5348
modules_tool: ${{needs.setup.outputs.lmod8}}
54-
lc_all: C
5549
fail-fast: false
5650
steps:
57-
- uses: actions/checkout@v3
51+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
5852

5953
- name: set up Python
60-
uses: actions/setup-python@v4
54+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
6155
with:
6256
python-version: ${{matrix.python}}
6357
architecture: x64
6458

6559
- name: install OS & Python packages
6660
run: |
6761
# for modules tool
68-
APT_PKGS="lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
62+
APT_PKGS="lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"
6963
# for GitPython, python-hglib
7064
APT_PKGS+=" git mercurial"
7165
# dep for GC3Pie
@@ -79,19 +73,18 @@ jobs:
7973
sudo apt-get install $APT_PKGS
8074
fi
8175
82-
# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
83-
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
84-
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
85-
sudo ln -s /usr/lib/x86_64-linux-gnu/lua/5.2/posix_c.so /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so
86-
fi
8776
# Python packages
8877
pip --version
8978
pip install --upgrade pip
9079
pip --version
9180
pip install -r requirements.txt
81+
if ! python -c "import distutils" 2> /dev/null; then
82+
# we need setuptools for distutils in Python 3.12+, needed for python setup.py sdist
83+
pip install --upgrade setuptools
84+
fi
9285
# git config is required to make actual git commits (cfr. tests for GitRepository)
93-
git config --global user.name "Travis CI"
94-
git config --global user.email "travis@travis-ci.org"
86+
git config --global user.name "Github Actions"
87+
git config --global user.email "actions@github.com"
9588
git config --get-regexp 'user.*'
9689
9790
- name: install GitHub token (if available)
@@ -101,12 +94,12 @@ jobs:
10194
# and are only run after the PR gets merged
10295
GITHUB_TOKEN: ${{secrets.CI_UNIT_TESTS_GITHUB_TOKEN}}
10396
run: |
104-
# only install GitHub token when testing with Lmod 8.x + Python 3.6 or 3.9, to avoid hitting GitHub rate limit;
97+
# only install GitHub token when testing with Lmod 8.x + Python 3.9, to avoid hitting GitHub rate limit
10598
# tests that require a GitHub token are skipped automatically when no GitHub token is available
106-
if [[ "${{matrix.modules_tool}}" =~ 'Lmod-8' ]] && [[ "${{matrix.python}}" =~ 3.[69] ]]; then
99+
if [[ "${{matrix.modules_tool}}" =~ 'Lmod-8' ]] && [[ "${{matrix.python}}" =~ 3.9 ]]; then
107100
if [ ! -z $GITHUB_TOKEN ]; then
108-
SET_KEYRING="import keyrings.alt.file; keyring.set_keyring(keyrings.alt.file.PlaintextKeyring())";
109-
python -c "import keyring; $SET_KEYRING; keyring.set_password('github_token', 'easybuild_test', '$GITHUB_TOKEN')";
101+
SET_KEYRING="import keyrings.alt.file; keyring.set_keyring(keyrings.alt.file.PlaintextKeyring())"
102+
python -c "import keyring; $SET_KEYRING; keyring.set_password('github_token', 'easybuild_test', '$GITHUB_TOKEN')"
110103
fi
111104
echo "GitHub token installed!"
112105
else
@@ -129,7 +122,7 @@ jobs:
129122
run: |
130123
# make sure there are no (top-level) "import setuptools" or "import pkg_resources" statements,
131124
# since EasyBuild should not have a runtime requirement on setuptools
132-
SETUPTOOLS_IMPORTS=$(egrep -RI '^(from|import)[ ]*pkg_resources|^(from|import)[ ]*setuptools' * || true)
125+
SETUPTOOLS_IMPORTS=$(egrep --exclude setup.py -RI '^(from|import)[ ]*pkg_resources|^(from|import)[ ]*setuptools' * || true)
133126
test "x$SETUPTOOLS_IMPORTS" = "x" || (echo "Found setuptools and/or pkg_resources imports in easybuild/:\n${SETUPTOOLS_IMPORTS}" && exit 1)
134127
135128
- name: install sources
@@ -143,26 +136,24 @@ jobs:
143136
- name: run test suite
144137
env:
145138
EB_VERBOSE: 1
146-
LC_ALL: ${{matrix.lc_all}}
139+
LC_ALL: ""
147140
run: |
148141
# run tests *outside* of checked out easybuild-framework directory,
149142
# to ensure we're testing installed version (see previous step)
150143
cd $HOME
151144
# initialize environment for modules tool
152145
if [ -f $HOME/moduleshome ]; then export MODULESHOME=$(cat $HOME/moduleshome); fi
153-
source $(cat $HOME/mod_init); type module
146+
source $(cat $HOME/mod_init)
147+
type module
148+
module --version
154149
# make sure 'eb' is available via $PATH, and that $PYTHONPATH is set (some tests expect that);
155150
# also pick up changes to $PATH set by sourcing $MOD_INIT
156151
export PREFIX=/tmp/$USER/$GITHUB_SHA
157152
export PATH=$PREFIX/bin:$(cat $HOME/path)
158153
export PYTHONPATH=$PREFIX/lib/python${{matrix.python}}/site-packages:$PYTHONPATH
159154
eb --version
160155
# tell EasyBuild which modules tool is available
161-
if [[ ${{matrix.modules_tool}} =~ ^modules-tcl- ]]; then
162-
export EASYBUILD_MODULES_TOOL=EnvironmentModulesTcl
163-
elif [[ ${{matrix.modules_tool}} =~ ^modules-3 ]]; then
164-
export EASYBUILD_MODULES_TOOL=EnvironmentModulesC
165-
elif [[ ${{matrix.modules_tool}} =~ ^modules-4 ]]; then
156+
if [[ ${{matrix.modules_tool}} =~ ^modules- ]]; then
166157
export EASYBUILD_MODULES_TOOL=EnvironmentModules
167158
else
168159
export EASYBUILD_MODULES_TOOL=Lmod
@@ -191,7 +182,16 @@ jobs:
191182
# run test suite
192183
python -O -m test.framework.suite 2>&1 | tee test_framework_suite.log
193184
# try and make sure output of running tests is clean (no printed messages/warnings)
194-
IGNORE_PATTERNS="no GitHub token available|skipping SvnRepository test|requires Lmod as modules tool|stty: 'standard input': Inappropriate ioctl for device|CryptographyDeprecationWarning: Python 3.[56]|from cryptography.* import |CryptographyDeprecationWarning: Python 2|Blowfish|GC3Pie not available, skipping test"
185+
IGNORE_PATTERNS="no GitHub token available"
186+
IGNORE_PATTERNS+="|skipping SvnRepository test"
187+
IGNORE_PATTERNS+="|requires Lmod as modules tool"
188+
IGNORE_PATTERNS+="|stty: 'standard input': Inappropriate ioctl for device"
189+
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: Python 3.7"
190+
IGNORE_PATTERNS+="|from cryptography.* import "
191+
IGNORE_PATTERNS+="|Blowfish"
192+
IGNORE_PATTERNS+="|GC3Pie not available, skipping test"
193+
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: TripleDES has been moved"
194+
IGNORE_PATTERNS+="|algorithms.TripleDES"
195195
# '|| true' is needed to avoid that GitHub Actions stops the job on non-zero exit of grep (i.e. when there are no matches)
196196
PRINTED_MSG=$(egrep -v "${IGNORE_PATTERNS}" test_framework_suite.log | grep '\.\n*[A-Za-z]' || true)
197197
test "x$PRINTED_MSG" = "x" || (echo "ERROR: Found printed messages in output of test suite" && echo "${PRINTED_MSG}" && exit 1)

0 commit comments

Comments
 (0)