X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=Makefile.PL;h=2acf916bd3704e04002f1edafa9b705ad76032dc;hb=075ef09f48b66df7766c22e1c9ecf1d3cf7a039a;hp=598e0ed3670441e501728dc656cae0aa2d449a44;hpb=a5290b2f9dff755758f85276786ea9b6e534cf85;p=srvgit diff --git a/Makefile.PL b/Makefile.PL index 598e0ed367..2acf916bd3 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,19 +1,20 @@ # Copyright 2007 MJ Ray +# Copyright 2016 PTFS Europe # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . # # Current maintainer MJR http://mjr.towers.org.uk/ # @@ -23,12 +24,12 @@ use warnings; 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 C4::Installer; +use C4::Installer::PerlModules; my $koha_pm = C4::Installer::PerlModules->new; @@ -72,6 +73,34 @@ Makefile.PL - Koha packager and installer 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, 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) + --use_memcached Use Memcached (yes, no) + --font_dir Location of fonts (e.g. /usr/share/fonts/truetype/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 @@ -198,6 +227,16 @@ Directory for Zebra's data files. Directory for Zebra's UNIX-domain sockets. +=item ELASTICSEARCH_SERVERS + +Server:port of the Elasticsearch server to use, as a comma separated list: +eg. 192.168.0.100:9200, localhost:9200 + +=item ELASTICSEARCH_INDEX + +Unique index in Elasticsearch, for this Koha-instance +eg. koha-mykoha or just koha + =item MISC_DIR Directory for for miscellaenous scripts, among other @@ -224,6 +263,10 @@ contain information of interest to Koha developers. Directory for Koha documentation accessed from the command-line, e.g., READMEs. +=item LOCK_DIR + +Directory for Koha scripts to put their locks. + =item LOG_DIR Directory for Apache and Zebra logs produced by Koha. @@ -236,9 +279,9 @@ Directory for backup files produced by Koha. Directory for external Koha plugins. -=item PAZPAR2_CONF_DIR +=item FONT_DIR -Directory for PazPar2 configuration files. +Directory where DejaVu fonts are installed. =item NONE @@ -256,8 +299,11 @@ my $target_map = { './about.pl' => 'INTRANET_CGI_DIR', './acqui' => 'INTRANET_CGI_DIR', './admin' => 'INTRANET_CGI_DIR', + './api' => { target => 'API_CGI_DIR', trimdir => -1 }, + './app.psgi' => 'SCRIPT_DIR', './authorities' => 'INTRANET_CGI_DIR', './basket' => 'INTRANET_CGI_DIR', + './bin' => { target => 'SCRIPT_DIR', trimdir => -1 }, './C4' => 'PERL_MODULE_DIR', './C4/SIP/t' => 'NONE', './C4/SIP/koha_test' => 'NONE', @@ -267,22 +313,29 @@ my $target_map = { './changelanguage.pl' => 'INTRANET_CGI_DIR', './check_sysprefs.pl' => 'NONE', './circ' => 'INTRANET_CGI_DIR', + './clubs' => 'INTRANET_CGI_DIR', './course_reserves' => 'INTRANET_CGI_DIR', + './cpanfile' => 'PERL_MODULE_DIR', './docs/history.txt' => { target => 'DOC_DIR', trimdir => -1 }, - './offline_circ' => 'INTRANET_CGI_DIR', - './edithelp.pl' => 'INTRANET_CGI_DIR', + './docs/contributors.yaml' => { target => 'DOC_DIR', trimdir => -1 }, + './docs/teams.yaml' => { target => 'DOC_DIR', trimdir => -1 }, + './offline_circ' => 'INTRANET_CGI_DIR', + './erm' => '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 }, + './etc/z3950' => { target => 'Z3950_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'}, './Koha' => 'PERL_MODULE_DIR', + './Koha.pm' => 'PERL_MODULE_DIR', './koha-tmpl/intranet-tmpl' => {target => 'INTRANET_TMPL_DIR', trimdir => -1}, './koha-tmpl/opac-tmpl' => {target => 'OPAC_TMPL_DIR', trimdir => -1}, - './kohaversion.pl' => 'INTRANET_CGI_DIR', + './kohaversion.pl' => 'INTRANET_CGI_DIR', './labels' => 'INTRANET_CGI_DIR', + './lib' => {target => 'PERL_MODULE_LIB_DIR', trimdir => -1}, './mainpage.pl' => 'INTRANET_CGI_DIR', './Makefile.PL' => 'NONE', './MANIFEST.SKIP' => 'NONE', @@ -299,6 +352,8 @@ my $target_map = { './patroncards' => 'INTRANET_CGI_DIR', './patron_lists' => 'INTRANET_CGI_DIR', './plugins' => 'INTRANET_CGI_DIR', + './pos' => 'INTRANET_CGI_DIR', + './recalls' => 'INTRANET_CGI_DIR', './reports' => 'INTRANET_CGI_DIR', './reserve' => 'INTRANET_CGI_DIR', './reviews' => 'INTRANET_CGI_DIR', @@ -308,6 +363,7 @@ my $target_map = { './serials' => 'INTRANET_CGI_DIR', './services' => 'INTRANET_CGI_DIR', './skel' => 'NONE', + './skel/var/lock/koha' => { target => 'LOCK_DIR', trimdir => -1 }, './skel/var/log/koha' => { target => 'LOG_DIR', trimdir => -1 }, './skel/var/spool/koha' => { target => 'BACKUP_DIR', trimdir => -1 }, './skel/var/run/koha/zebradb' => { target => 'ZEBRA_RUN_DIR', trimdir => -1 }, @@ -327,16 +383,25 @@ my $target_map = { './suggestion' => 'INTRANET_CGI_DIR', './svc' => 'INTRANET_CGI_DIR', './t' => 'NONE', + './xt' => 'NONE', './tags' => 'INTRANET_CGI_DIR', './tmp' => 'NONE', # FIXME need to determine whether # Koha generates any persistent temp files # 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', + '.sass-lint.yml' => 'NONE', + '.scss-lint.yml' => 'NONE', + '.eslintrc.json' => 'NONE', + 'gulpfile.js' => 'NONE', + 'package.json' => 'NONE', + 'yarn.lock' => 'NONE', + 'cypress.json' => 'NONE', + 'tsconfig.json' => 'NONE', + 'webpack.config.js' => 'NONE', }; =head1 CONFIGURATION OPTIONS @@ -408,6 +473,34 @@ System user account that will own Koha's files. System group that will own Koha's files. +=item SMTP_HOST + +SMTP server host name (default: localhost) + +=item SMTP_PORT + +SMTP server port (default: 25) + +=item SMTP_TIMEOUT + +Connection timeour in seconds (default: 120) + +=item SMTP_SSL_MODE + +SSL mode. Options are 'disabled' (default), 'ssl' and 'starttls' + +=item SMTP_USER_NAME + +SMTP authentication user name + +=item SMTP_PASSWORD + +SMTP authentication password + +=item SMTP_DEBUG + +Enable debug mode for SMTP (default: no) + =back =cut @@ -419,10 +512,11 @@ my %config_defaults = ( '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', - 'AUTH_INDEX_MODE' => 'dom', - 'BIB_INDEX_MODE' => 'dom', 'ZEBRA_MARC_FORMAT' => 'marc21', 'ZEBRA_LANGUAGE' => 'en', 'ZEBRA_TOKENIZER' => 'chr', @@ -435,19 +529,27 @@ my %config_defaults = ( 'KOHA_GROUP' => 'koha', 'MERGE_SERVER_HOST' => 'localhost', 'MERGE_SERVER_PORT' => '11001', - 'PAZPAR2_HOST' => 'localhost', - '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_NAMESPACE' => 'KOHA', + 'TEMPLATE_CACHE_DIR' => '/tmp/koha', + 'USE_ELASTICSEARCH' => 'no', + 'ELASTICSEARCH_SERVERS' => 'localhost:9200', + 'ELASTICSEARCH_INDEX' => 'koha', + 'FONT_DIR' => '/usr/share/fonts/truetype/dejavu', + 'SMTP_HOST' => 'localhost', + 'SMTP_PORT' => '25', + 'SMTP_TIMEOUT' => '120', + 'SMTP_SSL_MODE' => 'disabled', + 'SMTP_USER_NAME' => '', + 'SMTP_PASSWORD' => '', + 'SMTP_DEBUG' => 'no', ); # set some default configuration options based on OS # more conditions need to be added for other OS's -# this should probably also incorporate usage of Win32::GetOSName() and/or Win32::GetOSVersion() -# to allow for more granular decisions based on which Win32 platform warn "Your platform appears to be $^O.\n" if $DEBUG; @@ -466,26 +568,93 @@ else { 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 }, - '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_LANGUAGE' => { 'en' => 1, 'es' => 1, 'fr' => 1, 'gr' => 1, 'nb' => 1, 'ru' => 1, 'uk' => 1 }, # FIXME should generate from contents of distribution + 'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation + 'ZEBRA_LANGUAGE' => { 'cs' => 1, 'el' => 1, 'en' => 1, 'es' => 1, 'fr' => 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 }, + 'USE_ELASTICSEARCH' => { 'yes' => 1, 'no' => 1 }, + 'SMTP_SSL_MODE' => { 'disabled' => 1, 'ssl' => 1, 'starttls' => 1 }, + 'SMTP_DEBUG' => { 'yes' => 1, 'no' => 1 }, ); # 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_use_memcached = ""; +my $cli_koha_font_dir = ""; +my $cli_koha_run_database_tests = ""; +my $cli_koha_install_base = ""; +my $cli_koha_template_cache_dir = ""; +my $cli_smtp_host = ""; +my $cli_smtp_port = ""; +my $cli_smtp_timeout = ""; +my $cli_smtp_ssl_mode = ""; +my $cli_smtp_user_name = ""; +my $cli_smtp_password = ""; +my $cli_smtp_debug = ""; + 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, + "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, + "smtp-host=s" => \$cli_smtp_host, + "smtp-port=s" => \$cli_smtp_port, + "smtp-timeout=s" => \$cli_smtp_timeout, + "smtp-ssl-mode=s" => \$cli_smtp_ssl_mode, + "smtp-user-name=s" => \$cli_smtp_user_name, + "smtp-password=s" => \$cli_smtp_password, + "smtp-debug" => \$cli_smtp_debug, + "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); +} 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); @@ -494,10 +663,29 @@ display_configuration(\%config, $target_directories); my $file_map = {}; get_file_map($target_map, $dirtree, $file_map); +#NOTE: List files generated by build-resources.PL, so that they're copied into blib for installation +#INTRANET_TMPL_DIR +$file_map->{'koha-tmpl/intranet-tmpl/prog/css/calendar.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/calendar.css'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/css/holds.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/holds.css'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/css/installer.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/installer.css'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/css/mainpage.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/mainpage.css'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/css/staff-global.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/staff-global.css'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/erm.js'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/erm.js'; +$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/erm.js.LICENSE.txt'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/erm.js.LICENSE.txt'; +#OPAC_TMPL_DIR +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/opac.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/opac.css'; +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/opac-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/opac-rtl.css'; +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/print.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/print.css'; +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/print-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/print-rtl.css'; +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/sco.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/sco.css'; +$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/sco-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/sco-rtl.css'; + my $pl_files = { 'rewrite-config.PL' => [ 'blib/KOHA_CONF_DIR/koha-conf.xml', 'blib/KOHA_CONF_DIR/koha-httpd.conf', + 'blib/KOHA_CONF_DIR/log4perl.conf', + 'blib/KOHA_CONF_DIR/koha-worker.service', 'blib/ZEBRA_CONF_DIR/etc/default.idx', 'blib/MISC_DIR/koha-install-log' ], @@ -508,46 +696,25 @@ my $pl_files = { 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-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/retrieval-info-auth-grs1.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/SCRIPT_DIR/koha-zebra-ctl.sh', - 'blib/SCRIPT_DIR/koha-pazpar2-ctl.sh', 'blib/SCRIPT_DIR/koha-index-daemon-ctl.sh', ); -if ($config{'INSTALL_PAZPAR2'} eq 'yes') { - push @{ $pl_files->{'rewrite-config.PL'} }, ( - 'blib/PAZPAR2_CONF_DIR/koha-biblios.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'} }, ( 'blib/PERL_MODULE_DIR/C4/Context.pm', - 'blib/SCRIPT_NONDEV_DIR/kohalib.pl' ); } @@ -562,6 +729,8 @@ $config{ZEBRA_PTOKENIZER_STMT} = $config{ZEBRA_TOKENIZER} eq 'icu' my %test_suite_override_dirs = ( KOHA_CONF_DIR => ['etc'], ZEBRA_CONF_DIR => ['etc', 'zebradb'], + Z3950_CONF_DIR => ['etc', 'z3950'], + LOCK_DIR => ['var', 'lock'], LOG_DIR => ['var', 'log'], BACKUP_DIR => ['var', 'spool'], SCRIPT_DIR => ['bin'], @@ -575,7 +744,7 @@ WriteMakefile( #VERSION => strftime('2.9.%Y%m%d%H',gmtime), VERSION_FROM => 'kohaversion.pl', ABSTRACT => 'Award-winning integrated library system (ILS) and Web OPAC', - AUTHOR => 'Koha Contributors ', + AUTHOR => 'Koha Contributors ', NO_META => 1, PREREQ_PM => $koha_pm->prereq_pm, @@ -730,6 +899,51 @@ 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, + 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, + SMTP_HOST => $cli_smtp_host, + SMTP_PORT => $cli_smtp_port, + SMTP_TIMEOUT => $cli_smtp_timeout, + SMTP_SSL_MODE => $cli_smtp_ssl_mode, + SMTP_USER_NAME => $cli_smtp_user_name, + SMTP_PASSWORD => $cli_smtp_password, + SMTP_DEBUG => (defined $cli_smtp_debug) ? ( $cli_smtp_debug ? 'yes' : 'no' ) : $values->{SMTP_DEBUG}, + }; + 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 @@ -741,8 +955,8 @@ sub get_install_log_values { my $install_log = shift; my $values = shift; - open LOG, "<$install_log" or die "Cannot open install log $install_log: $!\n"; - while () { + open my $log, '<', $install_log or die "Cannot open install log $install_log: $!\n"; + while (<$log>) { chomp; next if /^#/ or /^\s*$/; next if /^=/; @@ -751,7 +965,7 @@ sub get_install_log_values { my ($key, $value) = split /=/, $_, 2; $values->{$key} = $value; } - close LOG; + close $log; print <<_EXPLAIN_INSTALL_LOG_; Reading values from install log $install_log. You @@ -901,6 +1115,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); + 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 @@ -937,7 +1172,7 @@ You must specify the primary MARC format of the records to be indexed by Zebra. Koha provides Zebra configuration files for MARC21, -NORMARC and UNIMARC. +and UNIMARC. MARC format for Zebra indexing); $msg .= _add_valid_values_disp('ZEBRA_MARC_FORMAT', $valid_values); @@ -952,33 +1187,6 @@ Primary language for Zebra indexing); $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 recommended for catalogs containing non-Latin @@ -1028,44 +1236,9 @@ SRU port for authority data?); } - $msg = q( -Along with Zebra, you can also choose to install PazPar2, -which is a metasearch tool. With PazPar2, -Koha can perform on-the-fly merging of bibliographic -records during searching, allowing for FRBRization of -the results list. - -Install the PazPar2 configuration files?); - $msg .= _add_valid_values_disp('INSTALL_PAZPAR2', $valid_values); - $config{'INSTALL_PAZPAR2'} = _get_value('INSTALL_PAZPAR2', $msg, $defaults->{'INSTALL_PAZPAR2'}, $valid_values, $install_log_values); - - if ($config{'INSTALL_PAZPAR2'} eq 'yes') { - $msg = q( -Since you've chosen to configure PazPar2, you must -specify the host and port(s) that PazPar2 -uses: -); - $msg = q( -Zebra bibliographic server host?); - $config{'MERGE_SERVER_HOST'} = _get_value('MERGE_SERVER_HOST', $msg, $defaults->{'MERGE_SERVER_HOST'}, $valid_values, $install_log_values); - - $msg = q( -Zebra bibliographic port for PazPar2 to use?); - $config{'MERGE_SERVER_PORT'} = _get_value('MERGE_SERVER_PORT', $msg, $defaults->{'MERGE_SERVER_PORT'}, $valid_values, $install_log_values); - - $msg = q( -PazPar2 host?); - $config{'PAZPAR2_HOST'} = _get_value('PAZPAR2_HOST', $msg, $defaults->{'PAZPAR2_HOST'}, $valid_values, $install_log_values); - - $msg = q( -PazPar2 port?); - $config{'PAZPAR2_PORT'} = _get_value('PAZPAR2_PORT', $msg, $defaults->{'PAZPAR2_PORT'}, $valid_values, $install_log_values); - - } - $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); @@ -1083,6 +1256,70 @@ Memcached namespace?); } + $msg = q( +Use Elasticsearch to serve search results? +You will need a Elasticsearch server running.); + $msg .= _add_valid_values_disp('USE_ELASTICSEARCH', $valid_values); + $config{'USE_ELASTICSEARCH'} = _get_value('USE_ELASTICSEARCH', $msg, $defaults->{'USE_ELASTICSEARCH'}, $valid_values, $install_log_values); + if ($config{'USE_ELASTICSEARCH'} eq 'yes'){ + $msg = q( +Define the ELASTICSEARCH_SERVERS with a comma-separated list. Eg +localhost:9200, 192.168.0.100:9200 +); + $msg = q( +Elasticsearch server addresses?); + $config{'ELASTICSEARCH_SERVERS'} = _get_value('ELASTICSEARCH_SERVERS', $msg, $defaults->{'ELASTICSEARCH_SERVERS'}, $valid_values, $install_log_values); + + $msg = q( +What index name to use for this Koha-instance? It must be unique for each Koha +sharing the same Elasticsearch-cluster + +Elasticsearch index?); + $config{'ELASTICSEARCH_INDEX'} = _get_value('ELASTICSEARCH_INDEX', $msg, $defaults->{'ELASTICSEARCH_INDEX'}, $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( +SMTP settings +You will be able to set your default SMTP configuration.); + $msg .= q{ +SMTP host name?}; + $config{'SMTP_HOST'} = _get_value('SMTP_HOST', $msg, $defaults->{'SMTP_HOST'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP port?}; + $config{'SMTP_PORT'} = _get_value('SMTP_PORT', $msg, $defaults->{'SMTP_PORT'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP timeout (in seconds)?}; + $config{'SMTP_TIMEOUT'} = _get_value('SMTP_TIMEOUT', $msg, $defaults->{'SMTP_TIMEOUT'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP SSL mode?}; + $msg .= _add_valid_values_disp('SMTP_SSL_MODE', $valid_values); + $config{'SMTP_SSL_MODE'} = _get_value('SMTP_SSL_MODE', $msg, $defaults->{'SMTP_SSL_MODE'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP user name?}; + $config{'SMTP_USER_NAME'} = _get_value('SMTP_USER_NAME', $msg, $defaults->{'SMTP_USER_NAME'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP password?}; + $config{'SMTP_PASSWORD'} = _get_value('SMTP_PASSWORD', $msg, $defaults->{'SMTP_PASSWORD'}, $valid_values, $install_log_values); + + $msg = q{ +SMTP debug mode?}; + $msg .= _add_valid_values_disp('SMTP_DEBUG', $valid_values); + $config{'SMTP_DEBUG'} = _get_value('SMTP_DEBUG', $msg, $defaults->{'SMTP_DEBUG'}, $valid_values, $install_log_values); + + $config{'SMTP_DEBUG'} = ( $config{'SMTP_DEBUG'} eq 'yes' ) ? 1 : 0; $msg = q( Would you like to run the database-dependent test suite?); @@ -1096,7 +1333,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 -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 @@ -1202,7 +1439,7 @@ sub get_target_directories { my @basedir = File::Spec->splitdir($directories); - if ( $^O eq 'cygwin' ) { shift @basedir; unshift @basedir, 'c:'; } # in a cygwin environment, $volume is returned empty + if ( $^O eq 'cygwin' ) { shift @basedir; unshift @basedir, 'c:'; } # in a cygwin environment, $volume is returned empty my $package = pop @basedir; @@ -1210,6 +1447,7 @@ sub get_target_directories { my %dirmap = (); my %skipdirs = (); if ($mode eq 'single') { + $dirmap{'API_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'api'); $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'cgi-bin'); $dirmap{'INTRANET_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'htdocs', 'intranet-tmpl'); $dirmap{'INTRANET_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'htdocs'); @@ -1217,15 +1455,17 @@ sub get_target_directories { $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs', 'opac-tmpl'); $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs'); $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir(@basedir, $package, 'lib'); + $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir(@basedir, $package, 'lib'); $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc'); $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb'); - $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'pazpar2'); + $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950'); $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); $dirmap{'SCRIPT_NONDEV_DIR'} = $dirmap{'SCRIPT_DIR'}; $dirmap{'MAN_DIR'} = File::Spec->catdir(@basedir, $package, 'man'); $dirmap{'DOC_DIR'} = File::Spec->catdir(@basedir, $package, 'doc'); $dirmap{'ZEBRA_LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock', 'zebradb'); + $dirmap{'LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock'); $dirmap{'LOG_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'log'); $dirmap{'BACKUP_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'spool'); $dirmap{'PLUGINS_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'koha', 'plugins'); @@ -1233,6 +1473,8 @@ sub get_target_directories { $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb'); } elsif ($mode eq 'dev') { my $curdir = File::Spec->rel2abs(File::Spec->curdir()); + $dirmap{'API_CGI_DIR'} = File::Spec->catdir($curdir, 'api'); + $skipdirs{'API_CGI_DIR'} = 1; $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir($curdir); $skipdirs{'INTRANET_CGI_DIR'} = 1; $dirmap{'INTRANET_TMPL_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl', 'intranet-tmpl'); @@ -1245,11 +1487,14 @@ sub get_target_directories { $skipdirs{'OPAC_TMPL_DIR'} = 1; $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl'); $skipdirs{'OPAC_WWW_DIR'} = 1; + #NOTE: We're hacking the dirmap here, so that PERL_MODULE_DIR tokens get rewritten correctly for git installs $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir($curdir); $skipdirs{'PERL_MODULE_DIR'} = 1; + $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir($curdir,'lib'); + $skipdirs{'PERL_MODULE_LIB_DIR'} = 1; $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc'); $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb'); - $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'pazpar2'); + $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950'); $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); #For dev install, point NONDEV_DIR to misc in current dir (not base) @@ -1259,6 +1504,7 @@ sub get_target_directories { $dirmap{'MAN_DIR'} = File::Spec->catdir(@basedir, $package, 'man'); $dirmap{'DOC_DIR'} = File::Spec->catdir(@basedir, $package, 'doc'); $dirmap{'ZEBRA_LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock', 'zebradb'); + $dirmap{'LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock'); $dirmap{'LOG_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'log'); $dirmap{'BACKUP_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'spool'); $dirmap{'PLUGINS_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'plugins'); @@ -1266,6 +1512,7 @@ sub get_target_directories { $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb'); } else { # mode is standard, i.e., 'fhs' + $dirmap{'API_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'api'); $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'cgi-bin'); $dirmap{'INTRANET_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'htdocs', 'intranet-tmpl'); $dirmap{'INTRANET_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'htdocs'); @@ -1273,15 +1520,17 @@ sub get_target_directories { $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs', 'opac-tmpl'); $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs'); $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir(@basedir, $package, 'lib'); + $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir(@basedir, $package, 'lib'); $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package); $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'zebradb'); - $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'pazpar2'); + $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'z3950'); $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); $dirmap{'SCRIPT_NONDEV_DIR'} = $dirmap{'SCRIPT_DIR'}; $dirmap{'MAN_DIR'} = File::Spec->catdir(@basedir, $package, 'man'); $dirmap{'DOC_DIR'} = File::Spec->catdir(@basedir, $package, 'doc'); $dirmap{'ZEBRA_LOCK_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lock', $package, 'zebradb'); + $dirmap{'LOCK_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lock', $package); $dirmap{'LOG_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'log', $package); $dirmap{'BACKUP_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'spool', $package); $dirmap{'PLUGINS_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'plugins'); @@ -1379,8 +1628,6 @@ sub display_configuration { print "perl Makefile.PL\n"; print "\nor\n\n"; print "DB_USER=my_koha DOC_DIR=/usr/local/info perl Makefile.PL\n\n"; - print "If installing on a Win32 platform, be sure to use:\n"; - print "'dmake -x MAXLINELENGTH=300000'\n\n"; } =head2 find_zebra @@ -1388,8 +1635,6 @@ sub display_configuration { Attempt to find Zebra - check user's PATH and a few other directories for zebrasrv and zebraidx. -FIXME: doesn't handle Win32 - =cut sub find_zebra { @@ -1411,8 +1656,6 @@ sub find_zebra { package MY; -# This will have to be reworked in order to accommodate Win32... - sub test { my $self = shift; my $test = $self->SUPER::test(@_); @@ -1430,6 +1673,8 @@ sub install { # This means that we're completely overriding EU::MM's default # installation and uninstallation targets. + my $perl5lib_dirs = _build_perl5lib_string({ target_dirs => $target_directories }); + # If installation is on Win32, we need to do permissions different from *nix if ( $^O =~ /darwin|linux|cygwin|freebsd|solaris/ ) { # this value needs to be verified for each platform and modified accordingly foreach my $key (sort keys %$target_directories) { @@ -1484,7 +1729,7 @@ install :: all install_koha set_koha_ownership set_koha_permissions warn_koha_en $install .= "\t\$(NOECHO) \$(ECHO) you should set the following environment variables:\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; $install .= "\t\$(NOECHO) \$(ECHO) export KOHA_CONF=\$(KOHA_DEST_KOHA_CONF_DIR)/koha-conf.xml\n"; - $install .= "\t\$(NOECHO) \$(ECHO) export PERL5LIB=$target_directories->{'PERL_MODULE_DIR'}\n"; + $install .= "\t\$(NOECHO) \$(ECHO) export PERL5LIB=$perl5lib_dirs\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; $install .= "\t\$(NOECHO) \$(ECHO) For other post-installation tasks, please consult the README.\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; @@ -1510,8 +1755,6 @@ sub _update_zebra_conf_target { $target .= "\t\t\$(KOHA_INST_ZEBRA_CONF_DIR) \$(KOHA_DEST_ZEBRA_CONF_DIR) \n"; $target .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_ZEBRA_CONF_DIR)\n"; $target .= "\tumask 022; \$(MOD_INSTALL) \\\n"; - $target .= "\t\t\$(KOHA_INST_PAZPAR2_CONF_DIR) \$(KOHA_DEST_PAZPAR2_CONF_DIR) \n"; - $target .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_PAZPAR2_CONF_DIR)\n"; return $target; } @@ -1529,7 +1772,7 @@ sub upgrade { } $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) @@ -1537,7 +1780,7 @@ make_upgrade_backup :: \t\$(NOECHO) umask 022; \$(MOD_BACKUP) \\ /; foreach my $key (qw/KOHA_CONF_DIR INTRANET_TMPL_DIR INTRANET_WWW_DIR OPAC_TMPL_DIR OPAC_WWW_DIR - PAZPAR2_CONF_DIR ZEBRA_CONF_DIR PLUGINS_DIR/) { + ZEBRA_CONF_DIR PLUGINS_DIR/) { $upgrade .= "\t\t\$(KOHA_INST_$key) \$(KOHA_DEST_$key) \\\n" unless exists $skip_directories->{$key} or not exists $target_directories->{$key}; @@ -1553,9 +1796,16 @@ sub postamble { # rewrite-confg.PL my $env; + + #NOTE: Build __PERL5LIB_DIRS__ for rewrite-config.PL + my $perl5lib_dirs = _build_perl5lib_string({ target_dirs => $target_directories }); + if ($perl5lib_dirs){ + $env .= "export __PERL5LIB_DIRS__ := $perl5lib_dirs\n" + } + # Hereagain, we must alter syntax per platform... { - $env = join("\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories); + $env .= join("\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories); $env .= "\n\n"; $env .= join("\n", map { "export __${_}__ := $config{$_}" } keys %config); } @@ -1563,6 +1813,38 @@ sub postamble { return "$env\n"; } +sub top_targets { + my $inherited = shift->SUPER::top_targets(@_); + my $compile_step; + $compile_step .= "all :: compile_css_js\n"; + $compile_step .= "\t" . '$(NOECHO) $(NOOP)' . "\n"; + $compile_step .= "\n"; + $compile_step .= "compile_css_js:\n"; + $compile_step .= "\t" . '$(PERLRUN) build-resources.PL' . "\n"; + my $top_targets = $compile_step . "\n" . $inherited; + return $top_targets; +} + +sub _build_perl5lib_string { + my ($args) = @_; + my %unique_map = (); + my $perl5lib_str; + my $target_dirs = $args->{target_dirs}; + my @dir_codes = ("PERL_MODULE_DIR","PERL_MODULE_LIB_DIR"); + if ($target_dirs){ + foreach my $code (@dir_codes){ + my $path = $target_dirs->{ $code }; + if ($path){ + $unique_map{$path} = 1 unless $unique_map{$path}; + } + } + my @paths = sort keys %unique_map; + if (@paths){ + $perl5lib_str = join(':',@paths); + } + } + return $perl5lib_str; +} __END__