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