1 1.1 jtc #! /bin/sh 2 1.3 mikel # 3 1.29 apb # $NetBSD: makesrctars,v 1.29 2006/01/03 16:40:16 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.17 lukem 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.17 lukem xsrcdir=${OPTARG} 37 1.17 lukem ;; 38 1.22 jmc N) 39 1.22 jmc 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.15 lukem srcdir=$1 52 1.15 lukem setdir=$2 53 1.22 jmc : ${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.15 lukem set=$1.tgz 63 1.15 lukem shift 64 1.22 jmc dir=$1 65 1.22 jmc shift 66 1.15 lukem echo "Creating ${set}" 67 1.22 jmc if [ "${dir}" != "." ]; then 68 1.22 jmc cd $dir 69 1.22 jmc srcprefix="${srcprefix}/${dir}" 70 1.22 jmc fi 71 1.22 jmc # Gets rid of any obj dirs and things below it 72 1.22 jmc echo "obj" > /tmp/in$$ 73 1.22 jmc egrep=$* 74 1.22 jmc if [ "$egrep" = "" ]; then 75 1.27 jmc egrep='.' 76 1.22 jmc fi 77 1.15 lukem set -f 78 1.22 jmc ${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \ 79 1.29 apb ${EGREP} -v 'type=link' | ${EGREP} $egrep | \ 80 1.29 apb ${SED} -e 's:type=file:& mode=0664:' \ 81 1.22 jmc -e 's:type=dir:& mode=0775:' \ 82 1.22 jmc -e 's:$: uname=root gname=wsrc:' | \ 83 1.22 jmc ${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \ 84 1.29 apb ${GZIP_CMD} > "${setdir}/${set}" 85 1.22 jmc rm -f /tmp/in$$ 86 1.22 jmc )} 87 1.15 lukem 88 1.15 lukem 89 1.17 lukem # create (base)src sets 90 1.17 lukem # 91 1.17 lukem 92 1.17 lukem if ! cd "${srcdir}"; then 93 1.17 lukem echo "Can't chdir to ${srcdir}" 94 1.17 lukem exit 1 95 1.17 lukem fi 96 1.17 lukem 97 1.17 lukem srcprefix=usr/src 98 1.22 jmc export setdir MTREE PAX CKSUM GZIP PASSWD srcprefix 99 1.22 jmc 100 1.25 jmc makeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config' 101 1.22 jmc 102 1.22 jmc makeset gnusrc gnu 103 1.17 lukem 104 1.25 jmc makeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config' 105 1.1 jtc 106 1.22 jmc makeset sharesrc share 107 1.6 perry 108 1.17 lukem 109 1.17 lukem # create xsrc sets 110 1.17 lukem # 111 1.17 lukem if [ -n "${xsrcdir}" ]; then 112 1.17 lukem if ! cd "${xsrcdir}"; then 113 1.17 lukem echo "Can't chdir to ${xsrcdir}" 114 1.17 lukem exit 1 115 1.17 lukem fi 116 1.17 lukem srcprefix=usr/xsrc 117 1.17 lukem makeset xsrc . 118 1.17 lukem fi 119 1.17 lukem 120 1.17 lukem 121 1.16 lukem echo "Creating checksum files" 122 1.15 lukem (cd ${setdir} 123 1.13 lukem ${CKSUM} -o1 *.tgz > BSDSUM 124 1.13 lukem ${CKSUM} *.tgz > CKSUM 125 1.21 jmc ${CKSUM} -a md5 *.tgz > MD5 126 1.13 lukem ${CKSUM} -o2 *.tgz > SYSVSUM 127 1.21 jmc ${CKSUM} -a sha512 *.tgz > SHA512 128 1.13 lukem ) 129 1.27 jmc exit 0 130