systools
License information
The systools module provides multiple packages:
-
GPP is published under the GNU Lesser General Public License.
-
htop
is published under the GNU Lesser General Public License version 2.0, a copy of which can also be found in the COPYING file in the source repository. -
pbzip2
is published under a BSD-style license. See the "COPYING" file included in the software installation (see below). -
libtree
is published under the MIT License a copy of which can be found in the LICENSE file in the GitHub repository. -
tree
is published under the GNU General Public License version 2, a copy of which can be found in the LICENSE file in the GitLab repository. -
PRoot is published under the GNU General Public License version 2, a copy of which can be found in the COPYING file in the source repository.
After loading the module, a copy of the license files for each package can also be
found in the $EBROOTSYSTOOLS/share/licenses
directory.
User documentation
Available tools depend on the version of the module. This list is for the latest version of the module.
The gpp
command
The gpp
command
is a general-purpose preprocessor with customizable syntax, suitable for a
wide range of preprocessing tasks. Its independence from any one programming
language makes it much more versatile than the C preprocessor (cpp), while its
syntax is lighter and more flexible than that of GNU m4. There are built-in
macros for use with C/C++, LaTeX, HTML, XHTML, and Prolog files.
The htop
command
The htop
command is an interactive process viewer for Unix/Linux.
Note that by default, htop will not show the load of individual cores as you may be used from many other sites. However, given that there are 256 virtual cores on most nodes, this produces visual overload for may. It is still possible to change the settings in htop by going into the settings screen using "SHFIT-S" and then changing the meters, e.g., adding "CPUS (1-4/8): first half in 4 shorter columns" to the first half and "CPUS (5-8/8): second half in 4 shorter columns" to the second.
This configuration will be stored in ~/.config/htop/htoprc, so you can also copy settings from another user by exchanging that file.
The pbzip2
command
The pbzip2
command
is a multithreaded version of the bzip2
command.
Check the manual page though as it has additional options to determine the
amount of parallelism. The code was patched by LUST so that by default
it will detect the correct number of hyperthreads available in a Slurm job
and limit the number of threads to 16 on the login nodes to not overwhelm
them (and as you are limited to the CPU capacity equivalent with 16
cores anyway).
This code has been unmaintained since 2015, so there is no guarantee that we can continue to provide it. Issues with it will not get fixed.
The code was never truly adapted the the 64-bit world. Memory management is
still 32-bit code, limiting the amount of memory one can request via the
-m
parameter to 2000 blocks.
It is also an alternative to lbzip2
which is also unmaintained and
has become almost impossible to compile on modern machines.
The tree
command
The tree
command
is a recursive directory listing command that produces a depth indented
listing of files, which is colorized ala dircolors if the LS_COLORS environment
variable is set and output is to tty.
The proot
command
The proot
command is a user-space implementation of
chroot, mount --bind, and
binfmt_misc. This means that users don't need any privileges or setup to do
things like using an arbitrary directory as the new root filesystem, making
files accessible somewhere else in the filesystem hierarchy, or executing
programs built for another CPU architecture transparently through QEMU
user-mode.
It is provided in this module mainly for use with singularity.
Note that there is now also a separate PRoot
module
as that turned out to be needed to work easily with EasyBuild to enhance
containers. The command is kept here so that older documentation that tells
to load systools
remains valid.
Pre-installed modules (and EasyConfigs)
To access module help and find out for which stacks and partitions the module is
installed, use module spider systools/<version>
.
EasyConfig:
Technical documentation
Systools is just a bundle of various small Linux tools that are very useful on the system.
The current content is
-
GPP: A General-Purpose Preprocessor (or sometimes called Generic PrePRocessor)
-
htop
-
pbzip2
The code has not been unmaintained since 2015.
-
libtree
-
tree
-
PRoot
EasyBuild
-
pbzip2
-
libtree:
Bundle version 15.1.0 for SUSE Linux 15SP1
- When compiling htop with unicode enable it causes a segmentation violation (but not with -h or --version so it is not detected in the EasyBuild sanity check). The likely cause is a problem with out ncursesw library that is part of syslibs and fully static.
21.12
22.06 and 22.08
-
Update of htop and some improvements to the EasyConfig.
-
Robustified the installation on LUMI with checksums.
22.12 and 23.03
-
Version bumps for GPP/htop/tree.
-
Adding libtree
-
Changing the layout of the EasyConfig a bit, also adding license information.
23.03
- Version bumps for GPP/htop/tree.
23.09
-
Version bumps for GPP/htop/tree.
-
In a revised edition we also provided the proot command for use with singularity.
-
We went for build that is fully static except for libc taken from the system to be as independent from anything else as possible. The procedure in the EasyConfig is a LUST development.
-
Needed to fix the Makefile as the warnings about it not being a git repository caused EasyBuild to stop the build.
-
23.12 and 24.03
-
Version bump of
htop
, but otherwise similar as the 23.09 one with theproot
command. -
Did have to change the download location for the
tree
command though which also led to a slightly different build process.
24.03-1 and 24.11
-
Added
pbzip2
to the bundle:-
The only dependency is libbz2, and we use a static version of it from the systools module.
-
This part of the EasyConfig is heavily inspired on the EasyBuilders one for PBZIP2.
-
We developed a small patch to detect the number of cores available via the
sched_getaffinity
function so that it works as expected in a Slurm job, and also limit the default number of threads to 16 on the login nodes.
-
Archived EasyConfigs
The EasyConfigs below are additional easyconfigs that are not directly available on the system for installation. Users are advised to use the newer ones and these archived ones are unsupported. They are still provided as a source of information should you need this, e.g., to understand the configuration that was used for earlier work on the system.
-
Archived EasyConfigs from LUMI-SoftwareStack - previously centrally installed software