forked from easybuilders/easybuild-easyconfigs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add ReFrame 4.6.2 at system toolchain level
- Loading branch information
Showing
1 changed file
with
87 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |