makesrctars revision 1.22
11.1Sjtc#! /bin/sh
21.3Smikel#
31.22Sjmc#	$NetBSD: makesrctars,v 1.22 2005/10/07 20:00:54 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.13Slukem: ${CKSUM=cksum}
131.22Sjmc: ${MTREE=mtree}
141.17Slukem: ${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.22Sjmc			(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.22SjmcPASSWD=
351.17Slukem# handle args
361.22Sjmcwhile getopts N:x: ch; do
371.17Slukem	case ${ch} in
381.17Slukem	x)	
391.17Slukem		xsrcdir=${OPTARG}
401.17Slukem		;;
411.22Sjmc	N)
421.22Sjmc		PASSWD=${OPTARG}
431.22Sjmc		;;
441.17Slukem	*)
451.17Slukem		usage
461.17Slukem		;;
471.17Slukem	esac
481.17Slukemdone
491.17Slukemshift $((${OPTIND} - 1))
501.17Slukem
511.15Slukemif [ $# -ne 2 ]; then
521.22Sjmc	usage
531.1Sjtcfi
541.15Slukemsrcdir=$1
551.15Slukemsetdir=$2
561.22Sjmc: ${PASSWD:=${srcdir}/etc}
571.1Sjtc
581.15Slukemif [ ! -d "${setdir}" ]; then
591.15Slukem	echo "${setdir} is not a directory"
601.1Sjtc	exit 1
611.1Sjtcfi
621.1Sjtc
631.15Slukemmakeset()
641.22Sjmc{(
651.15Slukem	set=$1.tgz
661.15Slukem	shift
671.22Sjmc	dir=$1
681.22Sjmc	shift
691.15Slukem	echo "Creating ${set}"
701.22Sjmc	if [ "${dir}" != "." ]; then
711.22Sjmc		cd $dir
721.22Sjmc		srcprefix="${srcprefix}/${dir}"
731.22Sjmc	fi
741.22Sjmc	# Gets rid of any obj dirs and things below it 
751.22Sjmc	echo "obj" > /tmp/in$$
761.22Sjmc	egrep=$*
771.22Sjmc	if [ "$egrep" = "" ]; then
781.22Sjmc	    egrep='.'
791.22Sjmc	fi
801.15Slukem	set -f
811.22Sjmc	${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \
821.22Sjmc		egrep -v 'type=link' | egrep $egrep | 
831.22Sjmc		sed -e 's:type=file:& mode=0664:' \
841.22Sjmc			-e 's:type=dir:& mode=0775:' \
851.22Sjmc			-e 's:$: uname=root gname=wsrc:' | \
861.22Sjmc		${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \
871.22Sjmc		gzip > "${setdir}/${set}"
881.22Sjmc	rm -f /tmp/in$$
891.22Sjmc)}
901.15Slukem
911.15Slukem
921.17Slukem# create (base)src sets
931.17Slukem#
941.17Slukem
951.17Slukemif ! cd "${srcdir}"; then
961.17Slukem	echo "Can't chdir to ${srcdir}"
971.17Slukem	exit 1
981.17Slukemfi
991.17Slukem
1001.17Slukemsrcprefix=usr/src
1011.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix
1021.22Sjmc
1031.22Sjmcmakeset src . -v '^.\/gnu|^.\/share|^.\/sys|^.\/usr\.bin\/config'
1041.22Sjmc
1051.22Sjmcmakeset gnusrc gnu
1061.17Slukem
1071.22Sjmcmakeset syssrc . -e '^\..type=dir|^.\/sys|^\.\/usr\.bin.type=dir|^.\/usr\.bin\/config'
1081.1Sjtc
1091.22Sjmcmakeset sharesrc share
1101.6Sperry
1111.17Slukem
1121.17Slukem# create xsrc sets
1131.17Slukem#
1141.17Slukemif [ -n "${xsrcdir}" ]; then
1151.17Slukem	if ! cd "${xsrcdir}"; then
1161.17Slukem		echo "Can't chdir to ${xsrcdir}"
1171.17Slukem		exit 1
1181.17Slukem	fi
1191.17Slukem	srcprefix=usr/xsrc
1201.17Slukem	makeset xsrc .
1211.17Slukemfi
1221.17Slukem
1231.17Slukem
1241.16Slukemecho "Creating checksum files"
1251.15Slukem(cd ${setdir}
1261.13Slukem	${CKSUM} -o1 *.tgz > BSDSUM
1271.13Slukem	${CKSUM}     *.tgz > CKSUM
1281.21Sjmc	${CKSUM} -a md5  *.tgz > MD5
1291.13Slukem	${CKSUM} -o2 *.tgz > SYSVSUM
1301.21Sjmc	${CKSUM} -a sha512 *.tgz > SHA512
1311.13Slukem)
132