113 lines
3.8 KiB
Text
113 lines
3.8 KiB
Text
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
|
|
bootstrap.
|
|
|
|
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 install
|
|
|
|
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
|
|
|
|
(a)
|
|
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.
|
|
|
|
(c)
|
|
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
|
|
|
|
FAILOVER_FETCH= yes
|
|
|
|
X11_TYPE= modular
|
|
|
|
SKIP_LICENSE_CHECK= yes
|
|
ALLOW_VULNERABLE_PACKAGES= yes
|
|
|
|
PKG_DEVELOPER?= yes
|