Skip to content

Commit

Permalink
Merge pull request #3061 from easybuilders/4.9.x
Browse files Browse the repository at this point in the history
release EasyBuild v4.9.0
  • Loading branch information
boegel authored Dec 30, 2023
2 parents 8e7026a + 99bf1bd commit 5106dfa
Show file tree
Hide file tree
Showing 160 changed files with 952 additions and 469 deletions.
32 changes: 31 additions & 1 deletion RELEASE_NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,37 @@ 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 251 software-specific easyblocks and 42 generic easyblocks.
The latest version of easybuild-easyblocks provides 254 software-specific easyblocks and 43 generic easyblocks.


v4.9.0 (30 December 2023)
-------------------------

feature release

- add generic `CargoPythonBundle` easyblock (#2964)
- 3 new software-specific easyblocks: flook (#3034), HPCC (#3009), PALM (#3020)
- minor enhancements and updates, including:
- add custom easyconfig parameter `cmake_options` to SuiteSparse easyblock (#3031)
- update custom intel-compilers easyblock for versions >= 2024 (#3037)
- update custom easyblock for Intel MPI easyblock for v2021.11 (#3039)
- update numpy easyblock for v1.26+ (#3041)
- update custom easyblock for Intel MKL for v2024.x (#3042)
- update Ferret easyblock to be compatible with v7.6.0 (#3052)
- various bug fixes, including:
- add support for allowing version mismatch + consider versionsuffix when creating `.modulerc` in `ModuleRC` easyblock (#3028)
- update error detection for PyTorch tests (#3033)
- disable LLVM build downloads from CI in Rust (#3038)
- add requirement for EULA acceptance to CUDA easyblock (#3045)
- make various fixes and enhancements to NWChem easyblock (#3049)
- add binutils symlinks when building TensorFlow with `--rpath` (#3054, #3058)
- fix specifying path to SuiteSparse header files and libraries in numpy, Trilinos, PETSc easyblocks (#3056)
- fix `det_pylibdir` provided by `PythonPackage` easyblock for Python 3.12+ (#3057)
- fix nvptx sanity check for Clang >= 14.x (#3059)
- other changes:
- update SuiteSparse easyblock to only install SuiteSparse libraries with `make install` (#3004)
- also consider `$EB_COMSOL_LICENSE_FILE` environment variable in custom easyblock for COMSOL (#3044)
- import `LooseVersion` from `easybuild.tools` instead of `distutils.version` in easyblocks (#3048)


v4.8.2 (29 October 2023)
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/__init__.py
Original file line number Diff line number Diff line change
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.8.2')
VERSION = LooseVersion('4.9.0')
UNKNOWN = 'UNKNOWN'


Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/abaqus.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
@author: Jens Timmerman (Ghent University)
@author: Simon Branford (University of Birmingham)
"""
from distutils.version import LooseVersion
import glob
import os
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.binary import Binary
from easybuild.framework.easyblock import EasyBlock
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/acml.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"""

import os
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.framework.easyblock import EasyBlock
from easybuild.framework.easyconfig import CUSTOM
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/advisor.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"""

import os
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.intelbase import IntelBase

Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/amber.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
Enhanced/cleaned up by Kenneth Hoste (HPC-UGent)
CMake support (Amber 20) added by James Carpenter and Simon Branford (University of Birmingham)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import os

import easybuild.tools.environment as env
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/ansys.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import os
import re
import stat
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.packedbinary import PackedBinary
from easybuild.tools.build_log import EasyBuildError
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/aocc.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import os
import stat

from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.packedbinary import PackedBinary
from easybuild.framework.easyconfig import CUSTOM
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/armadillo.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@author: Kenneth Hoste (Ghent University)
"""
import os
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
from easybuild.easyblocks.generic.cmakemake import CMakeMake
from easybuild.tools.build_log import EasyBuildError
from easybuild.tools.modules import get_software_root
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/a/atlas.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import re
import os
import sys
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.configuremake import ConfigureMake
from easybuild.framework.easyconfig import CUSTOM
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/bamtools.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@author: Andreas Panteli (The Cyprus Institute)
@author: Kenneth Hoste (Ghent University)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
from easybuild.easyblocks.generic.cmakemake import CMakeMake
from easybuild.easyblocks.generic.makecp import MakeCp
from easybuild.framework.easyconfig import CUSTOM
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/bazel.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"""
EasyBuild support for building and installing Bazel, implemented as an easyblock
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import glob
import os
import tempfile
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/berkeleygw.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@author: Miguel Dias Costa (National University of Singapore)
"""
import os
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

import easybuild.tools.toolchain as toolchain
from easybuild.easyblocks.generic.configuremake import ConfigureMake
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/binutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import glob
import os
import re
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

import easybuild.tools.environment as env
from easybuild.easyblocks.generic.configuremake import ConfigureMake
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/boost.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
@author: Michele Dolfi (ETH Zurich)
@author: Simon Branford (University of Birmingham)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import fileinput
import glob
import os
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/bowtie.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
@author: Kenneth Hoste (Ghent University)
@author: Jens Timmerman (Ghent University)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import glob
import os
import shutil
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/bowtie2.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
@author: Fotis Georgatos (Uni.Lu)
@author: Kenneth Hoste (Ghent University)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import os

from easybuild.easyblocks.generic.makecp import MakeCp
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/b/bwa.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"""
import os
import glob
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.configuremake import ConfigureMake
from easybuild.tools.build_log import EasyBuildError
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/cgal.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"""
import os

from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.cmakemake import CMakeMake
from easybuild.tools.build_log import EasyBuildError
Expand Down
32 changes: 18 additions & 14 deletions easybuild/easyblocks/c/clang.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import glob
import os
import shutil
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.cmakemake import CMakeMake
from easybuild.framework.easyconfig import CUSTOM
Expand Down Expand Up @@ -622,9 +622,11 @@ def sanity_check_step(self):
custom_commands = ['clang --help', 'clang++ --help', 'llvm-config --cxxflags']
shlib_ext = get_shared_lib_ext()

version = LooseVersion(self.version)

# Clang v16+ only use the major version number for the resource dir
resdir_version = self.version
if LooseVersion(self.version) >= LooseVersion('16'):
if version >= '16':
resdir_version = self.version.split('.')[0]

# Detect OpenMP support for CPU architecture
Expand All @@ -640,7 +642,7 @@ def sanity_check_step(self):
else:
print_warning("Unknown CPU architecture (%s) for OpenMP and runtime libraries check!" % arch)

if LooseVersion(self.version) >= LooseVersion('14'):
if version >= '14':
glob_pattern = os.path.join(self.installdir, 'lib', '%s-*' % arch)
matches = glob.glob(glob_pattern)
if matches:
Expand All @@ -663,7 +665,7 @@ def sanity_check_step(self):
if self.cfg['static_analyzer']:
custom_paths['files'].extend(["bin/scan-build", "bin/scan-view"])

if 'clang-tools-extra' in self.cfg['llvm_projects'] and LooseVersion(self.version) >= LooseVersion('3.4'):
if 'clang-tools-extra' in self.cfg['llvm_projects'] and version >= '3.4':
custom_paths['files'].extend(["bin/clang-tidy"])

if 'polly' in self.cfg['llvm_projects']:
Expand All @@ -685,15 +687,15 @@ def sanity_check_step(self):
if 'libcxxabi' in self.cfg['llvm_runtimes']:
custom_paths['files'].extend([os.path.join(self.runtime_lib_path, "libc++abi.%s" % shlib_ext)])

if 'flang' in self.cfg['llvm_projects'] and LooseVersion(self.version) >= LooseVersion('15'):
if 'flang' in self.cfg['llvm_projects'] and version >= '15':
flang_compiler = 'flang-new'
custom_paths['files'].extend(["bin/%s" % flang_compiler])
custom_commands.extend(["%s --help" % flang_compiler])

if LooseVersion(self.version) >= LooseVersion('3.8'):
if version >= '3.8':
custom_paths['files'].extend(["lib/libomp.%s" % shlib_ext, "lib/clang/%s/include/omp.h" % resdir_version])

if LooseVersion(self.version) >= LooseVersion('12'):
if version >= '12':
omp_target_libs = ["lib/libomptarget.%s" % shlib_ext, "lib/libomptarget.rtl.%s.%s" % (arch, shlib_ext)]
else:
omp_target_libs = ["lib/libomptarget.%s" % shlib_ext]
Expand All @@ -703,24 +705,26 @@ def sanity_check_step(self):
if 'NVPTX' in self.cfg['build_targets']:
custom_paths['files'].append("lib/libomptarget.rtl.cuda.%s" % shlib_ext)
# The static 'nvptx.a' library is not built from version 12 onwards
if LooseVersion(self.version) < LooseVersion('12.0'):
if version < '12.0':
custom_paths['files'].append("lib/libomptarget-nvptx.a")
ec_cuda_cc = self.cfg['cuda_compute_capabilities']
cfg_cuda_cc = build_option('cuda_compute_capabilities')
cuda_cc = cfg_cuda_cc or ec_cuda_cc or []
# We need the CUDA capability in the form of '75' and not '7.5'
cuda_cc = [cc.replace('.', '') for cc in cuda_cc]
if LooseVersion('12.0') < LooseVersion(self.version) < LooseVersion('13.0'):
if '12.0' < version < '13.0':
custom_paths['files'].extend(["lib/libomptarget-nvptx-cuda_%s-sm_%s.bc" % (x, y)
for x in CUDA_TOOLKIT_SUPPORT for y in cuda_cc])
else:
# libomptarget-nvptx-sm*.bc is not there for Clang 14.x;
elif version < '14.0' or version >= '15.0':
custom_paths['files'].extend(["lib/libomptarget-nvptx-sm_%s.bc" % cc
for cc in cuda_cc])
# From version 13, and hopefully onwards, the naming of the CUDA
# '.bc' files became a bit simpler and now we don't need to take
# into account the CUDA version Clang was compiled with, making it
# easier to check for the bitcode files we expect
if LooseVersion(self.version) >= LooseVersion('13.0'):
# easier to check for the bitcode files we expect;
# libomptarget-new-nvptx-sm*.bc is only there in Clang 13.x and 14.x;
if version >= '13.0' and version < '15.0':
custom_paths['files'].extend(["lib/libomptarget-new-nvptx-sm_%s.bc" % cc
for cc in cuda_cc])
# If building for AMDGPU check that OpenMP target library was created
Expand All @@ -729,12 +733,12 @@ def sanity_check_step(self):
# OpenMP offloading support to AMDGPU was not added until version
# 13, however, building for the AMDGPU target predates this and so
# doesn't necessarily mean that the AMDGPU target failed
if LooseVersion(self.version) >= LooseVersion('13.0'):
if version >= '13.0':
custom_paths['files'].append("lib/libomptarget.rtl.amdgpu.%s" % shlib_ext)
custom_paths['files'].extend(["lib/libomptarget-amdgcn-%s.bc" % gfx
for gfx in self.cfg['amd_gfx_list']])
custom_paths['files'].append("bin/amdgpu-arch")
if LooseVersion(self.version) >= LooseVersion('14.0'):
if version >= '14.0':
custom_paths['files'].extend(["lib/libomptarget-new-amdgpu-%s.bc" % gfx
for gfx in self.cfg['amd_gfx_list']])

Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/clang_aomp.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import glob
import os

from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
from easybuild.easyblocks.clang import DEFAULT_TARGETS_MAP as LLVM_ARCH_MAP
from easybuild.easyblocks.generic.bundle import Bundle
from easybuild.framework.easyblock import EasyBlock
Expand Down
8 changes: 4 additions & 4 deletions easybuild/easyblocks/c/comsol.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,22 +59,22 @@ def extract_step(self):
def configure_step(self):
"""Configure COMSOL installation: create license file."""

default_lic_env_var = 'LMCOMSOL_LICENSE_FILE'
lic_specs, self.license_env_var = find_flexlm_license(custom_env_vars=[default_lic_env_var],
comsol_lic_env_vars = ['EB_COMSOL_LICENSE_FILE', 'LMCOMSOL_LICENSE_FILE']
lic_specs, self.license_env_var = find_flexlm_license(custom_env_vars=comsol_lic_env_vars,
lic_specs=[self.cfg['license_file']])

if lic_specs:
if self.license_env_var is None:
self.log.info("Using COMSOL license specifications from 'license_file': %s", lic_specs)
self.license_env_var = default_lic_env_var
self.license_env_var = comsol_lic_env_vars[0]
else:
self.log.info("Using COMSOL license specifications from $%s: %s", self.license_env_var, lic_specs)

self.license_file = os.pathsep.join(lic_specs)
env.setvar(self.license_env_var, self.license_file)
else:
msg = "No viable license specifications found; "
msg += "specify 'license_file', or define $%s" % default_lic_env_var
msg += "specify 'license_file', or define %s" % (', '.join('$%s' % x for x in comsol_lic_env_vars))
raise EasyBuildError(msg)

copy_file(os.path.join(self.start_dir, 'setupconfig.ini'), self.configfile)
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/cp2k.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
import re
import os
import sys
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

import easybuild.tools.toolchain as toolchain
from easybuild.framework.easyblock import EasyBlock
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/cplex.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
@author: Pieter De Baets (Ghent University)
@author: Jens Timmerman (Ghent University)
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion
import glob
import os
import stat
Expand Down
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/cryptography.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
@author: Alexander Grund
"""
from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.pythonpackage import PythonPackage
from easybuild.tools.run import run_cmd
Expand Down
12 changes: 11 additions & 1 deletion easybuild/easyblocks/c/cuda.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import re
import stat

from distutils.version import LooseVersion
from easybuild.tools import LooseVersion

from easybuild.easyblocks.generic.binary import Binary
from easybuild.framework.easyconfig import CUSTOM
Expand Down Expand Up @@ -92,6 +92,16 @@ def __init__(self, *args, **kwargs):
self.cfg.template_values['cudaarch'] = cudaarch
self.cfg.generate_template_values()

def fetch_step(self, *args, **kwargs):
"""Check for EULA acceptance prior to getting sources."""
# EULA for CUDA must be accepted via --accept-eula-for EasyBuild configuration option,
# or via 'accept_eula = True' in easyconfig file
self.check_accepted_eula(
name='CUDA',
more_info='https://docs.nvidia.com/cuda/eula/index.html'
)
return super(EB_CUDA, self).fetch_step(*args, **kwargs)

def extract_step(self):
"""Extract installer to have more control, e.g. options, patching Perl scripts, etc."""
execpath = self.src[0]['path']
Expand Down
Loading

0 comments on commit 5106dfa

Please sign in to comment.