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