Skip to content

Commit

Permalink
Add ReFrame 4.6.2 at system toolchain level
Browse files Browse the repository at this point in the history
  • Loading branch information
casparvl committed Sep 3, 2024
1 parent 230fae3 commit d4ba4ab
Showing 1 changed file with 87 additions and 0 deletions.
87 changes: 87 additions & 0 deletions easybuild/easyconfigs/r/ReFrame/ReFrame-4.6.2.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
easyblock = 'PythonBundle'

name = 'ReFrame'
version = '4.6.2'

homepage = 'https://github.com/reframe-hpc/reframe'
description = '''ReFrame is a framework for writing regression tests for HPC systems.'''

toolchain = SYSTEM

allow_system_deps = [('Python', SYS_PYTHON_VERSION)]

# Required by lxml, which is installed by ReFrame's bootstrap installer
osdependencies = [
('libxml2'),
('libxslt', 'libxslt1.1'),
]

# Listed as python_requires in https://github.com/reframe-hpc/reframe/blob/v4.6.2/setup.cfg
req_py_majver = 3
req_py_minver = 6

use_pip = True

exts_list = [
# stick to pip 21.3.1, which is compatible with Python 3.6
# we still need pip outside of ReFrame's external dependencies, since the install cmd uses pip
('pip', '21.3.1', {
'use_pip': False,
'checksums': ['fd11ba3d0fdb4c07fbc5ecbba0b1b719809420f25038f8ee3cd913d3faa3033a'],
}),
# Require new enough setuptools to install with e.g. pyproject.toml
# 59.6.0 is the latest compatible with Python 3.6
('setuptools', '59.6.0', {
'use_pip': False,
'source_urls': ['https://pypi.python.org/packages/source/s/setuptools/'],
'checksums': ['22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373'],
}),
# stick to wheel 0.37.1, which is compatible with Python 3.6
('wheel', '0.37.1', {
'source_tmpl': 'wheel-%(version)s-py2.py3-none-any.whl',
'checksums': ['4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a'],
}),
# ReFrame's bootstrap script is intended to run with zero dependencies. It downloads all python deps for ReFrame
# into a %(installdir)/external directory. ReFrame's main executable (reframe) adds this dir to python's sys.path
# so that ReFrame (and only ReFrame) will find & use all of these dependencies.
# In EasyBuild, we should adhere to this installation method because a) it is how ReFrame is meant to be used and
# b) it isolates all of ReFrame dependencies from any other python code you run. Thus, there is no chance that
# a test will pick up on any python deps from ReFrame itself.
# For this to work, we need to disable download_dep_fail and sanity_pip_check, as both are _expected_ to fail
# for this setup.
('reframe', version, {
# Deps are downloaded to %(installdir)/external, which won't polute the PYTHONPATH, so is ok
'download_dep_fail': False,
# ReFrame uses its custom sys.path to find necessary packages, they are not on PYTYHONPATH
# Thus, the regular pip sanity check is expected to fail, even if ReFrame would run just fine
'sanity_pip_check': False,
# Set modulename to False, as to skip the sanity_check-step from extension.py (python -c "import reframe")
# This step would fail, since the regular python interpreter wouldn't find the additional packages in
# %(installdir)/external. That's fine, as ReFrame should never be imported directly, only through the
# reframe command.
'modulename': False,
'preinstallopts': "export PATH=%(installdir)s/bin:$PATH && "
"./bootstrap.sh +docs +pygelf && cp -r external %(installdir)s && ",
'source_tmpl': 'v%(version)s.tar.gz',
'source_urls': ['https://github.com/reframe-hpc/reframe/archive/'],
'checksums': ['d3343815ee3d2c330b91a1cdb924ba184119ed7d9fc88a4a754b939a4259df82'],
}),
]

postinstallcmds = [
"cp -a tools examples %(installdir)s",
"mkdir -p %(installdir)s/share && cp -a share/completions %(installdir)s/share/completions",
r"sed -i 's@/\(python[0-9.]*\)$@/\1 -S@g' %(installdir)s/bin/reframe",
]

sanity_check_paths = {
'files': ['bin/reframe',
'share/completions/reframe.bash',
'share/completions/reframe.fish',
'share/completions/reframe.tcsh'],
'dirs': ['external', 'lib', 'tools', 'examples']
}

sanity_check_commands = ['reframe -V']

moduleclass = 'devel'

0 comments on commit d4ba4ab

Please sign in to comment.