Tools for building 32-bit archlinux packages from archlinux.org's official, 64-bit tested PKGBUILDs et al.
Erich Eckner af1fdd9a49 bin/build-packages: symlinks should be objdump'ed, too - they might get linked against 2 weeks ago
bin bin/build-packages: symlinks should be objdump'ed, too - they might get linked against 2 weeks ago
conf the user on the buildmaster is now "master" instead of "slave" 3 weeks ago
lib lib/load-configuration: do not set base_dir if it is already set 2 weeks ago
misc misc/pacman-i[46]86.conf: pacman needs real CacheDir 2 weeks ago
.gitignore add .gitignore 1 year ago
LICENSE Initial commit 1 year ago
README.md README.md: parallel is needed on the buildmaster 3 weeks ago

README.md

builder

tools for building 32-bit archlinux packages from archlinux.org's official, 64-bit tested PKGBUILDs et al. This includes scripts to be run on the build master as well as scripts to be run on the build slaves (both residing in bin). The sources are currently hosted on https://git.archlinux32.org/archlinux32/builder.

requirements

  • moreutils
  • lsof

build master only

  • base-devel
  • bc
  • git
  • graphviz
  • ii
  • inotify-tools
  • some mysql-server (mariadb + stunnel)
  • nginx or equivalent
  • parallel
  • php-gd
  • php-fpm or equivalent
  • pkgfile
  • rsync
  • screen
  • some ssh-server

build slave only

  • some ssh-client
  • wget
  • sudo rights for staging-with-build-support-i686-build, staging-i686-build, multilib-build, extra-x86_64-build
  • devtools32

configuration

The standard configuration in conf/*.conf.example can be locally overwritten by removing the .example suffix, uncommenting the desired variables and changing the values.

build master only

  • add command=".../bin/slave-build-connect $slave-identifier" $ssh-key to ~/.ssh/authorized_keys for each build slave

build slave only

  • set keyserver-options auto-key-retrieve in ~/.gnupg/gpg.conf
  • enable [releng] repository in /etc/pacman.conf with an i686 mirror

tools for the build master and the build slaves

  • check-opcodes: Scan binaries for certain opcodes.
  • clean-git: Clean the packages' git repositories.
  • opcode: Helper for check-opcodes.
  • strict-bashism-check: Strict style check for this code base.

tools for the build master

  • bootstrap-mysql: Bootstrap the mysql database.
  • build-master-status: Print some informational statistics.
  • check-bugtracker: Receive list of packages with issues from the bug tracker.
  • check-db-structure: Dump the structure of the database.
  • cleanup: Clean up left over files.
  • copy-to-build-support: Copy a package into [build-support].
  • db-update: Move around packages on the master mirror.
  • delete-packages: Delete obsolete packages on the master mirror.
  • filter-build-logs: Filter content of build-logs for display on the webserver.
  • find-obsolete-packages: Find packages which are no longer available upstream.
  • get-assignment: Receive a build assignment from the build-list.
  • get-package-updates: Update the build-list.
  • ii-answer: Answer the irc channel.
  • ii-connect: Connect to and watch the irc channel.
  • interpret-mail: Interpret the content of an email - also checks for validity of the mail.
  • modify-package-state: Modify status of a package in the database.
  • ping-from-slave: Receive ping from slave.
  • prioritize-build-list: Reorder the build list.
  • repo-copy: Step brother of repo-add and repo-remove.
  • return-assignment: Return an assignment - either a tar of built package(s) or of error logs.
  • sanity-check: Check sanity of build master.
  • seed-build-list: Seed the build list from an upstream mirror or a manual package list.
  • show-dependencies: Generate graphs of dependencies between build-list packages for the web server.
  • slave-build-connect: Proxy command to be allowed for connection via ssh from build slaves - this way, they can execute exactly the commands they need to operate.
  • why-dont-you: Script to investigate why a (desired) action is not done.
  • wtf: Find which package contains a given file.

tools for the build slaves

  • build-packages: Get a build assignment from the build master, build it and report back.
  • clean-cache: Remove packages from /var/cache/archbuild32 which do not match their checksum.
  • ping-to-master: Ping the build master to show the slave is still compiling.

working directory

In the standard configuration, the directory work will be used to cache some volatile data, as well as the git repositories of PKGBUILDs and modifications (in repos/packages, repos/community, repos/packages32).