Package Building Cluster


The build will be done via a crontab: Every monday 1 am UTC a script will be run. This script will first:

poudriere ports -u

Then for each jails a configuration file it will run:

poudriere bulk -j nameofthejail -a

if the jail is named 'head' then the command will be

poudriere bulk -j head -ac

The above script should do it:

   1 #!/bin/sh
   3 export PATH=${PATH}:/usr/local/bin
   5 /usr/local/bin/poudriere ports -u > /usr/local/poudriere/data/logs/bulk/raw-ports.log 2>&1 
   6 for j in `grep -h -v -E '(^[[:space:]]*#|^[[:space:]]*$)' /usr/local/etc/poudriere.d/release-building`; do
   7         unset extraargs
   8         [ $j = "head" ] && extraargs="-c"
   9         /usr/local/bin/poudriere bulk -j $j -a ${extraargs} > /usr/local/poudriere/data/logs/bulk/raw-$j.log 2>&1
  10 done

All packages are built incrementally, head packages will always be rebuilt from scratch (to prevent ABI breakage)

A pkg-fallout@ (better name needed :)) will be created, and all the build failures will be sent to that mailing list so committers can pick up what they do need.

A post bulk hook will be created, it will run the byte-sync script each time a new set is ready


We need 2 more beefy like boxes, they will have the exact same setup as beefy1 and beefy2 but will never publish packages The main difference is that they will weekly build the packages with -t and send failure log via mail to pkg-fallout@

Publish criteria

The following is used to determine if the built package set is published. This is to prevent too many missing or broken packages on the mirrors.

  1. Only X% Of the build may failed, skipped or ignored. X is defined in /usr/local/etc/poudriere.d/hooks/

  2. There is a whitelist of packages in /usr/local/etc/poudriere.d/publish-whitelist that must be present. It may make sense to move the whitelist into ports for transparency, ease of maintenance, and tying it to currently existing ports.

portmgr/PackageBuilding (last edited 2015-02-12T19:52:21+0000 by BryanDrewery)