NameDateSize

..24-Jan-20225

assets/H29-Mar-20245

DockerfileH A D03-Nov-20232.3 KiB

MakefileH A D03-Nov-2023357

README.mdH A D28-Jul-20232.3 KiB

tools/H24-Nov-20223

README.md

1# HaikuPorter in Buildmaster mode
2
3One buildmaster container per architecture
4
5# Requirements
6
7## Secrets
8
9  * ```/run/secrets/sig_repo_privatekey``` - Minisign private key to sign repos (optional)
10  * ```/run/secrets/sig_repo_privatekeypass``` - Password for Minisign private key (optional)
11
12## Environmental
13
14  * ```BUILD_TARGET_ARCH``` - Target architecture for buildmaster
15  * ```REPOSITORY_TRIGGER_URL``` - Target URL to hit when build complete (optional)
16    * example: https://depot.haiku-os.org/__repository/haikuports/source/haikuports_x86_64/import
17
18## Volumes
19
20  * /var/sources (shared between all architectures)
21    * Storage for various required sources like haiku
22  * /var/packages (shared between all architectures)
23    * Storage for packages and repositories
24    * repository
25      * Haikuports repositories
26    * instances
27      * Has all built packages
28      * A symlink from /var/buildmaster/haikuports/packages
29      * Packaged hardlinked into /var/packages/repository/(branch)/(arch)/current/packages/
30  * /var/buildmaster (one-per-architecture)
31    * Main state directory for buildmaster
32    * output
33      * records - json dump of internal haikuporter state data during buildrun. Symlinks to buildruns
34      * builds - logs of buildruns. Symlinks to buildruns
35      * buildruns - complete log of every buildrun and build
36    * haikuports
37      * buildmaster
38        * builders
39        * haikuports.conf
40
41## Repository generation
42
43> aka our Rube Goldberg machine
44
45* haikuporter buildmaster builds packages into /var/buildmaster/haikuports/packages which quietly goes to /var/packages/instances/master/(arch) via a symlink
46  * This follows the basic haikuporter behaviour
47* haikuporter buildmaster then moves obsolete packages from /var/buildmaster/haikuports/packages /var/buildmaster/haikuports/packages/.obsolete/ (keeping in mind packages is a symlink)
48  * This follows the basic haikuporter behaviour
49* haikuporter buildmaster then hardlinks packages in /var/packages/instances to /var/packages/repository/(branch)/(arch)/current/packages/
50  * This is something performed by haikuporter --create-package-repository called by loop
51* haikuporter buildmaster then generates a repository for the hardlinked packages in /var/packages/repository/(branch)/(arch)/current/
52  * This is something performed by haikuporter --create-package-repository called by loop
53