| #! /bin/bash - |
| # |
| # mkdist - make a distribution directory from a master manifest file |
| # |
| # usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version |
| # |
| # SRCDIR defaults to src |
| # MANIFEST defaults to $SRCDIR/MANIFEST |
| # |
| # Chet Ramey |
| # chet@po.cwru.edu |
| |
| # Copyright (C) 1996-2002 Free Software Foundation, Inc. |
| # |
| # This program is free software: you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| # |
| |
| SRCDIR=src |
| ROOTNAME=bash |
| |
| usage() |
| { |
| echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2 |
| exit 2 |
| } |
| |
| vmsg() |
| { |
| if [ -n "$verbose" ]; then |
| echo mkdist: "$@" |
| fi |
| } |
| |
| while getopts m:s:r:tv name |
| do |
| case $name in |
| m) MANIFEST=$OPTARG ;; |
| s) SRCDIR=$OPTARG ;; |
| r) ROOTNAME=$OPTARG ;; |
| t) maketar=yes ;; |
| v) verbose=yes ;; |
| ?) usage ;; |
| esac |
| done |
| |
| : ${MANIFEST:=$SRCDIR/MANIFEST} |
| |
| vmsg using $MANIFEST |
| |
| shift $(( $OPTIND - 1 )) |
| |
| if [ $# -lt 1 ]; then |
| usage |
| fi |
| |
| version=$1 |
| newdir=${ROOTNAME}-$version |
| |
| tarfile=${newdir}.tar |
| |
| vmsg creating distribution for $ROOTNAME version $version in $newdir |
| |
| if [ ! -d $newdir ]; then |
| mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } |
| fi |
| |
| dirmode=755 |
| filmode=644 |
| |
| while read fname type mode |
| do |
| [ -z "$fname" ] && continue |
| |
| case "$fname" in |
| \#*) continue ;; |
| esac |
| |
| case "$type" in |
| d) mkdir $newdir/$fname ;; |
| f) cp -p $SRCDIR/$fname $newdir/$fname ;; |
| s) ln -s $mode $newdir/$fname ; mode= ;; # symlink |
| l) ln $mode $newdir/$fname ; mode= ;; # hard link |
| *) echo "unknown file type $type" 1>&2 ;; |
| esac |
| |
| if [ -n "$mode" ]; then |
| chmod $mode $newdir/$fname |
| fi |
| |
| done < $MANIFEST |
| |
| # cut off the `-alpha' in something like `2.0-alpha', leaving just the |
| # numeric version |
| #version=${version%%-*} |
| |
| #case "$version" in |
| #*.*.*) vers=${version%.*} ;; |
| #*.*) vers=${version} ;; |
| #esac |
| |
| #echo $vers > $newdir/.distribution |
| |
| #case "$version" in |
| #*.*.*) plevel=${version##*.} ;; |
| #*) plevel=0 ;; |
| #esac |
| #[ -z "$plevel" ] && plevel=0 |
| #echo ${plevel} > $newdir/.patchlevel |
| |
| vmsg $newdir created |
| |
| if [ -n "$maketar" ]; then |
| tar cf ${tarfile} $newdir |
| gzip $tarfile |
| vmsg ${tarfile}.gz created |
| fi |
| |
| exit 0 |