1 1.1 jtc #! /bin/sh 2 1.3 mikel # 3 1.33 jnemeth # $NetBSD: makesrctars,v 1.33 2007/03/23 02:57:30 jnemeth 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.32 tron -e '/\/move-if-change /s:\(mode\)=[0-9]*:\1=0775:' \ 85 1.31 hubertf -e '/^\.\/build.sh /s:\(mode\)=[0-9]*:\1=0775:' | \ 86 1.30 apb ${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \ 87 1.29 apb ${GZIP_CMD} > "${setdir}/${set}" 88 1.30 apb rm -f "${intmp}" 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.33 jnemeth makeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config|^\.\/common' 104 1.22 jmc 105 1.22 jmc makeset gnusrc gnu 106 1.17 lukem 107 1.33 jnemeth makeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config|^\.\/common' 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.30 apb (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 1.27 jmc exit 0 133