makesrctars revision 1.30
11.1Sjtc#! /bin/sh
21.3Smikel#
31.30Sapb#	$NetBSD: makesrctars,v 1.30 2006/01/03 18:31:09 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.30Sapbprog="${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.30Sapb		xsrcdir="${OPTARG}"
371.17Slukem		;;
381.22Sjmc	N)
391.30Sapb		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.30Sapbsrcdir="$1"
521.30Sapbsetdir="$2"
531.30Sapb: ${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.30Sapb	set="${1}.tgz"
631.15Slukem	shift
641.30Sapb	dir="$1"
651.22Sjmc	shift
661.30Sapb	intmp="/tmp/in$$"
671.15Slukem	echo "Creating ${set}"
681.22Sjmc	if [ "${dir}" != "." ]; then
691.30Sapb		cd "${dir}"
701.22Sjmc		srcprefix="${srcprefix}/${dir}"
711.22Sjmc	fi
721.22Sjmc	# Gets rid of any obj dirs and things below it 
731.30Sapb	echo "obj" > "${intmp}"
741.30Sapb	egrep="$*"
751.30Sapb	if [ "${egrep}" = "" ]; then
761.27Sjmc		egrep='.'
771.22Sjmc	fi
781.15Slukem	set -f
791.30Sapb	${MTREE} -c -X "${intmp}" | ${MTREE} -C -k type | \
801.30Sapb		${EGREP} -v 'type=link' | ${EGREP} ${egrep} | \
811.29Sapb		${SED} -e 's:type=file:& mode=0664:' \
821.22Sjmc			-e 's:type=dir:& mode=0775:' \
831.22Sjmc			-e 's:$: uname=root gname=wsrc:' | \
841.30Sapb		${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \
851.29Sapb		${GZIP_CMD} > "${setdir}/${set}"
861.30Sapb	rm -f "${intmp}"
871.22Sjmc)}
881.15Slukem
891.15Slukem
901.17Slukem# create (base)src sets
911.17Slukem#
921.17Slukem
931.17Slukemif ! cd "${srcdir}"; then
941.17Slukem	echo "Can't chdir to ${srcdir}"
951.17Slukem	exit 1
961.17Slukemfi
971.17Slukem
981.17Slukemsrcprefix=usr/src
991.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix
1001.22Sjmc
1011.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config'
1021.22Sjmc
1031.22Sjmcmakeset gnusrc gnu
1041.17Slukem
1051.25Sjmcmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config'
1061.1Sjtc
1071.22Sjmcmakeset sharesrc share
1081.6Sperry
1091.17Slukem
1101.17Slukem# create xsrc sets
1111.17Slukem#
1121.17Slukemif [ -n "${xsrcdir}" ]; then
1131.17Slukem	if ! cd "${xsrcdir}"; then
1141.17Slukem		echo "Can't chdir to ${xsrcdir}"
1151.17Slukem		exit 1
1161.17Slukem	fi
1171.17Slukem	srcprefix=usr/xsrc
1181.17Slukem	makeset xsrc .
1191.17Slukemfi
1201.17Slukem
1211.17Slukem
1221.16Slukemecho "Creating checksum files"
1231.30Sapb(cd "${setdir}"
1241.13Slukem	${CKSUM} -o1 *.tgz > BSDSUM
1251.13Slukem	${CKSUM}     *.tgz > CKSUM
1261.21Sjmc	${CKSUM} -a md5  *.tgz > MD5
1271.13Slukem	${CKSUM} -o2 *.tgz > SYSVSUM
1281.21Sjmc	${CKSUM} -a sha512 *.tgz > SHA512
1291.13Slukem)
1301.27Sjmcexit 0
131