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