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