makesrctars revision 1.27
11.1Sjtc#! /bin/sh 21.3Smikel# 31.27Sjmc# $NetBSD: makesrctars,v 1.27 2005/10/21 04:11:49 jmc 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.17Slukemprog=${0##*/} 101.17Slukem 111.17Slukem# set defaults 121.24Sjmc: ${CKSUM:=cksum} 131.24Sjmc: ${MTREE:=/usr/sbin/mtree} 141.24Sjmc: ${PAX:=pax} 151.17Slukem 161.17Slukemxsrcdir= 171.13Slukem 181.14SlukemGZIP=-9 191.1Sjtcexport GZIP 201.1Sjtc 211.17Slukemusage() 221.17Slukem{ 231.17Slukem cat 1>&2 <<USAGE 241.22SjmcUsage: ${prog} [-N password/group dir] [-x xsrcdir] srcdir setdir 251.22Sjmc -N dir location which contains master.passwd and group files 261.27Sjmc (defaults to \${srcdir}/etc) 271.17Slukem -x xsrcdir build xsrc.tgz from xsrcdir 281.17Slukem srcdir location of sources 291.17Slukem setdir where to write the .tgz files to 301.17SlukemUSAGE 311.17Slukem exit 1 321.17Slukem} 331.17Slukem 341.17Slukem# handle args 351.22Sjmcwhile getopts N:x: ch; do 361.17Slukem case ${ch} in 371.27Sjmc x) 381.17Slukem xsrcdir=${OPTARG} 391.17Slukem ;; 401.22Sjmc N) 411.22Sjmc PASSWD=${OPTARG} 421.22Sjmc ;; 431.17Slukem *) 441.17Slukem usage 451.17Slukem ;; 461.17Slukem esac 471.17Slukemdone 481.17Slukemshift $((${OPTIND} - 1)) 491.17Slukem 501.15Slukemif [ $# -ne 2 ]; then 511.22Sjmc usage 521.1Sjtcfi 531.15Slukemsrcdir=$1 541.15Slukemsetdir=$2 551.22Sjmc: ${PASSWD:=${srcdir}/etc} 561.1Sjtc 571.15Slukemif [ ! -d "${setdir}" ]; then 581.15Slukem echo "${setdir} is not a directory" 591.1Sjtc exit 1 601.1Sjtcfi 611.1Sjtc 621.15Slukemmakeset() 631.22Sjmc{( 641.15Slukem set=$1.tgz 651.15Slukem shift 661.22Sjmc dir=$1 671.22Sjmc shift 681.15Slukem echo "Creating ${set}" 691.22Sjmc if [ "${dir}" != "." ]; then 701.22Sjmc cd $dir 711.22Sjmc srcprefix="${srcprefix}/${dir}" 721.22Sjmc fi 731.22Sjmc # Gets rid of any obj dirs and things below it 741.22Sjmc echo "obj" > /tmp/in$$ 751.22Sjmc egrep=$* 761.22Sjmc if [ "$egrep" = "" ]; then 771.27Sjmc egrep='.' 781.22Sjmc fi 791.15Slukem set -f 801.22Sjmc ${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \ 811.25Sjmc egrep -v 'type=link' | egrep $egrep | \ 821.22Sjmc sed -e 's:type=file:& mode=0664:' \ 831.22Sjmc -e 's:type=dir:& mode=0775:' \ 841.22Sjmc -e 's:$: uname=root gname=wsrc:' | \ 851.22Sjmc ${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \ 861.22Sjmc gzip > "${setdir}/${set}" 871.22Sjmc rm -f /tmp/in$$ 881.22Sjmc)} 891.15Slukem 901.15Slukem 911.17Slukem# create (base)src sets 921.17Slukem# 931.17Slukem 941.17Slukemif ! cd "${srcdir}"; then 951.17Slukem echo "Can't chdir to ${srcdir}" 961.17Slukem exit 1 971.17Slukemfi 981.17Slukem 991.17Slukemsrcprefix=usr/src 1001.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix 1011.22Sjmc 1021.25Sjmcmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config' 1031.22Sjmc 1041.22Sjmcmakeset gnusrc gnu 1051.17Slukem 1061.25Sjmcmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config' 1071.1Sjtc 1081.22Sjmcmakeset sharesrc share 1091.6Sperry 1101.17Slukem 1111.17Slukem# create xsrc sets 1121.17Slukem# 1131.17Slukemif [ -n "${xsrcdir}" ]; then 1141.17Slukem if ! cd "${xsrcdir}"; then 1151.17Slukem echo "Can't chdir to ${xsrcdir}" 1161.17Slukem exit 1 1171.17Slukem fi 1181.17Slukem srcprefix=usr/xsrc 1191.17Slukem makeset xsrc . 1201.17Slukemfi 1211.17Slukem 1221.17Slukem 1231.16Slukemecho "Creating checksum files" 1241.15Slukem(cd ${setdir} 1251.13Slukem ${CKSUM} -o1 *.tgz > BSDSUM 1261.13Slukem ${CKSUM} *.tgz > CKSUM 1271.21Sjmc ${CKSUM} -a md5 *.tgz > MD5 1281.13Slukem ${CKSUM} -o2 *.tgz > SYSVSUM 1291.21Sjmc ${CKSUM} -a sha512 *.tgz > SHA512 1301.13Slukem) 1311.27Sjmcexit 0 132