makesrctars revision 1.39
11.1Sjtc#! /bin/sh 21.3Smikel# 31.39Schristos# $NetBSD: makesrctars,v 1.39 2014/01/07 13:32:38 christos 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.34Slukemquiet=false 161.13Slukem 171.35SperryGZIP=-9n 181.1Sjtcexport GZIP 191.1Sjtc 201.17Slukemusage() 211.17Slukem{ 221.17Slukem cat 1>&2 <<USAGE 231.38SuebayasiUsage: ${prog} [-N password/group dir] [-q] [-x xsrcdir] [-y extsrcsrcdir] srcdir setdir 241.22Sjmc -N dir location which contains master.passwd and group files 251.27Sjmc (defaults to \${srcdir}/etc) 261.34Slukem -q quiet operation 271.17Slukem -x xsrcdir build xsrc.tgz from xsrcdir 281.38Suebayasi -y extsrcsrcdir build extsrc.tgz from extsrcsrcdir 291.17Slukem srcdir location of sources 301.17Slukem setdir where to write the .tgz files to 311.17SlukemUSAGE 321.17Slukem exit 1 331.17Slukem} 341.17Slukem 351.34Slukemmsg() 361.34Slukem{ 371.34Slukem $quiet || echo $* 381.34Slukem} 391.34Slukem 401.34Slukem 411.17Slukem# handle args 421.38Suebayasiwhile getopts N:qx:y: ch; do 431.17Slukem case ${ch} in 441.34Slukem q) 451.34Slukem quiet=true 461.34Slukem ;; 471.27Sjmc x) 481.30Sapb xsrcdir="${OPTARG}" 491.17Slukem ;; 501.38Suebayasi y) 511.38Suebayasi extsrcsrcdir="${OPTARG}" 521.38Suebayasi ;; 531.22Sjmc N) 541.30Sapb PASSWD="${OPTARG}" 551.22Sjmc ;; 561.17Slukem *) 571.17Slukem usage 581.17Slukem ;; 591.17Slukem esac 601.17Slukemdone 611.17Slukemshift $((${OPTIND} - 1)) 621.17Slukem 631.15Slukemif [ $# -ne 2 ]; then 641.22Sjmc usage 651.1Sjtcfi 661.30Sapbsrcdir="$1" 671.30Sapbsetdir="$2" 681.30Sapb: ${PASSWD:="${srcdir}/etc"} 691.1Sjtc 701.15Slukemif [ ! -d "${setdir}" ]; then 711.34Slukem echo >&2 "${prog}: ${setdir} is not a directory" 721.1Sjtc exit 1 731.1Sjtcfi 741.1Sjtc 751.15Slukemmakeset() 761.22Sjmc{( 771.30Sapb set="${1}.tgz" 781.15Slukem shift 791.30Sapb dir="$1" 801.22Sjmc shift 811.30Sapb intmp="/tmp/in$$" 821.34Slukem msg "Creating ${set}" 831.22Sjmc if [ "${dir}" != "." ]; then 841.30Sapb cd "${dir}" 851.22Sjmc srcprefix="${srcprefix}/${dir}" 861.22Sjmc fi 871.22Sjmc # Gets rid of any obj dirs and things below it 881.30Sapb echo "obj" > "${intmp}" 891.30Sapb egrep="$*" 901.30Sapb if [ "${egrep}" = "" ]; then 911.27Sjmc egrep='.' 921.22Sjmc fi 931.15Slukem set -f 941.36Sapb ${MTREE} -c -X "${intmp}" | ${MTREE} -CS -k type | \ 951.30Sapb ${EGREP} -v 'type=link' | ${EGREP} ${egrep} | \ 961.29Sapb ${SED} -e 's:type=file:& mode=0664:' \ 971.22Sjmc -e 's:type=dir:& mode=0775:' \ 981.31Shubertf -e 's:$: uname=root gname=wsrc:' \ 991.32Stron -e '/\/move-if-change /s:\(mode\)=[0-9]*:\1=0775:' \ 1001.39Schristos -e '/^\.\/.*[.-]sh /s:\(mode\)=[0-9]*:\1=0775:' | \ 1011.30Sapb ${PAX} -M -N "${PASSWD}" -w -d -s'|^\.|'"${srcprefix}"'|' | \ 1021.29Sapb ${GZIP_CMD} > "${setdir}/${set}" 1031.30Sapb rm -f "${intmp}" 1041.22Sjmc)} 1051.15Slukem 1061.15Slukem 1071.17Slukem# create (base)src sets 1081.17Slukem# 1091.17Slukem 1101.17Slukemif ! cd "${srcdir}"; then 1111.34Slukem echo >&2 "${prog}: can't chdir to ${srcdir}" 1121.17Slukem exit 1 1131.17Slukemfi 1141.17Slukem 1151.17Slukemsrcprefix=usr/src 1161.22Sjmcexport setdir MTREE PAX CKSUM GZIP PASSWD srcprefix 1171.22Sjmc 1181.33Sjnemethmakeset src . -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/usr\.bin\/config|^\.\/common' 1191.22Sjmc 1201.22Sjmcmakeset gnusrc gnu 1211.17Slukem 1221.33Sjnemethmakeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/usr\.bin.type=dir|^\.\/usr\.bin\/config|^\.\/common' 1231.1Sjtc 1241.22Sjmcmakeset sharesrc share 1251.6Sperry 1261.17Slukem 1271.17Slukem# create xsrc sets 1281.17Slukem# 1291.17Slukemif [ -n "${xsrcdir}" ]; then 1301.17Slukem if ! cd "${xsrcdir}"; then 1311.34Slukem echo >&2 "${prog}: can't chdir to ${xsrcdir}" 1321.17Slukem exit 1 1331.17Slukem fi 1341.17Slukem srcprefix=usr/xsrc 1351.17Slukem makeset xsrc . 1361.17Slukemfi 1371.17Slukem 1381.17Slukem 1391.38Suebayasi# create extsrc sets 1401.38Suebayasi# 1411.38Suebayasiif [ -n "${extsrcsrcdir}" ]; then 1421.38Suebayasi if ! cd "${extsrcsrcdir}"; then 1431.38Suebayasi echo >&2 "${prog}: can't chdir to ${extsrcsrcdir}" 1441.38Suebayasi exit 1 1451.38Suebayasi fi 1461.38Suebayasi srcprefix=usr/extsrc 1471.38Suebayasi makeset extsrc . 1481.38Suebayasifi 1491.38Suebayasi 1501.38Suebayasi 1511.34Slukemmsg "Creating checksum files" 1521.30Sapb(cd "${setdir}" 1531.21Sjmc ${CKSUM} -a md5 *.tgz > MD5 1541.21Sjmc ${CKSUM} -a sha512 *.tgz > SHA512 1551.13Slukem) 1561.27Sjmcexit 0 157