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>].json
andmanifest[_<branch>].json.sig
for updateradded.txt
,changed.txt
,unchanged.txt
, andremoved.txt
for 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