RFID: don't reload catalogue search, don't pull reader on submit
[koha.git] / Makefile.PL
index 67faac9..ce323ef 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright 2007 MJ Ray
 # Copyright 2007 MJ Ray
+# Copyright 2016 PTFS Europe
 #
 # This file is part of Koha.
 #
 #
 # This file is part of Koha.
 #
@@ -23,7 +24,7 @@ use warnings;
 use ExtUtils::MakeMaker;
 use POSIX;
 use File::Spec;
 use ExtUtils::MakeMaker;
 use POSIX;
 use File::Spec;
-use Getopt::Long;
+use Getopt::Long qw/HelpMessage/;
 use FindBin; # we need to enforce which C4::Installer::PerlModule is used in case more than one is installed
 
 use lib $FindBin::Bin;
 use FindBin; # we need to enforce which C4::Installer::PerlModule is used in case more than one is installed
 
 use lib $FindBin::Bin;
@@ -72,6 +73,35 @@ Makefile.PL - Koha packager and installer
 
        make clean
 
 
        make clean
 
+=head2 CLI PARAMETERS
+
+    --prev-install-log           Read configuration from previous installation
+    --install_mode               Installation mode (dev, standard, single)
+    --db_type                    Database (mysql, Pg)
+    --db_host                    Database host (e.g. localhost)
+    --db_port                    Database port (e.g. 3306)
+    --db_name                    Database name (e.g. koha)
+    --db_user                    Database user (e.g. kohaadmin)
+    --db_pass                    Database password (e.g. katikoan)
+    --zebra_marc_format          Zebra MARC format (marc21, normarc, unimarc)
+    --zebra_language             Zebra language (e.g. en)
+    --zebra_tokenizer            Zebra tokenizer (chr, icu)
+    --zebra_user                 Zebra user (e.g. kohauser)
+    --zebra_pass                 Zebra password (e.g. zebrastripes)
+    --zebra_sru_host             Zebra SRU servername (e.g. localhost)
+    --zebra_sru_biblios_port     Zebra SRU biblios port (e.g. 9998)
+    --zebra_sru_authorities_port Zebra SRU biblios port (e.g. 9999)
+    --koha_user                  Koha Unix user (e.g. koha)
+    --koha_group                 Koha Unix group (e.g. koha)
+    --install_sru                Install the SRU server (yes, no)
+    --install_pazpar2            Install PazPar2 (yes, no)
+    --use_memcached              Use Memcached (yes, no)
+    --font_dir                   Location of fonts (e.g. /usr/share/fonts/truetype/ttf-dejavu)
+    --run_database_tests         Run database dependent tests (yes, no)
+    --install_base               Base directory of installation (e.g. /usr/share/koha)
+    --template-cache-dir         Specify a template cache directory (e.g. /var/cache/koha)
+    --help                       Display this help message
+
 =head1 DESCRIPTION
 
 This is a packager and installer that uses
 =head1 DESCRIPTION
 
 This is a packager and installer that uses
