syslibs/15.1.0 (syslibs-15.1.0.eb)
This software is archived in the LUMI-SoftwareStack GitHub repository as easybuild/easyconfigs/__archive__/s/syslibs/syslibs-15.1.0.eb. The corresponding module would be syslibs/15.1.0.
easyblock = 'Bundle'
name = 'syslibs'
version = '15.1.0'
homepage = '(none)'
# We list all libraries in a whatis line so that they can be found by module keyword.
# Contrary to what the LMOD documentation makes you believe, it seems that help is
# not searched when using module keyword.
whatis = [
"Description: A number of libraries that are mostly also on the system but as static libraries to be used as build dependencies.",
"Contains: ncurses/ncursesw, readline, bzip2, zlib, expat, file, PCRE2",
]
local_SUSE_ncurses_version = '6.1' # https://ftp.gnu.org/pub/gnu/ncurses/
local_SUSE_libreadline_version = '7.0' # https://ftp.gnu.org/pub/gnu/readline/
local_SUSE_bzip2_version = '1.0.8' # http://www.bzip.org/downloads.html
local_SUSE_zlib_version = '1.2.11' # https://zlib.net/
local_SUSE_expat_version = '2.4.1' # https://github.com/libexpat/libexpat/releases
local_SUSE_file_version = '5.32' # ftp://ftp.astron.com/pub/file/
local_SUSE_PCRE2_version = '10.31' # https://ftp.pcre.org/pub/pcre/
description = """
This module provides a number of libraries that are mostly also found on the
system but as static libraries meant to be used as build dependencies for a
number of tools that should not introduce dependencies when being used so that
their impact on other software remains minimal.
Versions often correspond to those on LUMI with the OS release equal to the
manjor and minor version number of this module.
Overview of included libraries:
* Terminal I/O
+ ncurses (version %(ncurses)s): The Ncurses (new curses) library is a free software
emulation of curses in System V Release 4.0, and more. It uses Terminfo
format, supports pads and color and multiple highlights and forms characters
and function-key mapping, and has all the other SYSV-curses enhancements
over BSD Curses.
Documentation is available through man pages in sections 3, 5 and 7.
+ libreadline (version %(libreadline)s): The GNU Readline library provides a set of
functions for use by applications that allow users to edit command lines as
they are typed in. Both Emacs and vi editing modes are available.
The Readline library includes additional functions to maintain a list of
previously-entered command lines, to recall and perhaps reedit those lines,
and perform csh-like history expansion on previous commands.
There are manual pages for readline and history and help via info.
* File compression tools and libraries
+ bzip2 (version %(bzip2)s): Patent-free high-quailty data compressor
with very good compression yet fast compression and decompression
(.bz2 files)
+ zlib (version %(zlib)s): Free lossless data compression library, not
covered by any patents, for the popular .gz files.
* Networking, security and XML
+ expat (version %(expat)s): Expat is an XML parser library written in C.
It is a stream-oriented parser in which an application registers handlers
for things the parser might find in the XML document (like start tags).
It provides the command line tool xmlwf and static and shared libraries.
* Miscellaneous
+ file (version %(filev)s): The file command is "a file type guesser", that
is, a command-line tool that tells you in words what kind of data a file
contains. Unlike most GUI systems, command-line UNIX systems - with this
program leading the charge - don't rely on filename extentions to tell you
the type of a file, but look at the file's actual contents. This is, of
course, more reliable, but requires a bit of I/O.This is a
re-implementation of the original file command shipped with Bell Labs UNIX.
+ PCRE2 (version %(PCRE2)s: More modern version of PCRE.
The package includes the command line tools pcre2grep, pcre2test and
pcre2-config, documented through man pages. API documentation is available
through man pcre2.
""" % {
'ncurses': local_SUSE_ncurses_version,
'libreadline': local_SUSE_libreadline_version,
'bzip2': local_SUSE_bzip2_version,
'zlib': local_SUSE_zlib_version,
'expat': local_SUSE_expat_version,
'filev': local_SUSE_file_version,
'PCRE2': local_SUSE_PCRE2_version,
}
docurls = [
'ncurses: Web-based documentation on https://www.gnu.org/software/ncurses/',
'libreadline: Web-based readline user interface documentation: https://tiswww.cwru.edu/php/chet/readline/rluserman.html',
'libreadline: Web-based libreadline documentation: https://tiswww.cwru.edu/php/chet/readline/readline.html',
'libreadline: Web-based libhistory documentation: https://tiswww.cwru.edu/php/chet/readline/history.html',
'bzip2: Web-based documentation on http://www.bzip.org/docs.html',
'zlib: Web-based manual on https://zlib.net/manual.html',
'expat: Web-based documentation: https://libexpat.github.io/doc/',
'expat: Man page for xmlwf',
'file: Home page is https://www.darwinsys.com/file/',
'PCRE2: Web-based documentation: http://www.pcre.org/current/doc/html/',
'PCRE2: Manual pages in section 1 (pcre2grep, pcre2test) and 3 (API, start with pcre2)',
]
local_SUSE_bzip2_major_minor = '.'.join(local_SUSE_bzip2_version.split('.')[:2])
toolchain = SYSTEM
default_easyblock = 'ConfigureMake'
components = [
#
# Terminal libraries
#
('ncurses', local_SUSE_ncurses_version, {
'sources': [ {
'filename': SOURCE_TAR_GZ,
'source_urls': [GNU_SOURCE]
} ],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--without-shared --with-normal --with-termlib --with-ticlib --enable-overwrite' +
'--without-ada --enable-symlinks --with-versioned-syms ' +
'--enable-pc-files --with-pkg-config-libdir=%(installdir)s/lib/pkgconfig ', # First build: default build.
}),
('ncurses', local_SUSE_ncurses_version, {
'sources': [ {
'filename': SOURCE_TAR_GZ,
'source_urls': [GNU_SOURCE]
} ],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'make distclean && CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--without-shared --with-normal --with-termlib --with-ticlib --enable-overwrite ' +
'--without-ada --enable-symlinks --with-versioned-syms ' +
'--enable-pc-files --with-pkg-config-libdir=%(installdir)s/lib/pkgconfig ' +
'--enable-ext-colors --enable-widec --includedir=%(installdir)s/include/ncursesw/', # Second build: the UTF-8 enabled version (ncursesw)
'installopts': ' && cd %(installdir)s && /bin/rm -rf bin lib/*.so*'
}),
('libreadline', local_SUSE_libreadline_version, {
'sources': [ {
'filename': 'readline-%(version)s.tar.gz',
'source_urls': ['http://ftp.gnu.org/gnu/readline']
}],
'start_dir': 'readline-%(version)s',
'preconfigopts': "LD_LIBRARY_PATH=%(installdir)s/lib:$LD_LIBRARY_PATH LDFLAGS='-L%(installdir)s/lib -lncurses' " +
"CFLAGS='-O2 -march=znver1' CXXFLAGS='-O2 -march=znver1' ",
'configopts': '--enable-static --disable-shared',
'buildopts': "SHLIB_LIBS='-lncurses'",
}),
('bzip2', local_SUSE_bzip2_version, {
'easyblock': 'ConfigureMake',
# The bzip2 EasyBlock does not work in a bundle since there is a problem with with_shared_libs
# https://sourceforge.net/projects/bzip2/files/bzip2-1.0.6.tar.gz/download
'sources': [ {
'filename': SOURCE_TAR_GZ,
'source_urls': ['https://sourceware.org/pub/%(name)s/']
} ],
'patches': ['bzip2-%(version)s-pkgconfig.patch'],
'start_dir': '%(namelower)s-%(version)s',
'skipsteps': ['configure'],
'buildopts': 'CC="$CC" CFLAGS="-Wall -Winline -O2 -march=znver1 -g \$(BIGFILES)"',
'installopts': 'PREFIX="%(installdir)s" ',
}),
('zlib', local_SUSE_zlib_version, {
'sources': [ {
# https://www.zlib.net/zlib-1.2.11.tar.gz
'filename': SOURCELOWER_TAR_GZ,
'source_urls': ['https://www.zlib.net/']
} ],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--static'
}),
('expat', local_SUSE_expat_version, {
'sources': [ {
'filename': SOURCELOWER_TAR_BZ2,
'source_urls': [SOURCEFORGE_SOURCE]
}],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--enable-static --disable-shared'
}),
('file', local_SUSE_file_version, {
'sources': [ {
'filename': SOURCE_TAR_GZ,
'source_urls': ['ftp://ftp.astron.com/pub/file/']
} ],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--enable-static --disable-shared'
}),
('PCRE2', local_SUSE_PCRE2_version, {
'sources': [ {
'filename': SOURCELOWER_TAR_BZ2,
'source_urls': ['https://ftp.pcre.org/pub/pcre/']
} ],
'start_dir': '%(namelower)s-%(version)s',
'preconfigopts': 'CFLAGS="-O2 -march=znver1" CXXFLAGS="-O2 -march=znver1" ',
'configopts': '--with-pic --disable-cpp --enable-newline-is-any ' + \
'--enable-pcre2-16 --enable-pcre2-32 --enable-jit ' + \
'--enable-pcre2grep-libz --enable-pcre2grep-libbz2 --enable-pcre2test-libreadline ' + \
'--disable-shared --enable-static '
}),
]
sanity_check_paths = {
'files': # ncurses
['lib/lib%s%s.a' % (x, y) for x in ["form", "menu", "ncurses", "panel"] for y in ['', '_g', 'w', 'w_g']] +
['lib/libncurses++%s.a' % x for x in ['', 'w']] +
['lib/pkgconfig/%s%s.pc' % (x, y) for x in ['form', 'menu', 'ncurses', 'ncurses++', 'panel'] for y in ['', 'w']] +
# libreadline
['lib/libreadline.a', 'lib/libhistory.a'] +
['include/readline/%s' % x
for x in ['chardefs.h', 'history.h', 'keymaps.h', 'readline.h',
'rlconf.h', 'rlstdc.h', 'rltypedefs.h', 'tilde.h']] +
# bzip2 libraries
['lib/libbz2.a', 'lib/pkgconfig/bzip2.pc', 'include/bzlib.h'] +
# zlib
['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/pkgconfig/zlib.pc'] +
# expat
['bin/xmlwf', 'include/expat.h', 'lib/libexpat.a', 'lib/pkgconfig/expat.pc'] +
['bin/file', 'lib/libmagic.a', 'lib/libmagic.la', 'include/magic.h'] +
['share/man/man1/file.1', 'share/man/man3/libmagic.3', 'share/man/man4/magic.4'] +
# PCRE2
['bin/%s' %x for x in ['pcre2-config', 'pcre2grep', 'pcre2test']] +
['share/man/man1/%s.1' % x for x in ['pcre2-config', 'pcre2grep', 'pcre2test']] +
['lib/libpcre2-%s.%s' % (x,y) for x in ['posix', '8', '16', '32'] for y in ['a', 'la']] +
['lib/pkgconfig/libpcre2-%s.pc' % x for x in ['posix', '8', '16', '32']] +
['include/pcre2.h', 'include/pcre2posix.h'],
'dirs': # ncurses
['include/ncursesw'] +
# expat
['lib/cmake/expat-%s' % local_SUSE_expat_version]
}
sanity_check_commands = [
# ncurses
'pkg-config --libs %s%s' % (x, y) for x in ['form', 'menu', 'ncurses', 'ncurses++', 'panel'] for y in ['', 'w'] ] + [
# bzip2
'pkg-config --libs bzip2'] + [
# zlib
'pkg-config --libs zlib'] + [
# eexpat
'xmlwf -h',
'pkg-config --libs expat'] + [
# file
'file --version'] + [
# PCRE2
'%s --version' % x for x in ['pcre2-config', 'pcre2grep', 'pcre2test']] + [
'pkg-config --libs libpcre2-%s' % x for x in ['posix', '8', '16', '32']]
modextravars = {
# Bad idea to add the variables below as they confuse get_software_libdir
# in some EasyBlocks. It will be very tricy to only add those that
# we need for certain packages and avoid others...
# # For increased compatibility with standard EasyBuild recipes
'EBROOTNCURSES': '%(installdir)s',
'EBVERSIONNCURSES': local_SUSE_ncurses_version,
'EBROOTLIBREADLINE': '%(installdir)s',
'EBVERSIONLIBREADLINE': local_SUSE_libreadline_version,
'EBROOTBZIP2': '%(installdir)s',
'EBVERSIONBZIP2': local_SUSE_bzip2_version,
'EBROOTZLIB': '%(installdir)s',
'EBVERSIONZLIB': local_SUSE_zlib_version,
'EBROOTEXPAT': '%(installdir)s',
'EBVERSIONEXPAT': local_SUSE_expat_version,
'EBROOTFILE': '%(installdir)s',
'EBVERSIONFILE': local_SUSE_file_version,
'EBROOTPCRE2': '%(installdir)s',
'EBVERSIONPCRE2': local_SUSE_PCRE2_version,
}
moduleclass = 'lib'