Building Releases

Version Numbering

Flux-core releases are numbered with Semantic Versioning, where MAJOR.MINOR.PATCH release numbers communicate that:

  • major releases may break API

  • minor releases add functionality in a backward compatible manner

  • patch releases make backward compatible bug fixes

At this time, the project is at major version zero, indicating interfaces are not yet stable. That said, flux-core developers try to minimize disruption to early adopters and announce any necessary breaking changes in the release notes.

Obtaining Releases

Tarballs and release notes are available on the Github releases page.

Releases for all Flux framework projects are also announced on the Flux Framework releases page.

Installing Dependencies

Several external software packages are prerequisites for building Flux. Scripts that install these packages for debian and redhat based distros are located in the flux-core source tree scripts sub-directory.

The following packages are optional and may be omitted if you do not require the associated functionality:

Package

Functionality

flux-security

Launching work as multiple users.

For example when Flux is to be the native resource manager on a cluster.

Sphinx

Building man pages and documentation

MPI

Test only: sanity tests that Flux can launch MPI programs

valgrind

Test only: checks for memory errors

Configuring and Building a Release

flux-core uses GNU autotools internally, so it supports the usual Use Cases for the GNU Build System. A standard build follows this pattern:

$ tar xzf flux-core-X.Y.Z.tar.gz
$ cd flux-core-X.Y.Z
$ ./configure --with-flux-security
$ make
$ make check
$ make install

Configure should abort if any required build dependencies are missing or insufficient. Configure options options may be listed with ./configure --help.

make -j N may be used to speed up the build and check targets by increasing parallelism.

All checks are expected to pass, although some timing related test defects may cause tests to sporadically fail on slow systems or when run with too much parallelism. make recheck re-runs any failing checks.

Packages

RPM packages for TOSS 4 (RHEL 8 based) are produced by the TOSS build system and can be made available externally on request. When requested, these are manually added to the release assets on github.

deb packages for Debian or Ubuntu can be built from a release tarball with make deb, producing debs in the debbuild sub-directory. This target is used by some Flux team members to build packages for test clusters running the Raspberry Pi OS (Debian/GNU 11).

Docker Images

Docker images for tagged releases as well as a current development snapshot are available in the fluxrm/flux-core Dockerhub. For example, the following downloads a debian bookworm image containing flux-core 0.54.0 and starts a flux instance within it:

$ docker pull fluxrm/flux-core:bookworm-v0.54.0-amd64
$ docker run -ti fluxrm/flux-core:bookworm-v0.54.0-amd64
ƒ(s=1,d=0) fluxuser@080d84548cc4:~$

Spack

Flux-core and its dependencies can also be built using spack, for example:

$ git clone --depth=100 https://github.com/spack/spack.git
$ cd spack
$ . share/spack/setup-env.sh
$ spack install flux-core@0.54.0 %gcc@11.4.0
$ spack find flux-core
-- linux-ubuntu22.04-zen2 / gcc@11.4.0 --------------------------
flux-core@0.54.0
==> 1 installed package
$ spack load flux-core