Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/container_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ jobs:
python: [3.7]
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{matrix.python}}
architecture: x64

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

Expand Down
14 changes: 4 additions & 10 deletions .github/workflows/container_tests_apptainer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ jobs:
strategy:
matrix:
python: [3.7]
apptainer: [1.0.0, 1.1.7]
apptainer: [1.0.0, 1.1.7, 1.3.6]
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: set up Python
uses: actions/setup-python@v3
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{matrix.python}}
architecture: x64
Expand All @@ -31,7 +31,7 @@ jobs:
# for building CentOS 7 container images
APT_PKGS="rpm dnf"
# for modules tool
APT_PKGS+=" lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
APT_PKGS+=" lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"

# Avoid apt-get update, as we don't really need it,
# and it does more harm than good (it's fairly expensive, and it results in flaky test runs)
Expand All @@ -41,12 +41,6 @@ jobs:
sudo apt-get install $APT_PKGS
fi

# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
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
fi

- name: install Lmod
run: |
# avoid downloading modules tool sources into easybuild-framework dir
Expand Down
16 changes: 5 additions & 11 deletions .github/workflows/eb_command.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ concurrency:

jobs:
test-eb:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
python: [3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{matrix.python}}
architecture: x64
Expand All @@ -38,7 +38,7 @@ jobs:
fi

# for modules tool
APT_PKGS="lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
APT_PKGS="lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"

# Avoid apt-get update, as we don't really need it,
# and it does more harm than good (it's fairly expensive, and it results in flaky test runs)
Expand All @@ -48,12 +48,6 @@ jobs:
sudo apt-get install $APT_PKGS
fi

# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
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
fi

- name: install modules tool
run: |
# avoid downloading modules tool sources into easybuild-framework dir
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/end2end.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ jobs:
matrix:
container:
- centos-8.5
- fedora-36
- fedora-41
- opensuse-15.4
- rockylinux-8.8
- rockylinux-9.2
- rockylinux-8.10
- rockylinux-9.5
- ubuntu-20.04
- ubuntu-22.04
- ubuntu-24.04
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This failure on Ubuntu 24.04 can be avoided with --filter-deps=binutils

Log file from a local build

gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c huffman.c

If compilation produces errors, or a large number of warnings,
please read README.COMPILATION.PROBLEMS -- you might be able to
adjust the flags in this Makefile to improve matters.

Also in README.COMPILATION.PROBLEMS are some hints that may help
if your build produces an executable which is unable to correctly
handle so-called 'large files' -- files of size 2GB or more.

gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c crctable.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c blocksort.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c randtable.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c compress.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c decompress.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c bzlib.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c bzip2.c
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64 -c bzip2recover.c
bzip2.c: In function ‘applySavedFileAttrToOutputFile’:
bzip2.c:1073:11: warning: ignoring return value of ‘fchown’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 1073 |    (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -Wall -Winline -O3 -fPIC -g -D_FILE_OFFSET_BITS=64  -o bzip2recover bzip2recover.o
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: cannot find /lib/x86_64-linux-gnu/libc.so.6
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: cannot find /lib64/ld-linux-x86-64.so.2
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/home/simon/work/eb/installpath/software/binutils/2.37/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
make: *** [Makefile:44: bzip2recover] Error 1
make: *** Waiting for unfinished jobs....

Copy link
Copy Markdown
Member

@branfosj branfosj Mar 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$ gcc --version
gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.42
Copyright (C) 2024 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

fail-fast: false
container:
image: ghcr.io/easybuilders/${{ matrix.container }}-amd64
Expand All @@ -27,7 +28,7 @@ jobs:
curl -LO https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
- name: Check out the repo
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: download and unpack easyblocks and easyconfigs repositories
run: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ concurrency:

jobs:
python-linting:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
python-version: [3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{ matrix.python-version }}

Expand Down
42 changes: 15 additions & 27 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ concurrency:

jobs:
setup:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
outputs:
lmod8: Lmod-8.7.6
lmod8: Lmod-8.7.58
modules4: modules-4.5.3
modules5: modules-5.3.1
steps:
Expand All @@ -23,7 +23,8 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
python: [3.6]
# Python 3.10 is default in Ubuntu 22.04
python: ['3.10']
modules_tool:
# use variables defined by 'setup' job above, see also
# https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#needs-context
Expand All @@ -33,39 +34,32 @@ jobs:
lc_all: [""]
include:
# Test different Python 3 versions with Lmod 8.x (with both Lua and Tcl module syntax)
- python: 3.7
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: 3.8
- python: '3.7'
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: 3.9
- python: '3.8'
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: '3.10'
- python: '3.9'
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: '3.11'
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: '3.12'
modules_tool: ${{needs.setup.outputs.lmod8}}
- python: '3.13'
modules_tool: ${{needs.setup.outputs.lmod8}}
# There may be encoding errors in Python 3 which are hidden when an UTF-8 encoding is set
# Hence run the tests (again) with LC_ALL=C and Python 3.6 (or any < 3.7)
- python: 3.6
modules_tool: ${{needs.setup.outputs.lmod8}}
lc_all: C
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{matrix.python}}
architecture: x64

