Skip to content

Commit

Permalink
Merge pull request #4169 from easybuilders/4.7.x
Browse files Browse the repository at this point in the history
release EasyBuild v4.7.0
  • Loading branch information
migueldiascosta authored Jan 9, 2023
2 parents 0bb5724 + 088c7e3 commit 527c9f0
Show file tree
Hide file tree
Showing 339 changed files with 4,996 additions and 1,875 deletions.
7 changes: 6 additions & 1 deletion .github/workflows/bootstrap_script.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: test EasyBuild bootstrap script
on: [push, pull_request]

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

jobs:
setup:
runs-on: ubuntu-20.04
Expand Down Expand Up @@ -107,7 +112,7 @@ jobs:
EB_BOOTSTRAP_VERSION=$(grep '^EB_BOOTSTRAP_VERSION' easybuild/scripts/bootstrap_eb.py | sed 's/[^0-9.]//g')
EB_BOOTSTRAP_SHA256SUM=$(sha256sum easybuild/scripts/bootstrap_eb.py | cut -f1 -d' ')
EB_BOOTSTRAP_FOUND="$EB_BOOTSTRAP_VERSION $EB_BOOTSTRAP_SHA256SUM"
EB_BOOTSTRAP_EXPECTED="20210715.01 0ffdc17ed7eacf78369c9cd6743728f36e61bb8bf5c1bdc1e23cf2040b1ce301"
EB_BOOTSTRAP_EXPECTED="20210715.01 935979de3a4c30b24c3617ff7cd7c40cbd4d815cee5be0c99810cc21f21182f1"
test "$EB_BOOTSTRAP_FOUND" = "$EB_BOOTSTRAP_EXPECTED" || (echo "Version check on bootstrap script failed $EB_BOOTSTRAP_FOUND" && exit 1)
# test bootstrap script
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/container_tests.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: Tests for container support
on: [push, pull_request]

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

