buildtools/21.09 (buildtools-21.09.eb)
This software is archived in the LUMI-SoftwareStack GitHub repository as easybuild/easyconfigs/__archive__/b/buildtools/buildtools-21.09.eb. The corresponding module would be buildtools/21.09.
# This easyconfig requires at least EasyBuild 3.9.4 due to a bug in the Bundle
# EasyBlock in earlier versions. Or use the patched bundle.py of
# https://github.com/easybuilders/easybuild-easyblocks/pull/1777 via --include-easyblocks
#
# NOTE: This module is developed at UAntwerp
# NOTE: meson, which is included, requires python3 with setuptools installed in the OS.
#
# It is the first module we compile when starting a new toolchain.
#
# This bundle collects a number of GNU tools useful during the building process
# and a few other tools.
#
# We do include a Flex and Bison even though they do contain libraries
# for which some packages may want to use toolchain-specific versions. These
# packages should then just assure that module is loaded after buildtools.
#
easyblock = 'Bundle'
name = 'buildtools'
version = '21.09'
local_system_pyshortver = '3.6'
# Version info:
local_autoconf_version = '2.71' # Autoconf 20210128 - Check on https://ftp.gnu.org/gnu/autoconf/
local_autoconf_archive_version = '2021.02.19' # Autoconf-Archive 202102196 - check on https://ftp.gnu.org/gnu/autoconf-archive/
local_automake_version = '1.16.4' # Automake 20210726 - Check on https://ftp.gnu.org/gnu/automake/
local_bison_version = '3.8.1' # Bison 20210911 - Check on http://ftp.gnu.org/gnu/bison/
local_libtool_version = '2.4.6' # libtool 20150215 - Check on https://ftp.gnu.org/gnu/libtool/
local_m4_version = '1.4.19' # M4 20210528 - Check on https://ftp.gnu.org/gnu/m4/
local_make_version = '4.3' # Make 20200119 - Check on https://ftp.gnu.org/gnu/make/
local_sed_version = '4.8' # sed 20200114 - Check on https://ftp.gnu.org/gnu/sed/
local_byacc_version = '20210808' # byacc 20210808 - Check on ftp://ftp.invisible-island.net/byacc
local_cmake_version = '3.21.2' # CMake 20210825 - Check on https://cmake.org/download/
local_flex_version = '2.6.4' # flex 20170506 - Check on https://github.com/westes/flex/releases
local_ninja_version = '1.10.2' # Ninja 20201128 - Check on https://ninja-build.org/
local_meson_version = '0.59.1' # Meson 20210818 - Check on https://pypi.org/project/meson/#history
local_SCons_version = '4.2.0' # SCons 20210805 - https://github.com/SCons/scons/releases, https://scons.org/pages/download.html
local_nasm_version = '2.15.05' # NASM 20200828 - Check on https://www.nasm.us/
local_yasm_version = '1.3.0' # Yasm 20140810 - Check on https://yasm.tortall.net/Download.html
local_patchelf_version = '0.13' # patchelf 20210806 - Check on https://github.com/NixOS/patchelf/releases
local_re2c_version = '2.2' # re2c 20210801 - Check on https://github.com/skvadrik/re2c/releases
local_gperf_version = '3.1' # gperf 20170105 - Check on https://ftp.gnu.org/gnu/gperf/
local_doxygen_version = '1.9.2' # Doxygen 20210818 - Check on https://www.doxygen.nl/download.html
local_help2man_version = '1.48.5' # help2man 20210822 - Check on https://ftp.gnu.org/gnu/help2man/
homepage = 'http://www.gnu.org'
whatis = [
"Description: A bundle of often used build tools, GNU and others"
"Contains: autoconf, autoconf_archive, automake, libtool, M4, make, sed, Bison, flex, Berkeley Yacc (byacc), " +
"CMake, Ninja, Meson, SCons, NASM, Yasm, patchelf, gperf, re2c, help2man and Doxygen"
]
description = """
A bundle of often used build tools, GNU and others: autoconf, autoconf_archive,
automake, libtool, M4, make, git, sed, Bison, flex, Berkeley Yacc (byacc), CMake,
Ninja, Meson, SCons, NASM, Yasm, patchelf, pkg-config, gperf, re2c, help2man
and Doxygen.
"""
usage = """
This bundle collects a number of standard tools that are often needed when
building software. Many of them are GNU tools.
+ GNU Autoconf %(autoconf)s - https://www.gnu.org/software/autoconf/
+ GNU Autoconf Archive %(autoconfarchive)s - https://www.gnu.org/software/autoconf/
+ GNU Automake %(automake)s - https://www.gnu.org/software/automake/
+ GNU libtool %(libtool)s - https://www.gnu.org/software/libtool/
+ GNU M4 %(m4)s - https://www.gnu.org/software/m4/
+ GNU make %(make)s - https://www.gnu.org/software/make/
+ GNU sed %(sed)s - https://www.gnu.org/software/sed/
+ GNU Bison %(bison)s - https://www.gnu.org/software/bison
+ GNU flex %(flex)s - https://www.gnu.org/software/flex/
+ byacc %(byacc)s - http://invisible-island.net/byacc/byacc.html
+ CMake %(cmake)s - http://www.cmake.org/
+ Ninja %(ninja)s - https://ninja-build.org/
+ Meson %(meson)s - https://mesonbuild.com/Manual.html
+ SCons %(SCons)s - https://www.scons.org/
+ NASM %(nasm)s - http://www.nasm.us/
+ Yasm %(yasm)s - http://yasm.tortall.net/
+ patchelf %(patchelf)s - Modify the dynamic linker and RPATH of ELF executables,
http://nixos.org/patchelf.html
+ re2c %(re2c)s - http://re2c.org/
+ GNU gperf %(gperf)s - https://www.gnu.org/software/gperf/
+ GNU help2man %(help2man)s - https://www.gnu.org/software/help2man/
+ Doxygen %(doxygen)s - http://www.doxygen.org/
These tools are all build against the system libraries and have been used to
build several of the %(ver)s packages.
""" % {
'autoconf' : local_autoconf_version,
'autoconfarchive' : local_autoconf_archive_version,
'automake' : local_automake_version,
'libtool' : local_libtool_version,
'm4' : local_m4_version,
'make' : local_make_version,
'sed' : local_sed_version,
'bison' : local_bison_version,
'flex' : local_flex_version,
'byacc' : local_byacc_version,
'cmake' : local_cmake_version,
'ninja' : local_ninja_version,
'meson' : local_meson_version,
'SCons' : local_SCons_version,
'nasm' : local_nasm_version,
'yasm' : local_yasm_version,
'patchelf' : local_patchelf_version,
're2c' : local_re2c_version,
'gperf' : local_gperf_version,
'help2man' : local_help2man_version,
'doxygen' : local_doxygen_version,
'ver' : version,
}
toolchain = SYSTEM
dependencies = [ ]
builddependencies = [
# ('flex', local_flex_version), # For Doxygen
# ('Bison', local_bison_version), # For Doxygen
]
osdependencies = [
('openssl-devel', 'libssl-dev', 'libopenssl-devel'), # For CMake
('ncurses-devel'), # For CMake
('libcurl-devel'), # For git
# ('expat-devel'), # For git
# ('gettext-devel'), # For git
# ('pcre-devel'), # For git
('perl'), # For git
('python3'), # For git, Meson, SCons
]
default_easyblock = 'ConfigureMake'
components = [
# ('git', local_git_version, { # Build of 2.22.0 fails if build after Make or certain other packages...
# 'sources': [ { 'download_filename' : 'v%(version)s.tar.gz',
# 'filename' : 'git-%(version)s.tar.gz',
# 'source_urls' : ['https://github.com/git/git/archive'],
# } ],
# 'checksums': ['2a93b9a3276464507922134bfba9be466427ab6a843e3773849050e3d05250d0'],
# 'start_dir': '%(namelower)s-%(version)s',
# 'preconfigopts': 'make configure && ',
# 'configopts': "--with-libpcre --with-python=/usr/bin/python --enable-pthreads='-lpthread'",
# }),
('Make', local_make_version, { # Uses pkg-config
'sources': [SOURCELOWER_TAR_GZ], # .tar.lz not yet supported on our systems and not available as a constant in EasyBuild.
'source_urls': [GNU_SOURCE],
'checksums': ['e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19'],
'start_dir': '%(namelower)s-%(version)s'
}),
('byacc', local_byacc_version, {
'sources': [SOURCELOWER_TGZ],
'source_urls': ['ftp://ftp.invisible-island.net/byacc//'],
'checksums': ['f158529be9d0594263c7f11a87616a49ea23e55ac63691252a2304fbbc7d3a83'],
'start_dir': '%(namelower)s-%(version)s',
'installopts': ' && mv %(installdir)s/bin/yacc %(installdir)s/bin/byacc && mv %(installdir)s/share/man/man1/yacc.1 %(installdir)s/share/man/man1/byacc.1',
}),
('M4', local_m4_version, { # Uses gawk which for now we assume to be on the system
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96'],
'start_dir': '%(namelower)s-%(version)s'
}),
('libtool', local_libtool_version, { # Uses M4
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f'],
'start_dir': '%(namelower)s-%(version)s'
}),
('Autoconf', local_autoconf_version, { # Uses M4
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4'],
'start_dir': '%(namelower)s-%(version)s'
}),
('Autoconf-archive', local_autoconf_archive_version, { # Uses M4
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['e8a6eb9d28ddcba8ffef3fa211653239e9bf239aba6a01a6b7cfc7ceaec69cbd'],
'start_dir': '%(namelower)s-%(version)s'
}),
('Automake', local_automake_version, {
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['80facc09885a57e6d49d06972c0ae1089c5fa8f4d4c7cfe5baea58e5085f136d'],
'start_dir': '%(namelower)s-%(version)s'
}),
('help2man', local_help2man_version, {
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['6739e4caa42e6aed3399be4387ca79399640967334e91728863b8eaa922582be'],
'start_dir': '%(namelower)s-%(version)s'
}),
('Bison', local_bison_version, {
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['31fc602488aad6bdecf0ccc556e0fc72fc57cdc595cf92398f020e0cf4980f15'],
'start_dir': '%(namelower)s-%(version)s',
'buildopts': 'V=1',
'parallel': '1', # Building the examples fails in some Bison version when doing a parallel
# build, likely due to incomplete dependencies and a file being removed
# while it is still needed.
}),
('flex', local_flex_version, {
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': ['https://github.com/westes/flex/releases/download/v' + local_flex_version + '/'],
'checksums': ['e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995'],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" && ',
}),
('sed', local_sed_version, {
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': [GNU_SOURCE],
'checksums': ['f79b0cfea71b37a8eeec8490db6c5f7ae7719c35587f21edb0617f370eeff633'],
'start_dir': '%(namelower)s-%(version)s'
}),
('CMake', local_cmake_version, {
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': ['https://cmake.org/files/v%(version_major_minor)s'],
'checksums': ['94275e0b61c84bb42710f5320a23c6dcb2c6ee032ae7d2a616f53f68b3d21659'],
'start_dir': '%(namelower)s-%(version)s',
'configopts': '-- -DCMAKE_USE_OPENSSL=1'
}),
('Ninja', local_ninja_version, {
'easyblock': 'CmdCp',
'sources': [ { 'download_filename' : 'v%(version)s.tar.gz',
'filename' : SOURCELOWER_TAR_GZ,
'source_urls' : ['https://github.com/ninja-build/ninja/archive'],
} ],
'checksums': ['ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed'],
'start_dir': '%(namelower)s-%(version)s',
'cmds_map': [('.*', "./configure.py --bootstrap")],
'files_to_copy': [(['ninja'], 'bin')],
}),
('Meson', local_meson_version, { # Does require Ninja
'easyblock': 'PythonPackage',
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': [PYPI_SOURCE],
'checksums': ['db586a451650d46bbe10984a87b79d9bcdc1caebf38d8e189f8848f8d502356d'],
'start_dir': '%(namelower)s-%(version)s',
'req_py_majver': 3, # Used to let EasyBuild select the right system Python executable.
'req_py_minver': 5, # Used to let EasyBuild select the right system Python executable.
'options': {'modulename': 'mesonbuild'}
}),
('SCons', local_SCons_version, {
'easyblock': 'PythonPackage',
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': [SOURCEFORGE_SOURCE],
'checksums': ['691893b63f38ad14295f5104661d55cb738ec6514421c6261323351c25432b0a'],
'start_dir': '%(name)s-%(version)s',
'req_py_majver': 3, # Used to let EasyBuild select the right system Python executable.
'req_py_minver': 5, # Used to let EasyBuild select the right system Python executable.
'download_dep_fail': True,
'use_pip': False,
'sanity_pip_check': False,
'options': {'modulename': False}
}),
('gperf', local_gperf_version, {
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': [GNU_SOURCE],
'checksums': ['588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2'],
'start_dir': '%(namelower)s-%(version)s'
}),
('NASM', local_nasm_version, {
'sources': [SOURCELOWER_TAR_XZ],
'source_urls': ['http://www.nasm.us/pub/nasm/releasebuilds/%(version)s'],
'checksums': ['3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f'],
'start_dir': '%(namelower)s-%(version)s'
}),
('Yasm', local_yasm_version, {
# http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
'sources': [SOURCELOWER_TAR_GZ],
'source_urls': ['http://www.tortall.net/projects/yasm/releases/'],
'checksums': ['3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f'],
'start_dir': '%(namelower)s-%(version)s'
}),
('patchelf', local_patchelf_version, {
'sources': [ { 'download_filename' : '%(version)s.tar.gz',
'filename' : 'patchelf-%(version)s.tar.gz',
'source_urls' : ['https://github.com/NixOS/patchelf/archive/'],
} ],
'checksums': ['60c6aeadb673de9cc1838b630c81f61e31c501de324ef7f1e8094a2431197d09'],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'sh bootstrap.sh && '
}),
('re2c', local_re2c_version, {
'sources': [SOURCE_TAR_XZ],
'source_urls': ['https://github.com/skvadrik/re2c/releases/download/%(version)s'],
'checksums': ['0fc45e4130a8a555d68e230d1795de0216dfe99096b61b28e67c86dfd7d86bda'],
'start_dir': '%(name)s-%(version)s',
}),
('Doxygen', local_doxygen_version, { # Note that the build process already requires CMake, flex and Bison
'easyblock': 'EB_Doxygen',
# Download as http://doxygen.nl/files/doxygen-1.8.15.src.tar.gz
'sources': ['%(namelower)s-%(version)s.src.tar.gz'],
'source_urls': ['http://doxygen.nl/files/'],
'checksums': ['060f254bcef48673cc7ccf542736b7455b67c110b30fdaa33512a5b09bbecee5'],
'start_dir': '%(namelower)s-%(version)s',
}),
]
#
# Additions to consider:
# - GNU coreutils: Not only for building, but several programs are used during the build process of some codes.
#
#parallel = 1
postinstallcmds = [
# For make
'cd %(installdir)s/bin ; ln -s make gmake', # Some programs check for gmake first and fail if that version is too old.
]
modextrapaths = {
'PYTHONPATH': ['lib/python%s/site-packages' % local_system_pyshortver]
}
modextravars = {
'EBROOTBYACC': '%(installdir)s',
'EBVERSIONBYACC': local_byacc_version,
'EBROOTFLEX': '%(installdir)s',
'EBVERSIONFLEX': local_flex_version,
# 'EBROOTGIT': '%(installdir)s',
# 'EBVERSIONGIT': local_git_version,
'EBROOTAUTOCONF': '%(installdir)s',
'EBVERSIONAUTOCONF': local_autoconf_version,
'EBROOTAUTOCONFMINARCHIVE': '%(installdir)s',
'EBVERSIONAUTOCONFMINARCHIVE': local_autoconf_archive_version,
'EBROOTAUTOMAKE': '%(installdir)s',
'EBVERSIONAUTOMAKE': local_automake_version,
'EBROOTBISON': '%(installdir)s',
'EBVERSIONBISON': local_bison_version,
'EBROOTLIBTOOL': '%(installdir)s',
'EBVERSIONLIBTOOL': local_libtool_version,
'EBROOTM4': '%(installdir)s',
'EBVERSIONM4': local_m4_version,
'EBROOTMAKE': '%(installdir)s',
'EBVERSIONMAKE': local_make_version,
'EBROOTSED': '%(installdir)s',
'EBVERSIONSED': local_sed_version,
'EBROOTCMAKE': '%(installdir)s',
'EBVERSIONCMAKE': local_cmake_version,
'EBROOTNINJA': '%(installdir)s',
'EBVERSIONNINJA': local_ninja_version,
'EBROOTMESON': '%(installdir)s',
'EBVERSIONMESON': local_meson_version,
'EBROOTSCONS': '%(installdir)s',
'EBVERSIONSCONS': local_SCons_version,
'EBROOTNASM': '%(installdir)s',
'EBVERSIONNASM': local_nasm_version,
'EBROOTYASM': '%(installdir)s',
'EBVERSIONYASM': local_yasm_version,
'EBROOTPATCHELF': '%(installdir)s',
'EBVERSIONPATCHELF': local_patchelf_version,
'EBROOTGPERF': '%(installdir)s',
'EBVERSIONGPERF': local_gperf_version,
'EBROOTRE2C': '%(installdir)s',
'EBVERSIONRE2C': local_re2c_version,
'EBROOTHELP2MAN': '%(installdir)s',
'EBVERSIONHELP2MAN': local_help2man_version,
'EBROOTDOXYGEN': '%(installdir)s',
'EBVERSIONDOXYGEN': local_doxygen_version,
}
moduleclass = 'devel'
modluafooter = """
extensions( "Autoconf/%(autoconf)s, Autoconf-archive/%(autoconfarchive)s, Automake/%(automake)s, " ..
"libtool/%(libtool)s, M4/%(m4)s, make/%(make)s, sec/%(sed)s, Bison/%(bison)s, flex/%(flex)s, " ..
"byacc/%(byacc)s, CMake/%(cmake)s, Ninja/%(ninja)s, Meson/%(meson)s, " ..
"SCons/%(SCons)s, NASM/%(nasm)s, Yasm/%(yasm)s, patchelf/%(patchelf)s, " ..
"re2c/%(re2c)s, gperf/%(gperf)s, help2man/%(help2man)s, Doxygen/%(doxygen)s"
)
""" % {
'autoconf' : local_autoconf_version,
'autoconfarchive' : local_autoconf_archive_version,
'automake' : local_automake_version,
'libtool' : local_libtool_version,
'm4' : local_m4_version,
'make' : local_make_version,
'sed' : local_sed_version,
'bison' : local_bison_version,
'flex' : local_flex_version,
'byacc' : local_byacc_version,
'cmake' : local_cmake_version,
'ninja' : local_ninja_version,
'meson' : local_meson_version,
'SCons' : local_SCons_version,
'nasm' : local_nasm_version,
'yasm' : local_yasm_version,
'patchelf' : local_patchelf_version,
're2c' : local_re2c_version,
'gperf' : local_gperf_version,
'help2man' : local_help2man_version,
'doxygen' : local_doxygen_version,
}