makesrctars revision 1.27
11.1Sjtc#! /bin/sh
21.3Smikel#
31.27Sjmc#	$NetBSD: makesrctars,v 1.27 2005/10/21 04:11:49 jmc Exp $
41.15Slukem#
51.15Slukem# makesrctars srcdir setdir
61.15Slukem#	Create source tarballs in setdir from the source under srcdir.
71.3Smikel#
81.1Sjtc
91.17Slukemprog=${0##*/}
101.17Slukem
111.17Slukem# set defaults
121.24Sjmc: ${CKSUM:=cksum}
131.24Sjmc: ${MTREE:=/usr/sbin/mtree}
141.24Sjmc: ${PAX:=pax}
151.17Slukem
161.17Slukemxsrcdir=
171.13Slukem
181.14SlukemGZIP=-9
191.1Sjtcexport GZIP
201.1Sjtc
211.17Slukemusage()
221.17Slukem{
231.17Slukem	cat 1>&2 <<USAGE
241.22SjmcUsage: ${prog} [-N password/group dir] [-x xsrcdir] srcdir setdir
251.22Sjmc	-N dir		location which contains master.passwd and group files
261.27Sjmc			(defaults to \${srcdir}/etc)
271.17Slukem	-x xsrcdir	build xsrc.tgz from xsrcdir
281.17Slukem	srcdir		location of sources
291.17Slukem	setdir		where to write the .tgz files to
301.17SlukemUSAGE
311.17Slukem	exit 1
321.17Slukem}
331.17Slukem
341.17Slukem# handle args
351.22Sjmcwhile getopts N:x: ch; do
361.17Slukem	case ${ch} in
371.27Sjmc	x)
381.17Slukem		xsrcdir=${OPTARG}
391.17Slukem		;;
401.22Sjmc	N)
411.22Sjmc		PASSWD=${OPTARG}
421.22Sjmc		;;
431.17Slukem	*)
441.17Slukem		usage
451.17Slukem		;;
461.17Slukem	esac
471.17Slukemdone
481.17Slukemshift $((${OPTIND} - 1))
491.17Slukem
501.15Slukemif [ $# -ne 2 ]; then
511.22Sjmc	usage
521.1Sjtcfi
531.15Slukemsrcdir=$1
541.15Slukemsetdir=$2
551.22Sjmc: ${PASSWD:=${srcdir}/etc}
561.1Sjtc
571.15Slukemif [ ! -d "${setdir}" ]; then
581.15Slukem	echo "${setdir} is not a directory"
591.1Sjtc	exit 1
601.1Sjtcfi
611.1Sjtc
621.15Slukemmakeset()
631.22Sjmc{(
641.15Slukem	set=$1.tgz
651.15Slukem	shift
661.22Sjmc	dir=$1
671.22Sjmc	shift
681.15Slukem	echo "Creating ${set}"
691.22Sjmc	if [ "${dir}" != "." ]; then
701.22Sjmc		cd $dir
711.22Sjmc		srcprefix="${srcprefix}/${dir}"
721.22Sjmc	fi
731.22Sjmc	# Gets rid of any obj dirs and things below it 
741.22Sjmc	echo "obj" > /tmp/in$$
751.22Sjmc	egrep=$*
761.22Sjmc	if [ "$egrep" = "" ]; then
771.27Sjmc		egrep='.'
781.22Sjmc	fi
791.15Slukem	set -f
801.22Sjmc	${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \
811.25Sjmc		egrep -v 'type=link' | egrep $egrep | \
821.22Sjmc		sed -e 's:type=file:& mode=0664:' \
831.22Sjmc			-e 's:type=dir:& mode=0775:' \
841.22Sjmc			-e 's:$: uname=root gname=wsrc:' | \
851.22Sjmc		${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \
861.22Sjmc		gzip > "${setdir}/${set}"
871.22Sjmc	rm -f /tmp/in$$
881.22Sjmc)}
891.15Slukem
901.15Slukem
911.17Slukem# create (base)src sets
921.17Slukem#
931.17Slukem
941.17Slukemif ! cd "${srcdir}"; then
951.17Slukem	echo "Can't chdir to ${srcdir}"
961.17Slukem	exit 1
971.17Slukemfi
981.17Slukem
991.17Slukemsrcprefix=usr/src
1001.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix
1011.22Sjmc
1021.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config'
1031.22Sjmc
1041.22Sjmcmakeset gnusrc gnu
1051.17Slukem
1061.25Sjmcmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config'
1071.1Sjtc
1081.22Sjmcmakeset sharesrc share
1091.6Sperry
1101.17Slukem
1111.17Slukem# create xsrc sets
1121.17Slukem#
1131.17Slukemif [ -n "${xsrcdir}" ]; then
1141.17Slukem	if ! cd "${xsrcdir}"; then
1151.17Slukem		echo "Can't chdir to ${xsrcdir}"
1161.17Slukem		exit 1
1171.17Slukem	fi
1181.17Slukem	srcprefix=usr/xsrc
1191.17Slukem	makeset xsrc .
1201.17Slukemfi
1211.17Slukem
1221.17Slukem
1231.16Slukemecho "Creating checksum files"
1241.15Slukem(cd ${setdir}
1251.13Slukem	${CKSUM} -o1 *.tgz > BSDSUM
1261.13Slukem	${CKSUM}     *.tgz > CKSUM
1271.21Sjmc	${CKSUM} -a md5  *.tgz > MD5
1281.13Slukem	${CKSUM} -o2 *.tgz > SYSVSUM
1291.21Sjmc	${CKSUM} -a sha512 *.tgz > SHA512
1301.13Slukem)
1311.27Sjmcexit 0
132