jobs:
build:
# stick to Ubuntu 18.04, where we can still easily install yum via 'apt install'
Expand Down Expand Up @@ -52,8 +57,8 @@ jobs:
sudo apt install alien
alien --version
# determine latest version of Singularity available in EPEL, and download RPM
singularity_rpm=$(curl -sL https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/s/ | grep singularity | sed 's/.*singularity/singularity/g' | sed 's/rpm.*/rpm/g')
curl -OL https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/s/${singularity_rpm}
singularity_rpm=$(curl -sL https://dl.fedoraproject.org/pub/archive/epel/8.5/Everything/x86_64/Packages/s/ | grep singularity | sed 's/.*singularity/singularity/g' | sed 's/rpm.*/rpm/g')
curl -OL https://dl.fedoraproject.org/pub/archive/epel/8.5/Everything/x86_64/Packages/s/${singularity_rpm}
# convert Singularity RPM to Debian package, and install it
sudo alien -d ${singularity_rpm}
sudo apt install ./singularity*.deb
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/eb_command.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: Tests for the 'eb' command
on: [push, pull_request]

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

jobs:
test-eb:
runs-on: ubuntu-20.04
strategy:
matrix:
python: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10']
python: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10', '3.11']
fail-fast: false
steps:
- uses: actions/checkout@v3
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/linting.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
name: Static Analysis
on: [push, pull_request]

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

jobs:
python-linting:
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10']
python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10', '3.11']

steps:
- uses: actions/checkout@v3
Expand Down
25 changes: 14 additions & 11 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: EasyBuild framework unit tests
on: [push, pull_request]

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

jobs:
setup:
runs-on: ubuntu-20.04
Expand Down Expand Up @@ -41,15 +46,9 @@ jobs:
- python: 3.5
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
- python: 3.5
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Tcl
- python: 3.7
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
- python: 3.7
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Tcl
- python: 3.8
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
Expand All @@ -59,13 +58,13 @@ jobs:
- python: 3.9
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
- python: 3.9
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Tcl
- python: '3.10'
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
- python: '3.10'
- python: '3.11'
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Lua
- python: '3.11'
modules_tool: ${{needs.setup.outputs.lmod8}}
module_syntax: Tcl
# There may be encoding errors in Python 3 which are hidden when an UTF-8 encoding is set
Expand Down Expand Up @@ -197,10 +196,14 @@ jobs:
# 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
# silence deprecation warning when using Python 2, since it breaks a bunch of tests
if [ "${{matrix.python}}" == '2.7' ]; then
export TEST_EASYBUILD_SILENCE_DEPRECATION_WARNINGS=python2
fi
# run test suite
python -O -m test.framework.suite 2>&1 | tee test_framework_suite.log
# try and make sure output of running tests is clean (no printed messages/warnings)
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.*default_backend|CryptographyDeprecationWarning: Python 2|from cryptography.utils import int_from_bytes|Blowfish"
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.*default_backend|CryptographyDeprecationWarning: Python 2|from cryptography.utils import int_from_bytes|Blowfish|GC3Pie not available, skipping test"
# '|| true' is needed to avoid that Travis stops the job on non-zero exit of grep (i.e. when there are no matches)
PRINTED_MSG=$(egrep -v "${IGNORE_PATTERNS}" test_framework_suite.log | grep '\.\n*[A-Za-z]' || true)
test "x$PRINTED_MSG" = "x" || (echo "ERROR: Found printed messages in output of test suite\n${PRINTED_MSG}" && exit 1)
7 changes: 4 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.. image:: https://github.com/easybuilders/easybuild-framework/workflows/EasyBuild%20framework%20unit%20tests/badge.svg?branch=develop

.. image:: https://easybuilders.github.io/easybuild/images/easybuild_logo_small.png
.. image:: https://github.com/easybuilders/easybuild/raw/develop/logo/png/easybuild_logo_2022_horizontal_dark_bg_transparent.png
:align: center
:height: 400px

.. image:: https://github.com/easybuilders/easybuild-framework/workflows/EasyBuild%20framework%20unit%20tests/badge.svg?branch=develop

`EasyBuild <https://easybuilders.github.io/easybuild>`_ is a software build
and installation framework that allows you to manage (scientific) software
Expand Down
41 changes: 41 additions & 0 deletions RELEASE_NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,47 @@ For more detailed information, please see the git log.
These release notes can also be consulted at https://easybuild.readthedocs.io/en/latest/Release_notes.html.


v4.7.0 (January 9th 2023)
-------------------------

feature release

- print deprecation warning with running EasyBuild with Python 2 (#4136)
- various enhancements, including:
- add support for checksums specified in external `checksums.json` file (#3749)
- vendor distutils.version.LooseVersion as easybuild.tools.LooseVersion (since distutils is deprecated in Python 3.10) (#3794, #4156)
- take into account custom configuration options specified in easystack file (#4057)
- add support for using --output-format=md (MarkDown) (#4117, #4155)
- add support for --filter-rpath-sanity-libs to skip RPATH sanity check for designated libraries (#4119)
- add sanity_check_load_module method to EasyBlock to provide control over when module is loaded during sanity check step (#4125)
- add eb_bash_completion_local.bash script to setup.py (#4127)
- check whether nvidia-smi/rocm-smi command is available before trying to run it in `get_gpu_info` (#4131)
- add gfbf as subtoolchain of foss (#4143)
- add support for postinstallmsgs (#4145)
- make iimkl toolchain aware of intel-compilers (#4146)
- add definition for nvofbf toolchain (#4157, #4163)
- various bug fixes, including:
- also use EasyConfig instances cache in process_easyconfig when build_specs is empty dict (#4107)
- fix build options that should have empty list as default value (#4108)
- catch easyconfig parsing failure so we can generate and post a test report (#4109)
- add explicit return when no checksums match those specified in a tuple (#4112)
- tweak findPythonDeps.py script to use canonical package names (#4118)
- add `-fdefault-double-8` to `r8` toolchain compiler option for GCC (to be consistent with Intel) (#4121)
- always start with empty list for banned/requires libraries to avoid that corresponding build option is updated in-place (#4137)
- fix container tests by using EPEL archive URL for downloading Singularity RPM (#4138)
- use -march=x86-64 -mtune=generic instead of -xSSE2 when using Intel oneAPI compilers (#4147)
- partially skip test_det_copy_ec_specs if no GitHub token is available (#4149)
- other changes:
- drop support for easystack files using 'software' top-level key (#4057)
- also run unit tests with Python 3.11 + add Python 3.11 to classifiers in setup.py (#4092, #4141)
- use new EasyBuild logo in README (#4123)
- automatically cancel Github Action workflow runs for outdated commits (#4132)
- auto-enable use of oneAPI C/C++ compilers for intel-compilers >= 2022.2.0 (#4135)
- trim CI test configurations to avoid hitting GitHub rate limits (#4148)
- various tweaks to docstrings and help messages to fix problems with auto-generated documentation in MarkDown format (#4129, #4130, #4154, #4160, #4162, #4168)
- update copyright lines for 2023 (#4161)


v4.6.2 (October 21st 2022)
--------------------------

Expand Down
2 changes: 1 addition & 1 deletion contrib/hooks/add_delete_configopt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Author: Åke Sandgren, HPC2N

# We need to be able to distinguish between versions of OpenMPI
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion


def pre_configure_hook(self, *args, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion contrib/hooks/hpc2n_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

import os

from distutils.version import LooseVersion
from easybuild.framework.easyconfig.format.format import DEPENDENCY_PARAMETERS
from easybuild.tools import LooseVersion
from easybuild.tools.filetools import apply_regex_substitutions
from easybuild.tools.build_log import EasyBuildError
from easybuild.tools.modules import get_software_root
Expand Down
8 changes: 5 additions & 3 deletions easybuild/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2011-2022 Ghent University
# Copyright 2011-2023 Ghent University
#
# This file is part of EasyBuild,
# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
Expand All @@ -25,7 +25,9 @@
"""
Declares EasyBuild namespace, in an extendable way.
:author: Jens Timmerman (Ghent University)
:author: Kenneth Hoste (Ghent University)
Authors:
* Jens Timmerman (Ghent University)
* Kenneth Hoste (Ghent University)
"""
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
8 changes: 5 additions & 3 deletions easybuild/base/exceptions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2015-2022 Ghent University
# Copyright 2015-2023 Ghent University
#
# This file is part of EasyBuild,
# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
Expand All @@ -25,8 +25,10 @@
"""
Module providing custom exceptions.
:author: Kenneth Hoste (Ghent University)
:author: Riccardo Murri (University of Zurich)
Authors:
* Kenneth Hoste (Ghent University)
* Riccardo Murri (University of Zurich)
"""
import inspect
import logging
Expand Down
19 changes: 9 additions & 10 deletions easybuild/base/fancylogger.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2011-2022 Ghent University
# Copyright 2011-2023 Ghent University
#
# This file is part of EasyBuild,
# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
Expand Down Expand Up @@ -69,9 +69,11 @@
- set an environment variable FANCYLOG_SERVER and FANCYLOG_SERVER_PORT (optionally)
- this will make fancylogger log to that that server and port instead of the screen.
:author: Jens Timmerman (Ghent University)
:author: Stijn De Weirdt (Ghent University)
:author: Kenneth Hoste (Ghent University)
Authors:
* Jens Timmerman (Ghent University)
* Stijn De Weirdt (Ghent University)
* Kenneth Hoste (Ghent University)
"""

from collections import namedtuple
Expand All @@ -83,8 +85,8 @@
import threading
import traceback
import weakref
from distutils.version import LooseVersion

from easybuild.tools import LooseVersion
from easybuild.tools.py2vs3 import raise_with_traceback, string_type


Expand Down Expand Up @@ -341,10 +343,7 @@ def deprecated(self, msg, cur_ver, max_ver, depth=2, exception=None, log_callbac
loose_cv = LooseVersion(cur_ver)
loose_mv = LooseVersion(max_ver)

loose_cv.version = loose_cv.version[:depth]
loose_mv.version = loose_mv.version[:depth]

if loose_cv >= loose_mv:
if loose_cv.version[:depth] >= loose_mv.version[:depth]:
self.raiseException("DEPRECATED (since v%s) functionality used: %s" % (max_ver, msg), exception=exception)
else:
deprecation_msg = "Deprecated functionality, will no longer work in v%s: %s" % (max_ver, msg)
Expand Down Expand Up @@ -826,7 +825,7 @@ def setroot(fancyrecord=FANCYLOG_FANCYRECORD):
Set a FancyLogger instance as the logging root logger
with (effective)loglevel of current root FancyLogger
:param fancyrecord is enabled or not (default FANCYLOG_FANCYRECORD module constant)
:param fancyrecord: is enabled or not (default FANCYLOG_FANCYRECORD module constant)
Detecting the loglevel is best-effort, better to set the loglevel after setroot()
"""
Expand Down
Loading

0 comments on commit 527c9f0

Please sign in to comment.