use ExtUtils::MakeMaker;
use POSIX;
use File::Spec;
+use Getopt::Long;
my $DEBUG = 0;
die "perl 5.6.1 or later required" unless ($] >= 5.006001);
=head2 BASIC INSTALLATION
- perl Makefile.PL
- make
- sudo make install
+ perl Makefile.PL
+ make
+ make test
+ sudo make install
+
+=head2 UPGRADE INSTALLATION
+
+ perl Makefile.PL --prev-install-log /path/to/koha-install-log
+ -OR-
+ perl Makefile.PL # if no koha-install-log available
+
+ make
+ make test
+ sudo make upgrade
=head2 PACKAGING RELEASE TARBALLS
- make manifest tardist
- make manifest zipdist
+ make manifest tardist
+ make manifest zipdist
=head2 CLEANING UP
'ZEBRA_LANGUAGE' => { 'en' => 1, 'fr' => 1 }, # FIXME should generate from contents of distribution
);
-my %config = get_configuration(\%config_defaults, \%valid_config_values);
+# get settings from command-line
+my $koha_install_log = "";
+Getopt::Long::Configure('pass_through');
+my $results = GetOptions(
+ "prev-install-log=s" => \$koha_install_log
+);
+
+my %install_log_values = ();
+if ($koha_install_log ne "") {
+ get_install_log_values($koha_install_log, \%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 $file_map = {};
}
}
+=head2 get_install_log_values
+
+Reads value from the Koha install log specified by
+--prev-install-log
+
+=cut
+
+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 (<LOG>) {
+ chomp;
+ next if /^#/ or /^\s*$/;
+ next if /^=/;
+ next unless m/=/;
+ my ($key, $value) = split /=/, $_, 2;
+ $values->{$key} = $value;
+ }
+ close LOG;
+
+ print <<_EXPLAIN_INSTALL_LOG_;
+Reading values from install log $install_log. You
+will be prompted only for settings that have been
+added since the last time you installed Koha. To
+be prompted for all settings, run 'perl Makefile.PL'
+without the --prev-install-log option.
+_EXPLAIN_INSTALL_LOG_
+}
+
=head2 get_configuration
This prompts the user for various configuration options.
sub get_configuration {
my $defaults = shift;
my $valid_values = shift;
+ my $install_log_values = shift;
my %config = ();
my $msg = q(
Installation mode);
$msg .= _add_valid_values_disp('INSTALL_MODE', $valid_values);
- $config{'INSTALL_MODE'} = _get_value('INSTALL_MODE', $msg, $defaults->{'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
Base installation directory);
}
- $config{'INSTALL_BASE'} = _get_value('INSTALL_BASE', $msg, $install_base_default, $valid_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;
account Apache runs under.
User account);
- $config{'KOHA_USER'} = _get_value('KOHA_USER', $msg, $defaults->{'KOHA_USER'}, $valid_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
before you run 'make install'.
Group);
- $config{'KOHA_GROUP'} = _get_value('KOHA_GROUP', $msg, $defaults->{'KOHA_GROUP'}, $valid_values);
+ $config{'KOHA_GROUP'} = _get_value('KOHA_GROUP', $msg, $defaults->{'KOHA_GROUP'}, $valid_values, $install_log_values);
}
$msg = q(
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);
+ $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
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);
+ $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);
+ $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);
+ $config{'DB_NAME'} = _get_value('DB_NAME', $msg, $defaults->{'DB_NAME'}, $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);
+ $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);
+ $config{'DB_PASS'} = _get_value('DB_PASS', $msg, $defaults->{'DB_PASS'}, $valid_values, $install_log_values);
$msg = q(
Koha can use the Zebra search engine for high-performance
Install the Zebra configuration files?);
$msg .= _add_valid_values_disp('INSTALL_ZEBRA', $valid_values);
- $config{'INSTALL_ZEBRA'} = _get_value('INSTALL_ZEBRA', $msg, $defaults->{'INSTALL_ZEBRA'}, $valid_values);
+ $config{'INSTALL_ZEBRA'} = _get_value('INSTALL_ZEBRA', $msg, $defaults->{'INSTALL_ZEBRA'}, $valid_values, $install_log_values);
if ($config{'INSTALL_ZEBRA'} eq 'yes') {
$msg = q(
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);
+ $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
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);
+ $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
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);
+ $config{'AUTH_INDEX_MODE'} = _get_value('AUTH_INDEX_MODE', $msg, $defaults->{'AUTH_INDEX_MODE'}, $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);
+ $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);
+ $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/
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);
+ $config{'INSTALL_SRU'} = _get_value('INSTALL_SRU', $msg, $defaults->{'INSTALL_SRU'}, $valid_values, $install_log_values);
if ($config{'INSTALL_SRU'} eq 'yes') {
$msg = q(
);
$msg = q(
SRU Database host?);
- $config{'ZEBRA_SRU_HOST'} = _get_value('ZEBRA_SRU_HOST', $msg, $defaults->{'ZEBRA_SRU_HOST'}, $valid_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);
+ $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);
+ $config{'ZEBRA_SRU_AUTHORITIES_PORT'} = _get_value('ZEBRA_SRU_AUTHORITIES_PORT', $msg, $defaults->{'ZEBRA_SRU_AUTHORITIES_PORT'}, $valid_values, $install_log_values);
}
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);
+ $config{'INSTALL_PAZPAR2'} = _get_value('INSTALL_PAZPAR2', $msg, $defaults->{'INSTALL_PAZPAR2'}, $valid_values, $install_log_values);
if ($config{'INSTALL_PAZPAR2'} eq 'yes') {
$msg = q(
);
$msg = q(
Zebra bibliographic server host?);
- $config{'MERGE_SERVER_HOST'} = _get_value('MERGE_SERVER_HOST', $msg, $defaults->{'MERGE_SERVER_HOST'}, $valid_values);
+ $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);
+ $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);
+ $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);
+ $config{'PAZPAR2_PORT'} = _get_value('PAZPAR2_PORT', $msg, $defaults->{'PAZPAR2_PORT'}, $valid_values, $install_log_values);
}
}
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}) {
+ return $install_log_values{$key};
+ }
# override default value from environment
if (exists $ENV{$key}) {
return $install;
}
-=head 2 _update_zebra_conf_target
+=head2 _update_zebra_conf_target
Add an installation target for updating
Zebra's configuration files.