1#! /bin/bash - 2# 3# mkdist - make a distribution directory from a master manifest file 4# 5# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 6# 7# SRCDIR defaults to src 8# MANIFEST defaults to $SRCDIR/MANIFEST 9# 10# Chet Ramey 11# chet@po.cwru.edu 12 13# Copyright (C) 1996-2002 Free Software Foundation, Inc. 14# 15# This program is free software: you can redistribute it and/or modify 16# it under the terms of the GNU General Public License as published by 17# the Free Software Foundation, either version 3 of the License, or 18# (at your option) any later version. 19# 20# This program is distributed in the hope that it will be useful, 21# but WITHOUT ANY WARRANTY; without even the implied warranty of 22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23# GNU General Public License for more details. 24# 25# You should have received a copy of the GNU General Public License 26# along with this program. If not, see <http://www.gnu.org/licenses/>. 27# 28 29SRCDIR=src 30ROOTNAME=bash 31 32usage() 33{ 34 echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2 35 exit 2 36} 37 38vmsg() 39{ 40 if [ -n "$verbose" ]; then 41 echo mkdist: "$@" 42 fi 43} 44 45while getopts m:s:r:tv name 46do 47 case $name in 48 m) MANIFEST=$OPTARG ;; 49 s) SRCDIR=$OPTARG ;; 50 r) ROOTNAME=$OPTARG ;; 51 t) maketar=yes ;; 52 v) verbose=yes ;; 53 ?) usage ;; 54 esac 55done 56 57: ${MANIFEST:=$SRCDIR/MANIFEST} 58 59vmsg using $MANIFEST 60 61shift $(( $OPTIND - 1 )) 62 63if [ $# -lt 1 ]; then 64 usage 65fi 66 67version=$1 68newdir=${ROOTNAME}-$version 69 70tarfile=${newdir}.tar 71 72vmsg creating distribution for $ROOTNAME version $version in $newdir 73 74if [ ! -d $newdir ]; then 75 mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } 76fi 77 78dirmode=755 79filmode=644 80 81while read fname type mode 82do 83 [ -z "$fname" ] && continue 84 85 case "$fname" in 86 \#*) continue ;; 87 esac 88 89 case "$type" in 90 d) mkdir $newdir/$fname ;; 91 f) cp -p $SRCDIR/$fname $newdir/$fname ;; 92 s) ln -s $mode $newdir/$fname ; mode= ;; # symlink 93 l) ln $mode $newdir/$fname ; mode= ;; # hard link 94 *) echo "unknown file type $type" 1>&2 ;; 95 esac 96 97 if [ -n "$mode" ]; then 98 chmod $mode $newdir/$fname 99 fi 100 101done < $MANIFEST 102 103# cut off the `-alpha' in something like `2.0-alpha', leaving just the 104# numeric version 105#version=${version%%-*} 106 107#case "$version" in 108#*.*.*) vers=${version%.*} ;; 109#*.*) vers=${version} ;; 110#esac 111 112#echo $vers > $newdir/.distribution 113 114#case "$version" in 115#*.*.*) plevel=${version##*.} ;; 116#*) plevel=0 ;; 117#esac 118#[ -z "$plevel" ] && plevel=0 119#echo ${plevel} > $newdir/.patchlevel 120 121vmsg $newdir created 122 123if [ -n "$maketar" ]; then 124 tar cf ${tarfile} $newdir 125 gzip $tarfile 126 vmsg ${tarfile}.gz created 127fi 128 129exit 0 130