oxy and oh on HaikuDepot
haikuports recipes for oxy
(dev-vcs/oxy) and OxygenHub's oh (dev-vcs/oh) are written by
make-recipe.py from a release's source tarball (oxygen#156, #157).
Each release's dist job attaches NAME-VERSION-src.tar.gz: the source as
released, reproducible (sorted, fixed times and owners, gzip without a
timestamp). oh's holds the oxygenhub tree with its subrepos inside, so it
builds alone. The recipe fetches it from the release's stable address,
https://oxygenhub.io/andymccall/REPO/releases/download/vVERSION/NAME-VERSION-src.tar.gz,
and every crates.io crate in its Cargo.lock as a source of its own with its
checksum, building offline as haikuports' other Rust recipes (ripgrep) do.
For a release (oxy shown; oh is the same with oh and oxygenhub):
curl -LO https://oxygenhub.io/andymccall/oxygen/releases/download/vX.Y.Z/oxy-X.Y.Z-src.tar.gz
python3 packaging/haikuports/make-recipe.py oxy oxy-X.Y.Z-src.tar.gz X.Y.Z > oxy-X.Y.Z.recipe
Test it on Haiku R1/beta6 with haikuports checked out and haikuporter
installed: copy the recipe to haikuports/dev-vcs/oxy/ and run
haikuporter --no-source-packages -j1 -y oxy. Submit it as a pull request
to haikuports (oxy: new recipe, then oxy: bump to X.Y.Z).
Haiku needs the system's zstd (ZSTD_SYS_USE_PKG_CONFIG=1: the bundled
zstd's hidden symbols break the link), which the recipe sets. oh's tests
pull in the hub, whose pipeline parser needs a newer Rust than HaikuPorts'
1.94, so its recipe tests hub-api only.