@@ -260,7 +290,7 @@ my $target_map = {
   './about.pl'                  => 'INTRANET_CGI_DIR',
   './acqui'                     => 'INTRANET_CGI_DIR',
   './admin'                     => 'INTRANET_CGI_DIR',
   './about.pl'                  => 'INTRANET_CGI_DIR',
   './acqui'                     => 'INTRANET_CGI_DIR',
   './admin'                     => 'INTRANET_CGI_DIR',
-  './api'                       => 'API_CGI_DIR',
+  './api'                       => { target => 'API_CGI_DIR', trimdir => -1 },
   './authorities'               => 'INTRANET_CGI_DIR',
   './basket'                    => 'INTRANET_CGI_DIR',
   './C4'                        => 'PERL_MODULE_DIR',
   './authorities'               => 'INTRANET_CGI_DIR',
   './basket'                    => 'INTRANET_CGI_DIR',
   './C4'                        => 'PERL_MODULE_DIR',
@@ -272,14 +302,15 @@ my $target_map = {
   './changelanguage.pl'         => 'INTRANET_CGI_DIR',
   './check_sysprefs.pl'         => 'NONE',
   './circ'                      => 'INTRANET_CGI_DIR',
   './changelanguage.pl'         => 'INTRANET_CGI_DIR',
   './check_sysprefs.pl'         => 'NONE',
   './circ'                      => 'INTRANET_CGI_DIR',
+  './clubs'                     => 'INTRANET_CGI_DIR',
   './course_reserves'           => 'INTRANET_CGI_DIR',
   './docs/history.txt'          => { target => 'DOC_DIR', trimdir => -1 },
   './course_reserves'           => 'INTRANET_CGI_DIR',
   './docs/history.txt'          => { target => 'DOC_DIR', trimdir => -1 },
-  './offline_circ'             => 'INTRANET_CGI_DIR',
-  './edithelp.pl'               => 'INTRANET_CGI_DIR',
+  './offline_circ'              => 'INTRANET_CGI_DIR',
   './etc'                       => { target => 'KOHA_CONF_DIR', trimdir => -1 },
   './etc/zebradb'               => { target => 'ZEBRA_CONF_DIR', trimdir => -1 },
   './etc/pazpar2'               => { target => 'PAZPAR2_CONF_DIR', trimdir => -1 },
   './help.pl'                   => 'INTRANET_CGI_DIR',
   './etc'                       => { target => 'KOHA_CONF_DIR', trimdir => -1 },
   './etc/zebradb'               => { target => 'ZEBRA_CONF_DIR', trimdir => -1 },
   './etc/pazpar2'               => { target => 'PAZPAR2_CONF_DIR', trimdir => -1 },
   './help.pl'                   => 'INTRANET_CGI_DIR',
+  './ill'                       => 'INTRANET_CGI_DIR',
   './installer-CPAN.pl'         => 'NONE',
   './installer'                 => 'INTRANET_CGI_DIR',
   './errors'                    => {target => 'INTRANET_CGI_DIR'},
   './installer-CPAN.pl'         => 'NONE',
   './installer'                 => 'INTRANET_CGI_DIR',
   './errors'                    => {target => 'INTRANET_CGI_DIR'},
@@ -339,10 +370,14 @@ my $target_map = {
                                            # that should go in /var/tmp/koha
   './tools'                     => 'INTRANET_CGI_DIR',
   './virtualshelves'            => 'INTRANET_CGI_DIR',
                                            # that should go in /var/tmp/koha
   './tools'                     => 'INTRANET_CGI_DIR',
   './virtualshelves'            => 'INTRANET_CGI_DIR',
-  './xml_sax.pl'                => 'PERL_MODULE_DIR',
   # ignore files and directories created by the install itself
   './pm_to_blib'                => 'NONE',
   './blib'                      => 'NONE',
   # ignore files and directories created by the install itself
   './pm_to_blib'                => 'NONE',
   './blib'                      => 'NONE',
+  '.sass-lint.yml'              => 'NONE',
+  '.scss-lint.yml'              => 'NONE',
+  'gulpfile.js'                 => 'NONE',
+  'package.json'                => 'NONE',
+  'yarn.lock'                   => 'NONE',
 };
 
 =head1 CONFIGURATION OPTIONS
 };
 
 =head1 CONFIGURATION OPTIONS
@@ -425,10 +460,12 @@ my %config_defaults = (
   'DB_NAME'           => 'koha',
   'DB_USER'           => 'kohaadmin',
   'DB_PASS'           => 'katikoan',
   'DB_NAME'           => 'koha',
   'DB_USER'           => 'kohaadmin',
   'DB_PASS'           => 'katikoan',
+  'DB_USE_TLS'       => 'no',
+  'DB_TLS_CA_CERTIFICATE'  => '/etc/mysql-ssl/server-ca.pem',
+  'DB_TLS_CLIENT_CERTIFICATE'  => '/etc/mysql-ssl/client-cert.pem',
+  'DB_TLS_CLIENT_KEY' => '/etc/mysql-ssl/client-key.pem',
   'INSTALL_SRU'       => 'yes',
   'INSTALL_PAZPAR2'   => 'no',
   'INSTALL_SRU'       => 'yes',
   'INSTALL_PAZPAR2'   => 'no',
-  'AUTH_INDEX_MODE'   => 'dom',
-  'BIB_INDEX_MODE'    => 'dom',
   'ZEBRA_MARC_FORMAT' => 'marc21',
   'ZEBRA_LANGUAGE'    => 'en',
   'ZEBRA_TOKENIZER'   => 'chr',
   'ZEBRA_MARC_FORMAT' => 'marc21',
   'ZEBRA_LANGUAGE'    => 'en',
   'ZEBRA_TOKENIZER'   => 'chr',
@@ -445,9 +482,10 @@ my %config_defaults = (
   'PAZPAR2_PORT' => '11002',
   'RUN_DATABASE_TESTS' => 'no',
   'PATH_TO_ZEBRA' => '',
   'PAZPAR2_PORT' => '11002',
   'RUN_DATABASE_TESTS' => 'no',
   'PATH_TO_ZEBRA' => '',
-  'USE_MEMCACHED'     => 'no',
+  'USE_MEMCACHED'     => 'yes',
   'MEMCACHED_SERVERS' => '127.0.0.1:11211',
   'MEMCACHED_NAMESPACE' => 'KOHA',
   'MEMCACHED_SERVERS' => '127.0.0.1:11211',
   'MEMCACHED_NAMESPACE' => 'KOHA',
+  'TEMPLATE_CACHE_DIR' => '/tmp/koha',
   'FONT_DIR'          => '/usr/share/fonts/truetype/ttf-dejavu'
 );
 
   'FONT_DIR'          => '/usr/share/fonts/truetype/ttf-dejavu'
 );
 
@@ -471,11 +509,10 @@ else {
 my %valid_config_values = (
   'INSTALL_MODE'  => { 'standard' => 1, 'single' => 1, 'dev' => 1 },
   'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 },
 my %valid_config_values = (
   'INSTALL_MODE'  => { 'standard' => 1, 'single' => 1, 'dev' => 1 },
   'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 },
+  'DB_USE_TLS' => {'yes', 'no'},
   'INSTALL_SRU' => { 'yes' => 1, 'no' => 1 },
   'INSTALL_SRU' => { 'yes' => 1, 'no' => 1 },
-  'AUTH_INDEX_MODE' => { 'grs1' => 1, 'dom' => 1 },
-  'BIB_INDEX_MODE'  => { 'grs1' => 1, 'dom' => 1 },
   'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'normarc' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
   'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'normarc' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
-  'ZEBRA_LANGUAGE'    => { 'en' => 1, 'es' => 1, 'fr' => 1, 'gr' => 1, 'nb' => 1, 'ru' => 1, 'uk' => 1 }, # FIXME should generate from contents of distribution
+  'ZEBRA_LANGUAGE'    => { 'cs' => 1, 'en' => 1, 'es' => 1, 'fr' => 1, 'gr' => 1, 'nb' => 1, 'ru' => 1, 'uk' => 1 }, # FIXME should generate from contents of distribution
   'ZEBRA_TOKENIZER' => { chr => 1, icu => 1 },
   'RUN_DATABASE_TESTS' => { 'yes' => 1, 'no' => 1 },
   'USE_MEMCACHED'      => { 'yes' => 1, 'no' => 1 },
   'ZEBRA_TOKENIZER' => { chr => 1, icu => 1 },
   'RUN_DATABASE_TESTS' => { 'yes' => 1, 'no' => 1 },
   'USE_MEMCACHED'      => { 'yes' => 1, 'no' => 1 },
@@ -483,14 +520,66 @@ my %valid_config_values = (
 
 # get settings from command-line
 my $koha_install_log = "";
 
 # get settings from command-line
 my $koha_install_log = "";
+my $cli_koha_install_mode = "";
+my $cli_koha_db_type = "";
+my $cli_koha_db_host = "";
+my $cli_koha_db_port = "";
+my $cli_koha_db_name = "";
+my $cli_koha_db_user = "";
+my $cli_koha_db_pass = "";
+my $cli_zebra_marc_format = "";
+my $cli_zebra_language = "",
+my $cli_zebra_tokenizer = "";
+my $cli_zebra_user = "";
+my $cli_zebra_pass = "";
+my $cli_zebra_sru_host = "";
+my $cli_zebra_sru_bib_port = "";
+my $cli_zebra_sru_auth_port = "";
+my $cli_koha_user = "";
+my $cli_koha_group = "";
+my $cli_koha_install_sru = "";
+my $cli_koha_install_pazpar2 = "";
+my $cli_koha_use_memcached = "";
+my $cli_koha_font_dir = "";
+my $cli_koha_run_database_tests = "";
+my $cli_koha_install_base = "";
+my $cli_koha_template_cache_dir = "";
 Getopt::Long::Configure('pass_through');
 my $results = GetOptions(
 Getopt::Long::Configure('pass_through');
 my $results = GetOptions(
-    "prev-install-log=s" => \$koha_install_log
-);
+    "prev-install-log=s"           => \$koha_install_log,
+    "install_mode=s"               => \$cli_koha_install_mode,
+    "db_type=s"                    => \$cli_koha_db_type,
+    "db_host=s"                    => \$cli_koha_db_host,
+    "db_port=s"                    => \$cli_koha_db_port,
+    "db_name=s"                    => \$cli_koha_db_name,
+    "db_user=s"                    => \$cli_koha_db_user,
+    "db_pass=s"                    => \$cli_koha_db_pass,
+    "zebra_marc_format=s"          => \$cli_zebra_marc_format,
+    "zebra_language=s"             => \$cli_zebra_language,
+    "zebra_tokenizer=s"            => \$cli_zebra_tokenizer,
+    "zebra_user=s"                 => \$cli_zebra_user,
+    "zebra_pass=s"                 => \$cli_zebra_pass,
+    "zebra_sru_host=s"             => \$cli_zebra_sru_host,
+    "zebra_sru_biblios_port=s"     => \$cli_zebra_sru_bib_port,
+    "zebra_sru_authorities_port=s" => \$cli_zebra_sru_auth_port,
+    "koha_user=s"                  => \$cli_koha_user,
+    "koha_group=s"                 => \$cli_koha_group,
+    "install_sru=s"                => \$cli_koha_install_sru,
+    "install_pazpar2=s"            => \$cli_koha_install_pazpar2,
+    "use_memcached=s"              => \$cli_koha_use_memcached,
+    "font_dir=s"                   => \$cli_koha_font_dir,
+    "run_database_tests=s"         => \$cli_koha_run_database_tests,
+    "install_base=s"               => \$cli_koha_install_base,
+    "template-cache-dir=s"         => \$cli_koha_template_cache_dir,
+    "help"                         => sub { HelpMessage(0) },
+) or HelpMessage(1);
 
 my %install_log_values = ();
 if ($koha_install_log ne "") {
     get_install_log_values($koha_install_log, \%install_log_values);
 
 my %install_log_values = ();
 if ($koha_install_log ne "") {
     get_install_log_values($koha_install_log, \%install_log_values);
+} else {
+    # Try to set install_log_values for provided values;
+    get_cli_values(\%install_log_values);
 }
 
 my %config = get_configuration(\%config_defaults, \%valid_config_values, \%install_log_values);
 }
 
 my %config = get_configuration(\%config_defaults, \%valid_config_values, \%install_log_values);
@@ -514,15 +603,11 @@ my $pl_files = {
 
 push @{ $pl_files->{'rewrite-config.PL'} }, (
     'blib/ZEBRA_CONF_DIR/etc/passwd',
 
 push @{ $pl_files->{'rewrite-config.PL'} }, (
     'blib/ZEBRA_CONF_DIR/etc/passwd',
-    'blib/ZEBRA_CONF_DIR/zebra-biblios.cfg',
     'blib/ZEBRA_CONF_DIR/zebra-biblios-dom.cfg',
     'blib/ZEBRA_CONF_DIR/zebra-biblios-dom.cfg',
-    'blib/ZEBRA_CONF_DIR/zebra-authorities.cfg',
     'blib/ZEBRA_CONF_DIR/zebra-authorities-dom.cfg',
     'blib/ZEBRA_CONF_DIR/explain-authorities.xml',
     'blib/ZEBRA_CONF_DIR/explain-biblios.xml',
     'blib/ZEBRA_CONF_DIR/zebra-authorities-dom.cfg',
     'blib/ZEBRA_CONF_DIR/explain-authorities.xml',
     'blib/ZEBRA_CONF_DIR/explain-biblios.xml',
-    'blib/ZEBRA_CONF_DIR/retrieval-info-auth-grs1.xml',
     'blib/ZEBRA_CONF_DIR/retrieval-info-auth-dom.xml',
     'blib/ZEBRA_CONF_DIR/retrieval-info-auth-dom.xml',
-    'blib/ZEBRA_CONF_DIR/retrieval-info-bib-grs1.xml',
     'blib/ZEBRA_CONF_DIR/retrieval-info-bib-dom.xml',
 );
 push @{ $pl_files->{'rewrite-config.PL'} }, (
     'blib/ZEBRA_CONF_DIR/retrieval-info-bib-dom.xml',
 );
 push @{ $pl_files->{'rewrite-config.PL'} }, (
@@ -536,19 +621,10 @@ if ($config{'INSTALL_PAZPAR2'} eq 'yes') {
         'blib/PAZPAR2_CONF_DIR/pazpar2.xml'
     );
 }
         'blib/PAZPAR2_CONF_DIR/pazpar2.xml'
     );
 }
-$config{'ZEBRA_AUTH_CFG'} = $config{'AUTH_INDEX_MODE'} eq 'dom'
-                              ? 'zebra-authorities-dom.cfg'
-                              : 'zebra-authorities.cfg';
-$config{'ZEBRA_BIB_CFG'}  = $config{'BIB_INDEX_MODE'} eq 'dom'
-                              ? 'zebra-biblios-dom.cfg'
-                              : 'zebra-biblios.cfg';
-$config{'AUTH_RETRIEVAL_CFG'} = $config{'AUTH_INDEX_MODE'} eq 'dom'
-                                  ? 'retrieval-info-auth-dom.xml'
-                                  : 'retrieval-info-auth-grs1.xml';
-$config{'BIB_RETRIEVAL_CFG'}  = $config{'BIB_INDEX_MODE'} eq 'dom'
-                                  ? 'retrieval-info-bib-dom.xml'
-                                  : 'retrieval-info-bib-grs1.xml';
-
+$config{'ZEBRA_AUTH_CFG'} = 'zebra-authorities-dom.cfg';
+$config{'ZEBRA_BIB_CFG'}  = 'zebra-biblios-dom.cfg';
+$config{'AUTH_RETRIEVAL_CFG'} = 'retrieval-info-auth-dom.xml';
+$config{'BIB_RETRIEVAL_CFG'}  = 'retrieval-info-bib-dom.xml';
 
 if ($config{'INSTALL_MODE'} ne "dev") {
     push @{ $pl_files->{'rewrite-config.PL'} }, (
 
 if ($config{'INSTALL_MODE'} ne "dev") {
     push @{ $pl_files->{'rewrite-config.PL'} }, (
@@ -736,6 +812,45 @@ sub _add_to_file_map {
     }
 }
 
     }
 }
 
+=head2 get_cli_values
+
+Reads values provided on cli for configuration values
+
+=cut
+
+sub get_cli_values {
+    my $values = shift;
+    my $map = {
+        INSTALL_MODE               => $cli_koha_install_mode,
+        DB_TYPE                    => $cli_koha_db_type,
+        DB_HOST                    => $cli_koha_db_host,
+        DB_PORT                    => $cli_koha_db_port,
+        DB_NAME                    => $cli_koha_db_name,
+        DB_USER                    => $cli_koha_db_user,
+        DB_PASS                    => $cli_koha_db_pass,
+        ZEBRA_MARC_FORMAT          => $cli_zebra_marc_format,
+        ZEBRA_LANGUAGE             => $cli_zebra_language,
+        ZEBRA_TOKENIZER            => $cli_zebra_tokenizer,
+        ZEBRA_USER                 => $cli_zebra_user,
+        ZEBRA_PASS                 => $cli_zebra_pass,
+        ZEBRA_SRU_HOST             => $cli_zebra_sru_host,
+        ZEBRA_SRU_BIBLIOS_PORT     => $cli_zebra_sru_bib_port,
+        ZEBRA_SRU_AUTHORITIES_PORT => $cli_zebra_sru_auth_port,
+        KOHA_USER                  => $cli_koha_user,
+        KOHA_GROUP                 => $cli_koha_group,
+        INSTALL_SRU                => $cli_koha_install_sru,
+        INSTALL_PAZPAR2            => $cli_koha_install_pazpar2,
+        USE_MEMCACHED              => $cli_koha_use_memcached,
+        FONT_DIR                   => $cli_koha_font_dir,
+        RUN_DATABASE_TESTS         => $cli_koha_run_database_tests,
+        INSTALL_BASE               => $cli_koha_install_base,
+        TEMPLATE_CACHE_DIR         => $cli_koha_template_cache_dir
+    };
+    foreach my $key (keys %{$map}) {
+        $values->{$key} = $map->{$key} if ($map->{$key});
+    }
+}
+
 =head2 get_install_log_values
 
 Reads value from the Koha install log specified by
 =head2 get_install_log_values
 
 Reads value from the Koha install log specified by
@@ -907,6 +1022,27 @@ DMBS);
 Please specify the name of the database to be
 used by Koha);
     $config{'DB_NAME'} = _get_value('DB_NAME', $msg, $defaults->{'DB_NAME'}, $valid_values, $install_log_values);
 Please specify the name of the database to be
 used by Koha);
     $config{'DB_NAME'} = _get_value('DB_NAME', $msg, $defaults->{'DB_NAME'}, $valid_values, $install_log_values);
+    if ($config{'DB_TYPE'} eq 'mysql'){
+        $msg = q(
+Please specify whether the connection to MySQL will use TLS
+        );
+        $config{'DB_USE_TLS'} = _get_value('DB_USE_TLS', $msg, $defaults->{'DB_USE_TLS'}, $valid_values, $install_log_values);
+    }
+    if ($config{'DB_USE_TLS'} eq 'yes'){
+        $msg = q(
+Please enter the path to the CA certificate for TLS
+        );
+        $config{'DB_TLS_CA_CERTIFICATE'} = _get_value('DB_TLS_CA_CERTIFICATE', $msg, $defaults->{'DB_TLS_CA_CERTIFICATE'}, $valid_values, $install_log_values);
+
+        $msg = q(
+Please enter the path to the client certificate for TLS
+        );
+        $config{'DB_TLS_CLIENT_CERTIFICATE'} = _get_value('DB_TLS_CLIENT_CERTIFICATE', $msg, $defaults->{'DB_TLS_CLIENT_CERTIFICATE'}, $valid_values, $install_log_values);
+        $msg = q(
+Please enter the path to the client key for TLS
+        );
+        $config{'DB_TLS_CLIENT_KEY'} = _get_value('DB_TLS_CLIENT_KEY', $msg, $defaults->{'DB_TLS_CLIENT_KEY'}, $valid_values, $install_log_values);
+    }
 
     $msg = q(
 Please specify the user that owns the database to be
 
     $msg = q(
 Please specify the user that owns the database to be
@@ -957,33 +1093,6 @@ Primary language for Zebra indexing);
     $msg .= _add_valid_values_disp('ZEBRA_LANGUAGE', $valid_values);
     $config{'ZEBRA_LANGUAGE'} = _get_value('ZEBRA_LANGUAGE', $msg, $defaults->{'ZEBRA_LANGUAGE'}, $valid_values, $install_log_values);
 
     $msg .= _add_valid_values_disp('ZEBRA_LANGUAGE', $valid_values);
     $config{'ZEBRA_LANGUAGE'} = _get_value('ZEBRA_LANGUAGE', $msg, $defaults->{'ZEBRA_LANGUAGE'}, $valid_values, $install_log_values);
 
-    $msg = q(
-Koha can use one of  two different indexing modes
-for the MARC bibliographic records:
-
-dom  - uses the DOM XML filter; offers improved
-       functionality.
-grs1 - [DEPRECATED] uses the Zebra GRS-1 filter,
-       available for legacy support
-
-Bibliographic indexing mode);
-    $msg .= _add_valid_values_disp('BIB_INDEX_MODE', $valid_values);
-    $config{'BIB_INDEX_MODE'} = _get_value('BIB_INDEX_MODE', $msg, $defaults->{'BIB_INDEX_MODE'}, $valid_values, $install_log_values);
-
-
-    $msg = q(
-Koha can use one of  two different indexing modes
-for the MARC authorities records:
-
-dom  - uses the DOM XML filter; offers improved
-       functionality.
-grs1 - [DEPRECATED] uses the Zebra GRS-1 filter,
-       available for legacy support
-
-Authorities indexing mode);
-    $msg .= _add_valid_values_disp('AUTH_INDEX_MODE', $valid_values);
-    $config{'AUTH_INDEX_MODE'} = _get_value('AUTH_INDEX_MODE', $msg, $defaults->{'AUTH_INDEX_MODE'}, $valid_values, $install_log_values);
-
     $msg = q(
 Zebra has two methods to perform records tokenization
 and characters normalization: CHR and ICU. ICU is
     $msg = q(
 Zebra has two methods to perform records tokenization
 and characters normalization: CHR and ICU. ICU is
@@ -1070,8 +1179,8 @@ PazPar2 port?);
     }
 
   $msg = q(
     }
 
   $msg = q(
-Use memcached and memoize to cache the results of some function calls?
-This provides a signficant performance improvement.
+Use memcached to cache the results of some function calls?
+This provides a significant performance improvement.
 You will need a Memcached server running.);
   $msg .= _add_valid_values_disp('USE_MEMCACHED', $valid_values);
   $config{'USE_MEMCACHED'} = _get_value('USE_MEMCACHED', $msg, $defaults->{'USE_MEMCACHED'}, $valid_values, $install_log_values);
 You will need a Memcached server running.);
   $msg .= _add_valid_values_disp('USE_MEMCACHED', $valid_values);
   $config{'USE_MEMCACHED'} = _get_value('USE_MEMCACHED', $msg, $defaults->{'USE_MEMCACHED'}, $valid_values, $install_log_values);
@@ -1088,6 +1197,10 @@ Memcached namespace?);
       $config{'MEMCACHED_NAMESPACE'} = _get_value('MEMCACHED_NAMESPACE', $msg, $defaults->{'MEMCACHED_NAMESPACE'}, $valid_values, $install_log_values);
   }
 
       $config{'MEMCACHED_NAMESPACE'} = _get_value('MEMCACHED_NAMESPACE', $msg, $defaults->{'MEMCACHED_NAMESPACE'}, $valid_values, $install_log_values);
   }
 
