File:  [NetBSD Developer Wiki] / wikisrc / pkgsrc / how_to_do_an_unprivileged_bulk_build_on_irix.mdwn
Revision 1.1: download - view: text, annotated - select for diffs
Sun Nov 20 20:28:27 2011 UTC (2 years, 4 months ago) by mspo
Branches: MAIN
CVS tags: HEAD
import a bunch of pkgsrc articles from the old pkgsrc.se wiki

First, I bootstrapped pkgsrc into $HOME/bulk:
<pre><code>
$ cd
$ env \
     CC=cc \
     CXX=CC \
     MIPSPROBASE=$HOME/mipspro-wrapper \
     ./proj/pkgsrc/bootstrap/bootstrap \
         --prefix=$HOME/bulk \
         --unprivileged \
         --compiler=mipspro \
         --quiet
...
</code></pre>
Then, make a backup copy of LOCALBASE:

     $ tar cfz bulk.tar.gz bulk

It is a good idea to store all configuration files outside of *LOCALBASE*:

     $ mkdir bulk-etc
     $ cp bulk/etc/mk.conf bulk-etc/.

Like on Solaris, I needed to comment out the *pre-build* script. The configuration files look similar to the ones from the Solaris build.

**Contents**

[[!toc]]

#build.conf
<pre><code>
osrev=`uname -r`
arch=`uname -m`
USR_PKGSRC="$HOME/proj/pkgsrc"
MAKECONF="$HOME/bulk-etc/mk.conf"

PRUNEDISTFILES=no
NICE_LEVEL="nice -n 20"
LINTPKGSRC_CACHE=no
ADMIN="rillig@localhost"
ADMINSIG="- Roland"

REPORTS_DIR="$HOME/bulk-reports"
REPORT_BASEDIR=`date +%Y%m%d.%H%M`
REPORT_HTML_FILE="report.html"
REPORT_TXT_FILE="report.txt"
REPORTS_URL="file://$REPORTS_DIR"

UPDATE_VULNERABILITY_LIST=no
PRUNEPACKAGES=no
MKSUMS=no
MKSUMMARY=no
RSYNC_DST=none
RSYNC_OPTS=none
</code></pre>
#mk.conf
<pre><code>
# Example /usr/people/rillig/bulk/etc/mk.conf file produced by bootstrap-pkgsrc
# Wed Feb 21 07:42:55 EST 2007

.ifdef BSD_PKG_MK	# begin pkgsrc settings

OPSYS=			IRIX
ABI=			64
PKGSRC_COMPILER=	mipspro
UNPRIVILEGED=		yes
PKG_DBDIR=		/usr/people/rillig/bulk/var/db/pkg
LOCALBASE=		/usr/people/rillig/bulk
VARBASE=		/usr/people/rillig/bulk/var
PKG_TOOLS_BIN=		/usr/people/rillig/bulk/sbin
PKGMANDIR=		man

TOOLS_PLATFORM.install?=	/usr/people/rillig/pkg/bin/ginstall
TOOLS_PLATFORM.sed?=		/usr/people/rillig/bulk/bin/nbsed
FETCH_CMD=			/usr/people/rillig/bulk/bin/ftp
TOOLS_PLATFORM.pax?=		/usr/people/rillig/bulk/bin/pax
TOOLS_PLATFORM.tar?=		/usr/people/rillig/bulk/bin/tar
TOOLS_PLATFORM.mtree?=		/usr/people/rillig/bulk/sbin/mtree
IMAKEOPTS+=		-DBuild64bit -DSgiISA64=4

DISTDIR=		/usr/people/rillig/distfiles
PKG_DEVELOPER=		yes
CC=			cc
CXX=			CC
CPP=			cc -E
CXXCPP=			CC -E

MIPSPROBASE=		/usr/people/rillig/mipspro-wrapper
TOOLS_PLATFORM.nroff=	/usr/people/rillig/pkg/bin/groff
BULKFILESDIR=		/usr/people/rillig/bulk-logs
PACKAGES=		/usr/people/rillig/bulk-packages
WRKOBJDIR=		/usr/people/rillig/bulk-tmp

.endif			# end pkgsrc settings
</code></pre>
To get a usable environment, I have built some package before in $HOME/pkg, so that I can link to them (for example *ginstall* and *groff*).
<pre><code>
$ screen -S bulk
$ sh proj/pkgsrc/mk/bulk/build -c /usr/people/rillig/bulk-etc/build.conf
...
BULK> Package bzip2-1.0.4 not built yet, packaging...
/usr/people/rillig/pkg/bin/bmake bulk-package PRECLEAN=no
###
### Wed Feb 21 08:56:12 EST 2007
### pkgsrc build log for bzip2-1.0.4
###

bmake: exec(/bin/sh) failed (Arg list too long)
*** Error code 1
</code></pre>
Grmpf. IRIX has only 20k for the command line and the environment, and that gets filled pretty quickly. Let's see what's the cause for that. It's the command starting with "${RUN} set +e;" and going until the lonely "fi" in line 534. That's pretty much. Since I don't know how to break that into smaller chunks, I stop here.
#Some hours later

I've made some progress. I didn't rewrite the bulk builds but simply patched bmake to create a temporary file and write the overly long command lines there when an execve fails due to E2BIG. I applied [this patch](ftp://ftp.netbsd.org/pub/pkgsrc/misc/rillig/bmake-irix.patch) in the devel/bmake directory and re-ran bootstrap. Things seem to work now.

At least, [lang/perl](http://pkgsrc.se/lang/perl) is building, which takes some time. Not to speak of the database generation that follows. Meanwhile, I'm adding the following to the [[pkgsrc/mk.conf]] file, just as in the Solaris bulk build:
<pre><code>
BULK_PREREQ+=		pkgtools/bootstrap-mk-files
BULK_PREREQ+=		pkgtools/tnftp
BULK_PREREQ+=		pkgtools/mtree
BULK_PREREQ+=		pkgtools/pax
BULK_PREREQ+=		pkgtools/pkg_install
BULK_PREREQ+=		sysutils/mtree

BULK_PREREQ+=		sysutils/checkperms
</code></pre>
#See also

* [[pkgsrc/How to do an unprivileged bulk build on Solaris]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb