docs/content/contribution/development/build_process.md
!!! Warning
This section is currently somewhat WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.
bottom manages its own binary builds for nightly and stable release purposes. The core build workflow is handled by build_releases.yml, called by a wrapper workflow for nightly and stable releases. Builds take place via GitHub Actions.
The main things built are:
.deb package for Debian and its derivativesThis documentation gives a high-level overview of the build process for each part. For the most up-to-date and detailed reference, definitely refer back to the build_releases.yml file.
Binaries are built currently for various targets. Note that not all of these are officially supported. The following general steps are performed:
Set up the Rust toolchain for the action runner.
Enable cache.
Build a release build with:
--features deploy, which enables only crates needed for release builds.
--locked to lock the dependency versions.
The following env variables set:
BTM_GENERATE: trueCOMPLETION_DIR: "target/tmp/bottom/completion/"MANPAGE_DIR: "target/tmp/bottom/manpage/"These generate the manpages and shell completions (see Packaging for some more information).
Bundle the binaries and manpage/completions.
Cleanup.
Some builds use cross to do cross-compilation builds for architectures otherwise not natively supported by the runner.
This builds a full Windows installer using cargo-wix. This requires some setup beforehand with some dependencies:
After that, cache is enabled, and cargo wix takes care of the rest.
.debCurrently, .deb files are built for x86 and ARM architectures (armv7, aarch64). This is handled by cargo-deb.
cargo-deb..deb file.There are additional checks via dpkg to ensure the architecture is correctly set.