maketars revision 1.18 1 #!/bin/sh
2 #
3 # $NetBSD: maketars,v 1.18 2002/02/27 10:51:47 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" EXIT INT QUIT PIPE
90
91 if [ -n "$metalog" ]; then
92 echo "parsing $metalog"
93 ${MTREE} -D -k all -f /usr/src/etc/mtree/NetBSD.dist | \
94 sed -e 's,\(.*\) \(\..*\),\2 \1,' > $SDIR/metadirs
95 sed -e "s,^\.$dest,.," < $metalog > $SDIR/metafiles
96 cat $SDIR/metadirs $SDIR/metafiles | sort -u > $SDIR/metalog
97 fi
98
99 GZIP=-9 # for pax -z
100 export GZIP
101
102 es=0
103 for setname in $lists; do
104 out=$setname.tgz
105 echo "making $out"
106 sh $setd/makeflist -a $machine_arch -m $machine -s $setd $setname \
107 > $SDIR/flist.$setname
108 if [ -n "$metalog" ]; then
109 awk -f getdirs.awk $SDIR/flist.$setname | sort -u \
110 > $SDIR/flist.full
111 echo "/set uname=root gname=wheel" > $SDIR/plist.$setname
112 join $SDIR/flist.full $SDIR/metalog >> $SDIR/plist.$setname
113 else
114 mv $SDIR/flist.$setname $SDIR/plist.$setname
115 fi
116
117 ( cd $dest ; \
118 ${PAX} -w -d -z ${metalog:+-N$dest/etc} ${metalog:+-M} \
119 < ${SDIR}/plist.$setname ) > ${tars}/$out
120 es=$(($es + $?))
121 done
122 exit $es
123