1 1.1 jtc #! /bin/sh 2 1.3 mikel # 3 1.31 hubertf # $NetBSD: makesrctars,v 1.31 2006/03/08 19:18:04 hubertf 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.31 hubertf -e 's:$: uname=root gname=wsrc:' \ 84 1.31 hubertf -e '/^\.\/build.sh /s:\(mode\)=[0-9]*:\1=0775:' | \ 85 1.30 apb ${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \ 86 1.29 apb ${GZIP_CMD} > "${setdir}/${set}" 87 1.30 apb rm -f "${intmp}" 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.30 apb (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 1.27 jmc exit 0 132