0
|
1 #!/bin/sh |
|
2 # -*-ksh-*- |
|
3 |
|
4 # This is the BINS install procedure. |
|
5 # Run it as root to install BINS system wide |
|
6 # or run it with your user to install it only for this user |
|
7 |
|
8 # PREFIX, RC and DESTDIR environment variables can be set to choose |
|
9 # installation paths |
|
10 |
|
11 # $Id: install.sh,v 1.34 2005/08/24 21:29:44 jerome Exp $ |
|
12 |
|
13 set -o errexit |
|
14 set -o nounset |
|
15 |
|
16 langs="fr de pl it ru es zh_TW nl ja eo fi hu ca" |
|
17 templates="swigs joi satyap marc petrus mwolson martin" |
|
18 |
|
19 DESTDIR="${DESTDIR:-}" # prefix to append to the install dirs |
|
20 # this is used by the Mandrake and Debian packages |
|
21 PREFIX="${PREFIX:-/usr/local}" |
|
22 ETC="${ETC:-/etc}" |
|
23 RC="${RC:-/etc/bins}" |
|
24 GLOBAL_RC="$RC" |
|
25 |
|
26 DESTDIR=`echo "$DESTDIR"|sed 's%/$%%'` |
|
27 PREFIX=$DESTDIR/`echo "$PREFIX"|sed 's%^/%%'` |
|
28 PREFIX=`echo "$PREFIX"|sed 's%/$%%'` |
|
29 ETC=$DESTDIR/`echo "$ETC"|sed 's%^/%%'` |
|
30 ETC=`echo "$ETC"|sed 's%/$%%'` |
|
31 RC=$DESTDIR/`echo "$RC"|sed 's%^/%%'` |
|
32 RC=`echo "$RC"|sed 's%/$%%'` |
|
33 |
|
34 BIN="$PREFIX/bin" |
|
35 SHARE="$PREFIX/share" |
|
36 DATA="$SHARE/bins" |
|
37 GLADE="$DATA" |
|
38 LOCALE="$SHARE/locale" |
|
39 MAN="$PREFIX/man/man1" |
|
40 |
|
41 cd `dirname $0` |
|
42 |
|
43 cat <<!EoF |
|
44 |
|
45 This will install BINS program and configuration files in the following paths : |
|
46 PREFIX = $PREFIX |
|
47 BIN = $BIN |
|
48 SHARE = $GLADE |
|
49 MAN = $MAN |
|
50 LOCALE = $LOCALE |
|
51 RC = $RC |
|
52 |
|
53 ***************************** WARNING ******************************** |
|
54 Note that this may replace your old programs, configuration files and |
|
55 HTML templates by new ones, so you should backup them if you have |
|
56 modified something for personalization. |
|
57 ********************************************************************** |
|
58 |
|
59 Press Enter to go on or Crtl-C to stop now... |
|
60 !EoF |
|
61 |
|
62 read dummy |
|
63 |
|
64 install_binaries() |
|
65 { |
|
66 mkdir -p $BIN 2>/dev/null || true |
|
67 if [ -w $BIN ] ; then |
|
68 echo "Installing program files in $BIN" |
|
69 # bins_cleanupgallery anti_bins |
|
70 cp bins bins_edit bins-edit-gui $BIN |
|
71 chmod a+rx $BIN/bins |
|
72 chmod a+rx $BIN/bins_edit |
|
73 chmod a+rx $BIN/bins_cleanupgallery |
|
74 chmod a+rx $BIN/bins-edit-gui |
|
75 chmod a+rx $BIN/anti_bins |
|
76 # perl -pi -e "s{/usr/local/share}{$SHARE}g" \ |
|
77 # $BIN/bins $BIN/bins_edit $BIN/bins-edit-gui |
|
78 # perl -pi -e "s{/etc/bins}{$RC}g" \ |
|
79 # $BIN/bins $BIN/bins_edit $BIN/bins-edit-gui |
|
80 return 0 |
|
81 else |
|
82 echo "Cannot write to $BIN directory." |
|
83 return 1 |
|
84 fi |
|
85 } |
|
86 |
|
87 install_config() |
|
88 { |
|
89 mkdir -p $RC 2>/dev/null || true |
|
90 if [ -w $RC ]; then |
|
91 echo "Installing configuration file in $RC" |
|
92 cp binsrc $RC |
|
93 for T in $templates |
|
94 do |
|
95 if [ -d "$RC/templates.$T" ]; then |
|
96 echo "Removing old template.$T in $RC" |
|
97 rm -Rf "$RC/templates.$T" |
|
98 fi |
|
99 done |
|
100 chmod -R a+r $RC/* |
|
101 else |
|
102 echo "Cannot write to $RC." |
|
103 return 1 |
|
104 fi |
|
105 } |
|
106 |
|
107 install_data() |
|
108 { |
|
109 mkdir -p $DATA 2>/dev/null || true |
|
110 if [ -w $DATA ]; then |
|
111 for T in $templates |
|
112 do |
|
113 echo "Installing default HTML templates in $DATA/templates.$T" |
|
114 if [ ! -d $DATA/templates.$T ] ; then |
|
115 mkdir $DATA/templates.$T |
|
116 fi |
|
117 cp templates.$T/*.html $DATA/templates.$T |
|
118 if ls templates.$T/*.js >/dev/null 2>&1 ; then |
|
119 cp templates.$T/*.js $DATA/templates.$T |
|
120 fi |
|
121 if [ -d templates.$T/static ] ; then |
|
122 cp -R templates.$T/static $DATA/templates.$T |
|
123 fi |
|
124 done |
|
125 chmod -R a+r $DATA/* |
|
126 return 0 |
|
127 else |
|
128 echo "Cannot write to $DATA." |
|
129 return 1 |
|
130 fi |
|
131 } |
|
132 |
|
133 |
|
134 # program files |
|
135 set +o errexit |
|
136 install_binaries |
|
137 if [ "$?" -eq "1" ] ; then |
|
138 BIN=~/bin |
|
139 echo "Trying $BIN..." |
|
140 install_binaries |
|
141 if [ "$?" -eq "1" ] ; then |
|
142 echo "Error: unable to find a directory to write program files, aborting." |
|
143 exit 2 |
|
144 fi |
|
145 fi |
|
146 |
|
147 # config file |
|
148 install_config |
|
149 if [ "$?" -eq "1" ] ; then |
|
150 RC=~/.bins |
|
151 echo "Trying $RC..." |
|
152 install_config |
|
153 if [ "$?" -eq "1" ] ; then |
|
154 echo "Error: unable to find a directory to write configuration file, aborting." |
|
155 exit 2 |
|
156 fi |
|
157 fi |
|
158 |
|
159 # templates |
|
160 install_data |
|
161 if [ "$?" -eq "1" ] ; then |
|
162 DATA=~/.bins |
|
163 echo "Trying $DATA..." |
|
164 install_data |
|
165 if [ "$?" -eq "1" ] ; then |
|
166 echo "Error: unable to find a directory to write templates, aborting." |
|
167 exit 2 |
|
168 fi |
|
169 fi |
|
170 set -o errexit |
|
171 |
|
172 # additionnal files |
|
173 mkdir -p $GLADE 2>/dev/null || true |
|
174 if [ -w $GLADE ] ; then |
|
175 echo "Installing additionnal files in $GLADE" |
|
176 cp bins-edit-gui.glade $GLADE |
|
177 fi |
|
178 |
|
179 # man pages |
|
180 mkdir -p $MAN 2>/dev/null || true |
|
181 if [ -w $MAN ] ; then |
|
182 echo "Installing man page in $MAN" |
|
183 cp doc/*.1 $MAN |
|
184 fi |
|
185 |
|
186 # bash completion |
|
187 if [ -w $ETC/bash_completion.d ] ; then |
|
188 echo "Installing bash completion system wide." |
|
189 cp -f bash_completion $ETC/bash_completion.d/bins |
|
190 else |
|
191 mkdir ~/.bash_completion 2>/dev/null || true |
|
192 if [ -w ~/.bash_completion ] ; then |
|
193 echo "Installing bash completion for user `whoami`." |
|
194 cp -f bash_completion ~/.bash_completion/bins |
|
195 fi |
|
196 fi |
|
197 |
|
198 # I18N files |
|
199 mkdir -p $LOCALE 2>/dev/null || true |
|
200 if [ -w $LOCALE ] ; then |
|
201 echo "Installing internationalization messages files." |
|
202 for L in $langs |
|
203 do |
|
204 mkdir -p $LOCALE/$L/LC_MESSAGES 2>/dev/null || true |
|
205 cp intl/$L.mo $LOCALE/$L/LC_MESSAGES/bins.mo |
|
206 if [ -f intl/gui-$L.mo ]; then |
|
207 cp intl/gui-$L.mo $LOCALE/$L/LC_MESSAGES/bins-edit-gui.mo |
|
208 fi |
|
209 done |
|
210 else |
|
211 cat <<!EoF |
|
212 |
|
213 ***************************** Warning ********************************** |
|
214 Cannot install internationalization messages files and additional |
|
215 files. If you want to generate HTML albums in non-english langage, |
|
216 use bins-edit-gui or install the man pages, then you must run this |
|
217 install program as root. |
|
218 ************************************************************************ |
|
219 |
|
220 !EoF |
|
221 fi |
|
222 |
|
223 set +o errexit |
|
224 # set directory paths in source code |
|
225 echo -n "setting directory paths in programs :" |
|
226 for FILE in "$BIN/bins" "$BIN/bins_edit" "$BIN/bins-edit-gui" |
|
227 do |
|
228 echo -n " $FILE" |
|
229 ed "$FILE" <<EoF 2>/dev/null |
|
230 1,\$s%/usr/local/share%$SHARE%g |
|
231 1,\$s%/etc/bins%$GLOBAL_RC%g |
|
232 wq |
|
233 EoF |
|
234 done |
|
235 echo . |
|
236 echo |
|
237 echo "Installation complete" |