makesrctars revision 1.32
11.1Sjtc#! /bin/sh
21.3Smikel#
31.32Stron#	$NetBSD: makesrctars,v 1.32 2006/09/07 22:03:58 tron 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.31Shubertf			-e 's:$: uname=root gname=wsrc:' \
841.32Stron			-e '/\/move-if-change /s:\(mode\)=[0-9]*:\1=0775:' \
851.31Shubertf			-e '/^\.\/build.sh /s:\(mode\)=[0-9]*:\1=0775:' | \
861.30Sapb		${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \
871.29Sapb		${GZIP_CMD} > "${setdir}/${set}"
881.30Sapb	rm -f "${intmp}"
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.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config'
1041.22Sjmc
1051.22Sjmcmakeset gnusrc gnu
1061.17Slukem
1071.25Sjmcmakeset 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.30Sapb(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)
1321.27Sjmcexit 0
133