The main binary bouf automates the entire process based on the rules laid out in the config file and command line.
Additionally, the following utilities are provided:
bouf-sign- utility for quickly RSA-signing manifest or other files validated by OBS on downloadbouf-deltas- stripped down version of bouf only handling generation of delta patches
bouf gets its name - Building OBS Updates Fast(er) - from providing a number of optimisations over the legacy update builder. It was built to be highly configurable and more easily extendable compared to the previous tooling.
New features compared to legacy tool:
- Parallelisation of file hashing and patch generations
- Zstandard instead of bsdiff
- Support for update branches
- Updated NSIS scripts
- Automatic exclusion of files whose executable contents have not changed
- It's written in Rust, of course :p
- cli contains documentation on CLI usage
- config contains documentation on the config file format and keys
The generated output from bouf has the following structure:
install/- OBS install files used to build installer/zip files (signed)updater/patches_studio/[branch]/[package]/{file}- delta patches for upload to serverupdate_studio/[branch]/[package]/{file}- files split into packages for upload to server
pdbs/- Full PDBsmanifest[_<branch>].jsonandmanifest[_<branch>].json.sigfor updateradded.txt,changed.txt,unchanged.txt, andremoved.txtfor manual checksOBS-Studio-<version>-Installer.exe- NSIS installer (signed)OBS-Studio-<version>.zip- ZIP file ofinstall/OBS-Studio-<version>-pdbs.zip- Archive of unstripped PDBs