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