#!/bin/sh # $NetBSD: build,v 1.10 2001/03/19 11:25:39 dmcmahill Exp $ # # Do builk build # # (c) 2000 Hubert Feyrer, All Rights Reserved. # echo Bulk build started: `date` echo "" # Pull in ADMIN etc.: if [ -f "$BULK_BUILD_CONF" ]; then . $BULK_BUILD_CONF else conf=`dirname $0`/build.conf if [ -f "$conf" ]; then . $conf else echo "$0: Cannot find config file $conf, aborting." exit 1 fi fi if [ "$http_proxy" != "" ]; then echo "Using HTTP proxy $http_proxy" export http_proxy fi if [ "$ftp_proxy" != "" ]; then echo "Using FTP proxy $ftp_proxy" export ftp_proxy fi echo "" unset DISPLAY # allow sane failure for gimp, xlispstat cd ${USR_PKGSRC} if [ "$1" = "restart" ]; then echo Restarting - skipping pre-build script else sh mk/bulk/pre-build # make veryveryclean :) fi cd pkgtools/pkglint DEPENDSTREEFILE=`make show-var VARNAME=DEPENDSTREEFILE` DEPENDSFILE=`make show-var VARNAME=DEPENDSFILE` SUPPORTSFILE=`make show-var VARNAME=SUPPORTSFILE` INDEXFILE=`make show-var VARNAME=INDEXFILE` ORDERFILE=`make show-var VARNAME=ORDERFILE` cd ${USR_PKGSRC} # get the list of packages which should always be installed during the build cd ${USR_PKGSRC}/pkgtools/pkglint BULK_PREREQ=`make show-var VARNAME=BULK_PREREQ` cd ${USR_PKGSRC} # install prerequisite packages. Note: we do this _before_ the depends tree # because some packages like xpkgwedge only become DEPENDS if its installed echo "Installing prerequisite packages specified with BULK_PREREQ..." for pkgdir in $BULK_PREREQ do echo $pkgdir # make sure its installed _and_ packaged cd ${USR_PKGSRC}/$pkgdir && make bulk-install && make bulk-package && make clean done # Figure out optimal build order. cd ${USR_PKGSRC} if [ "$1" != "restart" ]; then echo "Building dependency tree (this may take a while)..." sh mk/bulk/printdepends > $DEPENDSTREEFILE echo "Sorting build order..." tsort $DEPENDSTREEFILE > $ORDERFILE echo "Generating up and down dependency files..." ./mk/bulk/tflat -u $DEPENDSTREEFILE > $SUPPORTSFILE ./mk/bulk/tflat -d $DEPENDSTREEFILE > $DEPENDSFILE echo "Generating package name <=> package directory cross reference file (this may take a while)..." sh mk/bulk/printindex > $INDEXFILE fi echo "Starting actual build using the order specified in $ORDERFILE..." cd ${USR_PKGSRC} nice -n 20 make \ USE_BULK_CACHE=yes \ SPECIFIC_PKGS=1 \ GROUP_SPECIFIC_PKGS="`cat $ORDERFILE | tr '\012' ' '`" \ bulk-package | sed 's/^/'`uname -p`'> /g' echo "Build finished. Removing all installed packages left over from build..." for pkgname in `pkg_info -e \*` do if `pkg_info -qe $pkgname`; then pkgdir=`grep " $pkgname " $INDEXFILE | awk '{print $1}'` case "${BULK_PREREQ}" in *$pkgdir* ) echo "Keeping BULK_PREREQ: $pkgname ($pkgdir)" ; ;; * ) echo pkg_delete -r $pkgname pkg_delete -r $pkgname if `pkg_info -qe $pkgname` ; then echo "$pkgname ($pkgdir) did not deinstall nicely. Forcing the deinstall" pkg_delete -f $pkgname || true fi ;; esac fi done echo "Post processing bulk build results..." #rm $DEPENDSTREEFILE $DEPENDSFILE $SUPPORTSFILE $INDEXFILE $ORDERFILE # Perl was wiped, reinstall it! ( cd lang/perl5-base ; make bulk-install ) perl mk/bulk/post-build | mail -s "pkgsrc/`uname -p` bulk build results `date +%F`" $ADMIN # Done! echo "" echo Bulk build ended: `date`