#!/bin/sh # $NetBSD: pre-build,v 1.17 2001/07/21 19:58:32 dmcmahill Exp $ # # Clean up system to be ready for bulk pkg build # # (c) 2000 Hubert Feyrer, All Rights Reserved. # #set -v # Debug # Pull in USR_PKGSRC, CVS_USER: if [ -f "$BULK_BUILD_CONF" ]; then . $BULK_BUILD_CONF else . `dirname $0`/build.conf fi PRUNEDISTFILES=${PRUNEDISTFILES:-"yes"} PRUNEPACKAGES=${PRUNEPACKAGES:-"no"} PRUNELINKS=${PRUNEPACKAGES:-"no"} PRUNEDISTFILES=`echo $PRUNEDISTFILES | tr "[:lower:]" "[:upper:]"` PRUNEPACKAGES=`echo $PRUNEPACKAGES | tr "[:lower:]" "[:upper:]"` PRUNELINKS=`echo $PRUNELINKS | tr "[:lower:]" "[:upper:]"` # extract the name of the files used for the build log and broken build log. # these have defaults set by bsd.bulk-pkg.mk and may be overridden in /etc/mk.conf export BROKENF=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=BROKENFILE )`; if [ "$BROKENF" = "" ]; then echo "Had problems determining the name of the .broken.files" exit 1 fi BLDLOG=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=BUILDLOG )`; if [ "$BLDLOG" = "" ]; then echo "Had problems determining the name of the .make.files" exit 1 fi # # Clean out everything and it's mother # echo Removing all installed packages if [ -d /var/db/pkg ]; then cd /var/db/pkg for pkg in * do if `pkg_info -qe $pkg`; then echo pkg_delete -r $pkg pkg_delete -r $pkg fi done # this should have removed everything. Now force any broken pkgs # to deinstall for pkg in * do if `pkg_info -qe $pkg`; then echo pkg_delete -f $pkg pkg_delete -f $pkg fi done # We've tried our best to get rid of the pkgs, now do it the hard way # If it wasn't for stuff in $X11BASE, I wouldn't have hard feelings # about this! rm -fr * fi LOCALBASE=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=LOCALBASE )`; X11BASE=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=X11BASE )`; # General cleanout - easy! cd $LOCALBASE && rm -fr * && rm -fr .??* # Stuff known to be broken rm -fr $X11BASE/share/gimp rm -fr $X11BASE/share/gnome rm -fr $X11BASE/share/kde rm -fr $X11BASE/share/netscape rm -fr /var/tmp/inst* rm -fr $X11BASE/lib/libgimp* # gimp doesn't build with old libs around rm -fr /nonexistant # broken useradd on pop3d rm -fr /home/majordom # mail/majordomo pkg rm -fr /home/nut # sysutils/ups-net # Clean up state files cd ${USR_PKGSRC} rm -f $BROKENF */*/$BROKENF rm -f $BLDLOG */*/$BLDLOG rm -f .start.${arch} # # Install cvs package and do a cvs update here # if [ "$CVS_USER" != "" ]; then if [ ! -f /usr/bin/cvs ]; then echo Installing required cvs pkgs for CVS update ( cd ${USR_PKGSRC}/devel/cvs ; make bulk-install ) fi if [ ! -f /usr/bin/ssh ]; then echo Installing required ssh pkgs for CVS update ( cd ${USR_PKGSRC}/security/ssh ; make bulk-install ) fi echo Performing CVS update - this will take some time su - ${CVS_USER} -c 'stty sane ; setenv CVS_RSH ssh ; cd '${USR_PKGSRC}' ; cvs -q update -Pd' echo CVS update done. fi # # Remove old/broken distfiles and binary packages # DISTDIR=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=DISTDIR )`; PACKAGES=`( cd $USR_PKGSRC/pkgtools/pkglint ; make show-var VARNAME=PACKAGES )`; if [ $PRUNEDISTFILES = "YES" ]; then echo "Removing old/broken distfiles" ( cd ${USR_PKGSRC}/pkgtools/pkglint ; make PRECLEAN=yes bulk-install ) lintpkgsrc -K $PACKAGES -P $USR_PKGSRC -M $DISTDIR -o -m -r echo done. else echo "Skipping distfile pruning." fi if [ $PRUNEPACKAGES = "YES" ]; then echo "Removing old (out of date) binary packages" ( cd ${USR_PKGSRC}/pkgtools/pkglint ; make PRECLEAN=yes bulk-install ) lintpkgsrc -K $PACKAGES -P $USR_PKGSRC -M $DISTDIR -p -r echo done. else echo "Skipping packages pruning." fi if [ $PRUNELINKS = "YES" ]; then echo "Checking for and removing orphaned packages links" find $PACKAGES -type l -print | \ while read f do if [ ! -d $f -a ! -f $f ]; then echo "Removing orphaned link: \"$f\"" rm $f fi done echo done. else echo "Skipping pruning of packages links." fi if [ -f mk/bulk/pre-build.local ]; then . mk/bulk/pre-build.local fi touch .start.${arch}