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