+  $msg = q(
+Template cache directory?);
+  $config{'TEMPLATE_CACHE_DIR'} = _get_value('TEMPLATE_CACHE_DIR', $msg, $defaults->{'TEMPLATE_CACHE_DIR'}, $valid_values, $install_log_values);
+
   $msg = q(
 Path to DejaVu fonts?);
   $config{'FONT_DIR'} = _get_value('FONT_DIR', $msg, $defaults->{'FONT_DIR'}, $valid_values, $install_log_values);
   $msg = q(
 Path to DejaVu fonts?);
   $config{'FONT_DIR'} = _get_value('FONT_DIR', $msg, $defaults->{'FONT_DIR'}, $valid_values, $install_log_values);
@@ -1105,7 +1218,7 @@ Would you like to run the database-dependent test suite?);
 
 THE DATA IN THIS DATABASE WILL BE DESTROYED during the process of
 testing. Please don't do this on your production database. It is not
 
 THE DATA IN THIS DATABASE WILL BE DESTROYED during the process of
 testing. Please don't do this on your production database. It is not
-reversable.
+reversible.
 
 YOU WILL SUFFER DATA LOSS if you run this test suite on your test
 database. You are better off not running this optional test suite than
 
 YOU WILL SUFFER DATA LOSS if you run this test suite on your test
 database. You are better off not running this optional test suite than
@@ -1536,7 +1649,7 @@ sub upgrade {
     }
 
     $upgrade .= qq/
     }
 
     $upgrade .= qq/
-MOD_BACKUP = \$(ABSPERLRUN) -Minstall_misc::UpgradeBackup -e 'backup_changed_files({\@ARGV}, '$backup_suffix', '\''\$(VERBINST)'\'', '\''\$(UNINST)'\'');' --
+MOD_BACKUP = \$(ABSPERLRUN) -MC4::Installer::UpgradeBackup -e 'backup_changed_files({\@ARGV}, '$backup_suffix', '\''\$(VERBINST)'\'', '\''\$(UNINST)'\'');' --
 
 upgrade :: make_upgrade_backup install
 \t\$(NOECHO) \$(NOOP)
 
 upgrade :: make_upgrade_backup install
 \t\$(NOECHO) \$(NOOP)