Commit | Line | Data |
---|---|---|
d60d9f65 SS |
1 | #! /bin/bash - |
2 | # | |
3 | # mkdist - make a distribution directory from a master manifest file | |
4 | # | |
775e241e | 5 | # usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version |
d60d9f65 SS |
6 | # |
7 | # SRCDIR defaults to src | |
8 | # MANIFEST defaults to $SRCDIR/MANIFEST | |
9 | # | |
9255ee31 EZ |
10 | # Chet Ramey |
11 | # chet@po.cwru.edu | |
12 | ||
13 | # Copyright (C) 1996-2002 Free Software Foundation, Inc. | |
14 | # | |
cc88a640 JK |
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. | |
9255ee31 | 19 | # |
cc88a640 JK |
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/>. | |
9255ee31 | 27 | # |
d60d9f65 SS |
28 | |
29 | SRCDIR=src | |
30 | ROOTNAME=bash | |
31 | ||
32 | usage() | |
33 | { | |
775e241e | 34 | echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2 |
d60d9f65 SS |
35 | exit 2 |
36 | } | |
37 | ||
38 | vmsg() | |
39 | { | |
40 | if [ -n "$verbose" ]; then | |
41 | echo mkdist: "$@" | |
42 | fi | |
43 | } | |
44 | ||
775e241e | 45 | while getopts m:s:r:tv name |
d60d9f65 SS |
46 | do |
47 | case $name in | |
48 | m) MANIFEST=$OPTARG ;; | |
49 | s) SRCDIR=$OPTARG ;; | |
50 | r) ROOTNAME=$OPTARG ;; | |
775e241e | 51 | t) maketar=yes ;; |
d60d9f65 SS |
52 | v) verbose=yes ;; |
53 | ?) usage ;; | |
54 | esac | |
55 | done | |
56 | ||
57 | : ${MANIFEST:=$SRCDIR/MANIFEST} | |
58 | ||
59 | vmsg using $MANIFEST | |
60 | ||
61 | shift $(( $OPTIND - 1 )) | |
62 | ||
63 | if [ $# -lt 1 ]; then | |
64 | usage | |
65 | fi | |
66 | ||
67 | version=$1 | |
68 | newdir=${ROOTNAME}-$version | |
69 | ||
775e241e TT |
70 | tarfile=${newdir}.tar |
71 | ||
c862e87b | 72 | vmsg creating distribution for $ROOTNAME version $version in $newdir |
d60d9f65 SS |
73 | |
74 | if [ ! -d $newdir ]; then | |
75 | mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } | |
76 | fi | |
77 | ||
78 | dirmode=755 | |
79 | filmode=644 | |
80 | ||
81 | while read fname type mode | |
82 | do | |
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 ;; | |
9255ee31 EZ |
92 | s) ln -s $mode $newdir/$fname ; mode= ;; # symlink |
93 | l) ln $mode $newdir/$fname ; mode= ;; # hard link | |
d60d9f65 SS |
94 | *) echo "unknown file type $type" 1>&2 ;; |
95 | esac | |
96 | ||
97 | if [ -n "$mode" ]; then | |
98 | chmod $mode $newdir/$fname | |
99 | fi | |
100 | ||
101 | done < $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 | ||
121 | vmsg $newdir created | |
122 | ||
775e241e TT |
123 | if [ -n "$maketar" ]; then |
124 | tar cf ${tarfile} $newdir | |
125 | gzip $tarfile | |
126 | vmsg ${tarfile}.gz created | |
127 | fi | |
128 | ||
d60d9f65 | 129 | exit 0 |