diff --git a/easybuild/easyconfigs/e/EasyBuild/EasyBuild-0.5.0.0beta1.eb b/easybuild/easyconfigs/e/EasyBuild/EasyBuild-0.5.0.0beta1.eb new file mode 100644 index 00000000000..434df6f94dc --- /dev/null +++ b/easybuild/easyconfigs/e/EasyBuild/EasyBuild-0.5.0.0beta1.eb @@ -0,0 +1,59 @@ +easyblock = 'EB_EasyBuildMeta' + +name = 'EasyBuild' +version = '0.5.0.0beta1' + +homepage = 'https://easybuild.io' +description = """EasyBuild is a software build and installation framework + written in Python that allows you to install software in a structured, + repeatable and robust way.""" + +toolchain = SYSTEM + +sources = [ + { + 'filename': 'easybuild-framework-v%s.tar.gz' % version[2:], + 'git_config': { + 'url': 'https://github.com/easybuilders', + 'repo_name': 'easybuild-framework', + 'tag': 'easybuild-framework-v%s' % version[2:], + 'keep_git_dir': True, + }, + }, + { + 'filename': 'easybuild-easyblocks-v%s.tar.gz' % version[2:], + 'git_config': { + 'url': 'https://github.com/easybuilders', + 'repo_name': 'easybuild-easyblocks', + 'tag': 'easybuild-easyblocks-v%s' % version[2:], + 'keep_git_dir': True, + }, + }, + { + 'filename': 'easybuild-easyconfigs-v%s.tar.gz' % version[2:], + 'git_config': { + 'url': 'https://github.com/easybuilders', + 'repo_name': 'easybuild-easyconfigs', + 'tag': 'easybuild-easyconfigs-v%s' % version[2:], + 'keep_git_dir': True, + }, + }, +] +checksums = [ + None, + None, + None, +] + +# EasyBuild is a (set of) Python packages, so it depends on Python +# usually, we want to use the system Python, so no actual Python dependency is listed +allow_system_deps = [('Python', SYS_PYTHON_VERSION)] + +local_pyshortver = '.'.join(SYS_PYTHON_VERSION.split('.')[:2]) + +sanity_check_paths = { + 'files': ['bin/eb'], + 'dirs': ['lib/python%s/site-packages' % local_pyshortver], +} + +moduleclass = 'tools' diff --git a/test/easyconfigs/easyconfigs.py b/test/easyconfigs/easyconfigs.py index 916196f9440..ff7efe1ecda 100644 --- a/test/easyconfigs/easyconfigs.py +++ b/test/easyconfigs/easyconfigs.py @@ -1013,6 +1013,30 @@ def test_easyconfig_locations(self): if not dirpath.endswith('/easybuild/easyconfigs'): self.fail("There should be no easyconfig files in %s, found %s" % (dirpath, easyconfig_files)) + def test_easybuild_easyconfigs_latest_release(self): + """ + Check which easyconfig file would be picked up by 'eb --install-latest-eb-release' + """ + # this mimics the logic used in the find_easybuild_easyconfig used by EasyBuild framework + # to obtain an easyconfig file when --install-latest-eb-release is used + topdir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + easybuild_dir = os.path.join(topdir, 'easybuild', 'easyconfigs', 'e', 'EasyBuild') + ecs = os.listdir(easybuild_dir) + + file_versions = [] + for ec in ecs: + txt = read_file(os.path.join(easybuild_dir, ec)) + for line in txt.split('\n'): + if re.search(r'^version\s*=', line): + scope = {} + exec(line, scope) + version = scope['version'] + file_versions.append((LooseVersion(version), ec)) + + most_recent = sorted(file_versions)[-1] + self.assertEqual(most_recent[0], LooseVersion('4.9.4')) + self.assertEqual(most_recent[1], 'EasyBuild-4.9.4.eb') + def test_easyconfig_name_clashes(self): """Make sure there is not a name clash when all names are lowercase""" topdir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))