Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
Flamefire committed Jun 29, 2023
2 parents 5b37a10 + 8a7ffba commit 0f34c33
Show file tree
Hide file tree
Showing 305 changed files with 2,909 additions and 646 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
name: Static Analysis
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:
python-linting:
runs-on: ubuntu-20.04
Expand Down
18 changes: 16 additions & 2 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
name: easyblocks unit tests
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:
build:
runs-on: ubuntu-20.04
strategy:
matrix:
python: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10']
python: [3.5, 3.6, 3.7, 3.8, 3.9, '3.10', '3.11']
modules_tool: [Lmod-6.6.3, Lmod-7.8.22, Lmod-8.1.14, modules-tcl-1.147, modules-3.2.10, modules-4.1.4]
module_syntax: [Lua, Tcl]
# exclude some configuration for non-Lmod modules tool:
# - don't test with Lua module syntax (only supported in Lmod)
# - don't test with Python 3.5 and 3.7+ (only with 2.7 and 3.6), to limit test configurations
# - don't test with Python 3.5 and 3.7+ (only with 3.6), to limit test configurations
exclude:
- modules_tool: modules-tcl-1.147
module_syntax: Lua
Expand All @@ -28,6 +36,8 @@ jobs:
python: 3.9
- modules_tool: modules-tcl-1.147
python: '3.10'
- modules_tool: modules-tcl-1.147
python: '3.11'
- modules_tool: modules-3.2.10
python: 3.5
- modules_tool: modules-3.2.10
Expand All @@ -38,6 +48,8 @@ jobs:
python: 3.9
- modules_tool: modules-3.2.10
python: '3.10'
- modules_tool: modules-3.2.10
python: '3.11'
- modules_tool: modules-4.1.4
python: 3.5
- modules_tool: modules-4.1.4
Expand All @@ -48,6 +60,8 @@ jobs:
python: 3.9
- modules_tool: modules-4.1.4
python: '3.10'
- modules_tool: modules-4.1.4
python: '3.11'
fail-fast: false
steps:
- uses: actions/checkout@v2
Expand Down
11 changes: 6 additions & 5 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
.. image:: https://github.com/easybuilders/easybuild-easyblocks/workflows/easyblocks%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-easyblocks/workflows/easyblocks%20unit%20tests/badge.svg?branch=develop

`EasyBuild <https://easybuilders.github.io/easybuild>`_ is a software build
`EasyBuild <https://easybuild.io>`_ is a software build
and installation framework that allows you to manage (scientific) software
on High Performance Computing (HPC) systems in an efficient way.

Expand All @@ -12,7 +13,7 @@ EasyBuild. Easyblocks are Python modules that implement the install procedure fo
(group of) software package(s). Together with the EasyBuild framework,
they allow to easily build and install supported software packages.

The EasyBuild documentation is available at http://easybuild.readthedocs.org/.
The EasyBuild documentation is available at http://docs.easybuild.io/.

The easybuild-easyblocks source code is hosted on GitHub, along
with an issue tracker for bug reports and feature requests, see
Expand Down
126 changes: 125 additions & 1 deletion RELEASE_NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,131 @@ For more detailed information, please see the git log.

These release notes can also be consulted at http://easybuild.readthedocs.org/en/latest/Release_notes.html.

The latest version of easybuild-easyblocks provides 246 software-specific easyblocks and 37 generic easyblocks.
The latest version of easybuild-easyblocks provides 248 software-specific easyblocks and 41 generic easyblocks.


v4.7.2 (27 May 2023)
--------------------

