Home | History | Annotate | Line # | Download | only in sets
maketars revision 1.24.2.1
      1       1.2      gwr #!/bin/sh
      2       1.2      gwr #
      3  1.24.2.1    lukem # $NetBSD: maketars,v 1.24.2.1 2002/07/23 09:16:32 lukem Exp $
      4       1.2      gwr #
      5       1.2      gwr # Make release tar files for some or all lists.  Usage:
      6      1.18    lukem # maketars [-b] [-x] [-a arch] [-m machine] [-s setsdir]
      7      1.18    lukem #	[-M metalog] [-d destdir] [-t tardir] [setname ...]
      8       1.2      gwr #
      9       1.2      gwr 
     10       1.2      gwr # set defaults
     11      1.18    lukem : ${PAX=pax}
     12      1.18    lukem : ${MTREE=mtree}
     13  1.24.2.1    lukem MAKE="${MAKE:-make} -j 1"
     14      1.18    lukem 
     15      1.16  thorpej machine=`${MAKE} print_machine`
     16      1.16  thorpej machine_arch=`${MAKE} print_machine_arch`
     17       1.2      gwr setd=`pwd`
     18       1.9    lukem nlists="base comp etc games man misc text"
     19      1.22     tron xlists="xbase xcomp xcontrib xfont xserver xmisc"
     20       1.9    lukem lists=$nlists
     21       1.2      gwr tars=$RELEASEDIR
     22       1.2      gwr dest=$DESTDIR
     23      1.18    lukem metalog=
     24       1.2      gwr 
     25       1.2      gwr # handle args
     26       1.9    lukem while : ; do
     27       1.2      gwr 	case $1 in
     28       1.9    lukem 	-b*)
     29       1.9    lukem 		lists="$xlists $nlists"
     30       1.9    lukem 		;;
     31      1.18    lukem 	-x*)
     32       1.9    lukem 		lists=$xlists
     33       1.9    lukem 		;;
     34       1.9    lukem 	-a*)
     35      1.16  thorpej 		machine_arch=$2; shift
     36       1.9    lukem 		;;
     37      1.18    lukem 	-M*)
     38      1.18    lukem 		metalog=$2; shift
     39      1.18    lukem 		;;
     40       1.9    lukem 	-m*)
     41       1.9    lukem 		machine=$2; shift
     42       1.9    lukem 		;;
     43       1.9    lukem 	-s*)
     44       1.9    lukem 		setd=$2; shift
     45       1.9    lukem 		;;
     46       1.9    lukem 	-d*)
     47       1.9    lukem 		dest=$2; shift
     48       1.9    lukem 		;;
     49      1.18    lukem 	-t*)
     50       1.9    lukem 		tars=$2; shift
     51       1.9    lukem 		;;
     52       1.9    lukem 	-*)
     53       1.9    lukem 		cat 1>&2 <<USAGE
     54      1.18    lukem Usage: $0 [-b] [-x] [-a arch] [-m machine] [-s setsdir] [-M metalog]
     55       1.9    lukem 		[-d dest] [-t tars] [setname ...]
     56       1.9    lukem 	-b		make netbsd + x11 lists
     57       1.9    lukem 	-x		only make x11 lists
     58      1.16  thorpej 	-a arch		set arch (e.g, m68k, mipseb, mipsel, powerpc) [$machine_arch]
     59      1.16  thorpej 	-m machine	set machine (e.g, amiga, i386, macppc) [$machine]
     60      1.16  thorpej 	-s setsdir	directory to find sets [$setd]
     61      1.18    lukem 	-M metalog	metalog file
     62       1.9    lukem 	-d dest		\$DESTDIR	[$dest]
     63       1.9    lukem 	-t tars		\$RELEASEDIR	[$tars]
     64       1.9    lukem 	[setname ...]	sets to build 	[$lists]
     65       1.9    lukem USAGE
     66       1.9    lukem 		exit 1
     67       1.9    lukem 		;;
     68       1.9    lukem 	*)
     69       1.9    lukem 		break
     70       1.9    lukem 		;;
     71       1.2      gwr 	esac
     72       1.2      gwr 	shift
     73       1.2      gwr done
     74      1.10     ross if [ -n "$*" ]; then
     75      1.10     ross 	lists="$*"
     76       1.9    lukem fi
     77       1.1      cgd 
     78       1.9    lukem if [ -z "$tars" ]; then
     79       1.9    lukem 	echo \$RELEASEDIR must be set
     80       1.1      cgd 	exit 1
     81       1.9    lukem fi
     82       1.1      cgd 
     83       1.9    lukem if [ -z "$dest" ]; then
     84       1.9    lukem 	echo \$DESTDIR must be set
     85       1.1      cgd 	exit 1
     86       1.9    lukem fi
     87       1.1      cgd 
     88      1.20    bjh21 # Make sure we don't loop forever if mkdir will always fail.
     89      1.20    bjh21 
     90      1.20    bjh21 if [ ! -d /tmp ]; then
     91      1.20    bjh21 	echo /tmp is not a directory
     92      1.20    bjh21 	exit 1
     93      1.20    bjh21 fi
     94      1.20    bjh21 
     95      1.20    bjh21 if [ ! -w /tmp ]; then
     96      1.20    bjh21 	echo /tmp is not writeable
     97      1.20    bjh21 	exit 1
     98      1.20    bjh21 fi
     99      1.20    bjh21 
    100      1.20    bjh21 SDIR_BASE=/tmp/maketar.$$
    101      1.20    bjh21 SDIR_SERIAL=0
    102      1.20    bjh21 
    103      1.20    bjh21 while true; do
    104      1.23    lukem 	SDIR=${SDIR_BASE}.${SDIR_SERIAL}
    105      1.23    lukem 	mkdir -m 0700 ${SDIR} && break
    106      1.23    lukem 	SDIR_SERIAL=$((${SDIR_SERIAL} + 1))
    107      1.20    bjh21 done    
    108      1.20    bjh21 
    109      1.19    lukem trap "/bin/rm -rf $SDIR ; exit 0" 0 2 3 13		# EXIT INT QUIT PIPE
    110      1.18    lukem 
    111      1.18    lukem if [ -n "$metalog" ]; then
    112      1.18    lukem 	echo "parsing $metalog"
    113      1.23    lukem 	(
    114      1.23    lukem 		cat ${DESTDIR}/etc/mtree/NetBSD.dist
    115      1.23    lukem 		echo "/unset all"
    116      1.23    lukem 		sed -e "s,^\.$dest,.," < $metalog
    117      1.23    lukem 	) | ${MTREE} -D -k all -N ${DESTDIR}/etc | \
    118      1.23    lukem 	    sed -e 's,\(.*\) \(\..*\),\2 \1,' > $SDIR/metalog
    119      1.18    lukem fi
    120      1.18    lukem 
    121      1.18    lukem GZIP=-9			# for pax -z
    122      1.18    lukem export GZIP
    123      1.18    lukem 
    124      1.17       he es=0
    125       1.9    lukem for setname in $lists; do
    126      1.12  frueauf 	out=$setname.tgz
    127       1.2      gwr 	echo "making $out"
    128      1.18    lukem 	sh $setd/makeflist -a $machine_arch -m $machine -s $setd $setname \
    129      1.18    lukem 	    > $SDIR/flist.$setname
    130      1.18    lukem 	if [ -n "$metalog" ]; then
    131      1.18    lukem 		awk -f getdirs.awk $SDIR/flist.$setname | sort -u \
    132      1.24    lukem 		    > $SDIR/flist.$setname.full
    133      1.23    lukem 		(
    134      1.23    lukem 			echo "/set uname=root gname=wheel"
    135      1.24    lukem 			awk -f join.awk $SDIR/flist.$setname.full $SDIR/metalog
    136      1.23    lukem 		) > $SDIR/plist.$setname
    137      1.18    lukem 	else
    138      1.18    lukem 		mv $SDIR/flist.$setname $SDIR/plist.$setname
    139      1.18    lukem 	fi
    140      1.18    lukem 
    141      1.18    lukem 	( cd $dest ; \
    142      1.18    lukem 	    ${PAX} -w -d -z ${metalog:+-N$dest/etc} ${metalog:+-M} \
    143      1.18    lukem 	    < ${SDIR}/plist.$setname ) > ${tars}/$out
    144      1.18    lukem 	es=$(($es + $?))
    145       1.2      gwr done
    146      1.17       he exit $es
    147