-
-
Notifications
You must be signed in to change notification settings - Fork 9
HarbourMasters Ports
The hardware these ports are intended to run on require the projects be built in Debian Bullseye, to accommodate older GLIBC that some custom firmwares use. To improve performance, dependencies are built from source rather than rely on package managers.
HM ports distributed here are built with GitHub actions at HM64-Autobuilder. There, a yaml file build_ports.yaml lists each port to be checked, and the upstream release is compared to the Autobuilder repo's release twice per day. If the upstream release is newer, Autobuilder gets to work.
Each port to be built has a src/build.txt file which defines the terminal commands used to compile the product. Builds are usually deterministic, so once a build is complete src/retrieve_products.txt performs the packaging step. Thus, Autobuilder compiles a linux arm64 release .zip containing the port's library dependencies, the binary file, accompanying .o2r file, and distributable asset xml definitions used with ZAPD.out or torch.
After a new release is compiled, Autobuilder sends a notification ping to this RHH-Ports repository. RHH-Ports then grabs the latest release zip from Autobuilder, unzips it to the correct folder, and adds a commit message with the release tag.
While this workflow is nearly autonomous and creates deterministic builds (so the end user can see what they are downloading and running), it isn't without minor maintenance. For example, the HM project Ghostship v1.0.2 generates sm64.o2r with a portVersion file, but that special file, used to compare the game version with the engine version to ensure a match, is only created when Ghostship is the one to generate the o2r. If one uses torch separately, which RHH-Ports does due to a lack of window forms system, the portVersion file is not generated.
This is the sort of thing that requires manual intervention. In this instance, the portVersion file was extracted from a desktop release and is added to the o2r generation by torch via an append argument.