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