Hush a warning about XML_Size not being an int
[Evergreen.git] / install.sh
1 #!/bin/bash
2 # --------------------------------------------------------------------
3 # Copyright (C) 2005  Georgia Public Library Service 
4 # Bill Erickson <highfalutin@gmail.com>
5 #
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 # --------------------------------------------------------------------
16
17
18 # --------------------------------------------------------------------
19 # ILS install script
20 # --------------------------------------------------------------------
21 CONFIG_FILE="install.conf";
22 DEFAULT_CONFIG_FILE="install.conf.default";
23 verbose="-s" #clear this to get full build output
24
25
26 # --------------------------------------------------------------------
27 # Loads all of the path information from the user setting 
28 # install variables as it goes
29 # --------------------------------------------------------------------
30
31 function fail {
32         MSG="$1";
33         echo "A build error occured: $MSG";
34         exit 99;
35 }
36
37
38 #function postMessage {
39
40 #cat <<-WORDS
41 #       --------------------------------------------------------------------
42
43
44 #}
45
46
47
48 # --------------------------------------------------------------------
49 # Makes sure the install directories exist and are writable
50 # --------------------------------------------------------------------
51
52 function mkDir {
53         mkdir -p "$1";
54         [ "$?" != "0" ] && fail "Error creating $1";
55         [ ! -w "$1" ] && fail "We don't have write access to $1";
56 }
57
58 function mkInstallDirs {
59
60         installing      && mkDir "$PREFIX";
61         building        && mkDir "$TMP";
62         installing      && mkDir "$SOCK";
63         installing      && mkDir "$PID";
64         installing      && mkDir "$LOG";
65
66
67         # add the opensrf user and group
68          if installing; then
69                 if [ ! $(grep "^opensrf:" /etc/group) ]; then groupadd opensrf; fi
70                 if [ ! $(grep "^opensrf:" /etc/passwd) ]; then useradd -g opensrf opensrf; fi
71         fi;
72
73 }
74
75 function installing {
76         if [ -z "$INSTALLING" ]; then return 1; fi;
77         return 0;
78 }
79
80 function building {
81         if [ -z "$BUILDING" ]; then return 1; fi;
82         return 0;
83 }
84
85
86
87 # --------------------------------------------------------------------
88 # Loads the config file.  If it can't fine CONFIG_FILE, it attempts to
89 # use DEFAULT_CONFIG_FILE.  If it can't find that, it fails.
90 # --------------------------------------------------------------------
91 function loadConfig {
92         if [ ! -f "$CONFIG_FILE" ]; then
93                 if [ -f "$DEFAULT_CONFIG_FILE" ]; then
94                         echo "+ + + Copying $DEFAULT_CONFIG_FILE to $CONFIG_FILE and using its settings...";
95                         cp "$DEFAULT_CONFIG_FILE" "$CONFIG_FILE";
96                 else
97                         fail "config file \"$CONFIG_FILE\" cannot be found";
98                 fi
99         fi
100         source "$CONFIG_FILE";
101 }
102
103
104
105
106 function runInstall {
107
108         # pass the collected variables to make
109         for target in ${TARGETS[@]:0}; do
110
111                 echo ""
112                 echo "-------------- [ $target ] -------------------------------------------";
113                 echo ""
114
115                 MAKE="make $verbose APXS2=$APXS2 PREFIX=$PREFIX TMP=$TMP APR_HEADERS=$APR_HEADERS \
116                         APACHE2_HEADERS=$APACHE2_HEADERS LIBXML2_HEADERS=$LIBXML2_HEADERS DBPORT=$DBPORT\
117                         BINDIR=$BINDIR DBI_LIBS=$DBI_LIBS LIBDIR=$LIBDIR PERLDIR=$PERLDIR INCLUDEDIR=$INCLUDEDIR \
118                         WEBDIR=$WEBDIR TEMPLATEDIR=$TEMPLATEDIR ETCDIR=$ETCDIR REPORTERDIR=$REPORTERDIR\
119                         OPENSRF_HEADERS=$OPENSRF_HEADERS OPENSRF_LIBS=$OPENSRF_LIBS OPENILSDIR=$OPENILSDIR EVERGREENDIR=$EVERGREENDIR \
120                         CIRCRULESDIR=$CIRCRULESDIR CATALOGSCRIPTDIR=$CATALOGSCRIPTDIR CGIDIR=$CGIDIR \
121                         DBDRVR=$DBDRVR DBHOST=$DBHOST DBVER=$DBVER DATADIR=$DATADIR ADMINDIR=$ADMINDIR\
122                         PENALTYRULESDIR=$PENALTYRULESDIR DBNAME=$DBNAME DBUSER=$DBUSER DBPW=$DBPW XSLDIR=$XSLDIR NEW_OPAC_URL=$NEW_OPAC_URL \
123                         NEW_XUL_PACKAGE_NAME=$NEW_XUL_PACKAGE_NAME NEW_XUL_PACKAGE_LABEL=$NEW_XUL_PACKAGE_LABEL";
124
125
126                 case "$target" in
127         
128                         # OpenILS ---                   
129
130                         "openils_all" )
131                                 if building;    then $MAKE -C "$OPENILSDIR" all; fi;
132                                 if installing; then $MAKE -C "$OPENILSDIR" install; fi;
133                                 ;;
134
135                         "openils_core" )
136                                 if building; then $MAKE -C "$OPENILSDIR" "c_apps"; fi;
137                                 if installing; then 
138                                         $MAKE -C "$OPENILSDIR" "perl-install"; 
139                                         $MAKE -C "$OPENILSDIR" "string-templates-install"; 
140                                         $MAKE -C "$OPENILSDIR" "xsl-install"; 
141                                         $MAKE -C "$OPENILSDIR" "c_apps-install"; 
142                                         $MAKE -C "$OPENILSDIR" "circ_rules-install"; 
143                                         $MAKE -C "$OPENILSDIR" "autojs-install"; 
144                                 fi;
145                                 ;;
146
147                         "openils_web" )
148                                 if building; then $MAKE -C "$OPENILSDIR" "mod_xmlent"; fi;
149                                 #if building; then $MAKE -C "$OPENILSDIR" "mod_ils_rest_gateway"; fi;
150                                 if installing; then
151                                         $MAKE -C "$OPENILSDIR" "web-install";
152                                         $MAKE -C "$OPENILSDIR" "cgi-bootstrap";
153                                         $MAKE -C "$OPENILSDIR" "reporter-install";
154                                 fi;
155                                 ;;
156
157                         "openils_marcdumper" )
158                                 if building;    then $MAKE -C "$OPENILSDIR" "marcdumper"; fi;
159                                 if installing; then $MAKE -C "$OPENILSDIR" "marcdumper-install"; fi;
160                                 ;;
161
162                         "openils_db" )
163                                 if installing; then 
164                                         $MAKE -C "$OPENILSDIR" "storage-bootstrap"; 
165                                 fi;
166                                 ;;
167
168                         "openils_reporter" )
169                                 if installing; then 
170                                         $MAKE -C "$OPENILSDIR" "reporter-install";
171                                 fi;
172                                 ;;
173
174                         "openils_client_xul" )
175                                 if building; then
176                                         $MAKE -C "$OPENILSDIR" "client-xul";
177                                 fi;
178                                 ;;
179
180                         "openils_server_xul" )
181                                 if installing; then
182                                         $MAKE -C "$OPENILSDIR" "server-xul";
183                                 fi;
184                                 ;;
185
186                         # Evergreen ---                         
187
188                         "evergreen_core" )
189                                 if installing;  then $MAKE -C "$EVERGREENDIR" "install"; fi;
190                                 ;;      
191
192                         "evergreen_xul_client" )
193                                 if building;    then $MAKE -C "$EVERGREENDIR" xul; fi;
194                                 ;;
195
196
197                         *) fail "Unknown target: $target";;
198
199                 esac
200
201         done
202
203         if installing; then
204                 echo -e "\nNow run: chown -R opensrf:opensrf $PREFIX"
205         fi
206 }
207
208
209 # --------------------------------------------------------------------
210 # Checks command line parameters for special behavior
211 # Supported params are:
212 # clean - cleans all build files
213 # build - builds the specified sources
214 # install - installs the specified sources
215 # --------------------------------------------------------------------
216 function checkParams {
217
218         if [ -z "$1" ]; then usage; fi;
219
220         for arg in "$@"; do
221
222                 lastArg="$arg";
223
224                 case "$arg" in
225
226                         "clean") 
227                                 cleanMe;;
228
229                         "build")
230                                 BUILDING="1";;
231
232                         "install")
233                                 INSTALLING="1";;
234                         
235                         "verbose")
236                                 verbose="";;
237
238                         *) fail "Unknown option => $arg";
239                 esac
240         done
241
242         if [ "$lastArg" = "clean" ]; then exit 0; fi;
243 }
244
245
246 function cleanMe {
247         loadConfig;
248         make "TMP=$TMP" -s -C "$OPENILSDIR"  clean;
249         make "TMP=$TMP" -s -C "$EVERGREENDIR" clean;
250 }
251
252 function usage {
253         echo "usage: $0 [ build | install | clean ]";
254         exit;
255 }
256
257 checkParams "$@";
258
259 if building; then echo "Building..."; fi;
260 if installing; then echo "Installing..."; fi;
261
262
263 # --------------------------------------------------------------------
264 # Kick it off...
265 # --------------------------------------------------------------------
266 loadConfig;
267 mkInstallDirs;
268 runInstall;
269
270
271