makesrctars revision 1.32
11.1Sjtc#! /bin/sh 21.3Smikel# 31.32Stron# $NetBSD: makesrctars,v 1.32 2006/09/07 22:03:58 tron Exp $ 41.15Slukem# 51.15Slukem# makesrctars srcdir setdir 61.15Slukem# Create source tarballs in setdir from the source under srcdir. 71.3Smikel# 81.1Sjtc 91.30Sapbprog="${0##*/}" 101.28Sapbrundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/" 111.28Sapb. "${rundir}/sets.subr" 121.17Slukem 131.17Slukem# set defaults 141.17Slukemxsrcdir= 151.13Slukem 161.14SlukemGZIP=-9 171.1Sjtcexport GZIP 181.1Sjtc 191.17Slukemusage() 201.17Slukem{ 211.17Slukem cat 1>&2 <<USAGE 221.22SjmcUsage: ${prog} [-N password/group dir] [-x xsrcdir] srcdir setdir 231.22Sjmc -N dir location which contains master.passwd and group files 241.27Sjmc (defaults to \${srcdir}/etc) 251.17Slukem -x xsrcdir build xsrc.tgz from xsrcdir 261.17Slukem srcdir location of sources 271.17Slukem setdir where to write the .tgz files to 281.17SlukemUSAGE 291.17Slukem exit 1 301.17Slukem} 311.17Slukem 321.17Slukem# handle args 331.22Sjmcwhile getopts N:x: ch; do 341.17Slukem case ${ch} in 351.27Sjmc x) 361.30Sapb xsrcdir="${OPTARG}" 371.17Slukem ;; 381.22Sjmc N) 391.30Sapb PASSWD="${OPTARG}" 401.22Sjmc ;; 411.17Slukem *) 421.17Slukem usage 431.17Slukem ;; 441.17Slukem esac 451.17Slukemdone 461.17Slukemshift $((${OPTIND} - 1)) 471.17Slukem 481.15Slukemif [ $# -ne 2 ]; then 491.22Sjmc usage 501.1Sjtcfi 511.30Sapbsrcdir="$1" 521.30Sapbsetdir="$2" 531.30Sapb: ${PASSWD:="${srcdir}/etc"} 541.1Sjtc 551.15Slukemif [ ! -d "${setdir}" ]; then 561.15Slukem echo "${setdir} is not a directory" 571.1Sjtc exit 1 581.1Sjtcfi 591.1Sjtc 601.15Slukemmakeset() 611.22Sjmc{( 621.30Sapb set="${1}.tgz" 631.15Slukem shift 641.30Sapb dir="$1" 651.22Sjmc shift 661.30Sapb intmp="/tmp/in$$" 671.15Slukem echo "Creating ${set}" 681.22Sjmc if [ "${dir}" != "." ]; then 691.30Sapb cd "${dir}" 701.22Sjmc srcprefix="${srcprefix}/${dir}" 711.22Sjmc fi 721.22Sjmc # Gets rid of any obj dirs and things below it 731.30Sapb echo "obj" > "${intmp}" 741.30Sapb egrep="$*" 751.30Sapb if [ "${egrep}" = "" ]; then 761.27Sjmc egrep='.' 771.22Sjmc fi 781.15Slukem set -f 791.30Sapb ${MTREE} -c -X "${intmp}" | ${MTREE} -C -k type | \ 801.30Sapb ${EGREP} -v 'type=link' | ${EGREP} ${egrep} | \ 811.29Sapb ${SED} -e 's:type=file:& mode=0664:' \ 821.22Sjmc -e 's:type=dir:& mode=0775:' \ 831.31Shubertf -e 's:$: uname=root gname=wsrc:' \ 841.32Stron -e '/\/move-if-change /s:\(mode\)=[0-9]*:\1=0775:' \ 851.31Shubertf -e '/^\.\/build.sh /s:\(mode\)=[0-9]*:\1=0775:' | \ 861.30Sapb ${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \ 871.29Sapb ${GZIP_CMD} > "${setdir}/${set}" 881.30Sapb rm -f "${intmp}" 891.22Sjmc)} 901.15Slukem 911.15Slukem 921.17Slukem# create (base)src sets 931.17Slukem# 941.17Slukem 951.17Slukemif ! cd "${srcdir}"; then 961.17Slukem echo "Can't chdir to ${srcdir}" 971.17Slukem exit 1 981.17Slukemfi 991.17Slukem 1001.17Slukemsrcprefix=usr/src 1011.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix 1021.22Sjmc 1031.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config' 1041.22Sjmc 1051.22Sjmcmakeset gnusrc gnu 1061.17Slukem 1071.25Sjmcmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config' 1081.1Sjtc 1091.22Sjmcmakeset sharesrc share 1101.6Sperry 1111.17Slukem 1121.17Slukem# create xsrc sets 1131.17Slukem# 1141.17Slukemif [ -n "${xsrcdir}" ]; then 1151.17Slukem if ! cd "${xsrcdir}"; then 1161.17Slukem echo "Can't chdir to ${xsrcdir}" 1171.17Slukem exit 1 1181.17Slukem fi 1191.17Slukem srcprefix=usr/xsrc 1201.17Slukem makeset xsrc . 1211.17Slukemfi 1221.17Slukem 1231.17Slukem 1241.16Slukemecho "Creating checksum files" 1251.30Sapb(cd "${setdir}" 1261.13Slukem ${CKSUM} -o1 *.tgz > BSDSUM 1271.13Slukem ${CKSUM} *.tgz > CKSUM 1281.21Sjmc ${CKSUM} -a md5 *.tgz > MD5 1291.13Slukem ${CKSUM} -o2 *.tgz > SYSVSUM 1301.21Sjmc ${CKSUM} -a sha512 *.tgz > SHA512 1311.13Slukem) 1321.27Sjmcexit 0 133