- name: install OS & Python packages
run: |
# for modules tool
APT_PKGS="lua5.2 liblua5.2-dev lua-filesystem lua-posix tcl tcl-dev"
APT_PKGS="lua5.3 liblua5.3-dev lua-filesystem lua-posix tcl tcl-dev"
# for GitPython, python-hglib
APT_PKGS+=" git mercurial"
# dep for GC3Pie
Expand All @@ -79,11 +73,6 @@ jobs:
sudo apt-get install $APT_PKGS
fi

# fix for lua-posix packaging issue, see https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
# needed for Ubuntu 18.04, but not for Ubuntu 20.04, so skipping symlinking if posix.so already exists
if [ ! -e /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so ] ; then
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
fi
# Python packages
pip --version
pip install --upgrade pip
Expand All @@ -94,8 +83,8 @@ jobs:
pip install --upgrade setuptools
fi
# git config is required to make actual git commits (cfr. tests for GitRepository)
git config --global user.name "Travis CI"
git config --global user.email "travis@travis-ci.org"
git config --global user.name "Github Actions"
git config --global user.email "actions@github.com"
git config --get-regexp 'user.*'

- name: install GitHub token (if available)
Expand All @@ -105,9 +94,9 @@ jobs:
# and are only run after the PR gets merged
GITHUB_TOKEN: ${{secrets.CI_UNIT_TESTS_GITHUB_TOKEN}}
run: |
# only install GitHub token when testing with Lmod 8.x + Python 3.6 or 3.9, to avoid hitting GitHub rate limit
# only install GitHub token when testing with Lmod 8.x + Python 3.9, to avoid hitting GitHub rate limit
# tests that require a GitHub token are skipped automatically when no GitHub token is available
if [[ "${{matrix.modules_tool}}" =~ 'Lmod-8' ]] && [[ "${{matrix.python}}" =~ 3.[69] ]]; then
if [[ "${{matrix.modules_tool}}" =~ 'Lmod-8' ]] && [[ "${{matrix.python}}" =~ 3.9 ]]; then
if [ ! -z $GITHUB_TOKEN ]; then
SET_KEYRING="import keyrings.alt.file; keyring.set_keyring(keyrings.alt.file.PlaintextKeyring())"
python -c "import keyring; $SET_KEYRING; keyring.set_password('github_token', 'easybuild_test', '$GITHUB_TOKEN')"
Expand Down Expand Up @@ -197,9 +186,8 @@ jobs:
IGNORE_PATTERNS+="|skipping SvnRepository test"
IGNORE_PATTERNS+="|requires Lmod as modules tool"
IGNORE_PATTERNS+="|stty: 'standard input': Inappropriate ioctl for device"
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: Python 3.[567]"
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: Python 3.7"
IGNORE_PATTERNS+="|from cryptography.* import "
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: Python 2"
IGNORE_PATTERNS+="|Blowfish"
IGNORE_PATTERNS+="|GC3Pie not available, skipping test"
IGNORE_PATTERNS+="|CryptographyDeprecationWarning: TripleDES has been moved"
Expand Down
82 changes: 82 additions & 0 deletions .github/workflows/unit_tests_python36.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: EasyBuild framework unit tests (Python 3.6)
on: [push, pull_request]

