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
15 machine=`${MAKE} print_machine`
16 machine_arch=`${MAKE} print_machine_arch`
17 setd=`pwd`
18 nlists="base comp etc games man misc text"
19 xlists="xbase xcomp xcontrib xfont xserver xmisc"
20 lists=$nlists
21 tars=$RELEASEDIR
22 dest=$DESTDIR
23 metalog=
24
25 # handle args
26 while : ; 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
54 Usage: $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]
65 USAGE
66 exit 1
67 ;;
68 *)
69 break
70 ;;
71 esac
72 shift
73 done
74 if [ -n "$*" ]; then
75 lists="$*"
76 fi
77
78 if [ -z "$tars" ]; then
79 echo \$RELEASEDIR must be set
80 exit 1
81 fi
82
83 if [ -z "$dest" ]; then
84 echo \$DESTDIR must be set
85 exit 1
86 fi
87
88 SDIR=`mktemp -d /tmp/maketar.XXXXXX` || exit 1
89 trap "/bin/rm -rf $SDIR ; exit 0" 0 2 3 13 # EXIT INT QUIT PIPE
90
91 if [ -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
98 fi
99
100 GZIP=-9 # for pax -z
101 export GZIP
102
103 es=0
104 for 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 + $?))
122 done
123 exit $es
124