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