summaryrefslogtreecommitdiff
path: root/Build-system.md
diff options
context:
space:
mode:
Diffstat (limited to 'Build-system.md')
-rw-r--r--Build-system.md35
1 files changed, 22 insertions, 13 deletions
diff --git a/Build-system.md b/Build-system.md
index db71320..a01e642 100644
--- a/Build-system.md
+++ b/Build-system.md
@@ -31,23 +31,32 @@ The build system will consist from the following shell scripts:
7. Write the current git revision numbers to files.
8. Remove the lock file.
+### get-assignment
+1. Create a lock file for build list.
+2. Read the build list and try to advertise the packages one by one for building.
+3. Check if the current package or any of its dependencies are locked, broken or blocked (if a state file is available). If it's not, proceed with step 5.
+4. Hand out the package which break the most dependency loops.
+5. Create a state file for the current package and set it as locked.
+6. Assign the build order to the caller of the script.
+7. Remove the lock file.
+
### build-packages
-1. Read the build list and try to build the packages one by one.
-2. Check if the current package or any of its dependencies are locked, broken or blocked (if a state file is available).
-3. Create a state file for the current package and set it as locked.
-4. Copy (or download) the source package and the customizations locally.
-5. If it's an architecture-independent package (marked as 'any'), then copy the built package from the official repository, and skip the following three steps.
-5. Apply customizations by running the script if exist in a chroot.
-6. Run arch32build.
-7. If the package fails to build, then try again once. If fails again, then mark it as broken (edit the state file if it's still exists).
-8. After a successful build, sign the package with the server's PGP key, and add (or upload) the binary package to the staging directory, together with a file which contains the git revision number.
-9. Run db-update.
+1. Get a build assignment by calling `get-assignment` on the build master
+2. Copy (or download) the source package and the customizations locally (this is currently done via checking out the respective revisions in git).
+3. ~~If it's an architecture-independent package (marked as 'any'), then copy the built package from the official repository, and skip the following three steps.~~ (this doesn't gain much and only calls for trouble, e.g. different keys for signing, not applied modifications, outdated packages on the x86_64 mirrors, ...)
+4. Apply customizations by ~~running the script if exist in a chroot~~ appending to `PKGBUILD` and replacing all other files by existing files in the package customizations repository.
+5. Run arch32build.
+6. If the package fails to build, then try again once with `-c`, once with source downloaded from `sources.archlinux.org` and once more with `-c`. If it still fails, then mark it as broken (report back to the build master by calling `return-assignment ... ERROR`).
+7. After a successful build, sign the package with the build slave's PGP key, and pack and upload the binary package to the staging directory by calling `return-assignment` on the build master ~~together with a file which contains the git revision number~~.
+9. ~~Run db-update.~~
### arch32build
Build the package in a clean chroot environment with a custom makefile.conf.
### return-assignment
1. Create a lock file for build list.
-2. Check if the git revision of the binary package is the same as on the build list. If it's different, then drop the package. Otherwise add binary packages to the proper repository.
-3. Remove the package from the build list, and remove the corresponding package state file.
-4. Remove the lock file. \ No newline at end of file
+2. If error is reported, mark package as broken and proceed with step 6.
+3. Check if the git revision of the binary package is the same as on the build list. If it's different, then drop the package. Otherwise add binary packages to the proper staging repository.
+4. Check package for sanity.
+5. Remove the package from the build list, and remove the corresponding package state file.
+6. Remove the lock file. \ No newline at end of file