Browse Source

installer: prompt for more configuration parameters

Also now allows individual target directories to be
overridden from the command line.
3.0.x
Galen Charlton 16 years ago
parent
commit
bd0877f77c
  1. 97
      Makefile.PL

97
Makefile.PL

@ -312,14 +312,22 @@ indexed by Zebra.
my %config_defaults = (
'INSTALL_MODE' => 'standard',
'INSTALL_BASE' => '/usr/share/koha',
'DB_TYPE' => 'mysql',
'DB_HOST' => 'localhost',
'DB_NAME' => 'koha',
'DB_USER' => 'kohaadmin',
'DB_PASS' => 'katikoan',
'INSTALL_ZEBRA' => 'yes',
'ZEBRA_MARC_FORMAT' => 'marc21',
'ZEBRA_LANGUAGE' => 'en',
'ZEBRA_USER' => 'kohauser',
'ZEBRA_PASS' => 'zebrastripes',
);
# valid values for certain configuration options
my %valid_config_values = (
'INSTALL_MODE' => { 'standard' => 1, 'single' => 1, 'dev' => 1 },
'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 },
'INSTALL_ZEBRA' => { 'yes' => 1, 'no' => 1 },
'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
'ZEBRA_LANGUAGE' => { 'en' => 1, 'fr' => 1 }, # FIXME should generate from contents of distribution
@ -327,6 +335,7 @@ my %valid_config_values = (
my %config = get_configuration(\%config_defaults, \%valid_config_values);
my %target_directories = get_target_directories(\%config);
display_configuration(\%config, \%target_directories);
my $file_map = {};
get_file_map($target_map, $dirtree, $file_map);
@ -637,6 +646,47 @@ as the package name in the FHS layout.);
$config{'INSTALL_BASE'} = _get_value('INSTALL_BASE', $msg, $install_base_default, $valid_values);
$config{'INSTALL_BASE'} = File::Spec->rel2abs($config{'INSTALL_BASE'});
$msg = q(
Please specify which database engine you will use
to store data in Koha. The choices are MySQL and
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);
$msg = q(
Please specify the name or address of your
database server. Note that the database
does not have to exist at this point, it
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);
$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);
$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);
$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);
$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);
$msg = q(
Koha can use the Zebra search engine for high-performance
searching of bibliographic and authority records. If you
@ -668,6 +718,15 @@ records.
Please specify the primary language of the MARC records);
$msg .= _add_valid_values_disp('ZEBRA_LANGUAGE', $valid_values);
$config{'ZEBRA_LANGUAGE'} = _get_value('ZEBRA_LANGUAGE', $msg, $defaults->{'ZEBRA_LANGUAGE'}, $valid_values);
$msg = q(
Please specify Zebra database user);
$config{'ZEBRA_USER'} = _get_value('ZEBRA_USER', $msg, $defaults->{'ZEBRA_USER'}, $valid_values);
$msg = q(
Please specify the Zebra database password);
$config{'ZEBRA_PASS'} = _get_value('ZEBRA_PASS', $msg, $defaults->{'ZEBRA_PASS'}, $valid_values);
}
return %config;
}
@ -777,12 +836,43 @@ sub get_target_directories {
$dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb');
}
foreach my $key (sort keys %dirmap) {
print sprintf("%-25.25s%s\n", $key, $dirmap{$key});
}
_get_argv_overrides(\%dirmap);
return %dirmap;
}
sub _get_argv_overrides {
my $dirmap = shift;
my @new_argv = ();
for (my $i = 0; $i <= $#ARGV; $i++) {
if ($ARGV[$i] =~ /^([^=]+)=([^=]+)$/ and exists $dirmap->{$1}) {
$dirmap->{$1} = $2;
} else {
push @new_argv, $ARGV[$i];
}
}
@ARGV = @new_argv;
}
sub display_configuration {
my $config = shift;
my $dirmap = shift;
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});
}
print "\nand in the following directories:\n\n";
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";
print "directories, you can do so on the command line like this:\n";
print "\nperl Makefile.PL PERL_MODULE_DIR=/usr/share/perl/5.8\n\n";
}
package MY;
sub test {
@ -825,6 +915,7 @@ sub postamble {
# variables -- this is for the use of
# rewrite-confg.PL
my $env = join("\n", map { "export __${_}__ = $target_directories{$_}" } keys %target_directories);
$env .= join("\n", map { "export __${_}__ = $config{$_}" } keys %config);
return "$env\n";
}

Loading…
Cancel
Save