Skip to content

[buildtools] [package list]

buildtools/21.08 (buildtools-21.08.eb)

This software is archived in the LUMI-SoftwareStack GitHub repository as easybuild/easyconfigs/__archive__/b/buildtools/buildtools-21.08.eb. The corresponding module would be buildtools/21.08.

# 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.08'

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 - RE-enable if installed on LUMI.
    ('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,
}

[buildtools] [package list]