Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

114 lines (82 sloc) 3.904 kb
Step One: Suggested File System Layout
For the DragonFly builds I'm using:
- /bulklog for the bulk meta data and log files of each package
- /scratch as WRKOBJDIR
- /distfiles as DISTDIR
- /packages as PACKAGES
- separate physical file systems for /var and /usr/pkg
All file systems but those are read-only, /tmp and /dev need platform
specific handling either as tmpfs or link. ptyfs helps for /dev.
For parallel builds, /bulklog, /packages and /usr/pkgsrc are supposed to
be shared (null mounts, NFS). /usr/pkg and /var/db/pkg needs to be
per-node and /scratch should be per-node.
The defaults scripts will remove /usr/pkg and /var/db/pkg on the master
node as well. When using chroot sandboxes for the build, the master can
share a sandbox with one of the build instances.
Step Two: Preparing pbulk prefix
Install pkgtools/pbulk and possibly helper programs like screen into
LOCALBASE=/usr/pkg_bulk, PKG_DBDIR=/usr/pkg_bulk/.pkgdb. A full
bootstrap is the recommended approach. Copy /usr/pkg_bulk to the client
nodes for parallel builds.
The initial bootstrap and install may be performed with the following commands:
cd /usr/pkgsrc/bootstrap
./bootstrap --prefix=/usr/pkg_bulk --pkgdbdir=/usr/pkg_bulk/.pkgdb
If you have already performed a bootstrap into /usr/pkg_bulk then you may need
to remove that directory (rm -fr /usr/pkg_bulk) prior to starting the new
pbulk may be installed into /usr/pkg_bulk with the following:
cd /usr/pkgsrc/pkgtools/pbulk
env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} bmake package
The mk.conf file in /usr/pkg_bulk/etc/mk.conf should already have the
correct LOCALBASE and PKG_DBDIR settings.
Step Three: Configure pbulk
Setup general build parameters in mk.conf. Below is an example
fragment to add. On NetBSD this is typically /etc/mk.conf. For
non-NetBSD systems we will create a mk.conf in a temporary location,
/tmp/mk.conf for example, and include it in the bootstrap that will
be built in step (b).
(b) [not for NetBSD]
Build a binary bootstrap kit and override the included mk.conf with the
file created in (a). Compress the tarball with gzip. This is a new
bootstrap that is different from the one created in Step Two above.
This bootstrap kit is created by the following:
cd /usr/pkgsrc/bootstrap
./bootstrap --mk-fragment /tmp/mk.conf \
--gzip-binary-kit bootstrap_kit.tar.gz
Note that we have specified the make file fragment, /tmp/mk.conf, created
in step (a) above.
Edit /usr/pkg_bulk/etc/pbulk.conf:
- For NetBSD:
- bootstrapkit should be empty.
- make must be changed to /usr/bin/make.
- For non-NetBSD:
- bootstrapkit should be changed to the tarball in (b). Both master
and client nodes access this, so keep it in a shared location.
- master_mode=yes needs a proper list of client nodes.
- base_url goes into the report mail, the rsync targets are used
for uploads.
- for limited bulk builds, set limited_list to a file with one
location per line ("x11/gtk2" for example). Packages that are required
as dependencies will be added automatically.
Step Four: Running pbulk
/usr/pkg_bulk/bin/bulkbuild runs the full build. You may wish to run
this inside of screen (misc/screen) since a full bulk build may take
a very long time.
/usr/pkg_bulk/libexec/pbulk/{pre-build,scan,build,report,upload} are the
individual build phases. They depend on the execution of the phase
before. Exceptions are report and upload which both depend on build.
/usr/pkg_bulk/bin/bulkbuild-restart can be used to resume an aborted
build. If it failed after the actual build phase, report and upload should
be called individually though.
--- sample mk.conf fragment ---
WRKOBJDIR = /scratch
PKGSRCDIR = /usr/pkgsrc
DISTDIR = /distfiles
PACKAGES = /packages
X11_TYPE= modular
Jump to Line
Something went wrong with that request. Please try again.