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