Bug Fixing Merge problem
[koha.git] / rewrite-config.PL
index d17387e..6167c5e 100644 (file)
@@ -17,6 +17,8 @@
 #
 # Current maintainer MJR http://mjr.towers.org.uk/
 # See http://www.koha.org/wiki/?page=KohaInstaller
 #
 # Current maintainer MJR http://mjr.towers.org.uk/
 # See http://www.koha.org/wiki/?page=KohaInstaller
+# 
+# 2007/11/12   Added DB_PORT and changed other keywords to reflect multi-dbms support. -fbcit
 
 use Sys::Hostname;
 use Socket;
 
 use Sys::Hostname;
 use Socket;
@@ -31,43 +33,104 @@ rewrite-config.PL - helper for the Koha packager and installer
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-This helper script replaces placeholders in the
+This helper script replaces keywords in the
 configuration files with value either supplied through
 the environment (with export, or by putting them on
 configuration files with value either supplied through
 the environment (with export, or by putting them on
-the start of the make command linke) or with reasonable
+the start of the make command line) or with reasonable
 guesses worked out by the script.
 
 guesses worked out by the script.
 
-=head2 KEYS
+=head2 KEYWORDS
 
 
-The following configuration keys are available:
+The following configuration keywords are available:
 
 
-BASE_DIR, MYSQL_DB, MYSQL_HOST, MYSQL_PASS, MYSQL_USER, WEBMASTER_EMAIL, WEBSERVER_DOMAIN,
+PREFIX,
+BASE_DIR, CGI_DIR, LOG_DIR, INSTALL_BASE,
+DB_TYPE, DB_HOST, DB_PORT, DB_NAME, DB_PASS, DB_USER, WEBMASTER_EMAIL, WEBSERVER_DOMAIN,
 WEBSERVER_HOST, WEBSERVER_IP, WEBSERVER_PORT, WEBSERVER_PORT_LIBRARIAN, ZEBRA_PASS, ZEBRA_USER
 
 WEBSERVER_HOST, WEBSERVER_IP, WEBSERVER_PORT, WEBSERVER_PORT_LIBRARIAN, ZEBRA_PASS, ZEBRA_USER
 
+=head1 EXAMPLES
+
+To override the guessed hostname and email address, run:
+
+       WEBSERVER_HOST=mysecrethostname.com.invalid \
+       WEBMASTER_EMAIL=webmaster@publichost.com make install
+
+Note that if WEBSERVER_HOST does not resolve to an IP address, you will
+also need to override WEBSERVER_IP.
+
 =cut
 
 $myhost = hostname();
 $mydomain = $myhost;
 $mydomain =~ s/^.*?\.//;
 =cut
 
 $myhost = hostname();
 $mydomain = $myhost;
 $mydomain =~ s/^.*?\.//;
