2 # --------------------------------------------------------------------
3 # Copyright (C) 2005 Georgia Public Library Service
4 # Bill Erickson <highfalutin@gmail.com>
5 # Mike Rylander <mrylander@gmail.com>
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 # --------------------------------------------------------------------
19 # --------------------------------------------------------------------
20 # Prompts the user for config settings and writes a custom config
21 # file based on these settings
22 # --------------------------------------------------------------------
25 CONFIG_FILE="install.conf";
26 DEFAULT_CONFIG_FILE="install.conf.default";
29 function buildConfig {
31 if [ -f "$CONFIG_FILE" ]; then
32 source "$CONFIG_FILE";
34 if [ -f "$DEFAULT_CONFIG_FILE" ]; then
35 source "$DEFAULT_CONFIG_FILE";
39 if [ -n "$USE_DEFAULT" ]; then
40 prompt "Default config requested, not prompting for values...\n";
47 echo "-----------------------------------------------------------------------";
48 echo "Type Enter to select the default"
49 echo "-----------------------------------------------------------------------";
51 prompt "Install prefix [$PREFIX] ";
52 read X; if [ ! -z "$X" ]; then PREFIX="$X"; fi
54 BINDIR="$PREFIX/bin/";
55 LIBDIR="$PREFIX/lib/";
56 PERLDIR="$LIBDIR/perl5/";
57 INCLUDEDIR="$PREFIX/include/";
58 ETCDIR="$PREFIX/conf";
59 WEBDIR="$PREFIX/var/web";
60 DATADIR="$PREFIX/var/data";
61 CGIDIR="$PREFIX/var/cgi-bin";
62 TEMPLATEDIR="$PREFIX/var/templates";
63 CIRCRULESDIR="$PREFIX/var/circ";
64 CATALOGSCRIPTDIR="$PREFIX/var/catalog";
65 PENALTYRULESDIR="$PREFIX/var/penalty";
66 XSLDIR="$PREFIX/var/xsl";
67 REPORTERDIR="$PREFIX/var/web/reporter";
69 ADMINDIR="$PREFIX/var/admin";
71 prompt "Apache2 apxs binary [$APXS2] "
72 read X; if [ ! -z "$X" ]; then APXS2="$X"; fi;
74 prompt "Apache2 headers directory [$APACHE2_HEADERS] "
75 read X; if [ ! -z "$X" ]; then APACHE2_HEADERS="$X"; fi;
77 prompt "Apache2 APR headers directory [$APR_HEADERS] "
78 read X; if [ ! -z "$X" ]; then APR_HEADERS="$X"; fi;
80 prompt "Libdbi libraries directory [$DBI_LIBS] "
81 read X; if [ ! -z "$X" ]; then DBI_LIBS="$X"; fi;
83 prompt "Libxml2 headers directory [$LIBXML2_HEADERS] "
84 read X; if [ ! -z "$X" ]; then LIBXML2_HEADERS="$X"; fi;
86 prompt "OpenSRF headers directory [$OPENSRF_HEADERS] "
87 read X; if [ ! -z "$X" ]; then OPENSRF_HEADERS="$X"; fi;
89 prompt "OpenSRF libraries directory [$OPENSRF_LIBS] "
90 read X; if [ ! -z "$X" ]; then OPENSRF_LIBS="$X"; fi;
92 prompt "Build targets [${TARGETS[@]:0}] "
93 read X; if [ ! -z "$X" ]; then TARGETS=("$X"); fi;
95 prompt "Should we build Python modules? (Y/N) [$EG_PYTHON_INSTALL] "
98 then EG_PYTHON_INSTALL="Y";
99 else EG_PYTHON_INSTALL="";
102 prompt "Database Driver [$DBDRVR] "
103 read X; if [ ! -z "$X" ]; then DBDRVR="$X"; fi;
105 if [ "$DBDRVR" == "Pg" ]; then
106 prompt "Bootstrapping Database Version (80 for 8.0.x, 81 for 8.1.x, 82 for 8.2.x) [$DBVER] "
107 read X; if [ ! -z "$X" ]; then DBVER="$X"; fi;
110 prompt "Database Host [$DBHOST] "
111 read X; if [ ! -z "$X" ]; then DBHOST="$X"; fi;
113 prompt "Database Port [$DBPORT] "
114 read X; if [ ! -z "$X" ]; then DBPORT="$X"; fi;
116 prompt "Database Name [$DBNAME] "
117 read X; if [ ! -z "$X" ]; then DBNAME="$X"; fi;
119 prompt "Database User [$DBUSER] "
120 read X; if [ ! -z "$X" ]; then DBUSER="$X"; fi;
122 prompt "Database Password [$DBPW] "
123 read X; if [ ! -z "$X" ]; then DBPW="$X"; fi;
125 prompt "Reporter Template Directory [$REPORTERDIR] "
126 read X; if [ ! -z "$X" ]; then REPORTERDIR="$X"; fi;
131 function prompt { echo ""; echo -en "$*"; }
133 function writeConfig {
135 rm -f "$CONFIG_FILE";
136 echo "Writing installation config to $CONFIG_FILE...";
138 _write "PREFIX=\"$PREFIX\"";
139 _write "BINDIR=\"$BINDIR\"";
140 _write "LIBDIR=\"$LIBDIR\"";
141 _write "PERLDIR=\"$PERLDIR\"";
142 _write "INCLUDEDIR=\"$INCLUDEDIR\"";
143 _write "SOCK=\"$PREFIX/var/sock\"";
144 _write "PID=\"$PREFIX/var/pid\"";
145 _write "LOG=\"$PREFIX/var/log\"";
146 _write "DATADIR=\"$DATADIR\"";
148 _write "TMP=\"$TMP\"";
149 _write "APXS2=\"$APXS2\"";
150 _write "APACHE2_HEADERS=\"$APACHE2_HEADERS\"";
151 _write "APR_HEADERS=\"$APR_HEADERS\"";
152 _write "DBI_LIBS=\"$DBI_LIBS\"";
153 _write "LIBXML2_HEADERS=\"$LIBXML2_HEADERS\"";
155 _write "OPENSRF_HEADERS=\"$OPENSRF_HEADERS\"";
156 _write "OPENSRF_LIBS=\"$OPENSRF_LIBS\"";
158 _write "WEBDIR=\"$WEBDIR\"";
159 _write "TEMPLATEDIR=\"$TEMPLATEDIR\"";
160 _write "ETCDIR=\"$ETCDIR\"";
161 _write "CIRCRULESDIR=\"$CIRCRULESDIR\"";
162 _write "CATALOGSCRIPTDIR=\"$CATALOGSCRIPTDIR\"";
163 _write "PENALTYRULESDIR=\"$PENALTYRULESDIR\"";
164 _write "XSLDIR=\"$XSLDIR\"";
166 # print out the targets
168 for target in ${TARGETS[@]:0}; do
169 STR="$STR \"$target\"";
174 _write "EG_PYTHON_INSTALL=\"$EG_PYTHON_INSTALL\"";
175 _write "OPENILSDIR=\"Open-ILS/src/\"";
176 _write "EVERGREENDIR=\"Evergreen/\"";
179 _write "CGIDIR=\"$CGIDIR\"";
182 _write "DBDRVR=\"$DBDRVR\"";
183 _write "DBHOST=\"$DBHOST\"";
184 _write "DBPORT=\"$DBPORT\"";
185 _write "DBNAME=\"$DBNAME\"";
186 _write "DBUSER=\"$DBUSER\"";
187 _write "DBPW=\"$DBPW\"";
188 _write "DBVER=\"$DBVER\"";
189 _write "REPORTERDIR=\"$REPORTERDIR\"";
190 _write "ADMINDIR=\"$ADMINDIR\"";
193 # Now we'll write out the DB bootstrapping config
194 CONFIG_FILE='Open-ILS/src/cgi-bin/setup.pl';
195 rm -f "$CONFIG_FILE";
196 echo "Writing bootstrapping config to $CONFIG_FILE...";
198 STR='$main::config{dsn} =';
199 STR="$STR 'dbi:${DBDRVR}:host=";
200 STR="${STR}${DBHOST};dbname=";
201 STR="${STR}${DBNAME};port=";
202 STR="${STR}${DBPORT}';";
205 STR='$main::config{usr} =';
206 STR="$STR '$DBUSER';";
209 STR='$main::config{pw} =';
213 _write '$main::config{index} = "config.cgi";';
216 # --------------------------------------------------------------------
217 # Now we'll write out the offline config
218 CONFIG_FILE='Open-ILS/src/offline/offline-config.pl';
219 rm -f "$CONFIG_FILE";
220 echo "Writing bootstrapping config to $CONFIG_FILE...";
222 _write "\$main::config{base_dir} = '$PREFIX/var/data/offline/';";
223 _write "\$main::config{bootstrap} = '$ETCDIR/opensrf_core.xml';";
225 STR='$main::config{dsn} =';
226 STR="$STR 'dbi:${DBDRVR}:host=";
227 STR="${STR}${DBHOST};dbname=";
228 STR="${STR}${DBNAME};port=";
229 STR="${STR}${DBPORT}';";
232 STR='$main::config{usr} =';
233 STR="$STR '$DBUSER';";
236 STR='$main::config{pw} =';
239 # --------------------------------------------------------------------
244 prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
245 prompt "!! If installing openils_all / openils_db !!";
246 prompt "!! Before running 'make install' you MUST !!";
247 prompt "!! create a database for Open-ILS. Use !!";
248 prompt "!! the settings that you listed above and !!";
249 prompt "!! the install scripts will create the !!";
250 prompt "!! database for you. -miker !!";
251 prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
255 prompt "To write a new config, run 'make config'";
257 prompt "To edit individual install locations (e.g. changing the lib directory),"
258 prompt "edit the install.conf file generated from this script"
264 echo "$*" >> "$CONFIG_FILE";