* other: master -> main I'm so used to using `main` branch now that it's actually kinda annoying to use `master` for just this repo... so might as well rename it now. * overzealous change * wording * some wording * allow auto-cancel for tests if not main
2.8 KiB
Build Process
!!! 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.
Overview
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:
- Binaries for various platforms
- MSI installer for Windows
.deb
package for Debian and its derivatives
This 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
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: true
COMPLETION_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.
MSI
This builds a full Windows installer using cargo-wix
. This requires some setup beforehand with some dependencies:
- Net-Framework-Core (handled by Powershell)
- wixtoolset (handled by chocolatey)
- Rust toolchain
After that, cache is enabled, and cargo wix
takes care of the rest.
.deb
Currently, .deb
files are built for x86 and ARM architectures (armv7
, aarch64
). This is handled by cargo-deb
.
- For x86, this is handled natively with just
cargo-deb
. - For ARM, this uses a Docker container, cargo-deb-arm, which correctly sets the dependencies and architecture for the generated
.deb
file.
There are additional checks via dpkg
to ensure the architecture is correctly set.