Prepare a Host as Development Machine
June 11, 2026 ยท View on GitHub
To do development for the xxQS_NAMExx you need a host or virtual machine that provides the following prerequisites. The recommended build platform is CentOS Linux 8.x for the lx-amd64 architecture.
Software Prerequisites
For the xxQS_NAMExx core product, the environment has to provide:
- cmake >= 3.24
- git
- to build OCS/GCS 9.0.x or 9.1.x: devtoolset-11 (gcc/g++ >= 11.2 or similar to support C++20)
- to build OCS/GCS 9.2.x or later: devtoolset-15 (gcc/g++ >= 15.2 or similar to support C++23)
- autoconf
- automake
- patchelf
Depending on the OS, additional packages are required:
- libtirpc-devel (Linux)
- systemd-devel or libudev-dev (Linux), libudev-devd (FreeBSD)
- some cmake versions delivered with the OS are either too old or too new, and you need to install cmake yourself. In such a case we recommend installing version 3.27.9.
Relying on os packages for the 3rdparty tools requires the following additional packages:
- BDB
- hwloc
When building with support for TLS encryption, OpenSSL version 3.x is required. On build hosts the development package is required, on target hosts the runtime package is required. The cmake build checks for the OpenSSL header files having the correct version. If they are found, building with OpenSSL is enabled.
Documentation is written in Markdown. To be able to generate product man pages and PDF manuals, you need:
- pandoc
- texlive
- texlive-xetex
Source code documentation can be extracted via:
- Doxygen
- graphviz, ... (Dependencies depend also on the platform)
To test your changes, you need to be able to run the automated testsuite which requires:
- TCL >= 8.5
- Expect >= 5.45
- vim
Certain tests of the automated test environment require:
- xterm
- mailx
- perl
- python3
- ...
Building the optional Python binding (the bridge module consumed by
gcs-python-api and gcs-qmon) has its own prerequisites โ a Python 3 interpreter
with development headers and pybind11, optionally for several Python versions on one
build host. See the chapter Python Bindings and Build-Host Setup.
An IDE (e.g., Clion) is optional but might have addition prerequisites (e.g., rsync to support remote compilation).
If you want to use CLion as development environment on Linux or macOS and remote compile for FreeBSD, then
you need to downgrade the cmake version to 3.27.9 on FreeBSD. The default cmake package provides 3.28.1
which suites a manual build but is not supported by the CLion IDE 2023.3.2.
CentOS 7 (default for ulx-amd64)
yum install -y centos-release-scl
yum install -y devtoolset-11 git autoconf automake flex bison patchelf
yum install -y numactl-devel ncurses-devel libXpm-devel pam-devel pciutils-devel systemd-devel
yum install -y epel-release
yum install -y tcsh expect
yum install -y libdb libdb-devel hwloc hwloc-devel
for repository drmaa-java
Need Java >= 1.8 and Maven.
Maven (mvn) is not in PATH by default, source /opt/rh/rh-maven35/enable.
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel rh-maven35
Debian 12
apt-get install -y binutils cmake autoconf automake libudev-dev
apt-get install -y build-essential manpages-dev git
apt-get install -y doxygen graphviz
apt-get install -y expect tcl tdom tcllib gnuplot vim
apt-get install -y tcsh xterm expect gnuplot
apt-get install -y libssl-dev
for repository drmaa-java
apt-get install y openjdk-17-jdk maven
Debian 13
apt-get install -y git binutils autoconf automake gettext build-essential manpages-dev patchelf
apt-get install -y expect tcl tdom tcllib gnuplot xterm
apt-get install -y doxygen graphviz pandoc
apt-get install -y rapidjson-dev libdb5.3 libdb5.3-dev
apt-get install -y libjemalloc2 libjemalloc-dev hwloc libhwloc-dev
apt-get install -y libudev-dev libmunge-dev libtirpc-dev libsystemd-dev
apt-get install -y pandoc texlive*
apt-get install -y libssl-dev
for repository drmaa-java
apt-get install -y openjdk-21-jdk maven
FreeBSD 13/14
pkg install cmake git autoconf automake gettext bash libudev-devd
pkg install expect xterm gnuplot vim mailx tcllib
pkg install hs-pandoc texlive-full tex-xetex munge
for repository drmaa-java
pkg install openjdk8 maven
for building support of TLS encryption
On FreeBSD 13:
For TLS encryption support, OpenSSL version 3.x is required. The openssl 3 development package of FreeBSD seems to be incomplete, it is missing the libcrypto shared library. Building OpenSSL 3.x from source solved this issue. The default build (./Configure, make, make install) will install OpenSSL 3.x in /usr/local where it is found by the cmake build system.
On FreeBSD 14 install with:
pkg install openssl
maxOS 14/15 (default for darwin-amd64)
Please note that information here might be outdated because macOS is no default build platform anymore. If you need this configuration then please contact sales or support at hpc-gridware.com.
MacPorts is required to install the packages.
XCode
XCode command line tools
set SDKROOT to the SDK path that should be used (usually do `export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)`)
XQuartz (for some testsuite tests)
port install cmake git autoconf automake gettext
port install munge openssl3
port install expect tcl-tk gnuplot perl
port install pandoc texlive
port install doxygen graphviz
macOS 14
Homebrew is required to install the packages but munge is not available in Homebrew.
XCodeUpdate
XQuartz (for some testsuite tests)
brew install cmake git autoconf automake gettext
brew install expect tcl-tk gnuplot perl
brew install pandoc texlive
brew install doxygen graphviz
@todo development package for OpenSSL
for repository drmaa-java
Raspian 11
apt-get install git autoconf automake gcc g++ patchelf libntirpc-dev libudev-dev
apt-get install expect xterm gnuplot tdom
cmake needs to be (compiled and) installed manually because the default cmake package just provides version 3.18.
for repository drmaa-java
apt-get install -y openjdk-8-jdk maven
Rocky / Alma / Oracle Linux / CentOS - 8 (default for lx-amd64, lx-arm64, lx-ppc64le)
and only for lx-amd64
dnf install -y automake autoconf cmake git libtirpc-devel systemd-devel patchelf munge
dnf install -y gcc-toolset-15 gcc-toolset-15-libasan-devel gcc-toolset-15-libubsan-devel
dnf install -y expect tcl tcllib gnuplot xterm libcgroup-tools perl-Env tcsh
dnf config-manager --set-enabled powertools
dnf --enablerepo=devel install -y doxygen graphviz pandoc
dnf install -y texlive*
dnf install -y openssl3-devel
Depending on the OS patchlevel cmake needs to be (compiled and) installed manually because the default cmake package might just provide versions < 3.24
for repository drmaa-java
dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel maven
Rocky / Alma / Oracle Linux / CentOS / RHEL - 9 and 10
dnf install -y automake autoconf cmake git systemd-devel
dnf install -y gcc-toolset-15 gcc-toolset-15-libasan-devel gcc-toolset-15-libubsan-devel munge
dnf install -y expect tcl xterm perl-Env tcsh graphviz
dnf install epel-release (or on RHEL 10: dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm)
dnf install -y pandoc
dnf install -y texlive*
dnf install -y openssl-devel
Solaris 11 (default for sol-amd64)
pkg install pkg:/developer/build/automake
pkg install pkg:/developer/build/autoconf
pkg install pkg:/developer/build/cmake
pkg install pkg:/developer/gcc ;# installs default gcc, currently version 14.2.0
pkg install pkg:/developer/versioning/git
pkg install pkg:/developer/debug/gdb
pkg install pkg:/terminal/xterm
pkg install pkg:/library/security/openssl
pkg install pkg:/shell/expect
pkg install pkg:/developer/documentation-tool/doxygen
pkg install pkg:/image/graphviz
pkg install pkg:/image/gnuplot
for repository drmaa-java
pkg install pkg:/developer/java/jdk-8
There is no Maven package in the Solaris 11 package manager, so you need to install it manually.
OpenIndiana, OmniOS, ... (default for osol-amd64)
pkg install pkg:/developer/build/automake
pkg install pkg:/developer/build/autoconf
pkg install pkg:/developer/gcc-14
pkg install pkg:/developer/versioning/git
pkg install pkg:/developer/debug/gdb
pkg install pkg:/developer/build/cmake
pkg install pkg:/developer/build/gnu-make
pkg install pkg:/terminal/xterm
pkg install pkg:/shell/expect
pkg install pkg:/developer/documentation-tool/doxygen
pkg install pkg:/image/graphviz
pkg install pkg:/image/gnuplot
for repository drmaa-java
pkg install pkg:/developer/java/openjdk8
pkg install pkg:/developer/build/maven
SUSE Tumbleweed (default for lx-riscv64)
zypper install -y --type pattern devel_C_C++
zypper install -y gdb cmake git patchelf
zypper install -y openssl libtirpc-devel systemd-devel
zypper install -y doxygen graphviz
zypper install -y tcl expect vim xterm mailx perl gnuplot
zypper install -y texlive pandoc
zypper install -y libopenssl-devel
for repository drmaa-java
zypper install -y java-1_8_0-openjdk java-1_8_0-openjdk-devel maven
Ubuntu 20/22/24/26
apt-get install -y git autoconf automake build-essential manpages-dev patchelf
apt-get install -y expect tcl tdom tcllib gnuplot xterm
apt-get install -y doxygen graphviz pandoc
apt-get install -y rapidjson-dev libdb5.3 libdb5.3-dev
apt-get install -y libjemalloc2 libjemalloc-dev hwloc libhwloc-dev ocl-icd-opencl-dev
apt-get install -y libudev-dev libmunge-dev libtirpc-dev
apt-get install -y pandoc texlive*
for building support of TLS encryption
OpenSSL version 3.x is available in Ubuntu 24.04 and later. It is not available from OS packages in earlier versions.
apt-get install -y libssl-dev
for repository drmaa-java
apt-get install -y openjdk-8-jdk maven
Clone the Required Repositories
Create a directory that will hold all git repositories for xxQS_NAMExx. Within this document this directory is referred to as $OCS_BASE.
cd $OCS_BASE
git clone https://github.com/hpc-gridware/clusterscheduler
git clone https://github.com/hpc-gridware/testsuite
If you want to build with closed source extensions then additionally clone
git clone https://github.com/hpc-gridware/gcs-extensions
git clone https://github.com/hpc-gridware/gcs-testsuite