[BACK]Return to HOWTO-pbulk CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / doc

File: [cvs.NetBSD.org] / pkgsrc / doc / HOWTO-pbulk (download)

Revision 1.8, Thu Apr 17 08:22:11 2014 UTC (10 years ago) by obache
Branch: MAIN
CVS Tags: pkgsrc-2024Q1-base, pkgsrc-2024Q1, pkgsrc-2023Q4-base, pkgsrc-2023Q4, pkgsrc-2023Q3-base, pkgsrc-2023Q3, pkgsrc-2023Q2-base, pkgsrc-2023Q2, pkgsrc-2023Q1-base, pkgsrc-2023Q1, pkgsrc-2022Q4-base, pkgsrc-2022Q4, pkgsrc-2022Q3-base, pkgsrc-2022Q3, pkgsrc-2022Q2-base, pkgsrc-2022Q2, pkgsrc-2022Q1-base, pkgsrc-2022Q1, pkgsrc-2021Q4-base, pkgsrc-2021Q4, pkgsrc-2021Q3-base, pkgsrc-2021Q3, pkgsrc-2021Q2-base, pkgsrc-2021Q2, pkgsrc-2021Q1-base, pkgsrc-2021Q1, pkgsrc-2020Q4-base, pkgsrc-2020Q4, pkgsrc-2020Q3-base, pkgsrc-2020Q3, pkgsrc-2020Q2-base, pkgsrc-2020Q2, pkgsrc-2020Q1-base, pkgsrc-2020Q1, pkgsrc-2019Q4-base, pkgsrc-2019Q4, pkgsrc-2019Q3-base, pkgsrc-2019Q3, pkgsrc-2019Q2-base, pkgsrc-2019Q2, pkgsrc-2019Q1-base, pkgsrc-2019Q1, pkgsrc-2018Q4-base, pkgsrc-2018Q4, pkgsrc-2018Q3-base, pkgsrc-2018Q3, pkgsrc-2018Q2-base, pkgsrc-2018Q2, pkgsrc-2018Q1-base, pkgsrc-2018Q1, pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3, pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1, pkgsrc-2016Q4-base, pkgsrc-2016Q4, pkgsrc-2016Q3-base, pkgsrc-2016Q3, pkgsrc-2016Q2-base, pkgsrc-2016Q2, pkgsrc-2016Q1-base, pkgsrc-2016Q1, pkgsrc-2015Q4-base, pkgsrc-2015Q4, pkgsrc-2015Q3-base, pkgsrc-2015Q3, pkgsrc-2015Q2-base, pkgsrc-2015Q2, pkgsrc-2015Q1-base, pkgsrc-2015Q1, pkgsrc-2014Q4-base, pkgsrc-2014Q4, pkgsrc-2014Q3-base, pkgsrc-2014Q3, pkgsrc-2014Q2-base, pkgsrc-2014Q2, HEAD
Changes since 1.7: +1 -1 lines

for install, "bmake install", not "bmake package".

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