Bugzilla – Attachment 178149 Details for
Bug 39149
.PL files not tidy
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 39149: Tidy .PL files
Bug-39149-Tidy-PL-files.patch (text/plain), 94.01 KB, created by
Tomás Cohen Arazi (tcohen)
on 2025-02-17 17:41:31 UTC
(
hide
)
Description:
Bug 39149: Tidy .PL files
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2025-02-17 17:41:31 UTC
Size:
94.01 KB
patch
obsolete
>From cffa67ecdbc91ddb497b422c8abc95a3d4c23166 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Mon, 17 Feb 2025 17:38:40 +0000 >Subject: [PATCH] Bug 39149: Tidy .PL files > >This patch is the result of running: > >```shell >perl misc/devel/tidy.pl *.PL >``` > >Commiting raised an error about fix-perl-path.PL calling `warn` which I dismiss for the >time being. > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >--- > Makefile.PL | 1094 ++++++++++++++++++++++++--------------------- > fix-perl-path.PL | 62 +-- > rewrite-config.PL | 188 ++++---- > 3 files changed, 716 insertions(+), 628 deletions(-) > >diff --git a/Makefile.PL b/Makefile.PL >index a5002e0898c..f5e0525d443 100644 >--- a/Makefile.PL >+++ b/Makefile.PL >@@ -25,7 +25,7 @@ use ExtUtils::MakeMaker; > use POSIX; > use File::Spec; > 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 FindBin; # we need to enforce which C4::Installer::PerlModule is used in case more than one is installed > > use lib $FindBin::Bin; > >@@ -34,12 +34,12 @@ use C4::Installer::PerlModules; > my $koha_pm = C4::Installer::PerlModules->new; > > my $DEBUG = 0; >-die "perl 5.10 or later required" unless ($] >= 5.010000); >+die "perl 5.10 or later required" unless ( $] >= 5.010000 ); > > # Hash up directory structure & files beginning with the directory we were called from (should be the base of koha)... > > my $dirtree = hashdir('.'); >-my %result = (); >+my %result = (); > > =head1 NAME > >@@ -392,20 +392,20 @@ my $target_map = { > './virtualshelves' => 'INTRANET_CGI_DIR', > > # ignore files and directories created by the install itself >- './pm_to_blib' => 'NONE', >- './blib' => 'NONE', >+ './pm_to_blib' => 'NONE', >+ './blib' => 'NONE', > '.git-blame-ignore-revs' => 'NONE', >- '.prettierrc.js' => 'NONE', >- '.sass-lint.yml' => 'NONE', >- '.scss-lint.yml' => 'NONE', >- 'gulpfile.js' => 'NONE', >- 'package.json' => 'NONE', >- 'yarn.lock' => 'NONE', >- 'cypress.config.ts' => 'NONE', >- 'tsconfig.json' => 'NONE', >- 'webpack.config.js' => 'NONE', >- 'rspack.config.js' => 'NONE', >- 'eslint.config.mjs' => 'NONE', >+ '.prettierrc.js' => 'NONE', >+ '.sass-lint.yml' => 'NONE', >+ '.scss-lint.yml' => 'NONE', >+ 'gulpfile.js' => 'NONE', >+ 'package.json' => 'NONE', >+ 'yarn.lock' => 'NONE', >+ 'cypress.config.ts' => 'NONE', >+ 'tsconfig.json' => 'NONE', >+ 'webpack.config.js' => 'NONE', >+ 'rspack.config.js' => 'NONE', >+ 'eslint.config.mjs' => 'NONE', > }; > > =head1 CONFIGURATION OPTIONS >@@ -511,45 +511,45 @@ Enable debug mode for SMTP (default: no) > > # default configuration options > my %config_defaults = ( >- 'DB_TYPE' => 'mysql', >- 'DB_HOST' => 'localhost', >- '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', >- 'ZEBRA_MARC_FORMAT' => 'marc21', >- 'ZEBRA_LANGUAGE' => 'en', >- 'ZEBRA_TOKENIZER' => 'chr', >- 'ZEBRA_USER' => 'kohauser', >- 'ZEBRA_PASS' => 'zebrastripes', >- 'ZEBRA_SRU_HOST' => 'localhost', >- 'ZEBRA_SRU_BIBLIOS_PORT' => '9998', >- 'ZEBRA_SRU_AUTHORITIES_PORT' => '9999', >- 'KOHA_USER' => 'koha', >- 'KOHA_GROUP' => 'koha', >- 'MERGE_SERVER_HOST' => 'localhost', >- 'MERGE_SERVER_PORT' => '11001', >- 'RUN_DATABASE_TESTS' => 'no', >- 'PATH_TO_ZEBRA' => '', >- 'USE_MEMCACHED' => 'yes', >- 'MEMCACHED_SERVERS' => '127.0.0.1:11211', >- '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', >+ 'DB_TYPE' => 'mysql', >+ 'DB_HOST' => 'localhost', >+ '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', >+ 'ZEBRA_MARC_FORMAT' => 'marc21', >+ 'ZEBRA_LANGUAGE' => 'en', >+ 'ZEBRA_TOKENIZER' => 'chr', >+ 'ZEBRA_USER' => 'kohauser', >+ 'ZEBRA_PASS' => 'zebrastripes', >+ 'ZEBRA_SRU_HOST' => 'localhost', >+ 'ZEBRA_SRU_BIBLIOS_PORT' => '9998', >+ 'ZEBRA_SRU_AUTHORITIES_PORT' => '9999', >+ 'KOHA_USER' => 'koha', >+ 'KOHA_GROUP' => 'koha', >+ 'MERGE_SERVER_HOST' => 'localhost', >+ 'MERGE_SERVER_PORT' => '11001', >+ 'RUN_DATABASE_TESTS' => 'no', >+ 'PATH_TO_ZEBRA' => '', >+ 'USE_MEMCACHED' => 'yes', >+ 'MEMCACHED_SERVERS' => '127.0.0.1:11211', >+ '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 >@@ -558,64 +558,65 @@ my %config_defaults = ( > warn "Your platform appears to be $^O.\n" if $DEBUG; > > if ( $^O eq 'cygwin' ) { >- # Most Unix2Win32 ports seem to poke everything into the Program Files directory >- # this could be changed to put some files (ie. libraries) into system32, etc. >- $config_defaults{'INSTALL_MODE'} = 'single'; >- $config_defaults{'INSTALL_BASE'} = 'c:/progra~1/koha'; # Use 8.3 names to be safe... >-} >-else { >- $config_defaults{'INSTALL_MODE'} = 'standard'; >- $config_defaults{'INSTALL_BASE'} = '/usr/share/koha'; >+ >+ # Most Unix2Win32 ports seem to poke everything into the Program Files directory >+ # this could be changed to put some files (ie. libraries) into system32, etc. >+ $config_defaults{'INSTALL_MODE'} = 'single'; >+ $config_defaults{'INSTALL_BASE'} = 'c:/progra~1/koha'; # Use 8.3 names to be safe... >+} else { >+ $config_defaults{'INSTALL_MODE'} = 'standard'; >+ $config_defaults{'INSTALL_BASE'} = '/usr/share/koha'; > } > > # valid values for certain configuration options > 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 }, >- '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 }, >+ '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 }, >+ '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 $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_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_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_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 = ""; >+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( >@@ -654,51 +655,56 @@ my $results = GetOptions( > ) or HelpMessage(1); > > my %install_log_values = (); >-if ($koha_install_log ne "") { >- get_install_log_values($koha_install_log, \%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); >+ get_cli_values( \%install_log_values ); > } > >-my %config = get_configuration(\%config_defaults, \%valid_config_values, \%install_log_values); >-my ($target_directories, $skip_directories) = get_target_directories(\%config); >-display_configuration(\%config, $target_directories); >+my %config = get_configuration( \%config_defaults, \%valid_config_values, \%install_log_values ); >+my ( $target_directories, $skip_directories ) = get_target_directories( \%config ); >+display_configuration( \%config, $target_directories ); > my $file_map = {}; >-get_file_map($target_map, $dirtree, $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/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/preservation.js'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/preservation.js'; >-$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/admin/record_sources.js'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/admin/record_sources.js'; >+$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/preservation.js'} = >+ 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/preservation.js'; >+$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/admin/record_sources.js'} = >+ 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/admin/record_sources.js'; >+ > #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/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'; >+$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'; >+ > #API_CGI_DIR > $file_map->{'api/v1/swagger/swagger_bundle.json'} = 'blib/API_CGI_DIR/v1/swagger/swagger_bundle.json'; > > 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' >- ], >- 'fix-perl-path.PL' => [ # this script ensures the correct shebang line for the platform installed on... >- 'blib' >- ], >+ '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' >+ ], >+ 'fix-perl-path.PL' => [ # this script ensures the correct shebang line for the platform installed on... >+ 'blib' >+ ], > }; > > push @{ $pl_files->{'rewrite-config.PL'} }, ( >@@ -713,56 +719,59 @@ push @{ $pl_files->{'rewrite-config.PL'} }, ( > push @{ $pl_files->{'rewrite-config.PL'} }, ( > 'blib/SCRIPT_DIR/koha-zebra-ctl.sh', > ); >-$config{'ZEBRA_AUTH_CFG'} = 'zebra-authorities-dom.cfg'; >-$config{'ZEBRA_BIB_CFG'} = 'zebra-biblios-dom.cfg'; >+$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") { >+if ( $config{'INSTALL_MODE'} ne "dev" ) { > push @{ $pl_files->{'rewrite-config.PL'} }, ( > 'blib/PERL_MODULE_DIR/C4/Context.pm', > ); > } > >-$config{ZEBRA_TOKENIZER_STMT} = $config{ZEBRA_TOKENIZER} eq 'icu' >+$config{ZEBRA_TOKENIZER_STMT} = >+ $config{ZEBRA_TOKENIZER} eq 'icu' > ? 'icuchain words-icu.xml' > : 'charmap word-phrase-utf.chr'; > >-$config{ZEBRA_PTOKENIZER_STMT} = $config{ZEBRA_TOKENIZER} eq 'icu' >+$config{ZEBRA_PTOKENIZER_STMT} = >+ $config{ZEBRA_TOKENIZER} eq 'icu' > ? 'icuchain phrases-icu.xml' > : 'charmap word-phrase-utf.chr'; > > 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'], >+ 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'], >- ZEBRA_LOCK_DIR => ['var', 'lock', 'zebradb'], >- ZEBRA_DATA_DIR => ['var', 'lib', 'zebradb'], >- ZEBRA_RUN_DIR => ['var', 'run', 'zebradb'], >+ ZEBRA_LOCK_DIR => [ 'var', 'lock', 'zebradb' ], >+ ZEBRA_DATA_DIR => [ 'var', 'lib', 'zebradb' ], >+ ZEBRA_RUN_DIR => [ 'var', 'run', 'zebradb' ], > ); > > WriteMakefile( >- NAME => 'koha', >- #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 <https://koha-community.org/>', >- NO_META => 1, >- PREREQ_PM => $koha_pm->prereq_pm, >- >- # File tree mapping >- PM => $file_map, >- >- # Man pages generated from POD >- # ExtUtils::MakeMaker already manage $(DESTDIR) >- INSTALLMAN1DIR => File::Spec->catdir(_strip_destdir($target_directories->{'MAN_DIR'}), 'man1'), >- INSTALLMAN3DIR => File::Spec->catdir(_strip_destdir($target_directories->{'MAN_DIR'}), 'man3'), >- >- PL_FILES => $pl_files, >+ NAME => 'koha', >+ >+ #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 <https://koha-community.org/>', >+ NO_META => 1, >+ PREREQ_PM => $koha_pm->prereq_pm, >+ >+ # File tree mapping >+ PM => $file_map, >+ >+ # Man pages generated from POD >+ # ExtUtils::MakeMaker already manage $(DESTDIR) >+ INSTALLMAN1DIR => File::Spec->catdir( _strip_destdir( $target_directories->{'MAN_DIR'} ), 'man1' ), >+ INSTALLMAN3DIR => File::Spec->catdir( _strip_destdir( $target_directories->{'MAN_DIR'} ), 'man3' ), >+ >+ PL_FILES => $pl_files, > ); > > =head1 FUNCTIONS >@@ -775,15 +784,15 @@ This directory hashing routine was taken from BrowserUK @ http://www.perlmonks.o > > =cut > >-sub hashdir{ >+sub hashdir { > my $dir = shift; > opendir my $dh, $dir or die $!; > my $tree = {}->{$dir} = {}; >- while( my $file = readdir($dh) ) { >- next if $file =~ m/^\.{1,2}/ and $file !~ /^\.htaccess/; # .htaccess is a special case >- my $path = $dir .'/' . $file; >+ while ( my $file = readdir($dh) ) { >+ next if $file =~ m/^\.{1,2}/ and $file !~ /^\.htaccess/; # .htaccess is a special case >+ my $path = $dir . '/' . $file; > $tree->{$file} = hashdir($path), next if -d $path; >- push @{$tree->{'.'}}, $file; >+ push @{ $tree->{'.'} }, $file; > } > return $tree; > } >@@ -803,60 +812,64 @@ to its destination value, like this: > > sub get_file_map { > my $target_map = shift; >- my $dirtree = shift; >- my $file_map = shift; >- my $curr_path = @_ ? shift : ['.']; >+ my $dirtree = shift; >+ my $file_map = shift; >+ my $curr_path = @_ ? shift : ['.']; > > # Traverse the directory tree. > # For each file or directory, identify the > # most specific match in the target_map >- foreach my $dir (sort keys %{ $dirtree }) { >- if ($dir eq '.') { >+ foreach my $dir ( sort keys %{$dirtree} ) { >+ if ( $dir eq '.' ) { >+ > # deal with files in directory >- foreach my $file (sort @{ $dirtree->{$dir} }) { >- my $targetdir = undef; >+ foreach my $file ( sort @{ $dirtree->{$dir} } ) { >+ my $targetdir = undef; > my $matchlevel = undef; >+ > # first, see if there is a match on this specific > # file in the target map >- my $filepath = join("/", @$curr_path, $file); >- if (exists $target_map->{$filepath}) { >- $targetdir = $target_map->{$filepath}; >+ my $filepath = join( "/", @$curr_path, $file ); >+ if ( exists $target_map->{$filepath} ) { >+ $targetdir = $target_map->{$filepath}; > $matchlevel = scalar(@$curr_path) + 1; > } else { >+ > # no match on the specific file; look for > # a directory match >- for (my $i = scalar(@$curr_path) - 1; $i >= 0; $i--) { >- my $dirpath = join("/", @$curr_path[0..$i]); >- if (exists $target_map->{$dirpath}) { >- $targetdir = $target_map->{$dirpath}; >+ for ( my $i = scalar(@$curr_path) - 1 ; $i >= 0 ; $i-- ) { >+ my $dirpath = join( "/", @$curr_path[ 0 .. $i ] ); >+ if ( exists $target_map->{$dirpath} ) { >+ $targetdir = $target_map->{$dirpath}; > $matchlevel = $i + 1; > last; > } > } > } >- if (defined $targetdir) { >- _add_to_file_map($file_map, $targetdir, $curr_path, $file, $matchlevel); >+ if ( defined $targetdir ) { >+ _add_to_file_map( $file_map, $targetdir, $curr_path, $file, $matchlevel ); > } else { >- my $path = join("/", @$curr_path); >+ my $path = join( "/", @$curr_path ); > print "failed to map: $path/$file\n" if $DEBUG; > } > } > } else { >+ > # dealing with subdirectory > push @$curr_path, $dir; >- get_file_map($target_map, $dirtree->{$dir}, $file_map, $curr_path); >+ get_file_map( $target_map, $dirtree->{$dir}, $file_map, $curr_path ); > pop @$curr_path; > } > } > } > > sub _add_to_file_map { >- my $file_map = shift; >- my $targetdir = shift; >- my $curr_path = shift; >- my $file = shift; >+ my $file_map = shift; >+ my $targetdir = shift; >+ my $curr_path = shift; >+ my $file = shift; > my $matchlevel = shift; >- my $dest_path = @_ ? shift : $curr_path; >+ my $dest_path = @_ ? shift : $curr_path; > > # The target can be one of the following: > # 1. scalar representing target symbol >@@ -865,9 +878,10 @@ sub _add_to_file_map { > # Consequently, this routine traverses this structure, > # calling itself recursively, until it deals with > # all of the scalar target symbols. >- if (ref $targetdir eq 'HASH') { >+ if ( ref $targetdir eq 'HASH' ) { > my $subtarget = $targetdir->{target}; >- if (exists $targetdir->{trimdir}) { >+ if ( exists $targetdir->{trimdir} ) { >+ > # if we get here, we've specified that > # rather than installing the file to > # $(TARGET)/matching/dirs/subdirs/file, >@@ -877,28 +891,30 @@ sub _add_to_file_map { > # Note that this the only place where > # $matchlevel is used. > my @new_dest_path = @$dest_path; >- if ($targetdir->{trimdir} == -1) { >+ if ( $targetdir->{trimdir} == -1 ) { > splice @new_dest_path, 0, $matchlevel; > } else { > splice @new_dest_path, 0, $targetdir->{trimdir}; > } >- _add_to_file_map($file_map, $subtarget, $curr_path, $file, $matchlevel, \@new_dest_path); >+ _add_to_file_map( $file_map, $subtarget, $curr_path, $file, $matchlevel, \@new_dest_path ); > } else { >+ > # actually getting here means that the > # target was unnecessarily listed > # as a hash, but we'll forgive that >- _add_to_file_map($file_map, $subtarget, $curr_path, $file, $matchlevel); >+ _add_to_file_map( $file_map, $subtarget, $curr_path, $file, $matchlevel ); > } >- } elsif ($targetdir ne 'NONE' and $targetdir ne '') { >- my $source = File::Spec->catfile(@$curr_path, $file); >- my $destination = File::Spec->catfile('blib', $targetdir, @$dest_path, $file); >+ } elsif ( $targetdir ne 'NONE' and $targetdir ne '' ) { >+ my $source = File::Spec->catfile( @$curr_path, $file ); >+ my $destination = File::Spec->catfile( 'blib', $targetdir, @$dest_path, $file ); >+ > #print "$source => $destination\n"; # DEBUG > # quote spaces in file names > # FIXME: this is of questionable portability and > # probably depends on user's make recognizing this > # quoting syntax -- probably better to remove > # spaces and shell metacharacters from all file names >- $source =~ s/ /\\ /g; >+ $source =~ s/ /\\ /g; > $destination =~ s/ /\\ /g; > > $file_map->{$source} = $destination; >@@ -913,7 +929,7 @@ Reads values provided on cli for configuration values > > sub get_cli_values { > my $values = shift; >- my $map = { >+ my $map = { > INSTALL_MODE => $cli_koha_install_mode, > DB_TYPE => $cli_koha_db_type, > DB_HOST => $cli_koha_db_host, >@@ -943,10 +959,10 @@ sub get_cli_values { > 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}, >+ 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}); >+ foreach my $key ( keys %{$map} ) { >+ $values->{$key} = $map->{$key} if ( $map->{$key} ); > } > } > >@@ -959,7 +975,7 @@ Reads value from the Koha install log specified by > > sub get_install_log_values { > my $install_log = shift; >- my $values = shift; >+ my $values = shift; > > open my $log, '<', $install_log or die "Cannot open install log $install_log: $!\n"; > while (<$log>) { >@@ -968,7 +984,7 @@ sub get_install_log_values { > next if /^=/; > next unless m/=/; > s/\s+$//g; >- my ($key, $value) = split /=/, $_, 2; >+ my ( $key, $value ) = split /=/, $_, 2; > $values->{$key} = $value; > } > close $log; >@@ -989,12 +1005,12 @@ This prompts the user for various configuration options. > =cut > > sub get_configuration { >- my $defaults = shift; >- my $valid_values = shift; >- my $install_log_values = shift; >- my %config = (); >+ my $defaults = shift; >+ my $valid_values = shift; >+ my $install_log_values = shift; >+ my %config = (); > >- my $msg = q( >+ my $msg = q( > By default, Koha can be installed in one of three ways: > > standard: Install files in conformance with the Filesystem >@@ -1015,13 +1031,14 @@ dev: Create a set of symbolic links and configuration files to > Koha from a git clone. > > Installation mode); >- $msg .= _add_valid_values_disp('INSTALL_MODE', $valid_values); >- $config{'INSTALL_MODE'} = _get_value('INSTALL_MODE', $msg, $defaults->{'INSTALL_MODE'}, $valid_values, $install_log_values); >+ $msg .= _add_valid_values_disp( 'INSTALL_MODE', $valid_values ); >+ $config{'INSTALL_MODE'} = >+ _get_value( 'INSTALL_MODE', $msg, $defaults->{'INSTALL_MODE'}, $valid_values, $install_log_values ); > > # set message and default value for INSTALL_BASE > # depending on value of INSTALL_MODE > my $install_base_default = $defaults->{'INSTALL_BASE'}; >- if ($config{'INSTALL_MODE'} eq 'dev') { >+ if ( $config{'INSTALL_MODE'} eq 'dev' ) { > $msg = q( > Please specify the directory in which to install Koha's > active configuration files and (if applicable) the >@@ -1029,22 +1046,23 @@ Zebra database. Koha's CGI scripts and templates will > be run from the current directory. > > Configuration directory:); >+ > # FIXME - home directory portability consideration apply >- $install_base_default = >- $ENV{DESTDIR} >- || ( exists $ENV{HOME} ? "$ENV{HOME}/koha-dev" : "$defaults->{'INSTALL_BASE'}-dev" ) >- ; >- } elsif ($config{'INSTALL_MODE'} eq 'single') { >+ $install_base_default = $ENV{DESTDIR} >+ || ( exists $ENV{HOME} ? "$ENV{HOME}/koha-dev" : "$defaults->{'INSTALL_BASE'}-dev" ); >+ } elsif ( $config{'INSTALL_MODE'} eq 'single' ) { > $msg = "\nPlease specify the directory in which to install Koha"; >+ > # FIXME -- we're assuming under a 'single' mode install > # that user will likely want to install under the home > # directory. This is OK in and of itself, but we should > # use File::HomeDir to locate the home directory portably. > # This is deferred for now because File::HomeDir is not yet > # core. >- # --we must also keep this portable to the major OS's -fbcit >- $install_base_default = (exists $ENV{'HOME'}) ? "$ENV{'HOME'}/koha" : $defaults->{'INSTALL_BASE'}; >+ # --we must also keep this portable to the major OS's -fbcit >+ $install_base_default = ( exists $ENV{'HOME'} ) ? "$ENV{'HOME'}/koha" : $defaults->{'INSTALL_BASE'}; > } else { >+ > # must be standard > $msg = q( > Please specify the directory under which most Koha files >@@ -1057,11 +1075,12 @@ as the package name in the FHS layout. > > Base installation directory); > } >- $config{'INSTALL_BASE'} = _get_value('INSTALL_BASE', $msg, $install_base_default, $valid_values, $install_log_values); >+ $config{'INSTALL_BASE'} = >+ _get_value( 'INSTALL_BASE', $msg, $install_base_default, $valid_values, $install_log_values ); > >- $config{'INSTALL_BASE'} = File::Spec->rel2abs($config{'INSTALL_BASE'}); >- print "INSTALL_BASE=$config{'INSTALL_BASE'}\r\n" if $DEBUG; >- if ($config{'INSTALL_MODE'} eq "standard") { >+ $config{'INSTALL_BASE'} = File::Spec->rel2abs( $config{'INSTALL_BASE'} ); >+ print "INSTALL_BASE=$config{'INSTALL_BASE'}\r\n" if $DEBUG; >+ if ( $config{'INSTALL_MODE'} eq "standard" ) { > $msg = q( > Since you are using the 'standard' install > mode, you should run 'make install' as root. >@@ -1079,7 +1098,8 @@ user should not be the same as the user > account Apache runs under. > > User account); >- $config{'KOHA_USER'} = _get_value('KOHA_USER', $msg, $defaults->{'KOHA_USER'}, $valid_values, $install_log_values); >+ $config{'KOHA_USER'} = >+ _get_value( 'KOHA_USER', $msg, $defaults->{'KOHA_USER'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify the group that should own >@@ -1088,7 +1108,8 @@ not exist right now, but should be created > before you run 'make install'. > > Group); >- $config{'KOHA_GROUP'} = _get_value('KOHA_GROUP', $msg, $defaults->{'KOHA_GROUP'}, $valid_values, $install_log_values); >+ $config{'KOHA_GROUP'} = >+ _get_value( 'KOHA_GROUP', $msg, $defaults->{'KOHA_GROUP'}, $valid_values, $install_log_values ); > } > > $msg = q( >@@ -1098,8 +1119,8 @@ PostgreSQL; please note that at the moment > PostgreSQL support is highly experimental. > > DBMS to use); >- $msg .= _add_valid_values_disp('DB_TYPE', $valid_values); >- $config{'DB_TYPE'} = _get_value('DB_TYPE', $msg, $defaults->{'DB_TYPE'}, $valid_values, $install_log_values); >+ $msg .= _add_valid_values_disp( 'DB_TYPE', $valid_values ); >+ $config{'DB_TYPE'} = _get_value( 'DB_TYPE', $msg, $defaults->{'DB_TYPE'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify the name or address of your >@@ -1109,49 +1130,59 @@ can be created after running 'make install' > and before you try using Koha for the first time. > > Database server); >- $config{'DB_HOST'} = _get_value('DB_HOST', $msg, $defaults->{'DB_HOST'}, $valid_values, $install_log_values); >+ $config{'DB_HOST'} = _get_value( 'DB_HOST', $msg, $defaults->{'DB_HOST'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify the port used to connect to the > DMBS); > my $db_port_default = $config{'DB_TYPE'} eq 'mysql' ? '3306' : '5432'; >- $config{'DB_PORT'} = _get_value('DB_PORT', $msg, $db_port_default, $valid_values, $install_log_values); >+ $config{'DB_PORT'} = _get_value( 'DB_PORT', $msg, $db_port_default, $valid_values, $install_log_values ); > > $msg = q( > 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'){ >+ $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); >+ $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'){ >+ 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); >+ $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); >+ $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); >+ $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 > used by Koha); >- $config{'DB_USER'} = _get_value('DB_USER', $msg, $defaults->{'DB_USER'}, $valid_values, $install_log_values); >+ $config{'DB_USER'} = _get_value( 'DB_USER', $msg, $defaults->{'DB_USER'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify the password of the user that owns the > database to be used by Koha); >- $config{'DB_PASS'} = _get_value('DB_PASS', $msg, $defaults->{'DB_PASS'}, $valid_values, $install_log_values); >+ $config{'DB_PASS'} = _get_value( 'DB_PASS', $msg, $defaults->{'DB_PASS'}, $valid_values, $install_log_values ); > > print q( > Koha uses the Zebra search engine for high-performance >@@ -1159,7 +1190,7 @@ searching of bibliographic and authority records. Checking > to see if you have installed the Zebra software... > ); > >- if (defined(my $zebra_path = find_zebra())) { >+ if ( defined( my $zebra_path = find_zebra() ) ) { > $config{'PATH_TO_ZEBRA'} = $zebra_path; > print qq( > Found 'zebrasrv' and 'zebraidx' in $zebra_path. >@@ -1181,16 +1212,18 @@ Koha provides Zebra configuration files for MARC21, > and UNIMARC. > > MARC format for Zebra indexing); >- $msg .= _add_valid_values_disp('ZEBRA_MARC_FORMAT', $valid_values); >- $config{'ZEBRA_MARC_FORMAT'} = _get_value('ZEBRA_MARC_FORMAT', $msg, $defaults->{'ZEBRA_MARC_FORMAT'}, $valid_values, $install_log_values); >+ $msg .= _add_valid_values_disp( 'ZEBRA_MARC_FORMAT', $valid_values ); >+ $config{'ZEBRA_MARC_FORMAT'} = >+ _get_value( 'ZEBRA_MARC_FORMAT', $msg, $defaults->{'ZEBRA_MARC_FORMAT'}, $valid_values, $install_log_values ); > $msg = q( > Koha supplies Zebra configuration files tuned for > searching either English (en) or French (fr) MARC > records. > > 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( > Zebra has two methods to perform records tokenization >@@ -1198,16 +1231,19 @@ and characters normalization: CHR and ICU. ICU is > recommended for catalogs containing non-Latin > characters.); > >- $msg .= _add_valid_values_disp('ZEBRA_TOKENIZER', $valid_values); >- $config{'ZEBRA_TOKENIZER'} = _get_value('ZEBRA_TOKENIZER', $msg, $defaults->{'ZEBRA_TOKENIZER'}, $valid_values, $install_log_values); >+ $msg .= _add_valid_values_disp( 'ZEBRA_TOKENIZER', $valid_values ); >+ $config{'ZEBRA_TOKENIZER'} = >+ _get_value( 'ZEBRA_TOKENIZER', $msg, $defaults->{'ZEBRA_TOKENIZER'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify Zebra database user); >- $config{'ZEBRA_USER'} = _get_value('ZEBRA_USER', $msg, $defaults->{'ZEBRA_USER'}, $valid_values, $install_log_values); >+ $config{'ZEBRA_USER'} = >+ _get_value( 'ZEBRA_USER', $msg, $defaults->{'ZEBRA_USER'}, $valid_values, $install_log_values ); > > $msg = q( > Please specify the Zebra database password); >- $config{'ZEBRA_PASS'} = _get_value('ZEBRA_PASS', $msg, $defaults->{'ZEBRA_PASS'}, $valid_values, $install_log_values); >+ $config{'ZEBRA_PASS'} = >+ _get_value( 'ZEBRA_PASS', $msg, $defaults->{'ZEBRA_PASS'}, $valid_values, $install_log_values ); > > $msg = q( > Since you've chosen to use Zebra, you can enable the SRU/ >@@ -1219,10 +1255,11 @@ koha-conf.xml will still contain some references to SRU > settings. Those references will be ignored by Koha. > > Install the SRU configuration files?); >- $msg .= _add_valid_values_disp('INSTALL_SRU', $valid_values); >- $config{'INSTALL_SRU'} = _get_value('INSTALL_SRU', $msg, $defaults->{'INSTALL_SRU'}, $valid_values, $install_log_values); >+ $msg .= _add_valid_values_disp( 'INSTALL_SRU', $valid_values ); >+ $config{'INSTALL_SRU'} = >+ _get_value( 'INSTALL_SRU', $msg, $defaults->{'INSTALL_SRU'}, $valid_values, $install_log_values ); > >- if ($config{'INSTALL_SRU'} eq 'yes') { >+ if ( $config{'INSTALL_SRU'} eq 'yes' ) { > $msg = q( > Since you've chosen to configure SRU, you must > specify the host and port(s) that the SRU >@@ -1230,112 +1267,141 @@ Servers (bibliographic and authority) should run on. > ); > $msg = q( > SRU Database host?); >- $config{'ZEBRA_SRU_HOST'} = _get_value('ZEBRA_SRU_HOST', $msg, $defaults->{'ZEBRA_SRU_HOST'}, $valid_values, $install_log_values); >+ $config{'ZEBRA_SRU_HOST'} = >+ _get_value( 'ZEBRA_SRU_HOST', $msg, $defaults->{'ZEBRA_SRU_HOST'}, $valid_values, $install_log_values ); > > $msg = q( > SRU port for bibliographic data?); >- $config{'ZEBRA_SRU_BIBLIOS_PORT'} = _get_value('ZEBRA_SRU_BIBLIOS_PORT', $msg, $defaults->{'ZEBRA_SRU_BIBLIOS_PORT'}, $valid_values, $install_log_values); >+ $config{'ZEBRA_SRU_BIBLIOS_PORT'} = _get_value( >+ 'ZEBRA_SRU_BIBLIOS_PORT', $msg, $defaults->{'ZEBRA_SRU_BIBLIOS_PORT'}, $valid_values, >+ $install_log_values >+ ); > > $msg = q( > SRU port for authority data?); >- $config{'ZEBRA_SRU_AUTHORITIES_PORT'} = _get_value('ZEBRA_SRU_AUTHORITIES_PORT', $msg, $defaults->{'ZEBRA_SRU_AUTHORITIES_PORT'}, $valid_values, $install_log_values); >+ $config{'ZEBRA_SRU_AUTHORITIES_PORT'} = _get_value( >+ 'ZEBRA_SRU_AUTHORITIES_PORT', $msg, $defaults->{'ZEBRA_SRU_AUTHORITIES_PORT'}, $valid_values, >+ $install_log_values >+ ); > > } > >- $msg = q( >+ $msg = q( > 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); >- if ($config{'USE_MEMCACHED'} eq 'yes'){ >- $msg = q( >+ $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 ); >+ if ( $config{'USE_MEMCACHED'} eq 'yes' ) { >+ $msg = q( > Since you've chosen to use caching, you must specify the memcached servers and the namespace to use: > ); >- $msg = q( >+ $msg = q( > Memcached server address?); >- $config{'MEMCACHED_SERVERS'} = _get_value('MEMCACHED_SERVERS', $msg, $defaults->{'MEMCACHED_SERVERS'}, $valid_values, $install_log_values); >+ $config{'MEMCACHED_SERVERS'} = _get_value( >+ 'MEMCACHED_SERVERS', $msg, $defaults->{'MEMCACHED_SERVERS'}, $valid_values, >+ $install_log_values >+ ); > >- $msg = q( >+ $msg = q( > 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( >+ $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( >+ $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( >+ $msg = q( > Elasticsearch server addresses?); >- $config{'ELASTICSEARCH_SERVERS'} = _get_value('ELASTICSEARCH_SERVERS', $msg, $defaults->{'ELASTICSEARCH_SERVERS'}, $valid_values, $install_log_values); >+ $config{'ELASTICSEARCH_SERVERS'} = _get_value( >+ 'ELASTICSEARCH_SERVERS', $msg, $defaults->{'ELASTICSEARCH_SERVERS'}, $valid_values, >+ $install_log_values >+ ); > >- $msg = q( >+ $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); >- } >+ $config{'ELASTICSEARCH_INDEX'} = _get_value( >+ 'ELASTICSEARCH_INDEX', $msg, $defaults->{'ELASTICSEARCH_INDEX'}, $valid_values, >+ $install_log_values >+ ); >+ } > >- $msg = q( >+ $msg = q( > Template cache directory?); >- $config{'TEMPLATE_CACHE_DIR'} = _get_value('TEMPLATE_CACHE_DIR', $msg, $defaults->{'TEMPLATE_CACHE_DIR'}, $valid_values, $install_log_values); >+ $config{'TEMPLATE_CACHE_DIR'} = >+ _get_value( 'TEMPLATE_CACHE_DIR', $msg, $defaults->{'TEMPLATE_CACHE_DIR'}, $valid_values, $install_log_values ); > >- $msg = q( >+ $msg = q( > Path to DejaVu fonts?); >- $config{'FONT_DIR'} = _get_value('FONT_DIR', $msg, $defaults->{'FONT_DIR'}, $valid_values, $install_log_values); >+ $config{'FONT_DIR'} = _get_value( 'FONT_DIR', $msg, $defaults->{'FONT_DIR'}, $valid_values, $install_log_values ); > >- $msg = q( >+ $msg = q( > SMTP settings > You will be able to set your default SMTP configuration.); >- $msg .= q{ >+ $msg .= q{ > SMTP host name?}; >- $config{'SMTP_HOST'} = _get_value('SMTP_HOST', $msg, $defaults->{'SMTP_HOST'}, $valid_values, $install_log_values); >+ $config{'SMTP_HOST'} = >+ _get_value( 'SMTP_HOST', $msg, $defaults->{'SMTP_HOST'}, $valid_values, $install_log_values ); > >- $msg = q{ >+ $msg = q{ > SMTP port?}; >- $config{'SMTP_PORT'} = _get_value('SMTP_PORT', $msg, $defaults->{'SMTP_PORT'}, $valid_values, $install_log_values); >+ $config{'SMTP_PORT'} = >+ _get_value( 'SMTP_PORT', $msg, $defaults->{'SMTP_PORT'}, $valid_values, $install_log_values ); > >- $msg = q{ >+ $msg = q{ > SMTP timeout (in seconds)?}; >- $config{'SMTP_TIMEOUT'} = _get_value('SMTP_TIMEOUT', $msg, $defaults->{'SMTP_TIMEOUT'}, $valid_values, $install_log_values); >+ $config{'SMTP_TIMEOUT'} = >+ _get_value( 'SMTP_TIMEOUT', $msg, $defaults->{'SMTP_TIMEOUT'}, $valid_values, $install_log_values ); > >- $msg = q{ >+ $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 .= _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{ >+ $msg = q{ > SMTP user name?}; >- $config{'SMTP_USER_NAME'} = _get_value('SMTP_USER_NAME', $msg, $defaults->{'SMTP_USER_NAME'}, $valid_values, $install_log_values); >+ $config{'SMTP_USER_NAME'} = >+ _get_value( 'SMTP_USER_NAME', $msg, $defaults->{'SMTP_USER_NAME'}, $valid_values, $install_log_values ); > >- $msg = q{ >+ $msg = q{ > SMTP password?}; >- $config{'SMTP_PASSWORD'} = _get_value('SMTP_PASSWORD', $msg, $defaults->{'SMTP_PASSWORD'}, $valid_values, $install_log_values); >+ $config{'SMTP_PASSWORD'} = >+ _get_value( 'SMTP_PASSWORD', $msg, $defaults->{'SMTP_PASSWORD'}, $valid_values, $install_log_values ); > >- $msg = q{ >+ $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); >+ $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; >+ $config{'SMTP_DEBUG'} = ( $config{'SMTP_DEBUG'} eq 'yes' ) ? 1 : 0; > >- $msg = q( >+ $msg = q( > Would you like to run the database-dependent test suite?); >- $msg .= _add_valid_values_disp( 'RUN_DATABASE_TESTS', $valid_values ); >- $config{'RUN_DATABASE_TESTS'} = _get_value( 'RUN_DATABASE_TESTS', $msg, $defaults->{'RUN_DATABASE_TESTS'}, $valid_values, $install_log_values ); >+ $msg .= _add_valid_values_disp( 'RUN_DATABASE_TESTS', $valid_values ); >+ $config{'RUN_DATABASE_TESTS'} = >+ _get_value( 'RUN_DATABASE_TESTS', $msg, $defaults->{'RUN_DATABASE_TESTS'}, $valid_values, $install_log_values ); > >- if ( $config{'RUN_DATABASE_TESTS'} eq 'yes' ) { >- $config{'TEST_DB_TYPE'} = $config{'DB_TYPE'}; >- $config{'TEST_DB_HOST'} = $config{'DB_HOST'}; >- $msg = q(TEST DATABASE >+ if ( $config{'RUN_DATABASE_TESTS'} eq 'yes' ) { >+ $config{'TEST_DB_TYPE'} = $config{'DB_TYPE'}; >+ $config{'TEST_DB_HOST'} = $config{'DB_HOST'}; >+ $msg = q(TEST DATABASE > > 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 >@@ -1348,22 +1414,27 @@ doing it in a database that you don't want to lose. > Please specify the name of the test database to be > used by Koha); > >- $config{'TEST_DB_NAME'} = _get_value('TEST_DB_NAME', $msg, $defaults->{'TEST_DB_NAME'}, $valid_values, $install_log_values); >- while ( $config{'TEST_DB_NAME'} eq $config{'DB_NAME'} ) { >- $msg = q(Please do not use the same database for testing as you do for production. You run the severe risk of data loss.); >- $config{'TEST_DB_NAME'} = _get_value('TEST_DB_NAME', $msg, $defaults->{'TEST_DB_NAME'}, $valid_values, $install_log_values); >- } >+ $config{'TEST_DB_NAME'} = >+ _get_value( 'TEST_DB_NAME', $msg, $defaults->{'TEST_DB_NAME'}, $valid_values, $install_log_values ); >+ while ( $config{'TEST_DB_NAME'} eq $config{'DB_NAME'} ) { >+ $msg = >+ q(Please do not use the same database for testing as you do for production. You run the severe risk of data loss.); >+ $config{'TEST_DB_NAME'} = >+ _get_value( 'TEST_DB_NAME', $msg, $defaults->{'TEST_DB_NAME'}, $valid_values, $install_log_values ); >+ } > >- $msg = q( >+ $msg = q( > Please specify the user that owns the database to be > used by Koha); >- $config{'TEST_DB_USER'} = _get_value('TEST_DB_USER', $msg, $defaults->{'TEST_DB_USER'}, $valid_values, $install_log_values); >+ $config{'TEST_DB_USER'} = >+ _get_value( 'TEST_DB_USER', $msg, $defaults->{'TEST_DB_USER'}, $valid_values, $install_log_values ); > >- $msg = q( >+ $msg = q( > Please specify the password of the user that owns the > database to be used by Koha); >- $config{'TEST_DB_PASS'} = _get_value('TEST_DB_PASS', $msg, $defaults->{'TEST_DB_PASS'}, $valid_values, $install_log_values); >- } >+ $config{'TEST_DB_PASS'} = >+ _get_value( 'TEST_DB_PASS', $msg, $defaults->{'TEST_DB_PASS'}, $valid_values, $install_log_values ); >+ } > > print "\n\n"; > >@@ -1379,44 +1450,45 @@ database to be used by Koha); > } > > sub _add_valid_values_disp { >- my $key = shift; >+ my $key = shift; > my $valid_values = shift; > > my $disp = ""; >- if (exists $valid_values->{$key}) { >- $disp = " (" . join(", ", sort keys %{ $valid_values->{$key} }) . ")"; >+ if ( exists $valid_values->{$key} ) { >+ $disp = " (" . join( ", ", sort keys %{ $valid_values->{$key} } ) . ")"; > } > return $disp; > } > > sub _get_value { >- my $key = shift; >- my $msg = shift; >- my $default = shift; >- my $valid_values = shift; >+ my $key = shift; >+ my $msg = shift; >+ my $default = shift; >+ my $valid_values = shift; > my $install_log_values = shift; > > # take value from install log if present >- if (exists $install_log_values{$key}) { >+ if ( exists $install_log_values{$key} ) { > $install_log_values{$key} =~ s/\$/\$\$/g; > return $install_log_values{$key}; > } > > # override default value from environment >- if (exists $ENV{$key}) { >+ if ( exists $ENV{$key} ) { > $default = $ENV{$key}; > $msg .= " (default from environment)"; > } > >- my $val = prompt($msg, $default); >+ my $val = prompt( $msg, $default ); > >- while (exists $valid_values->{$key} and >- $val ne $default and >- not exists $valid_values->{$key}->{$val}) { >+ while ( exists $valid_values->{$key} >+ and $val ne $default >+ and not exists $valid_values->{$key}->{$val} ) >+ { > my $retry_msg = "Value '$val' is not a valid option.\n"; > $retry_msg .= "Please enter a value"; >- $retry_msg .= _add_valid_values_disp($key, $valid_values); >- $val = prompt($retry_msg, $default); >+ $retry_msg .= _add_valid_values_disp( $key, $valid_values ); >+ $val = prompt( $retry_msg, $default ); > } > $val =~ s/\$/\$\$/g; > return $val; >@@ -1441,112 +1513,117 @@ sub get_target_directories { > > # get last component of install base directory > # to treat as package name >- my ($volume, $directories, $file) = File::Spec->splitpath($base, 1); >+ my ( $volume, $directories, $file ) = File::Spec->splitpath( $base, 1 ); > > 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; > >- >- my %dirmap = (); >+ 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'); >- $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'cgi-bin'); >- $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{'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'); >- $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb'); >- $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'); >+ 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' ); >+ $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir( @basedir, $package, 'opac', 'cgi-bin' ); >+ $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{'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' ); >+ $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir( @basedir, $package, 'var', 'lib', 'zebradb' ); >+ $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' ); > $skipdirs{'INTRANET_TMPL_DIR'} = 1; >- $dirmap{'INTRANET_WWW_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl'); >- $skipdirs{'INTRANET_WWW_DIR'} = 1; >- $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir($curdir); >- $skipdirs{'OPAC_CGI_DIR'} = 1; >- $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl', 'opac-tmpl'); >- $skipdirs{'OPAC_TMPL_DIR'} = 1; >- $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl'); >- $skipdirs{'OPAC_WWW_DIR'} = 1; >+ $dirmap{'INTRANET_WWW_DIR'} = File::Spec->catdir( $curdir, 'koha-tmpl' ); >+ $skipdirs{'INTRANET_WWW_DIR'} = 1; >+ $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir($curdir); >+ $skipdirs{'OPAC_CGI_DIR'} = 1; >+ $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir( $curdir, 'koha-tmpl', 'opac-tmpl' ); >+ $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'); >+ $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{'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{'KOHA_CONF_DIR'} = File::Spec->catdir( @basedir, $package, 'etc' ); >+ $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir( @basedir, $package, 'etc', 'zebradb' ); >+ $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) > #Used by supportdir in koha-conf.xml (BZ 12031) >- $dirmap{'SCRIPT_NONDEV_DIR'} = File::Spec->catdir($curdir, 'misc'); >+ $dirmap{'SCRIPT_NONDEV_DIR'} = File::Spec->catdir( $curdir, 'misc' ); > $skipdirs{'SCRIPT_NONDEV_DIR'} = 1; >- $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'); >- $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb'); >- $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb'); >+ $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' ); >+ $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir( @basedir, $package, 'var', 'lib', 'zebradb' ); >+ $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'); >- $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'cgi-bin'); >- $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{'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'); >- $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'zebradb'); >- $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb'); >+ $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' ); >+ $dirmap{'OPAC_CGI_DIR'} = File::Spec->catdir( @basedir, $package, 'opac', 'cgi-bin' ); >+ $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{'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' ); >+ $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir( File::Spec->rootdir(), 'var', 'lib', $package, 'zebradb' ); >+ $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir( File::Spec->rootdir(), 'var', 'run', $package, 'zebradb' ); > } > >- _get_env_overrides(\%dirmap); >- _get_argv_overrides(\%dirmap); >- _add_destdir(\%dirmap); >+ _get_env_overrides( \%dirmap ); >+ _get_argv_overrides( \%dirmap ); >+ _add_destdir( \%dirmap ); > > return \%dirmap, \%skipdirs; > } >@@ -1561,9 +1638,9 @@ the test suite. > sub get_test_dir { > my ($dirname) = @_; > >- my @basedir = (File::Spec->rel2abs(File::Spec->curdir()), 't', 'run'); >- if (exists $test_suite_override_dirs{$dirname}) { >- return File::Spec->catdir(@basedir, @{ $test_suite_override_dirs{$dirname} }); >+ my @basedir = ( File::Spec->rel2abs( File::Spec->curdir() ), 't', 'run' ); >+ if ( exists $test_suite_override_dirs{$dirname} ) { >+ return File::Spec->catdir( @basedir, @{ $test_suite_override_dirs{$dirname} } ); > } else { > return; > } >@@ -1573,8 +1650,8 @@ sub get_test_dir { > sub _get_env_overrides { > my $dirmap = shift; > >- foreach my $key (keys %$dirmap) { >- if (exists $ENV{$key}) { >+ foreach my $key ( keys %$dirmap ) { >+ if ( exists $ENV{$key} ) { > $dirmap->{$key} = $ENV{$key}; > print "Setting $key from environment\n"; > } >@@ -1585,8 +1662,8 @@ sub _get_argv_overrides { > my $dirmap = shift; > > my @new_argv = (); >- for (my $i = 0; $i <= $#ARGV; $i++) { >- if ($ARGV[$i] =~ /^([^=]+)=([^=]+)$/ and exists $dirmap->{$1}) { >+ for ( my $i = 0 ; $i <= $#ARGV ; $i++ ) { >+ if ( $ARGV[$i] =~ /^([^=]+)=([^=]+)$/ and exists $dirmap->{$1} ) { > $dirmap->{$1} = $2; > } else { > push @new_argv, $ARGV[$i]; >@@ -1604,24 +1681,24 @@ sub _strip_destdir { > sub _add_destdir { > my $dirmap = shift; > >- foreach my $key (keys %$dirmap) { >- $dirmap->{$key} = '$(DESTDIR)'.$dirmap->{$key}; >+ foreach my $key ( keys %$dirmap ) { >+ $dirmap->{$key} = '$(DESTDIR)' . $dirmap->{$key}; > } > } > > sub display_configuration { >- my $config = shift; >- my $dirmap = shift; >+ my $config = shift; >+ my $dirmap = shift; > my @version = grep /\/usr\/share\/perl\//, @INC; > push @version, ('/usr/share/perl/5.10') if !$version[0]; > print "\n\nKoha will be installed with the following configuration parameters:\n\n"; >- foreach my $key (sort keys %$config) { >- print sprintf("%-25.25s%s\n", $key, $config->{$key}); >+ foreach my $key ( sort keys %$config ) { >+ print sprintf( "%-25.25s%s\n", $key, $config->{$key} ); > } > > print "\nand in the following directories:\n\n"; >- foreach my $key (sort keys %$dirmap) { >- print sprintf("%-25.25s%s\n", $key, $dirmap->{$key}); >+ foreach my $key ( sort keys %$dirmap ) { >+ print sprintf( "%-25.25s%s\n", $key, $dirmap->{$key} ); > } > print "\n\nTo change any configuration setting, please run\n"; > print "perl Makefile.PL again. To override one of the target\n"; >@@ -1645,17 +1722,18 @@ a few other directories for zebrasrv and zebraidx. > > sub find_zebra { > my @search_dirs = map { >- my $abs = File::Spec->rel2abs($_); >- my ($toss, $directories); >- ($toss, $directories, $toss) = File::Spec->splitpath($abs, 1); >- $directories; >- } split /:/, $ENV{PATH}; >+ my $abs = File::Spec->rel2abs($_); >+ my ( $toss, $directories ); >+ ( $toss, $directories, $toss ) = File::Spec->splitpath( $abs, 1 ); >+ $directories; >+ } split /:/, $ENV{PATH}; > push @search_dirs, qw(/usr/local/bin /opt/local/bin /usr/bin); >- my @zebrasrv_dirs = grep { -x File::Spec->catpath('', $_, 'zebrasrv') } @search_dirs; >+ my @zebrasrv_dirs = grep { -x File::Spec->catpath( '', $_, 'zebrasrv' ) } @search_dirs; > return unless @zebrasrv_dirs; >+ > # verify that directory that contains zebrasrv also contains zebraidx > foreach my $dir (@zebrasrv_dirs) { >- return $dir if -x File::Spec->catpath('', $dir, 'zebraidx'); >+ return $dir if -x File::Spec->catpath( '', $dir, 'zebraidx' ); > } > return; > } >@@ -1673,59 +1751,64 @@ sub test { > } > > sub install { >- my $self = shift; >+ my $self = shift; > my $install = ""; >+ > # NOTE: we're *not* doing this: my $install = $self->SUPER::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 }); >+ 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) { >- $install .= qq( >+ # 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 ) { >+ $install .= qq( > KOHA_INST_$key = blib/$key > KOHA_DEST_$key = $target_directories->{$key} > ) unless exists $skip_directories->{$key}; >- } >- $install .= qq( >+ } >+ $install .= qq( > install :: all install_koha set_koha_ownership set_koha_permissions warn_koha_env_vars > \t\$(NOECHO) \$(NOOP) > ); >- $install .= "install_koha ::\n"; >- $install .= "\t\$(NOECHO) umask 022; \$(MOD_INSTALL) \\\n"; >- foreach my $key (sort keys %$target_directories) { >- $install .= "\t\t\$(KOHA_INST_$key) \$(KOHA_DEST_$key) \\\n" >- unless exists $skip_directories->{$key}; >- } >- $install .= "\t\t\$(INST_MAN1DIR) \$(DESTINSTALLMAN1DIR) \\\n"; >- $install .= "\t\t\$(INST_MAN3DIR) \$(DESTINSTALLMAN3DIR)\n"; >- >- $install .= "\n"; >- $install .= "set_koha_ownership ::\n"; >-# Do not try to change ownership if DESTDIR is set >- if ($config{'INSTALL_MODE'} eq 'standard' and $config{'KOHA_USER'} ne "root") { >- foreach my $key (sort keys %$target_directories) { >- $install .= "\t\$(NOECHO) if test -z \"\$(DESTDIR)\"; then chown -R $config{'KOHA_USER'}:$config{'KOHA_GROUP'} \$(KOHA_DEST_$key); fi\n" >- unless exists $skip_directories->{$key}; >- } >- } else { >- $install .= "\t\t\$(NOECHO) \$(NOOP)\n\n"; >- } >- >- $install .= "\n"; >- $install .= "set_koha_permissions ::\n"; >- # This is necessary because EU::MM installs files >- # as either 0444 or 0555, and we want the owner >- # of Koha's files to have write permission by default. >- foreach my $key (sort keys %$target_directories) { >- $install .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_$key)\n" >- unless exists $skip_directories->{$key}; >- } >- } >- >- $install .= "\n"; >+ $install .= "install_koha ::\n"; >+ $install .= "\t\$(NOECHO) umask 022; \$(MOD_INSTALL) \\\n"; >+ foreach my $key ( sort keys %$target_directories ) { >+ $install .= "\t\t\$(KOHA_INST_$key) \$(KOHA_DEST_$key) \\\n" >+ unless exists $skip_directories->{$key}; >+ } >+ $install .= "\t\t\$(INST_MAN1DIR) \$(DESTINSTALLMAN1DIR) \\\n"; >+ $install .= "\t\t\$(INST_MAN3DIR) \$(DESTINSTALLMAN3DIR)\n"; >+ >+ $install .= "\n"; >+ $install .= "set_koha_ownership ::\n"; >+ >+ # Do not try to change ownership if DESTDIR is set >+ if ( $config{'INSTALL_MODE'} eq 'standard' and $config{'KOHA_USER'} ne "root" ) { >+ foreach my $key ( sort keys %$target_directories ) { >+ $install .= >+ "\t\$(NOECHO) if test -z \"\$(DESTDIR)\"; then chown -R $config{'KOHA_USER'}:$config{'KOHA_GROUP'} \$(KOHA_DEST_$key); fi\n" >+ unless exists $skip_directories->{$key}; >+ } >+ } else { >+ $install .= "\t\t\$(NOECHO) \$(NOOP)\n\n"; >+ } >+ >+ $install .= "\n"; >+ $install .= "set_koha_permissions ::\n"; >+ >+ # This is necessary because EU::MM installs files >+ # as either 0444 or 0555, and we want the owner >+ # of Koha's files to have write permission by default. >+ foreach my $key ( sort keys %$target_directories ) { >+ $install .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_$key)\n" >+ unless exists $skip_directories->{$key}; >+ } >+ } >+ >+ $install .= "\n"; > > $install .= "warn_koha_env_vars ::\n"; > $install .= "\t\$(NOECHO) \$(ECHO)\n"; >@@ -1769,7 +1852,7 @@ sub upgrade { > my $upgrade = ""; > > my $backup_suffix; >- if (exists $install_log_values{'KOHA_INSTALLED_VERSION'}) { >+ if ( exists $install_log_values{'KOHA_INSTALLED_VERSION'} ) { > my $version = $install_log_values{'KOHA_INSTALLED_VERSION'}; > $version =~ s/\./_/g; > $backup_suffix = "_koha_$version"; >@@ -1785,17 +1868,22 @@ upgrade :: make_upgrade_backup install > 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 >- 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}; >+ foreach my $key ( >+ qw/KOHA_CONF_DIR INTRANET_TMPL_DIR INTRANET_WWW_DIR OPAC_TMPL_DIR OPAC_WWW_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}; > } > $upgrade =~ s/\\\n$/\n/; > > return $upgrade; > } >+ > sub postamble { >+ > # put directory mappings into Makefile > # so that Make will export as environment > # variables -- this is for the use of >@@ -1804,17 +1892,17 @@ sub postamble { > 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" >+ 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 .= "\n\n"; >- $env .= join("\n", map { "export __${_}__ := $config{$_}" } keys %config); >- } >+ # Hereagain, we must alter syntax per platform... >+ { >+ $env .= join( "\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories ); >+ $env .= "\n\n"; >+ $env .= join( "\n", map { "export __${_}__ := $config{$_}" } keys %config ); >+ } > > return "$env\n"; > } >@@ -1836,17 +1924,17 @@ sub _build_perl5lib_string { > 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){ >+ 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); >+ if (@paths) { >+ $perl5lib_str = join( ':', @paths ); > } > } > return $perl5lib_str; >diff --git a/fix-perl-path.PL b/fix-perl-path.PL >index f9db358e5a4..9a04a689879 100644 >--- a/fix-perl-path.PL >+++ b/fix-perl-path.PL >@@ -20,15 +20,15 @@ use ExtUtils::MakeMaker::Config; > use Tie::File; > > my $basedir = (shift); >-my $DEBUG = 0; >+my $DEBUG = 0; > > $DEBUG = 1 if $basedir eq 'test'; > > my $bindir = $Config{installbin}; >-$bindir =~ s!\\!/!g; # make all directory separators uniform since Win32 does not care and *nix does... >+$bindir =~ s!\\!/!g; # make all directory separators uniform since Win32 does not care and *nix does... > my $shebang = "#!$bindir\/perl"; > >-warn "Perl binary located in $bindir on this system.\n" if $DEBUG; >+warn "Perl binary located in $bindir on this system.\n" if $DEBUG; > warn "The shebang line for this sytems should be $shebang\n\n" if $DEBUG; > > die if $basedir eq 'test'; >@@ -59,25 +59,26 @@ in a manner similar to 'fixshebang (foodir)' but may be supplied with any direct > > =cut > >-sub fixshebang{ >- my $dir = shift; >+sub fixshebang { >+ my $dir = shift; > opendir my $dh, $dir or die $!; >- warn "Reading $dir contents.\n" if $DEBUG; >- while( my $file = readdir($dh) ) { >- # this may be used to exclude any desired files from the scan >+ warn "Reading $dir contents.\n" if $DEBUG; >+ while ( my $file = readdir($dh) ) { >+ >+ # this may be used to exclude any desired files from the scan > # if ( $file =~ /foo/ ) { next; } >- # handle files... other extensions could be substituted/added if needed >- if ( $file =~ /\.pl$/ ) { >+ # handle files... other extensions could be substituted/added if needed >+ if ( $file =~ /\.pl$/ ) { > my @filearray; >- my $pathfile =$dir . '/' . $file; >- warn "Found a perl script named $pathfile\n" if $DEBUG; >+ my $pathfile = $dir . '/' . $file; >+ warn "Found a perl script named $pathfile\n" if $DEBUG; > > # 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 $pathfile)[2] & oct(7777); >+ $old_perm = ( stat $pathfile )[2] & oct(7777); > my $new_perm = $old_perm | oct(200); > chmod $new_perm, $pathfile; > >@@ -88,30 +89,29 @@ sub fixshebang{ > tie @filearray, 'Tie::File', $pathfile, recsep => "\x0a" or die $!; > > warn "First line of $file is $filearray[0]\n\n" if $DEBUG; >- if ( ( $filearray[0] =~ /#!.*perl/ ) && ( $filearray[0] !~ /$shebang|"$shebang -w"/ ) ) { >- warn "\n\tRe-writing shebang line for $pathfile\n" if $DEBUG; >- warn "\tOriginal shebang line: $filearray[0]\n" if $DEBUG; >+ if ( ( $filearray[0] =~ /#!.*perl/ ) && ( $filearray[0] !~ /$shebang|"$shebang -w"/ ) ) { >+ warn "\n\tRe-writing shebang line for $pathfile\n" if $DEBUG; >+ warn "\tOriginal shebang line: $filearray[0]\n" if $DEBUG; > $filearray[0] =~ /-w$/ ? $filearray[0] = "$shebang -w" : $filearray[0] = $shebang; > warn "\tNew shebang line is: $filearray[0]\n\n" if $DEBUG; >- } >- elsif ( $filearray[0] =~ /$shebang|"$shebang -w"/ ) { >+ } elsif ( $filearray[0] =~ /$shebang|"$shebang -w"/ ) { > warn "\n\tShebang line is correct.\n\n" if $DEBUG; >- } >- else { >+ } else { > warn "\n\tNo shebang line found in $pathfile\n\n" if $DEBUG; >- } >+ } > untie @filearray; > chmod $old_perm, $pathfile; >- } >- # handle directories >- elsif ( -d ($dir . '/' . $file) && $file !~ /^\.{1,2}/ ) { >- my $dirpath = $dir . '/' . $file; >- warn "Found a subdir named $dirpath\n" if $DEBUG; >- fixshebang ($dirpath); >- } >- } >- closedir $dh; >+ } >+ >+ # handle directories >+ elsif ( -d ( $dir . '/' . $file ) && $file !~ /^\.{1,2}/ ) { >+ my $dirpath = $dir . '/' . $file; >+ warn "Found a subdir named $dirpath\n" if $DEBUG; >+ fixshebang($dirpath); >+ } >+ } >+ closedir $dh; > } > >-fixshebang ($basedir); >+fixshebang($basedir); > >diff --git a/rewrite-config.PL b/rewrite-config.PL >index b0ecb8f80d8..7bf7ca90d9f 100644 >--- a/rewrite-config.PL >+++ b/rewrite-config.PL >@@ -16,7 +16,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > # > # Current maintainer MJR http://mjr.towers.org.uk/ >-# >+# > # 2007/11/12 Added DB_PORT and changed other keywords to reflect multi-dbms support. -fbcit > > use Modern::Perl; >@@ -71,107 +71,107 @@ if ( $myhost = $ENV{WEBSERVER_HOST} || hostname ) { > > my $myip; > unless ( $myip = $ENV{WEBSERVER_IP} ) { >- my $byname = gethostbyname( $myhost ) >- or die "Could not get the IP address of $myhost, DNS fault? ($!)"; >+ my $byname = gethostbyname($myhost) >+ or die "Could not get the IP address of $myhost, DNS fault? ($!)"; > $myip = inet_ntoa $byname >- or die "can't inet_ntoa ($!)"; >+ or die "can't inet_ntoa ($!)"; > } > >- > my $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/$/" => "",/' > my %configuration = ( >- "__KOHA_INSTALLED_VERSION__" => "no_version_found", >- "__LOG_DIR__" => "/var/log", >- "__PLUGINS_DIR__" => "/var/lib/koha/plugins", >- "__DB_TYPE__" => "mysql", >- "__DB_NAME__" => "koha", >- "__DB_HOST__" => $myhost, >- "__DB_PORT__" => "3306", >- "__DB_USER__" => "kohaadmin", >- "__DB_PASS__" => "katikoan", >- "__DB_USE_TLS__" => "no", >- "__DB_TLS_CA_CERTIFICATE__" => "", >- "__DB_TLS_CLIENT_CERTIFICATE__" => "", >- "__DB_TLS_CLIENT_KEY__"=>"", >- "__WEBMASTER_EMAIL__" => 'webmaster@'.$mydomain, >- "__WEBSERVER_DOMAIN__" => $mydomain, >- "__WEBSERVER_HOST__" => $myhost, >- "__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", >- '__BACKUP_DIR__' => "$prefix/var/spool", >- '__API_CGI_DIR__' => "$prefix/api", >- '__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", >- '__MISC_DIR__' => "$prefix/misc", >- '__SCRIPT_DIR__' => "$prefix/bin", >- '__SCRIPT_NONDEV_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_TOKENIZER__' => 'chr', >- '__ZEBRA_TOKENIZER_STMT__' => 'charmap word-phrase-utf.chr', >- '__ZEBRA_PTOKENIZER_STMT__' => 'charmap word-phrase-utf.chr', >- '__AUTH_RETRIEVAL_CFG__' => 'retrieval-info-auth-dom.xml', >- '__BIB_RETRIEVAL_CFG__' => 'retrieval-info-bib-dom.xml', >- '__ZEBRA_AUTH_CFG__' => 'zebra-authorities-dom.cfg', >- '__ZEBRA_BIB_CFG__' => 'zebra-biblios-dom.cfg', >- "__MERGE_SERVER_HOST__" => $myhost, >- "__INSTALL_MODE__" => 'standard', >- "__INSTALL_BASE__" => '/usr/share/koha', >- "__INSTALL_SRU__" => 'yes', >- "__RUN_DATABASE_TESTS__" => 'no', >- "__PATH_TO_ZEBRA__" => "", >- "__USE_MEMCACHED__" => 'yes', >- "__MEMCACHED_SERVERS__" => "", >- "__MEMCACHED_NAMESPACE__" => "", >- "__USE_ELASTICSEARCH__" => 'no', >- "__ELASTICSEARCH_SERVERS__" => "localhost:9200", >- "__ELASTICSEARCH_INDEX__" => "koha", >- "__FONT_DIR__" => "/usr/share/fonts/truetype/dejavu", >- "__TEMPLATE_CACHE_DIR__" => "/tmp/koha", >- '__SMTP_HOST__' => 'localhost', >- '__SMTP_PORT__' => '25', >- '__SMTP_TIMEOUT__' => '120', >- '__SMTP_SSL_MODE__' => 'disabled', >- '__SMTP_USER_NAME__' => '', >- '__SMTP_PASSWORD__' => '', >- '__SMTP_DEBUG__' => '0', >- '__PERL_MODULE_LIB_DIR__' => "$prefix/lib", >- '__PERL5LIB_DIRS__' => "$prefix/lib", >+ "__KOHA_INSTALLED_VERSION__" => "no_version_found", >+ "__LOG_DIR__" => "/var/log", >+ "__PLUGINS_DIR__" => "/var/lib/koha/plugins", >+ "__DB_TYPE__" => "mysql", >+ "__DB_NAME__" => "koha", >+ "__DB_HOST__" => $myhost, >+ "__DB_PORT__" => "3306", >+ "__DB_USER__" => "kohaadmin", >+ "__DB_PASS__" => "katikoan", >+ "__DB_USE_TLS__" => "no", >+ "__DB_TLS_CA_CERTIFICATE__" => "", >+ "__DB_TLS_CLIENT_CERTIFICATE__" => "", >+ "__DB_TLS_CLIENT_KEY__" => "", >+ "__WEBMASTER_EMAIL__" => 'webmaster@' . $mydomain, >+ "__WEBSERVER_DOMAIN__" => $mydomain, >+ "__WEBSERVER_HOST__" => $myhost, >+ "__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", >+ '__BACKUP_DIR__' => "$prefix/var/spool", >+ '__API_CGI_DIR__' => "$prefix/api", >+ '__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", >+ '__MISC_DIR__' => "$prefix/misc", >+ '__SCRIPT_DIR__' => "$prefix/bin", >+ '__SCRIPT_NONDEV_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_TOKENIZER__' => 'chr', >+ '__ZEBRA_TOKENIZER_STMT__' => 'charmap word-phrase-utf.chr', >+ '__ZEBRA_PTOKENIZER_STMT__' => 'charmap word-phrase-utf.chr', >+ '__AUTH_RETRIEVAL_CFG__' => 'retrieval-info-auth-dom.xml', >+ '__BIB_RETRIEVAL_CFG__' => 'retrieval-info-bib-dom.xml', >+ '__ZEBRA_AUTH_CFG__' => 'zebra-authorities-dom.cfg', >+ '__ZEBRA_BIB_CFG__' => 'zebra-biblios-dom.cfg', >+ "__MERGE_SERVER_HOST__" => $myhost, >+ "__INSTALL_MODE__" => 'standard', >+ "__INSTALL_BASE__" => '/usr/share/koha', >+ "__INSTALL_SRU__" => 'yes', >+ "__RUN_DATABASE_TESTS__" => 'no', >+ "__PATH_TO_ZEBRA__" => "", >+ "__USE_MEMCACHED__" => 'yes', >+ "__MEMCACHED_SERVERS__" => "", >+ "__MEMCACHED_NAMESPACE__" => "", >+ "__USE_ELASTICSEARCH__" => 'no', >+ "__ELASTICSEARCH_SERVERS__" => "localhost:9200", >+ "__ELASTICSEARCH_INDEX__" => "koha", >+ "__FONT_DIR__" => "/usr/share/fonts/truetype/dejavu", >+ "__TEMPLATE_CACHE_DIR__" => "/tmp/koha", >+ '__SMTP_HOST__' => 'localhost', >+ '__SMTP_PORT__' => '25', >+ '__SMTP_TIMEOUT__' => '120', >+ '__SMTP_SSL_MODE__' => 'disabled', >+ '__SMTP_USER_NAME__' => '', >+ '__SMTP_PASSWORD__' => '', >+ '__SMTP_DEBUG__' => '0', >+ '__PERL_MODULE_LIB_DIR__' => "$prefix/lib", >+ '__PERL5LIB_DIRS__' => "$prefix/lib", > ); > > # Override configuration from the environment >-foreach my $key (keys %configuration) { >- if (defined($ENV{$key})) { >- $configuration{$key} = $ENV{$key}; >- } >+foreach my $key ( keys %configuration ) { >+ if ( defined( $ENV{$key} ) ) { >+ $configuration{$key} = $ENV{$key}; >+ } > } > > my $fname = $ARGV[0]; >-my $file = &read_file($fname); >+my $file = &read_file($fname); > $file =~ s/__.*?__/exists $configuration{$&} ? $configuration{$&} : $&/seg; > > # At this point, file is in 'blib' and by default >@@ -179,11 +179,11 @@ $file =~ s/__.*?__/exists $configuration{$&} ? $configuration{$&} : $&/seg; > # to make it writable. Note that stat and chmod > # (the Perl functions) should work on Win32 > my $old_perm; >-$old_perm = (stat $fname)[2] & oct(7777); >+$old_perm = ( stat $fname )[2] & oct(7777); > my $new_perm = $old_perm | oct(200); > chmod $new_perm, $fname; > >-open(my $output, ">", $fname) || die "Can't open $fname for write: $!"; >+open( my $output, ">", $fname ) || die "Can't open $fname for write: $!"; > print $output $file; > close($output); > >@@ -191,11 +191,11 @@ chmod $old_perm, $fname; > > # Idea taken from perlfaq5 > sub read_file { >- local $/; >- open(my $fh , '<', $_[0]) || die "Can't open $_[0] for read"; >- my $file = <$fh>; >- close $fh; >- return $file; >+ local $/; >+ open( my $fh, '<', $_[0] ) || die "Can't open $_[0] for read"; >+ my $file = <$fh>; >+ close $fh; >+ return $file; > } > > __END__ >-- >2.48.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 39149
:
178148
|
178149
|
178150
|
178151
|
178152
|
178170