makesrctars revision 1.29
11.1Sjtc#! /bin/sh
21.3Smikel#
31.29Sapb#	$NetBSD: makesrctars,v 1.29 2006/01/03 16:40:16 apb 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.28Sapbrundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/"
111.28Sapb. "${rundir}/sets.subr"
121.17Slukem
131.17Slukem# set defaults
141.17Slukemxsrcdir=
151.13Slukem
161.14SlukemGZIP=-9
171.1Sjtcexport GZIP
181.1Sjtc
191.17Slukemusage()
201.17Slukem{
211.17Slukem	cat 1>&2 <<USAGE
221.22SjmcUsage: ${prog} [-N password/group dir] [-x xsrcdir] srcdir setdir
231.22Sjmc	-N dir		location which contains master.passwd and group files
241.27Sjmc			(defaults to \${srcdir}/etc)
251.17Slukem	-x xsrcdir	build xsrc.tgz from xsrcdir
261.17Slukem	srcdir		location of sources
271.17Slukem	setdir		where to write the .tgz files to
281.17SlukemUSAGE
291.17Slukem	exit 1
301.17Slukem}
311.17Slukem
321.17Slukem# handle args
331.22Sjmcwhile getopts N:x: ch; do
341.17Slukem	case ${ch} in
351.27Sjmc	x)
361.17Slukem		xsrcdir=${OPTARG}
371.17Slukem		;;
381.22Sjmc	N)
391.22Sjmc		PASSWD=${OPTARG}
401.22Sjmc		;;
411.17Slukem	*)
421.17Slukem		usage
431.17Slukem		;;
441.17Slukem	esac
451.17Slukemdone
461.17Slukemshift $((${OPTIND} - 1))
471.17Slukem
481.15Slukemif [ $# -ne 2 ]; then
491.22Sjmc	usage
501.1Sjtcfi
511.15Slukemsrcdir=$1
521.15Slukemsetdir=$2
531.22Sjmc: ${PASSWD:=${srcdir}/etc}
541.1Sjtc
551.15Slukemif [ ! -d "${setdir}" ]; then
561.15Slukem	echo "${setdir} is not a directory"
571.1Sjtc	exit 1
581.1Sjtcfi
591.1Sjtc
601.15Slukemmakeset()
611.22Sjmc{(
621.15Slukem	set=$1.tgz
631.15Slukem	shift
641.22Sjmc	dir=$1
651.22Sjmc	shift
661.15Slukem	echo "Creating ${set}"
671.22Sjmc	if [ "${dir}" != "." ]; then
681.22Sjmc		cd $dir
691.22Sjmc		srcprefix="${srcprefix}/${dir}"
701.22Sjmc	fi
711.22Sjmc	# Gets rid of any obj dirs and things below it 
721.22Sjmc	echo "obj" > /tmp/in$$
731.22Sjmc	egrep=$*
741.22Sjmc	if [ "$egrep" = "" ]; then
751.27Sjmc		egrep='.'
761.22Sjmc	fi
771.15Slukem	set -f
781.22Sjmc	${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \
791.29Sapb		${EGREP} -v 'type=link' | ${EGREP} $egrep | \
801.29Sapb		${SED} -e 's:type=file:& mode=0664:' \
811.22Sjmc			-e 's:type=dir:& mode=0775:' \
821.22Sjmc			-e 's:$: uname=root gname=wsrc:' | \
831.22Sjmc		${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \
841.29Sapb		${GZIP_CMD} > "${setdir}/${set}"
851.22Sjmc	rm -f /tmp/in$$
861.22Sjmc)}
871.15Slukem
881.15Slukem
891.17Slukem# create (base)src sets
901.17Slukem#
911.17Slukem
921.17Slukemif ! cd "${srcdir}"; then
931.17Slukem	echo "Can't chdir to ${srcdir}"
941.17Slukem	exit 1
951.17Slukemfi
961.17Slukem
971.17Slukemsrcprefix=usr/src
981.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix
991.22Sjmc
1001.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config'
1011.22Sjmc
1021.22Sjmcmakeset gnusrc gnu
1031.17Slukem
1041.25Sjmcmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config'
1051.1Sjtc
1061.22Sjmcmakeset sharesrc share
1071.6Sperry
1081.17Slukem
1091.17Slukem# create xsrc sets
1101.17Slukem#
1111.17Slukemif [ -n "${xsrcdir}" ]; then
1121.17Slukem	if ! cd "${xsrcdir}"; then
1131.17Slukem		echo "Can't chdir to ${xsrcdir}"
1141.17Slukem		exit 1
1151.17Slukem	fi
1161.17Slukem	srcprefix=usr/xsrc
1171.17Slukem	makeset xsrc .
1181.17Slukemfi
1191.17Slukem
1201.17Slukem
1211.16Slukemecho "Creating checksum files"
1221.15Slukem(cd ${setdir}
1231.13Slukem	${CKSUM} -o1 *.tgz > BSDSUM
1241.13Slukem	${CKSUM}     *.tgz > CKSUM
1251.21Sjmc	${CKSUM} -a md5  *.tgz > MD5
1261.13Slukem	${CKSUM} -o2 *.tgz > SYSVSUM
1271.21Sjmc	${CKSUM} -a sha512 *.tgz > SHA512
1281.13Slukem)
1291.27Sjmcexit 0
130