Diff for /wikisrc/pkgsrc/how_to_do_an_unprivileged_bulk_build_on_irix.mdwn between versions 1.1 and 1.2

version 1.1, 2011/11/20 20:28:27 version 1.2, 2012/02/05 07:14:36
Line 1 Line 1
 First, I bootstrapped pkgsrc into $HOME/bulk:  First, I bootstrapped pkgsrc into $HOME/bulk:
 <pre><code>  <pre><code>
 $ cd  $ cd
 $ env \  $ env \
      CC=cc \       CC=cc \
      CXX=CC \       CXX=CC \
      MIPSPROBASE=$HOME/mipspro-wrapper \       MIPSPROBASE=$HOME/mipspro-wrapper \
      ./proj/pkgsrc/bootstrap/bootstrap \       ./proj/pkgsrc/bootstrap/bootstrap \
          --prefix=$HOME/bulk \           --prefix=$HOME/bulk \
          --unprivileged \           --unprivileged \
          --compiler=mipspro \           --compiler=mipspro \
          --quiet           --quiet
 ...  ...
 </code></pre>  </code></pre>
 Then, make a backup copy of LOCALBASE:  Then, make a backup copy of LOCALBASE:
   
      $ tar cfz bulk.tar.gz bulk       $ tar cfz bulk.tar.gz bulk
   
 It is a good idea to store all configuration files outside of *LOCALBASE*:  It is a good idea to store all configuration files outside of *LOCALBASE*:
   
      $ mkdir bulk-etc       $ mkdir bulk-etc
      $ cp bulk/etc/mk.conf 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.  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**  **Contents**
   
 [[!toc]]  [[!toc]]
   
 #build.conf  #build.conf
 <pre><code>  <pre><code>
 osrev=`uname -r`  osrev=`uname -r`
 arch=`uname -m`  arch=`uname -m`
 USR_PKGSRC="$HOME/proj/pkgsrc"  USR_PKGSRC="$HOME/proj/pkgsrc"
 MAKECONF="$HOME/bulk-etc/mk.conf"  MAKECONF="$HOME/bulk-etc/mk.conf"
   
 PRUNEDISTFILES=no  PRUNEDISTFILES=no
 NICE_LEVEL="nice -n 20"  NICE_LEVEL="nice -n 20"
 LINTPKGSRC_CACHE=no  LINTPKGSRC_CACHE=no
 ADMIN="rillig@localhost"  ADMIN="rillig@localhost"
 ADMINSIG="- Roland"  ADMINSIG="- Roland"
   
 REPORTS_DIR="$HOME/bulk-reports"  REPORTS_DIR="$HOME/bulk-reports"
 REPORT_BASEDIR=`date +%Y%m%d.%H%M`  REPORT_BASEDIR=`date +%Y%m%d.%H%M`
 REPORT_HTML_FILE="report.html"  REPORT_HTML_FILE="report.html"
 REPORT_TXT_FILE="report.txt"  REPORT_TXT_FILE="report.txt"
 REPORTS_URL="file://$REPORTS_DIR"  REPORTS_URL="file://$REPORTS_DIR"
   
 UPDATE_VULNERABILITY_LIST=no  UPDATE_VULNERABILITY_LIST=no
 PRUNEPACKAGES=no  PRUNEPACKAGES=no
 MKSUMS=no  MKSUMS=no
 MKSUMMARY=no  MKSUMMARY=no
 RSYNC_DST=none  RSYNC_DST=none
 RSYNC_OPTS=none  RSYNC_OPTS=none
 </code></pre>  </code></pre>
 #mk.conf  #mk.conf
 <pre><code>  <pre><code>
 # Example /usr/people/rillig/bulk/etc/mk.conf file produced by bootstrap-pkgsrc  # Example /usr/people/rillig/bulk/etc/mk.conf file produced by bootstrap-pkgsrc
 # Wed Feb 21 07:42:55 EST 2007  # Wed Feb 21 07:42:55 EST 2007
   
 .ifdef BSD_PKG_MK       # begin pkgsrc settings  .ifdef BSD_PKG_MK       # begin pkgsrc settings
   
 OPSYS=                  IRIX  OPSYS=                  IRIX
 ABI=                    64  ABI=                    64
 PKGSRC_COMPILER=        mipspro  PKGSRC_COMPILER=        mipspro
 UNPRIVILEGED=           yes  UNPRIVILEGED=           yes
 PKG_DBDIR=              /usr/people/rillig/bulk/var/db/pkg  PKG_DBDIR=              /usr/people/rillig/bulk/var/db/pkg
 LOCALBASE=              /usr/people/rillig/bulk  LOCALBASE=              /usr/people/rillig/bulk
 VARBASE=                /usr/people/rillig/bulk/var  VARBASE=                /usr/people/rillig/bulk/var
 PKG_TOOLS_BIN=          /usr/people/rillig/bulk/sbin  PKG_TOOLS_BIN=          /usr/people/rillig/bulk/sbin
 PKGMANDIR=              man  PKGMANDIR=              man
   
 TOOLS_PLATFORM.install?=        /usr/people/rillig/pkg/bin/ginstall  TOOLS_PLATFORM.install?=        /usr/people/rillig/pkg/bin/ginstall
 TOOLS_PLATFORM.sed?=            /usr/people/rillig/bulk/bin/nbsed  TOOLS_PLATFORM.sed?=            /usr/people/rillig/bulk/bin/nbsed
 FETCH_CMD=                      /usr/people/rillig/bulk/bin/ftp  FETCH_CMD=                      /usr/people/rillig/bulk/bin/ftp
 TOOLS_PLATFORM.pax?=            /usr/people/rillig/bulk/bin/pax  TOOLS_PLATFORM.pax?=            /usr/people/rillig/bulk/bin/pax
 TOOLS_PLATFORM.tar?=            /usr/people/rillig/bulk/bin/tar  TOOLS_PLATFORM.tar?=            /usr/people/rillig/bulk/bin/tar
 TOOLS_PLATFORM.mtree?=          /usr/people/rillig/bulk/sbin/mtree  TOOLS_PLATFORM.mtree?=          /usr/people/rillig/bulk/sbin/mtree
 IMAKEOPTS+=             -DBuild64bit -DSgiISA64=4  IMAKEOPTS+=             -DBuild64bit -DSgiISA64=4
   
 DISTDIR=                /usr/people/rillig/distfiles  DISTDIR=                /usr/people/rillig/distfiles
 PKG_DEVELOPER=          yes  PKG_DEVELOPER=          yes
 CC=                     cc  CC=                     cc
 CXX=                    CC  CXX=                    CC
 CPP=                    cc -E  CPP=                    cc -E
 CXXCPP=                 CC -E  CXXCPP=                 CC -E
   
 MIPSPROBASE=            /usr/people/rillig/mipspro-wrapper  MIPSPROBASE=            /usr/people/rillig/mipspro-wrapper
 TOOLS_PLATFORM.nroff=   /usr/people/rillig/pkg/bin/groff  TOOLS_PLATFORM.nroff=   /usr/people/rillig/pkg/bin/groff
 BULKFILESDIR=           /usr/people/rillig/bulk-logs  BULKFILESDIR=           /usr/people/rillig/bulk-logs
 PACKAGES=               /usr/people/rillig/bulk-packages  PACKAGES=               /usr/people/rillig/bulk-packages
 WRKOBJDIR=              /usr/people/rillig/bulk-tmp  WRKOBJDIR=              /usr/people/rillig/bulk-tmp
   
 .endif                  # end pkgsrc settings  .endif                  # end pkgsrc settings
 </code></pre>  </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*).  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>  <pre><code>
 $ screen -S bulk  $ screen -S bulk
 $ sh proj/pkgsrc/mk/bulk/build -c /usr/people/rillig/bulk-etc/build.conf  $ sh proj/pkgsrc/mk/bulk/build -c /usr/people/rillig/bulk-etc/build.conf
 ...  ...
 BULK> Package bzip2-1.0.4 not built yet, packaging...  BULK> Package bzip2-1.0.4 not built yet, packaging...
 /usr/people/rillig/pkg/bin/bmake bulk-package PRECLEAN=no  /usr/people/rillig/pkg/bin/bmake bulk-package PRECLEAN=no
 ###  ###
 ### Wed Feb 21 08:56:12 EST 2007  ### Wed Feb 21 08:56:12 EST 2007
 ### pkgsrc build log for bzip2-1.0.4  ### pkgsrc build log for bzip2-1.0.4
 ###  ###
   
 bmake: exec(/bin/sh) failed (Arg list too long)  bmake: exec(/bin/sh) failed (Arg list too long)
 *** Error code 1  *** Error code 1
 </code></pre>  </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.  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  #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.  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:  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>  <pre><code>
 BULK_PREREQ+=           pkgtools/bootstrap-mk-files  BULK_PREREQ+=           pkgtools/bootstrap-mk-files
 BULK_PREREQ+=           pkgtools/tnftp  BULK_PREREQ+=           pkgtools/tnftp
 BULK_PREREQ+=           pkgtools/mtree  BULK_PREREQ+=           pkgtools/mtree
 BULK_PREREQ+=           pkgtools/pax  BULK_PREREQ+=           pkgtools/pax
 BULK_PREREQ+=           pkgtools/pkg_install  BULK_PREREQ+=           pkgtools/pkg_install
 BULK_PREREQ+=           sysutils/mtree  BULK_PREREQ+=           sysutils/mtree
   
 BULK_PREREQ+=           sysutils/checkperms  BULK_PREREQ+=           sysutils/checkperms
 </code></pre>  </code></pre>
 #See also  #See also
   
 * [[pkgsrc/How to do an unprivileged bulk build on Solaris]]  * [[pkgsrc/How to do an unprivileged bulk build on Solaris]]
   

Removed from v.1.1  
changed lines
  Added in v.1.2


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