permissions:
contents: read # to fetch code (actions/checkout)

concurrency:
group: ${{format('{0}:{1}:{2}', github.repository, github.ref, github.workflow)}}
cancel-in-progress: true

jobs:
test_python36:
runs-on: ubuntu-22.04
container:
# Ubuntu 20.04 container that already includes Python 3.6 + Lmod & co,
# see https://github.com/easybuilders/easybuild-containers
image: ghcr.io/easybuilders/ubuntu-20.04-python36-amd64
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2

- name: install Python packages
run: |
# Python packages
python3.6 -V
python3.6 -m pip --version
python3.6 -m pip install --upgrade pip
python3.6 -m pip --version
python3.6 -m pip install -r requirements.txt
# git config is required to make actual git commits (cfr. tests for GitRepository)
sudo -u easybuild git config --global user.name "GitHub Actions"
sudo -u easybuild git config --global user.email "actions@github.com"
sudo -u easybuild git config --get-regexp 'user.*'

- name: install GitHub token (if available)
env:
# token (owned by @boegelbot) with gist permissions (required for some of the tests for GitHub integration);
# this token is not available in pull requests, so tests that require it are skipped in PRs,
# and are only run after the PR gets merged
GITHUB_TOKEN: ${{secrets.CI_UNIT_TESTS_GITHUB_TOKEN}}
run: |
# tests that require a GitHub token are skipped automatically when no GitHub token is available
if [ ! -z $GITHUB_TOKEN ]; then
sudo -u easybuild python3.6 -c "import keyring; import keyrings.alt.file; keyring.set_keyring(keyrings.alt.file.PlaintextKeyring()); keyring.set_password('github_token', 'easybuild_test', '$GITHUB_TOKEN')";
echo "GitHub token installed!"
else
echo "Installation of GitHub token skipped!"
fi

- name: install sources
run: |
# install from source distribution tarball, to test release as published on PyPI
python3.6 setup.py sdist
ls dist
export PREFIX=/tmp/$USER/$GITHUB_SHA
python3.6 -m pip install --prefix $PREFIX dist/easybuild-framework*tar.gz

- name: run test suite
run: |
# run tests *outside* of checked out easybuild-framework directory,
# to ensure we're testing installed version (see previous step)
cd $HOME
# make sure 'eb' is available via $PATH, and that $PYTHONPATH is set (some tests expect that)
export PREFIX=/tmp/$USER/$GITHUB_SHA
ENV_CMDS="export PATH=$PREFIX/bin:$PATH; export PYTHONPATH=$PREFIX/lib/python3.6/site-packages:$PYTHONPATH"
ENV_CMDS="${ENV_CMDS}; export EB_VERBOSE=1; export EB_PYTHON=python3.6"
# run EasyBuild command via (non-root) easybuild user + login shell
sudo -u easybuild bash -l -c "${ENV_CMDS}; module --version; eb --version"
# show active EasyBuild configuration
sudo -u easybuild bash -l -c "${ENV_CMDS}; eb --show-config"
# gather some useful info on test system
sudo -u easybuild bash -l -c "${ENV_CMDS}; eb --show-system-info"
# check GitHub configuration
sudo -u easybuild bash -l -c "${ENV_CMDS}; eb --check-github --github-user=easybuild_test"
# create file owned by root but writable by anyone (used by test_copy_file)
sudo touch /tmp/file_to_overwrite_for_easybuild_test_copy_file.txt
sudo chmod o+w /tmp/file_to_overwrite_for_easybuild_test_copy_file.txt
# run test suite (via easybuild user + login shell)
sudo -u easybuild bash -l -c "${ENV_CMDS}; python3.6 -O -m test.framework.suite"
# There may be encoding errors in Python 3 which are hidden when an UTF-8 encoding is set
# Hence run the tests (again) with LC_ALL=C and Python 3.6 (or any < 3.7)
sudo -u easybuild bash -l -c "${ENV_CMDS}; export LC_ALL=C; python3.6 -O -m test.framework.suite"
Loading