throw error on "optimistic locking" failure detection
[Evergreen.git] / config.sh
1 #!/bin/bash
2 # --------------------------------------------------------------------
3 # Copyright (C) 2005  Georgia Public Library Service 
4 # Bill Erickson <highfalutin@gmail.com>
5 # Mike Rylander <mrylander@gmail.com>
6 #
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.
11 #
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 # --------------------------------------------------------------------
17
18
19 # --------------------------------------------------------------------
20 # Prompts the user for config settings and writes a custom config
21 # file based on these settings
22 # --------------------------------------------------------------------
23
24
25 CONFIG_FILE="install.conf";
26 DEFAULT_CONFIG_FILE="install.conf.default";
27
28 function buildConfig {
29
30         if [ -f "$DEFAULT_CONFIG_FILE" ]; then
31                 source "$DEFAULT_CONFIG_FILE";
32         fi;
33
34
35         echo "";
36         echo "-----------------------------------------------------------------------";
37         echo "Type Enter to select the default"
38         echo "-----------------------------------------------------------------------";
39
40         prompt "Install prefix [$PREFIX] ";
41         read X; if [ ! -z "$X" ]; then PREFIX="$X"; fi
42
43         BINDIR="$PREFIX/bin/";
44         LIBDIR="$PREFIX/lib/";
45         PERLDIR="$LIBDIR/perl5/";
46         INCLUDEDIR="$PREFIX/include/";
47         ETCDIR="$PREFIX/conf";
48         WEBDIR="$PREFIX/var/web";
49         CGIDIR="$PREFIX/var/cgi-bin";
50         TEMPLATEDIR="$PREFIX/var/templates";
51         CIRCRULESDIR="$PREFIX/var/circ";
52         XSLDIR="$PREFIX/var/xsl";
53         TMP="$(pwd)/.tmp";
54
55         prompt "Web domain for OPAC in Staff Client [$NEW_OPAC_URL] "
56         read X; if [ ! -z "$X" ]; then NEW_OPAC_URL="$X"; fi;
57
58         prompt "Package Name for Staff Client [$NEW_XUL_PACKAGE_NAME] "
59         read X; if [ ! -z "$X" ]; then NEW_XUL_PACKAGE_NAME="$X"; fi;
60
61         prompt "Package Label for Staff Client [$NEW_XUL_PACKAGE_LABEL] "
62         read X; if [ ! -z "$X" ]; then NEW_XUL_PACKAGE_LABEL="$X"; fi;
63
64         prompt "Apache2 apxs binary [$APXS2] "
65         read X; if [ ! -z "$X" ]; then APXS2="$X"; fi;
66
67         prompt "Apache2 headers directory [$APACHE2_HEADERS] "
68         read X; if [ ! -z "$X" ]; then APACHE2_HEADERS="$X"; fi;
69
70         prompt "Libxml2 headers directory [$LIBXML2_HEADERS] "
71         read X; if [ ! -z "$X" ]; then LIBXML2_HEADERS="$X"; fi;
72
73         prompt "Build targets [${TARGETS[@]:0}] "
74         read X; if [ ! -z "$X" ]; then TARGETS=("$X"); fi;
75
76         prompt "Bootstrapping Database Driver [$DBDRVR] "
77         read X; if [ ! -z "$X" ]; then DBDRVR="$X"; fi;
78
79         prompt "Bootstrapping Database Host [$DBHOST] "
80         read X; if [ ! -z "$X" ]; then DBHOST="$X"; fi;
81
82         prompt "Bootstrapping Database Name [$DBNAME] "
83         read X; if [ ! -z "$X" ]; then DBNAME="$X"; fi;
84
85         prompt "Bootstrapping Database User [$DBUSER] "
86         read X; if [ ! -z "$X" ]; then DBUSER="$X"; fi;
87
88         prompt "Bootstrapping Database Password [$DBPW] "
89         read X; if [ ! -z "$X" ]; then DBPW="$X"; fi;
90
91         writeConfig;
92 }
93
94 function prompt { echo ""; echo -n "$*"; }
95
96 function writeConfig {
97
98         rm -f "$CONFIG_FILE";
99         echo "Writing installation config to $CONFIG_FILE...";
100
101         _write "PREFIX=\"$PREFIX\"";
102         _write "BINDIR=\"$BINDIR\"";
103         _write "LIBDIR=\"$LIBDIR\"";
104         _write "PERLDIR=\"$PERLDIR\"";
105         _write "INCLUDEDIR=\"$INCLUDEDIR\"";
106
107         _write "TMP=\"$TMP\"";
108         _write "APXS2=\"$APXS2\"";
109         _write "APACHE2_HEADERS=\"$APACHE2_HEADERS\"";
110         _write "LIBXML2_HEADERS=\"$LIBXML2_HEADERS\"";
111
112         _write "WEBDIR=\"$WEBDIR\"";
113         _write "TEMPLATEDIR=\"$TEMPLATEDIR\"";
114         _write "ETCDIR=\"$ETCDIR\"";
115         _write "CIRCRULESDIR=\"$CIRCRULESDIR\"";
116         _write "XSLDIR=\"$XSLDIR\"";
117
118         _write "NEW_OPAC_URL=\"$NEW_OPAC_URL\"";
119         _write "NEW_XUL_PACKAGE_NAME=\"$NEW_XUL_PACKAGE_NAME\"";
120         _write "NEW_XUL_PACKAGE_LABEL=\"$NEW_XUL_PACKAGE_LABEL\"";
121
122         # print out the targets
123         STR="TARGETS=(";
124         for target in ${TARGETS[@]:0}; do
125                 STR="$STR \"$target\"";
126         done;
127         STR="$STR)";
128         _write "$STR";
129
130         _write "OPENSRFDIR=\"OpenSRF/src/\"";
131         _write "OPENILSDIR=\"Open-ILS/src/\"";
132         _write "EVERGREENDIR=\"Evergreen/\"";
133
134
135         _write "CGIDIR=\"$CGIDIR\"";
136
137         # db vars
138         _write "DBDRVR=\"$DBDRVR\"";
139         _write "DBHOST=\"$DBHOST\"";
140         _write "DBNAME=\"$DBNAME\"";
141         _write "DBUSER=\"$DBUSER\"";
142         _write "DBPW=\"$DBPW\"";
143
144
145         # Now we'll write out the DB bootstrapping config
146         CONFIG_FILE='Open-ILS/src/cgi-bin/setup.pl';
147         rm -f "$CONFIG_FILE";
148         echo "Writing bootstrapping config to $CONFIG_FILE...";
149
150         STR='$main::config{dsn} =';
151                 STR="$STR 'dbi:${DBDRVR}:host=";
152                 STR="${STR}${DBHOST};dbname=";
153                 STR="${STR}${DBNAME}';";
154         _write "$STR"
155
156         STR='$main::config{usr} =';
157                 STR="$STR '$DBUSER';";
158         _write "$STR"
159         
160         STR='$main::config{pw} =';
161                 STR="$STR '$DBPW';";
162         _write "$STR"
163         
164         _write '$main::config{index} = "config.cgi";';
165
166
167         prompt "";
168         prompt "";
169         prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
170         prompt "!! If installing openils_all / openils_db !!";
171         prompt "!! Before running 'make install' you MUST !!";
172         prompt "!! create a database for Open-ILS.  Use   !!";
173         prompt "!! the settings that you listed above and !!";
174         prompt "!! the install scripts will create the    !!";
175         prompt "!! database for you.  -miker              !!";
176         prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
177         prompt "";
178         prompt "";
179
180         prompt "To write a new config, run 'make config'";
181         prompt "";
182         prompt "To edit individual install locations (e.g. changing the lib directory),"
183         prompt "edit the install.conf file generated from this script"
184
185 }
186
187 function _write {
188         echo "$*" >> "$CONFIG_FILE";
189 }
190
191
192
193 buildConfig;