+# This is set here to rescue systems with broken DNS
+if ( !gethostbyname( $myhost || 'localhost' ) ) {
+    die 'Could not get the IP address of ' . ( $myhost || 'localhost' ) . ', DNS fault?';
+}
+
+$myip = $ENV{'WEBSERVER_IP'} || inet_ntoa( scalar gethostbyname( $myhost||'localhost' ) );
+$prefix = $ENV{'INSTALL_BASE'} || "/usr";
 
 # These are our configuration guesses
 # Keys were extracted by
 # <grep -o '__.*__' etc/* | cut -f2 -d: | sort -u | sed -e 's/^/  "/;s/$/" => "",/'
 %configuration = (
 
 # These are our configuration guesses
 # Keys were extracted by
 # <grep -o '__.*__' etc/* | cut -f2 -d: | sort -u | sed -e 's/^/  "/;s/$/" => "",/'
 %configuration = (
-  "__BASE_DIR__" => sprintf("/usr/lib/perl5/site-perl/%vd/koha",$^V),
-  "__MYSQL_DB__" => "koha",
-  "__MYSQL_HOST__" => $myhost,
-  "__MYSQL_PASS__" => "katikoan",
-  "__MYSQL_USER__" => "kohaadmin",
+  "__KOHA_INSTALLED_VERSION__" => "no_version_found",
+  "__LOG_DIR__" => "/var/log",
+  "__DB_TYPE__" => "mysql",
+  "__DB_NAME__" => "koha",
+  "__DB_HOST__" => $myhost,
+  "__DB_PORT__" => "3306",
+  "__DB_USER__" => "kohaadmin",
+  "__DB_PASS__" => "katikoan",
   "__WEBMASTER_EMAIL__" => 'webmaster@'.$mydomain,
   "__WEBSERVER_DOMAIN__" => $mydomain,
   "__WEBSERVER_HOST__" => $myhost,
   "__WEBMASTER_EMAIL__" => 'webmaster@'.$mydomain,
   "__WEBSERVER_DOMAIN__" => $mydomain,
   "__WEBSERVER_HOST__" => $myhost,
-  # This is set like this to rescue systems with broken DNS
-  "__WEBSERVER_IP__" => $ENV{'WEBSERVER_IP'} || inet_ntoa(scalar gethostbyname($myhost||'localhost')) || die "Cannot get our own IP address: DNS fault?",
-  "__WEBSERVER_PORT__" => 80,
-  "__WEBSERVER_PORT_LIBRARIAN__" => 8080,
+  "__WEBSERVER_IP__" => $myip,
+  "__WEBSERVER_PORT__" => "80",
+  "__WEBSERVER_PORT_LIBRARIAN__" => "8080",
+  "__ZEBRA_SRU_HOST__" => $myhost,
+  "__ZEBRA_SRU_BIBLIOS_PORT__" => "9998",
+  "__ZEBRA_SRU_AUTHORITIES_PORT__" => "9999",
+  "__KOHA_USER__" => "koha",
+  "__KOHA_GROUP__" => "koha",
   "__ZEBRA_PASS__" => "zebrastripes",
   "__ZEBRA_USER__" => "kohauser",
   "__ZEBRA_PASS__" => "zebrastripes",
   "__ZEBRA_USER__" => "kohauser",
+  '__INTRANET_CGI_DIR__' => "$prefix/intranet/cgi-bin",
+  '__INTRANET_TMPL_DIR__' => "$prefix/intranet/templates",
+  '__INTRANET_WWW_DIR__' => "$prefix/intranet/www",
+  '__OPAC_CGI_DIR__' => "$prefix/opac/cgi-bin",
+  '__OPAC_TMPL_DIR__' => "$prefix/opac/templates",
+  '__OPAC_WWW_DIR__' => "$prefix/opac/www",
+  '__PERL_MODULE_DIR__' =>  ($ENV{'INSTALLSITELIB'} || sprintf($prefix."/lib/perl5/site_perl/%vd",$^V))."/koha",
+  '__KOHA_CONF_DIR__' => "$prefix/etc/koha",
+  '__ZEBRA_CONF_DIR__' => "$prefix/etc/koha/zebradb",
+  '__PAZPAR2_CONF_DIR__' => "$prefix/etc/koha/pazpar2",
+  '__MISC_DIR__' => "$prefix/misc",
+  '__SCRIPT_DIR__' => "$prefix/bin",
+  '__MAN_DIR__' => "$prefix/man",
+  '__DOC_DIR__' => "$prefix/doc",
+  '__ZEBRA_LOCK_DIR__' => "$prefix/var/lock/zebradb",
+  '__ZEBRA_DATA_DIR__' => "$prefix/var/lib/zebradb",
+  '__ZEBRA_RUN_DIR__' => "$prefix/var/run/zebradb",
+  '__ZEBRA_MARC_FORMAT__' => 'marc21',
+  '__ZEBRA_LANGUAGE__' => 'en',
+  '__ZEBRA_AUTH_CFG__' => 'zebra-authorities.cfg',
+  '__AUTH_RETRIEVAL_CFG__' => 'retrieval-info-auth-grs1.xml',
+  "__MERGE_SERVER_HOST__" => $myhost,
+  "__MERGE_SERVER_PORT__" => '11001',
+  "__PAZPAR2_HOST__" => $myhost,
+  "__PAZPAR2_PORT__" => '11002',
+  "__INSTALL_MODE__" => 'standard',
+  "__INSTALL_BASE__" => '/usr/share/koha',
+  "__INSTALL_ZEBRA__" => 'yes',
+  "__INSTALL_SRU__" => 'yes',
+  "__INSTALL_PAZPAR2__" => 'no',
+  "__PAZPAR2_TOGGLE_XML_PRE__" => '<!--',
+  "__PAZPAR2_TOGGLE_XML_POST__" => '-->',
+  "__AUTH_INDEX_MODE__" => 'grs1',
+  "__RUN_DATABASE_TESTS__" => 'no',
+  "__PATH_TO_ZEBRA__" => "",
 );
 
 # Override configuration from the environment
 );
 
 # Override configuration from the environment
@@ -77,14 +140,32 @@ foreach $key (keys %configuration) {
   }
 }
 
   }
 }
 
+# munge commenting out the PazPar2 mergeserver
+# entry in koha-conf.xml if necessary
+if ($configuration{'__INSTALL_PAZPAR2__'} eq 'yes') {
+    $configuration{'__PAZPAR2_TOGGLE_XML_PRE__'} = '';
+    $configuration{'__PAZPAR2_TOGGLE_XML_POST__'} = '';
+}
+
 $fname = $ARGV[0];
 $fname = $ARGV[0];
-$file = read_file($fname);
-$file =~ s/__.*?__/$configuration{$&}/seg;
-chmod 0644, $fname;
+$file = &read_file($fname);
+$file =~ s/__.*?__/exists $configuration{$&} ? $configuration{$&} : $&/seg;
+
+# At this point, file is in 'blib' and by default
+# has mode a-w.  Therefore, must change permission
+# to make it writable.  Note that stat and chmod
+# (the Perl functions) should work on Win32
+my $old_perm;
+$old_perm = (stat $fname)[2] & 07777;
+my $new_perm = $old_perm | 0200;
+chmod $new_perm, $fname;
+
 open(OUTPUT,">$fname") || die "Can't open $fname for write: $!";
 print OUTPUT $file;
 close(OUTPUT);
 
 open(OUTPUT,">$fname") || die "Can't open $fname for write: $!";
 print OUTPUT $file;
 close(OUTPUT);
 
+chmod $old_perm, $fname;
+
 # Idea taken from perlfaq5
 sub read_file($) {
   local(*INPUT,$/);
 # Idea taken from perlfaq5
 sub read_file($) {
   local(*INPUT,$/);