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