mkdist revision 26497
126497Sache#! /bin/bash - 226497Sache# 326497Sache# mkdist - make a distribution directory from a master manifest file 426497Sache# 526497Sache# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 626497Sache# 726497Sache# SRCDIR defaults to src 826497Sache# MANIFEST defaults to $SRCDIR/MANIFEST 926497Sache# 1026497Sache 1126497SacheSRCDIR=src 1226497SacheROOTNAME=bash 1326497Sache 1426497Sacheusage() 1526497Sache{ 1626497Sache echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2 1726497Sache exit 2 1826497Sache} 1926497Sache 2026497Sachevmsg() 2126497Sache{ 2226497Sache if [ -n "$verbose" ]; then 2326497Sache echo mkdist: "$@" 2426497Sache fi 2526497Sache} 2626497Sache 2726497Sachewhile getopts m:s:r:v name 2826497Sachedo 2926497Sache case $name in 3026497Sache m) MANIFEST=$OPTARG ;; 3126497Sache s) SRCDIR=$OPTARG ;; 3226497Sache r) ROOTNAME=$OPTARG ;; 3326497Sache v) verbose=yes ;; 3426497Sache ?) usage ;; 3526497Sache esac 3626497Sachedone 3726497Sache 3826497Sache: ${MANIFEST:=$SRCDIR/MANIFEST} 3926497Sache 4026497Sachevmsg using $MANIFEST 4126497Sache 4226497Sacheshift $(( $OPTIND - 1 )) 4326497Sache 4426497Sacheif [ $# -lt 1 ]; then 4526497Sache usage 4626497Sachefi 4726497Sache 4826497Sacheversion=$1 4926497Sachenewdir=${ROOTNAME}-$version 5026497Sache 5126497Sachevmsg creating distribution for version $version in $newdir 5226497Sache 5326497Sacheif [ ! -d $newdir ]; then 5426497Sache mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } 5526497Sachefi 5626497Sache 5726497Sachedirmode=755 5826497Sachefilmode=644 5926497Sache 6026497Sachewhile read fname type mode 6126497Sachedo 6226497Sache [ -z "$fname" ] && continue 6326497Sache 6426497Sache case "$fname" in 6526497Sache \#*) continue ;; 6626497Sache esac 6726497Sache 6826497Sache case "$type" in 6926497Sache d) mkdir $newdir/$fname ;; 7026497Sache f) cp -p $SRCDIR/$fname $newdir/$fname ;; 7126497Sache *) echo "unknown file type $type" 1>&2 ;; 7226497Sache esac 7326497Sache 7426497Sache if [ -n "$mode" ]; then 7526497Sache chmod $mode $newdir/$fname 7626497Sache fi 7726497Sache 7826497Sachedone < $MANIFEST 7926497Sache 8026497Sache# cut off the `-alpha' in something like `2.0-alpha', leaving just the 8126497Sache# numeric version 8226497Sache#version=${version%%-*} 8326497Sache 8426497Sache#case "$version" in 8526497Sache#*.*.*) vers=${version%.*} ;; 8626497Sache#*.*) vers=${version} ;; 8726497Sache#esac 8826497Sache 8926497Sache#echo $vers > $newdir/.distribution 9026497Sache 9126497Sache#case "$version" in 9226497Sache#*.*.*) plevel=${version##*.} ;; 9326497Sache#*) plevel=0 ;; 9426497Sache#esac 9526497Sache#[ -z "$plevel" ] && plevel=0 9626497Sache#echo ${plevel} > $newdir/.patchlevel 9726497Sache 9826497Sachevmsg $newdir created 9926497Sache 10026497Sacheexit 0 101