- new generic easyblock for installing Rust crates with cargo: Cargo and CargoPythonPackage (#2902, #2934)
- minor enhancements and updates, including:
- let MATLAB easyblock raise an error if the MATLAB installation key is not provided (#2905)
- print message to inform that GPU package (instead of Kokkos) is used for LAMMPS (#2906)
- enhance PyTorch easyblock to use FlexiBLAS for PyTorch >= 1.11.0 (#2915)
- various bug fixes, including:
- use custom RPATH sanity check for Go packages that doesn't actually check for an RPATH section in the binary (#2913)
- use string '0' to avoid problems when openssl version is not determined (#2914)
- update GCC easyblock to ensure that --sysroot is passed to linker (but only when it needs to be) (#2921)
- add output log to MATLAB installs, actually parse for common errors (#2924)
- enhance Gurobi easyblock to allow using $EB_GUROBI_LICENSE_FILE environment variable (#2926)
- force building torchvision with CUDA support if CUDA is included as dependency by setting `$FORCE_CUDA` (#2931)
- fix exec permission on files in arch bindir for COMSOL (#2932)

v4.7.1 (March 20th 2023)
------------------------

update/bugfix release

- minor enhancements and updates, including:
- fix TensorFlow easyblock for new versions of Bazel & TensorFlow (#2854)
- make NAMD easyblock aware of (pre)testopts (#2856)
- update MesonNinja easyblock for Meson >=0.64.0 (#2861)
- update scipy easyblock for scipy >= 1.9.0 to use meson/ninja (#2862, #2903)
- modify logic in QScintilla easyblock to find the PyQt5 sipdir in more places (#2868)
- add `testinstall` custom easyconfig parameter to PythonPackage easyblock (#2872)
- use -x option for "go install" in GoPackage generic easyblock, to print commands as they are executed (#2878)
- allow disabling pybind11 tests with `runtest = False` (#2892)
- call parent post_install_step in EasyBuildMeta easyblock (so postinstallcmds are taken into account) (#2893)
- update and enhance Maple easyblock for recent versions (#2895)
- relax glob pattern to find Mathematica install script (#2896)
- implement CUDA support in the ELPA EasyBlock & fix CPP configure issue on newer ELPA versions (#2898)
- update Trilinos easyblock to allow disabling of building tests and forward deps + support Trilinos v13.x (#2900)
- enhance Python easyblock to create non-versioned symlink for python-config + check for bin/python and bin/python-config in sanity check (#2904)
- various bug fixes, including:
- do not use -g77 option when installing NVHPC 22.9+ (#2819)
- check that sanity_check_module_loaded attribute exists before querying it in PythonPackage easyblock (#2865)
- fix $JULIA_DEPOT_PATH in installation of multiple JuliaPackage extensions (#2869)
- fix checking of CUDA/ROCR-Runtime dependencies for Clang to determine default build targets (#2873)
- show template values of exts_default_options in PythonBundle (#2874)
- fix missing initialization of CMakeMake in CMakePythonPackage (#2876)
- fix error when failing pip version check during PythonPackage sanity check (#2877)
- handle templating correctly in CMakeMake when playing with configopts (#2882)
- avoid crash in test step of PyTorch easyblock if runtest is not a command (#2883)
- fix check configure option in FlexiBLAS easyblock (#2886)
- use older `ncgen -H` for older netCDF (#2889)
- fix linking numexpr with Intel MKL's VML library for imkl >= 2021.x (#2897)
- other changes:
- only give read permissions in GitHub Actions workflows (#2863)
- use start dir of extension to install R packages (#2867)
- fix website/docs links in README (#2870)
- add deprecation notice to RPackage extensions with relative paths in start_dir (#2879)


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

feature release

- add generic easyblocks for installing (bundle of) Julia packages: JuliaPackage (#2816) and JuliaBundle (#2830)
- minor enhancements and updates, including:
- enhance TensorFlow easyblock to take into account provided OpenSSL dependency (#2575)
- add fix_shebang to install_step of PythonPackage easyblock so that we can fix shebangs when installing extensions (#2680)
- update PETSc easyblock for newer versions (>= 3.17) (#2796)
- update Clang easyblock to add support for new directory structure in Clang versions >= 14 + support Flang (#2800)
- update Xmipp easyblock since versions >= 3.20.07 use `noAsk` option to configure (#2809)
- add include/opencv4 to $CPATH for OpenCV versions >= 4.0 (#2818)
- add extra option for disabling LAPACK in ESMF (#2821)
- enable building of static libraries for libxml2 >= 2.10 (#2825)
- update Xmipp easyblock to handle effects of CUDA at SYSTEM level and newer CUDA version requirements for stdc++ (#2831)
- update LLVM easyblock to put 'cmake' symlink in place so separate CMake modules required for LLVM 15+ can be found (#2832)
- set $TEMPDIRPATH for testsuite in the BerkeleyGW easyblock, to avoid polluting /tmp (#2836)
- add `configure_no_prefix` option to skip addition of prefix to configure command in ConfigureMake easyblock (#2842)
- update qscintilla.py to be compatible with EB install of PyQt5 >= 5.15 (#2845)
- add UCC to known_dependencies in OpenMPI EasyBlock (#2847)
- update Clang-AOMP easyblock to handle version 5.2 and newer (#2851)
- various bug fixes, including:
- fix installing of Clang with RPATH linking (#2799)
- fix --module-only for Clang + fix sanity check for Clang 11.x (#2800)
- create $XDG_CACHE_HOME for PyTorch tests (#2806)
- make PythonPackage easyblock compatible with --sanity-check-only by loading module early during sanity check step (#2828)
- fix docstring of PythonBundle generic easyblock (#2833)
- fix counting of failures in PyTorch tests (#2834, #2840)
- make sure that ANSYS INSTALL script has execute permissions (#2852, #2853)
- other changes:
- remove useless -openmp build option for MRtrix v3.x (#2822)
- update HDF5 easyblock to use --enable-threadsafe configure option to make C API thread safe (#2824)
- use new EasyBuild logo in README (#2827)
- automatically cancel Github Action workflow runs for outdated commits (#2835)
- use fixed names for bazel/wrapper subdirectories used when building TensorFlow, to make debugging easier (#2841)
- also run unit tests with Python 3.11 (#2844)
- tweak docstring in some generic easyblocks so it renders nicely in auto-generated documentation (#2849)
- update copyright lines for 2023 (#2850)


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

update/bugfix release

- 2 new software-specific easyblock:
- CUDA compatibility libraries (#2764) and mamba (#2808)
- minor enhancements and updates, including:
- update OpenFOAM easyblock to support OpenFOAM 10 + clean up variant/version checks (#2766)
- added support for ESMPy in ESMF (#2789)
- enhance OpenBLAS easyblock to support running LAPACK test suite + checking how many tests fail (#2801)
- make numexpr easyblock aware of toolchain with GCC + imkl (#2810)
- add sanity check commands for netCDF (#2811)
- various bug fixes, including:
- handle problems copying symlink that points to CUDA folder that is not created for non CUDA builds of SuiteSparse (#2790)
- don't install docs (to avoid trouble with Java) + add Rocky support for ABAQUS (#2792)
- correctly count the number of failing tests (not failing test suites) in PyTorch builds (#2794, #2803)
- fix docstring for PyTorch easyblock (#2795)
- handle iterative builds with MakeCp easyblock (#2798)
- accept both None and empty value for optarch to let OpenCV detect host CPU (#2804)
- enhance EasyBuildMeta easyblock: auto-enable installing with pip + fix setup.py of easyconfigs package so installation with setuptools >= 61.0 works (#2805)
- use `python -m pip` instead of `pip` in PythonPackage easyblock (#2807)
- other changes:
- make the test output from PythonPackage less verbose by disabling default search for error patterns done by run_cmd (2797)


v4.6.1 (September 12th 2022)
Expand Down
2 changes: 1 addition & 1 deletion easybuild/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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
4 changes: 2 additions & 2 deletions easybuild/easyblocks/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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 @@ -43,7 +43,7 @@
# recent setuptools versions will *TRANSFORM* something like 'X.Y.Zdev' into 'X.Y.Z.dev0', with a warning like
# UserWarning: Normalizing '2.4.0dev' to '2.4.0.dev0'
# This causes problems further up the dependency chain...
VERSION = LooseVersion('4.6.2.dev0')
VERSION = LooseVersion('4.7.3.dev0')
UNKNOWN = 'UNKNOWN'


Expand Down
25 changes: 14 additions & 11 deletions easybuild/easyblocks/a/abaqus.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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 @@ -44,6 +44,7 @@
from easybuild.tools.filetools import change_dir, symlink, write_file
from easybuild.tools.modules import get_software_root
from easybuild.tools.run import run_cmd_qa
from easybuild.tools.systemtools import get_os_name
from easybuild.tools.py2vs3 import OrderedDict


Expand Down Expand Up @@ -78,6 +79,9 @@ def extract_step(self):
def configure_step(self):
"""Configure ABAQUS installation."""
if LooseVersion(self.version) >= LooseVersion('2016'):
# Rocky Linux isn't recognized; faking it as RHEL
if get_os_name() in ['Rocky Linux', 'AlmaLinux']:
setvar('DISTRIB_ID', 'RedHatEnterpriseServer')
# skip checking of Linux version
setvar('DSY_Force_OS', 'linux_a64')
# skip checking of license server
Expand Down Expand Up @@ -126,10 +130,9 @@ def install_step(self):
# rather than a regular dictionary (where there's no guarantee on key order in general)
std_qa = OrderedDict()

# Enable Extended Product Documentation
std_qa[selectionstr % (r"\[ \]", "Extended Product Documentation")] = "%(nr)s"
# Enable Abaqus CAE (docs)
std_qa[selectionstr % (r"\[ \]", "Abaqus CAE")] = "%(nr)s"
# Disable Extended Product Documentation because it has a troublesome Java dependency
std_qa[selectionstr % (r"\[*\]", "Extended Product Documentation")] = "%(nr)s"
installed_docs = False # hard disabled, previous support was actually incomplete

# enable all ABAQUS components
std_qa[selectionstr % (r"\[ \]", "Abaqus.*")] = "%(nr)s"
Expand All @@ -146,9 +149,9 @@ def install_step(self):

# Disable/enable Tosca
if self.cfg['with_tosca']:
std_qa[selectionstr % (r"\[\ \]", "Tosca")] = "%(nr)s"
std_qa[selectionstr % (r"\[\ \]", "Tosca.*")] = "%(nr)s"
else:
std_qa[selectionstr % (r"\[\*\]", "Tosca")] = "%(nr)s"
std_qa[selectionstr % (r"\[\*\]", "Tosca.*")] = "%(nr)s"

# disable CloudView
std_qa[r"(?P<cloudview>[0-9]+) \[X\] Search using CloudView\nEnter selection:"] = '%(cloudview)s\n\n'
Expand All @@ -170,7 +173,7 @@ def install_step(self):
cae_subdir = os.path.join(self.installdir, 'cae')
sim_subdir = os.path.join(self.installdir, 'sim')
std_qa[r"Default.*SIMULIA/EstProducts.*:"] = cae_subdir
std_qa[r"SIMULIA[0-9]*doc.*:"] = os.path.join(self.installdir, 'doc')
std_qa[r"SIMULIA[0-9]*doc.*:"] = os.path.join(self.installdir, 'doc') # if docs are installed
std_qa[r"SimulationServices.*:"] = sim_subdir
std_qa[r"Choose the CODE installation directory.*:\n.*\n\n.*:"] = sim_subdir
std_qa[r"SIMULIA/CAE.*:"] = cae_subdir
Expand All @@ -197,13 +200,13 @@ def install_step(self):

std_qa[r"Please choose an action:"] = '1'

if LooseVersion(self.version) >= LooseVersion('2022'):
if LooseVersion(self.version) >= LooseVersion('2022') and installed_docs:
java_root = get_software_root('Java')
if java_root:
std_qa[r"Please enter .*Java Runtime Environment.* path.(\n.*)+Default \[\]:"] = java_root
std_qa[r"Please enter .*Java Runtime Environment.* path.(\n.*)+Default \[.+\]:"] = ''
else:
raise EasyBuildError("Java is a required dependency for ABAQUS versions >= 2022, but it is missing")
raise EasyBuildError("Java is required for ABAQUS docs versions >= 2022, but it is missing")

# Continue
std_qa[nextstr] = ''
Expand Down Expand Up @@ -330,7 +333,7 @@ def sanity_check_step(self):
custom_commands = []

if LooseVersion(self.version) >= LooseVersion('2016'):
custom_paths['dirs'].extend(['cae', 'Commands', 'doc'])
custom_paths['dirs'].extend(['cae', 'Commands'])
if LooseVersion(self.version) < LooseVersion('2020'):
custom_paths['dirs'].extend(['sim'])
# 'all' also check license server, but lmstat is usually not available
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/acml.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/adf.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2016-2022 Ghent University
# Copyright 2016-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
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/advisor.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/aladin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/allinea.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2013-2022 Ghent University
# Copyright 2013-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
4 changes: 2 additions & 2 deletions easybuild/easyblocks/a/amber.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2015-2022 Stanford University
# Copyright 2009-2023 Ghent University
# Copyright 2015-2023 Stanford University
#
# This file is part of EasyBuild,
# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/anaconda.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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
4 changes: 3 additions & 1 deletion easybuild/easyblocks/a/ansys.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##
# Copyright 2009-2022 Ghent University
# Copyright 2009-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 @@ -56,6 +56,8 @@ def install_step(self):
if licport is None:
licport = os.getenv('EB_ANSYS_LICENSE_SERVER_PORT', '2325:1055')

# Sources (e.g. iso files) may drop the execute permissions
adjust_permissions('INSTALL', stat.S_IXUSR)
cmd = "./INSTALL -silent -install_dir %s -licserverinfo %s:%s" % (self.installdir, licport, licserv)
run_cmd(cmd, log_all=True, simple=True)

Expand Down
Loading

0 comments on commit 0f34c33

Please sign in to comment.