3 Joerg Sonnenberger's new bulk building interface is located in pkgtools/pbulk. On pkgbox, this is located in /archive/NetBSD-pkgsrc.
7 To do this without affecting the existing pkgsrc setup on the machine you are using, you create a chroot and install pkgsrc twice inside it - once for pbulk and the various support programs, and once for the actual pkgsrc where everything is built.
11 These notes are taken from Justin Sherrill's test builds on pkgbox.dragonflybsd.org, and from suggestions from Joerg. This reflects using version 0.36 of pbulk.
15 ### Setting up the chroot
17 If getting rid of an earlier install, delete all the files you can, adjust the permissions on the ones left, and then delete what remains.
23 rm -rf /build/pbulk_chroot
25 chflags -R noschg /build/pbulk_chroot
27 rm -rf /build/pbulk_chroot
37 mkdir /build/pbulk_chroot
51 If there was no prior buildworld in this , you'll need to do this step
57 make DESTDIR=/build/pbulk_chroot buildworld
67 make DESTDIR=/build/pbulk_chroot installworld
71 note that this is not /etc, but /usr/src/etc
79 make DESTDIR=/build/pbulk_chroot distribution
83 Additional files that will be needed in the chroot
89 cp /etc/resolv.conf /build/pbulk_chroot/etc
95 Make sure you've loaded the linux module if you don't want to get unnecessary messages about unknown ELF types.
107 Jeremy C. Reed has a large repository of the distfiles for pkgsrc in another directory outside of the chroot; mounting it and adding it to DIST_PATH should make it available, saving the bulk build process (and Matt's bandwidth) from having to download more.
109 mkdir /build/pbulk_chroot/archive
110 mount_null /archive /build/pbulk_chroot/archive
112 Should be ready to go...
114 chroot /build/pbulk_chroot
115 /etc/rc.d/ldconfig start
117 ### Adding pkgsrc bootstrap
119 Everything past this point is in the chroot!
126 Grab the most recent quarterly release of pkgsrc:
128 setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot
131 cvs -q checkout -rpkgsrc-2008Q1 -P pkgsrc
133 To update the pkgsrc files later
137 Put this in /root/mk-base.conf, for use later when building the first bootstrap:
140 PKGSRCDIR = /usr/pkgsrc
142 DIST_PATH = /archive/distfiles
147 ALLOW_VULNERABLE_PACKAGES= yes
150 PKG_DEFAULT_OPTIONS="dri inet6"
152 We need to create a clean bootstrap kit for later. This installs pkgsrc tools into /usr/pkg_bulk, too.
160 cd /usr/pkgsrc/bootstrap
162 ./bootstrap --prefix /usr/pkg_bulk --pkgdbdir /usr/pkg_bulk/.pkgdb
166 cd /usr/pkgsrc/pkgtools/pbulk
168 env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} bmake package
172 cd /usr/pkgsrc/bootstrap
176 ./bootstrap --gzip-binary-kit /usr/pkgsrc/bootstrap/bootstrap.tgz --mk-fragment=/root/mk-base.conf
182 We need to make a binary kit with the corrected mk.conf so that pbulk is always set up with the right version as it builds/removes/adds packages
188 cd /usr/pkgsrc/bootstrap
192 mv bootstrap.tgz temp
198 cp /usr/pkg/etc/mk.conf usr/pkg/etc/mk.conf
200 tar hzcf ../bootstrap.tar.gz usr var
208 Edit /usr/pkg_bulk/etc/pbulk.conf and change these lines to what is needed. Be sure to put in a destination for the rsync command, as a side effect of that process is the removal of packages that are not for distribution due to various laws. If this is being performed on a single machine, nfsmount directories in the chroot so that you can still copy the files around. The rsync options below assume the packages and report are being copied around on the local machine.
214 base_url=http://something/you_should_change_here
220 pkg_rsync_args="-av --delete-excluded"
222 pkg_rsync_target="/archive/packages/DragonFly-2.0/pkgsrc-current"
224 report_rsync_args="-avz --delete-excluded"
226 report_rsync_target="/archive/packages/DragonFly-2.0/pbulk_report"
228 report_recipients="you@your.email"
230 make=/usr/pkg/bin/bmake
246 If the system you are building on is a slightly different version than the target for your packages, pkg_add will complain about the difference in uname. To fix this, change the UNAME_r and UNAME_v environment variables to the desired values before building.
256 DragonFly 2.1.0-DEVELOPMENT #0: Wed Sep 24 04:26:56 PDT 2008 root@:/usr/obj/usr/src/sys/PKGBOX
264 # setenv UNAME_v 'DragonFly 2.0.1-RELEASE #0: Wed Sep 24 04:26:56 PDT 2008 root@:/usr/obj/usr/src/sys/PKGBOX'
266 # setenv UNAME_r 2.0.1-RELEASE
274 DragonFly 2.0.1-RELEASE #0: Wed Sep 24 04:26:56 PDT 2008 root@:/usr/obj/usr/src/sys/PKGBOX
284 Kick off the bulk build. It takes a LONG time, so it's worth doing this in a screen session. Unless you install screen in the same way as pbulk, it won't be available in the chroot, so you may need to get out of the chroot, enter a screen session, and re-enter the chroot before this step.
290 /usr/pkg_bulk/bin/bulkbuild
294 The line for setting up a rsync server for the mirrors: (do this outside the chroot)
300 rsync --daemon --bwlimit#200 --config/usr/pkg/etc/rsync/rsyncd.conf
304 If the build stops or pauses or whatever, this line will restart it, for versions 0.28 and older.
310 /usr/pkg_bulk/libexec/pbulk/build
314 Version 0.29 and later restart the build with this:
320 /usr/pkg_bulk/bin/bulkbuild-restart