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 (9 years, 11 months ago) by mspo
Branches: MAIN
CVS tags: HEAD
import a bunch of pkgsrc articles from the old pkgsrc.se wiki

    1: First, I bootstrapped pkgsrc into $HOME/bulk:
    2: <pre><code>
    3: $ cd
    4: $ env \
    5:      CC=cc \
    6:      CXX=CC \
    7:      MIPSPROBASE=$HOME/mipspro-wrapper \
    8:      ./proj/pkgsrc/bootstrap/bootstrap \
    9:          --prefix=$HOME/bulk \
   10:          --unprivileged \
   11:          --compiler=mipspro \
   12:          --quiet
   13: ...
   14: </code></pre>
   15: Then, make a backup copy of LOCALBASE:
   16: 
   17:      $ tar cfz bulk.tar.gz bulk
   18: 
   19: It is a good idea to store all configuration files outside of *LOCALBASE*:
   20: 
   21:      $ mkdir bulk-etc
   22:      $ cp bulk/etc/mk.conf bulk-etc/.
   23: 
   24: Like on Solaris, I needed to comment out the *pre-build* script. The configuration files look similar to the ones from the Solaris build.
   25: 
   26: **Contents**
   27: 
   28: [[!toc]]
   29: 
   30: #build.conf
   31: <pre><code>
   32: osrev=`uname -r`
   33: arch=`uname -m`
   34: USR_PKGSRC="$HOME/proj/pkgsrc"
   35: MAKECONF="$HOME/bulk-etc/mk.conf"
   36: 
   37: PRUNEDISTFILES=no
   38: NICE_LEVEL="nice -n 20"
   39: LINTPKGSRC_CACHE=no
   40: ADMIN="rillig@localhost"
   41: ADMINSIG="- Roland"
   42: 
   43: REPORTS_DIR="$HOME/bulk-reports"
   44: REPORT_BASEDIR=`date +%Y%m%d.%H%M`
   45: REPORT_HTML_FILE="report.html"
   46: REPORT_TXT_FILE="report.txt"
   47: REPORTS_URL="file://$REPORTS_DIR"
   48: 
   49: UPDATE_VULNERABILITY_LIST=no
   50: PRUNEPACKAGES=no
   51: MKSUMS=no
   52: MKSUMMARY=no
   53: RSYNC_DST=none
   54: RSYNC_OPTS=none
   55: </code></pre>
   56: #mk.conf
   57: <pre><code>
   58: # Example /usr/people/rillig/bulk/etc/mk.conf file produced by bootstrap-pkgsrc
   59: # Wed Feb 21 07:42:55 EST 2007
   60: 
   61: .ifdef BSD_PKG_MK	# begin pkgsrc settings
   62: 
   63: OPSYS=			IRIX
   64: ABI=			64
   65: PKGSRC_COMPILER=	mipspro
   66: UNPRIVILEGED=		yes
   67: PKG_DBDIR=		/usr/people/rillig/bulk/var/db/pkg
   68: LOCALBASE=		/usr/people/rillig/bulk
   69: VARBASE=		/usr/people/rillig/bulk/var
   70: PKG_TOOLS_BIN=		/usr/people/rillig/bulk/sbin
   71: PKGMANDIR=		man
   72: 
   73: TOOLS_PLATFORM.install?=	/usr/people/rillig/pkg/bin/ginstall
   74: TOOLS_PLATFORM.sed?=		/usr/people/rillig/bulk/bin/nbsed
   75: FETCH_CMD=			/usr/people/rillig/bulk/bin/ftp
   76: TOOLS_PLATFORM.pax?=		/usr/people/rillig/bulk/bin/pax
   77: TOOLS_PLATFORM.tar?=		/usr/people/rillig/bulk/bin/tar
   78: TOOLS_PLATFORM.mtree?=		/usr/people/rillig/bulk/sbin/mtree
   79: IMAKEOPTS+=		-DBuild64bit -DSgiISA64=4
   80: 
   81: DISTDIR=		/usr/people/rillig/distfiles
   82: PKG_DEVELOPER=		yes
   83: CC=			cc
   84: CXX=			CC
   85: CPP=			cc -E
   86: CXXCPP=			CC -E
   87: 
   88: MIPSPROBASE=		/usr/people/rillig/mipspro-wrapper
   89: TOOLS_PLATFORM.nroff=	/usr/people/rillig/pkg/bin/groff
   90: BULKFILESDIR=		/usr/people/rillig/bulk-logs
   91: PACKAGES=		/usr/people/rillig/bulk-packages
   92: WRKOBJDIR=		/usr/people/rillig/bulk-tmp
   93: 
   94: .endif			# end pkgsrc settings
   95: </code></pre>
   96: 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*).
   97: <pre><code>
   98: $ screen -S bulk
   99: $ sh proj/pkgsrc/mk/bulk/build -c /usr/people/rillig/bulk-etc/build.conf
  100: ...
  101: BULK> Package bzip2-1.0.4 not built yet, packaging...
  102: /usr/people/rillig/pkg/bin/bmake bulk-package PRECLEAN=no
  103: ###
  104: ### Wed Feb 21 08:56:12 EST 2007
  105: ### pkgsrc build log for bzip2-1.0.4
  106: ###
  107: 
  108: bmake: exec(/bin/sh) failed (Arg list too long)
  109: *** Error code 1
  110: </code></pre>
  111: 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.
  112: #Some hours later
  113: 
  114: 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.
  115: 
  116: 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:
  117: <pre><code>
  118: BULK_PREREQ+=		pkgtools/bootstrap-mk-files
  119: BULK_PREREQ+=		pkgtools/tnftp
  120: BULK_PREREQ+=		pkgtools/mtree
  121: BULK_PREREQ+=		pkgtools/pax
  122: BULK_PREREQ+=		pkgtools/pkg_install
  123: BULK_PREREQ+=		sysutils/mtree
  124: 
  125: BULK_PREREQ+=		sysutils/checkperms
  126: </code></pre>
  127: #See also
  128: 
  129: * [[pkgsrc/How to do an unprivileged bulk build on Solaris]]

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