wiki3762: BulkBuild (Version 7) | ||
Bulk Build on QNX (WIP)#There's various pages out there describing bulk builds on various platforms, all slightly different. Here's one more. Base install separation#If you look around you'll see that most people try to do their build in a sandbox of some sort. There's various ways to to this on each platform. I actually did a bulk build in a chroot on QNX once but it wasn't stock :). Here's the layout I'm using now:
When performing setup and administration on the box I build from the normal qnxbasesmp image. When doing an actual bulk build I boot from the qnxbasebulk image. To make the system usable in either configuration, I add procmgr symlinks for /tmp, /home and /var to the work partition which is read / write in either case. Two other directories are used during bulk builds as I have them configured: /pbulk and /usr/pkg. /pbulk is where I check out the pkgsrc repository and where I install packages required by the controlling part of the build (the outer layer). /usr/pkg is where resulting packages created by this outer layer are staged before being tarred up in a binary package. In pkgsrc parlance the outer layer controls the inner layer which builds packages with the same default prefix of /usr/pkg that would normally be used if one were to build packages themselves outside of a bulk build. Here's a sample /etc/rc.d/rc.local that sets up these links BulkBuild/rc.local. Notice also that this rc.local script adds /pbulk/pkg_bulk/lib to the CS_LIBPATH. As mentioned above, the outer, controlling part of the bulk build requires a few packages for its operation (here's where we get into some pbulk specifics). I install these into /pbulk/pkg_bulk so the first step in the actual pbulk process is to bootstrap in this location: # cd /pbulk < checkout pkgsrc repo to pkgsrc> # cd pkgsrc/bootstrap # ./bootstrap --prefix=/pbulk/pkg_bulk --pkgdbdir=/pbulk/pkg_bulk/.pkgdb Now install the packages needed for a bulk build and anything else you find generally useful. For example: # cd /pbulk/pkgsrc/pkgtools/pbulk # /pbulk/pkg_bulk/bin/bmake install The last time I did a bulk build I had: # /pbulk/pkgsrc/sbin/pkg_info install-sh-20070712 install script compatible with the BSD install program bmake-20081111 Portable (autoconf) version of NetBSD 'make' utility nawk-20050424nb3 Brian Kernighan's pattern-directed scanning and processing language nbsed-20040821nb1 NetBSD-current's sed(1) pkg_install-20090518 Package management and administration tools for pkgsrc digest-20080510 Message digest wrapper utility libtool-base-1.5.26nb1 Generic shared library support script (the script itself) pax-20080110 POSIX standard archiver with many extensions libiconv-1.12nb1 Character set conversion library rsync-3.0.5nb1 Network file distribution/synchronisation utility bzip2-1.0.5nb1 Block-sorting file compressor rcs-5.7nb3 GNU Revision Control System - version control software heirloom-mailx-12.4 BSD mail utility with MIME extensions pbulk-0.37 Modular bulk build framework pkg_install-info-4.5nb3 Standalone GNU info file installation utility screen-4.0.3nb2 Multi-screen window manager m4-1.4.13 GNU version of UNIX m4 macro language processor tcp_wrappers-7.6.1nb4 Monitor and filter incoming requests for network services sendmail-8.14.3nb4 The well known Mail Transport Agent mailwrapper-19990412nb4 Wrapper to support arbitrary Mail Transport Agents vim-share-7.2.184 Data files for the vim editor (vi clone) gettext-lib-0.14.6 Internationalized Message Handling Library (libintl) vim-7.2.184 Vim editor (vi clone) without GUI gettext-tools-0.14.6nb1 Tools for providing messages in different languages pkg-config-0.23nb1 System for managing library compile/link flags apr-1.3.3 Apache Portable Runtime expat-2.0.1 XML parser library written in C apr-util-1.3.4nb1 Apache Portable Runtime utilities zlib-1.2.3 General purpose data compression library neon-0.28.3 HTTP and WebDAV client library subversion-base-1.5.6nb3 Version control system, base programs and libraries I recall the pbulk required rsync and mailx for its reporting phase. The latter requires sendmail which I had to install and configure. If you're not interested in the reporting phase none of these may be required. screen is pretty much a must have if you want to check on progress remotely since a bulk build can take a long time. I think the rest are personal preference.
|
||