Packaging & releases
This page is for maintainers. One script produces every artifact on the releases page.
- One-command release
- Windows MSI
- Ubuntu .deb and tarball
- Docker images
- Publishing a release
- Documentation site
One-command release
.\scripts\build-release.ps1 # everything; pushes Docker images
.\scripts\build-release.ps1 -NoPush -Clean # clean Windows builds, keep images local
.\scripts\build-release.ps1 -SkipDocker -WindowsCuda 134 -DebCuda 134
The version comes from project(VERSION) in CMakeLists.txt. Artifacts go to dist\<version>\.
A failed variant does not stop the others. A summary is printed at the end, and the script exits
non-zero if anything failed (-StopOnError aborts at the first failure instead).
Artifacts
| Artifact | Variants | Installs / extracts to |
|---|---|---|
RiemannEngine-<ver>-cu<X>-x64.msi |
cu132, cu134 | <ProgramFiles>\RiemannEngine\<ver>_cu<X>\ |
RiemannEngine-<ver>-cu<X>-win-x64.zip |
cu132, cu134 | RiemannEngine\<ver>_cu<X>\{include,lib} |
libriemann-cpp-dev_<ver>_cu<X>_ubuntu<U>_amd64.deb |
22.04/cu124, 24.04/cu132, 24.04/cu134 | /usr/local/RiemannEngine/<ver>_cu<X>/ |
RiemannEngine-<ver>-cu<X>-ubuntu<U>-x64.tar.gz |
same as the .deb | RiemannEngine/<ver>_cu<X>/{include,lib} |
Docker acaicia/riemannengine:<ver>-cu<X> and :cu<X> |
cu124, cu132, cu134 | :latest points at cu134 |
SHA256SUMS.txt |
Checksums of every file above |
Archives contain only RiemannEngine: headers, the static library and the CMake package. Users supply LibTorch and CUDA themselves (see Installation). Every version/CUDA pair installs to its own directory, so they co-exist.
Parameters
| Parameter | Default | Description |
|---|---|---|
-Version |
from CMakeLists.txt |
Release version |
-WindowsCuda |
132,134 |
Windows variants (LibTorch from D:\libtorch_cu<X>) |
-DebCuda |
124,132,134 |
Ubuntu .deb and tarball variants |
-DockerCuda |
124,132,134 |
Docker images |
-OutputDir |
dist\<version> |
Artifact directory |
-Jobs |
12 |
Parallel compile jobs |
-CudaArchitectures |
86 |
SM list for the Linux builds, e.g. "86;89;90" |
-DockerUser / -DockerRepo |
$env:DOCKER_USER or acaicia / riemannengine |
Image name |
-SkipWindows, -SkipDeb, -SkipDocker |
Skip a stage | |
-NoPush |
Build images without pushing | |
-Clean |
Wipe the build-release-cu<X> directories first |
|
-StopOnError |
Abort at the first failure |
Requirements
- Everything needed for a Windows build: VS 2022, CUDA 13.2 and 13.4,
D:\libtorch_cu132andD:\libtorch_cu134. - WiX Toolset v4+ and its UI extension (below).
- Docker Desktop in Linux containers mode, with roughly 30 GB free per Linux profile.
docker loginwhen pushing.
Windows MSI
dotnet tool install --global wix
wix extension add -g WixToolset.UI.wixext/<version shown by `wix --version`>
.\msi\build-msi.ps1 -BuildDir .\build-cu134 -CudaTag 134
build-msi.ps1 runs cmake --install into a staging directory and builds the MSI from it.
Parameters: -Version, -CudaTag (detected from CMakeCache.txt), -BuildDir, -BuildType,
-StagingDir, -OutputPath, -SkipStaging, -CpuOnly.
The MSI:
- installs to
C:\Program Files\RiemannEngine\<version>_<variant>\; - registers the prefix in the CMake package registry
(
HKLM\Software\Kitware\CMake\Packages\RiemannEngine), sofind_packageworks withoutCMAKE_PREFIX_PATH; - uses a separate UpgradeCode for every version/variant pair, so cu132 and cu134, and different versions, all install side by side. Reinstalling the same version and variant replaces it.
Ubuntu .deb and tarball
.\apt\build-apt.ps1 -CudaVersion 134 # Windows host, via Docker
./apt/build-apt.sh --cuda-version 134 # Linux host with CUDA + LibTorch installed
| Profile | CUDA | Ubuntu | LibTorch |
|---|---|---|---|
134 (default) |
13.4.3 + cuDNN | 24.04 | 2.15.0 / cu134 |
132 |
13.2.1 + cuDNN | 24.04 | 2.15.0 / cu132 |
124 (legacy) |
12.4.0 | 22.04 | 2.5.1 / cu124 |
The package is named libriemann-cpp-dev-<ver>-cu<X>, so different versions and profiles can be
installed together. It does not depend on Ubuntu’s nvidia-cuda-toolkit. Users install CUDA
from NVIDIA’s repository.
Docker images
.\docker\docker-build.ps1 -CudaVersion 134 -Push # acaicia/riemannengine:<ver>-cu134, :cu134
./docker/docker-build.sh --cuda-version 134 --push
The image name comes from -User/-Repo (--user/--repo), or the DOCKER_USER and
DOCKER_REPO environment variables. build-release.ps1 also tags cu134 as latest.
Publishing a release
- Bump
project(VERSION ...)inCMakeLists.txt. - Run
.\scripts\build-release.ps1 -Clean. - Verify:
Get-FileHashagainstSHA256SUMS.txt; install one MSI and one .deb and build the quick start program against each. - Create a GitHub release tagged
v<version>and upload everything indist\<version>\.
Documentation site
This site is built by .github/workflows/pages.yml when a push to main touches docs/, the
public headers or the workflow. Pull requests run the same build without deploying.
- Jekyll (just-the-docs theme) renders
docs/. - Doxygen (
docs/Doxyfile) generates the API reference into_site/api/reference/. - The result is deployed with
actions/deploy-pages.
In the repository settings, set Pages > Source to GitHub Actions. To preview locally (Ruby 3.x):
cd docs
bundle install
bundle exec jekyll serve # http://localhost:4000/RiemannEngine/
cd ..
doxygen docs/Doxyfile # from the repo root -> build/doxygen/html/index.html