Home | History | Annotate | Line # | Download | only in sets
makesrctars revision 1.30
      1   1.1    jtc #! /bin/sh
      2   1.3  mikel #
      3  1.30    apb #	$NetBSD: makesrctars,v 1.30 2006/01/03 18:31:09 apb Exp $
      4  1.15  lukem #
      5  1.15  lukem # makesrctars srcdir setdir
      6  1.15  lukem #	Create source tarballs in setdir from the source under srcdir.
      7   1.3  mikel #
      8   1.1    jtc 
      9  1.30    apb prog="${0##*/}"
     10  1.28    apb rundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/"
     11  1.28    apb . "${rundir}/sets.subr"
     12  1.17  lukem 
     13  1.17  lukem # set defaults
     14  1.17  lukem xsrcdir=
     15  1.13  lukem 
     16  1.14  lukem GZIP=-9
     17   1.1    jtc export GZIP
     18   1.1    jtc 
     19  1.17  lukem usage()
     20  1.17  lukem {
     21  1.17  lukem 	cat 1>&2 <<USAGE
     22  1.22    jmc Usage: ${prog} [-N password/group dir] [-x xsrcdir] srcdir setdir
     23  1.22    jmc 	-N dir		location which contains master.passwd and group files
     24  1.27    jmc 			(defaults to \${srcdir}/etc)
     25  1.17  lukem 	-x xsrcdir	build xsrc.tgz from xsrcdir
     26  1.17  lukem 	srcdir		location of sources
     27  1.17  lukem 	setdir		where to write the .tgz files to
     28  1.17  lukem USAGE
     29  1.17  lukem 	exit 1
     30  1.17  lukem }
     31  1.17  lukem 
     32  1.17  lukem # handle args
     33  1.22    jmc while getopts N:x: ch; do
     34  1.17  lukem 	case ${ch} in
     35  1.27    jmc 	x)
     36  1.30    apb 		xsrcdir="${OPTARG}"
     37  1.17  lukem 		;;
     38  1.22    jmc 	N)
     39  1.30    apb 		PASSWD="${OPTARG}"
     40  1.22    jmc 		;;
     41  1.17  lukem 	*)
     42  1.17  lukem 		usage
     43  1.17  lukem 		;;
     44  1.17  lukem 	esac
     45  1.17  lukem done
     46  1.17  lukem shift $((${OPTIND} - 1))
     47  1.17  lukem 
     48  1.15  lukem if [ $# -ne 2 ]; then
     49  1.22    jmc 	usage
     50   1.1    jtc fi
     51  1.30    apb srcdir="$1"
     52  1.30    apb setdir="$2"
     53  1.30    apb : ${PASSWD:="${srcdir}/etc"}
     54   1.1    jtc 
     55  1.15  lukem if [ ! -d "${setdir}" ]; then
     56  1.15  lukem 	echo "${setdir} is not a directory"
     57   1.1    jtc 	exit 1
     58   1.1    jtc fi
     59   1.1    jtc 
     60  1.15  lukem makeset()
     61  1.22    jmc {(
     62  1.30    apb 	set="${1}.tgz"
     63  1.15  lukem 	shift
     64  1.30    apb 	dir="$1"
     65  1.22    jmc 	shift
     66  1.30    apb 	intmp="/tmp/in$$"
     67  1.15  lukem 	echo "Creating ${set}"
     68  1.22    jmc 	if [ "${dir}" != "." ]; then
     69  1.30    apb 		cd "${dir}"
     70  1.22    jmc 		srcprefix="${srcprefix}/${dir}"
     71  1.22    jmc 	fi
     72  1.22    jmc 	# Gets rid of any obj dirs and things below it 
     73  1.30    apb 	echo "obj" > "${intmp}"
     74  1.30    apb 	egrep="$*"
     75  1.30    apb 	if [ "${egrep}" = "" ]; then
     76  1.27    jmc 		egrep='.'
     77  1.22    jmc 	fi
     78  1.15  lukem 	set -f
     79  1.30    apb 	${MTREE} -c -X "${intmp}" | ${MTREE} -C -k type | \
     80  1.30    apb 		${EGREP} -v 'type=link' | ${EGREP} ${egrep} | \
     81  1.29    apb 		${SED} -e 's:type=file:& mode=0664:' \
     82  1.22    jmc 			-e 's:type=dir:& mode=0775:' \
     83  1.22    jmc 			-e 's:$: uname=root gname=wsrc:' | \
     84  1.30    apb 		${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \
     85  1.29    apb 		${GZIP_CMD} > "${setdir}/${set}"
     86  1.30    apb 	rm -f "${intmp}"
     87  1.22    jmc )}
     88  1.15  lukem 
     89  1.15  lukem 
     90  1.17  lukem # create (base)src sets
     91  1.17  lukem #
     92  1.17  lukem 
     93  1.17  lukem if ! cd "${srcdir}"; then
     94  1.17  lukem 	echo "Can't chdir to ${srcdir}"
     95  1.17  lukem 	exit 1
     96  1.17  lukem fi
     97  1.17  lukem 
     98  1.17  lukem srcprefix=usr/src
     99  1.22    jmc export setdir MTREE PAX CKSUM GZIP PASSWD srcprefix
    100  1.22    jmc 
    101  1.25    jmc makeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config'
    102  1.22    jmc 
    103  1.22    jmc makeset gnusrc gnu
    104  1.17  lukem 
    105  1.25    jmc makeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config'
    106   1.1    jtc 
    107  1.22    jmc makeset sharesrc share
    108   1.6  perry 
    109  1.17  lukem 
    110  1.17  lukem # create xsrc sets
    111  1.17  lukem #
    112  1.17  lukem if [ -n "${xsrcdir}" ]; then
    113  1.17  lukem 	if ! cd "${xsrcdir}"; then
    114  1.17  lukem 		echo "Can't chdir to ${xsrcdir}"
    115  1.17  lukem 		exit 1
    116  1.17  lukem 	fi
    117  1.17  lukem 	srcprefix=usr/xsrc
    118  1.17  lukem 	makeset xsrc .
    119  1.17  lukem fi
    120  1.17  lukem 
    121  1.17  lukem 
    122  1.16  lukem echo "Creating checksum files"
    123  1.30    apb (cd "${setdir}"
    124  1.13  lukem 	${CKSUM} -o1 *.tgz > BSDSUM
    125  1.13  lukem 	${CKSUM}     *.tgz > CKSUM
    126  1.21    jmc 	${CKSUM} -a md5  *.tgz > MD5
    127  1.13  lukem 	${CKSUM} -o2 *.tgz > SYSVSUM
    128  1.21    jmc 	${CKSUM} -a sha512 *.tgz > SHA512
    129  1.13  lukem )
    130  1.27    jmc exit 0
    131