X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=Makefile.PL;h=deea05989cf65085b09dfb3869cea0e09d215107;hb=156cbf4eb6daadbc1e96be0c600ab1279dd9c25b;hp=594508122cf6a0f8a3fe72da750f8354180bcae6;hpb=2305d2d7683101ee131235b14b16478a431975f2;p=koha.git diff --git a/Makefile.PL b/Makefile.PL index 594508122c..deea05989c 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -243,8 +243,8 @@ my $target_map = { './MANIFEST.SKIP' => 'NONE', './members' => 'INTRANET_CGI_DIR', './misc' => { target => 'SCRIPT_DIR', trimdir => -1 }, - './misc/info' => { target => 'DOC_DIR', trimdir => 2 }, - './misc/release notes' => { target => 'DOC_DIR', trimdir => 2 }, + './misc/bin' => { target => 'SCRIPT_DIR', trimdir => -1 }, + './misc/release_notes' => { target => 'DOC_DIR', trimdir => 2 }, './misc/translator' => { target => 'MISC_DIR', trimdir => 2 }, './misc/installer_devel_notes' => 'NONE', './opac' => 'OPAC_CGI_DIR', @@ -363,27 +363,54 @@ System group that will own Koha's files. # default configuration options 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', + 'INSTALL_SRU' => 'yes', 'ZEBRA_MARC_FORMAT' => 'marc21', 'ZEBRA_LANGUAGE' => 'en', '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', ); +# set some default configuratio options based on OS +# more conditions need to be added for other OS's +# this should probably also incorporate usage of Win32::GetOSName() and/or Win32::GetOSVersion() +# to allow for more granular decisions based on which Win32 platform + +warn "Your platform appears to be $^O.\n" if $DEBUG; + +if ( $^O eq 'MSWin32' ) { + # 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... +} +elsif ( $^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'; +} + # 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 }, + 'INSTALL_SRU' => { '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 ); @@ -397,16 +424,27 @@ get_file_map($target_map, $dirtree, $file_map, $config{'INSTALL_ZEBRA'} eq "yes" my $pl_files = { 'rewrite-config.PL' => [ 'blib/KOHA_CONF_DIR/koha-conf.xml', - 'blib/KOHA_CONF_DIR/koha-httpd.conf', - ] + 'blib/KOHA_CONF_DIR/koha-httpd.conf' + ], + 'fix-perl-path.PL' => [ # this script ensures the correct shebang line for the platform installed on... + 'blib' + ] }; if ($config{'INSTALL_ZEBRA'} eq "yes") { push @{ $pl_files->{'rewrite-config.PL'} }, ( 'blib/ZEBRA_CONF_DIR/etc/passwd', 'blib/ZEBRA_CONF_DIR/zebra-biblios.cfg', - 'blib/ZEBRA_CONF_DIR/zebra-authorities.cfg' + 'blib/ZEBRA_CONF_DIR/zebra-authorities.cfg', + 'blib/ZEBRA_CONF_DIR/explain-authorities.xml', + 'blib/ZEBRA_CONF_DIR/explain-biblios.xml' ); + if ($config{'INSTALL_MODE'} ne 'dev') { + push @{ $pl_files->{'rewrite-config.PL'} }, ( + 'blib/SCRIPT_DIR/koha-zebra-ctl.sh', + 'blib/SCRIPT_DIR/koha-zebraqueue-ctl.sh', + ); + } } if ($config{'INSTALL_MODE'} ne "dev") { @@ -424,14 +462,16 @@ WriteMakefile( AUTHOR => 'Koha Developers ', NO_META => 1, PREREQ_PM => { -'Algorithm::CheckDigits' => 0.48, +# awaiting package maintainer's use of $VERSION +#'Algorithm::CheckDigits' => 0.48, +#'Algorithm::CheckDigits::M43_001' => 0.48, 'Biblio::EndnoteStyle' => 0.05, 'CGI' => 3.15, 'CGI::Carp' => 1.29, 'CGI::Session' => '4.10', -'Class::Factory::Util' => 1.7, +'Class::Factory::Util' => 1.6, 'Class::Accessor' => 0.30, -'DBD::mysql' => 3.0008, +'DBD::mysql' => 4.004, 'DBI' => 1.53, 'Data::ICal' => 0.13, 'Data::Dumper' => 2.121_08, @@ -450,7 +490,7 @@ WriteMakefile( 'LWP::UserAgent' => 2.033, 'Lingua::Stem' => 0.82, 'List::Util' => 1.18, -'List::MoreUtils' => 0.22, +'List::MoreUtils' => 0.21, 'Locale::Language' => 2.07, 'MARC::Charset' => 0.98, 'MARC::Crosswalk::DublinCore' => 0.02, @@ -459,8 +499,8 @@ WriteMakefile( 'MIME::Base64' => 3.07, 'MIME::QuotedPrint' => 3.07, 'Mail::Sendmail' => 0.79, -'Net::LDAP' => 0.34, -'Net::LDAP::Filter' => 0.34, +'Net::LDAP' => 0.33, +'Net::LDAP::Filter' => 0.14, 'Net::Z3950::ZOOM' => 1.16, 'PDF::API2' => 2.000, 'PDF::API2::Page' => 2.000, @@ -482,10 +522,11 @@ WriteMakefile( 'Unicode::Normalize' => 0.32, 'XML::Dumper' => 0.81, 'XML::LibXML' => 1.59, -'XML::LibXSLT' => 1.63, +'XML::LibXSLT' => 1.59, 'XML::SAX::ParserFactory' => 1.01, 'XML::Simple' => 2.14, 'XML::RSS' => 1.31, +'YAML::Syck' => 0.71, }, # File tree mapping @@ -495,7 +536,7 @@ WriteMakefile( INSTALLMAN1DIR => File::Spec->catdir($target_directories->{'MAN_DIR'}, 'man1'), INSTALLMAN3DIR => File::Spec->catdir($target_directories->{'MAN_DIR'}, 'man3'), - PL_FILES => $pl_files, + PL_FILES => $pl_files, ); @@ -688,7 +729,7 @@ be run from the current directory. Configuration directory:); # FIXME - home directory portability consideration apply - $install_base_default = (exists $ENV{'HOME'}) ? "$ENV{'HOME'}/koha-dev" : "/usr/share/koha-dev"; + $install_base_default = (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 @@ -697,7 +738,8 @@ Configuration directory:); # use File::HomeDir to locate the home directory portably. # This is deferred for now because File::HomeDir is not yet # core. - $install_base_default = (exists $ENV{'HOME'}) ? "$ENV{'HOME'}/koha" : "/usr/share/koha"; + # --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( @@ -712,8 +754,9 @@ as the package name in the FHS layout. Base installation directory); } $config{'INSTALL_BASE'} = _get_value('INSTALL_BASE', $msg, $install_base_default, $valid_values); - $config{'INSTALL_BASE'} = File::Spec->rel2abs($config{'INSTALL_BASE'}); + $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 @@ -829,6 +872,38 @@ Please specify Zebra database user); Please specify the Zebra database password); $config{'ZEBRA_PASS'} = _get_value('ZEBRA_PASS', $msg, $defaults->{'ZEBRA_PASS'}, $valid_values); + $msg = q( +Since you've chosen to use Zebra, you can enable the SRU/ +Z39.50 Server if you so choose, but you must specify a +few configuration options for it. + +Please note that if you choose *NOT* to configure SRU, +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); + + 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 +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); + + $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); + + $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); + + } } print "\n\n"; @@ -891,9 +966,16 @@ 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 @basedir = File::Spec->splitdir($directories); + + # for Win32 we need to prepend the volume to the directory path + if ( $^O eq 'MSWin32' ) { shift @basedir; unshift @basedir, $volume; } + elsif ( $^O eq 'cygwin' ) { shift @basedir; unshift @basedir, 'c:'; } # in a cygwin environment, $volume is returned empty + my $package = pop @basedir; + my %dirmap = (); my %skipdirs = (); if ($mode eq 'single') { @@ -922,7 +1004,7 @@ sub get_target_directories { $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, 'opac'); + $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; @@ -1020,6 +1102,8 @@ sub display_configuration { package MY; +# This will have to be reworked in order to accommodate Win32... + sub test { my $self = shift; my $test = $self->SUPER::test(@_); @@ -1033,47 +1117,70 @@ sub 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. - 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/ ) { # 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 ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or exists $skip_directories->{$key}; - } - - $install .= qq( +) unless ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or exists $skip_directories->{$key}; + } + $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 ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or 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"; - if ($config{'INSTALL_MODE'} eq 'standard' and $config{'KOHA_USER'} ne "root") { - foreach my $key (sort keys %$target_directories) { - $install .= "\t\$(NOECHO) chown -R $config{'KOHA_USER'}:$config{'KOHA_GROUP'} \$(KOHA_DEST_$key)\n" - unless ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or 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 ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or 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 ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or 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"; + if ($config{'INSTALL_MODE'} eq 'standard' and $config{'KOHA_USER'} ne "root") { + foreach my $key (sort keys %$target_directories) { + $install .= "\t\$(NOECHO) chown -R $config{'KOHA_USER'}:$config{'KOHA_GROUP'} \$(KOHA_DEST_$key)\n" + unless ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or 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 ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or exists $skip_directories->{$key}; + } + } + elsif ($^O eq 'MSWin32' ) { # On Win32, the install probably needs to be done under the user account koha will be running as... + # We can attempt some creative things with command line utils such as CACLS which allows permission + # management from Win32 cmd.exe, but permissions really only apply to NTFS. + foreach my $key (sort keys %$target_directories) { + $install .= qq( +KOHA_INST_$key = blib/$key +KOHA_DEST_$key = $target_directories->{$key} +) unless ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or exists $skip_directories->{$key}; + } + $install .= qq( +install :: all install_koha warn_koha_env_vars +\t\$(NOECHO) \$(NOOP) +); + $install .= "install_koha ::\n"; + $install .= "\t\$(MOD_INSTALL) \\\n"; + foreach my $key (sort keys %$target_directories) { + $install .= "\t\t\$(KOHA_INST_$key) \$(KOHA_DEST_$key) \\\n" + unless ($config{'INSTALL_ZEBRA'} ne "yes" and $key =~ /ZEBRA/) or exists $skip_directories->{$key}; + } + } + $install .= "\n"; $install .= "warn_koha_env_vars ::\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; @@ -1085,23 +1192,65 @@ install :: all install_koha set_koha_ownership set_koha_permissions warn_koha_en $install .= "\t\$(NOECHO) \$(ECHO) export KOHA_CONF=\$(KOHA_DEST_KOHA_CONF_DIR)/koha-conf.xml\n"; $install .= "\t\$(NOECHO) \$(ECHO) export PERL5LIB=$target_directories->{'PERL_MODULE_DIR'}\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; + $install .= "\t\$(NOECHO) \$(ECHO) If installing on a Win32 platform, be sure to use:\n"; + $install .= "\t\$(NOECHO) \$(ECHO) 'dmake -x MAXLINELENGTH=300000'\n"; + $install .= "\t\$(NOECHO) \$(ECHO)\n"; $install .= "\t\$(NOECHO) \$(ECHO) For other post-installation tasks, please consult the README.\n"; $install .= "\t\$(NOECHO) \$(ECHO)\n"; + if ($config{'INSTALL_ZEBRA'} eq "yes") { + $install .= _update_zebra_conf_target(); + } + return $install; } +=head 2 _update_zebra_conf_target + +Add an installation target for updating +Zebra's configuration files. + +=cut + +sub _update_zebra_conf_target { + + my $target = "\nupdate_zebra_conf ::\n"; + $target .= "\tumask 022; \$(MOD_INSTALL) \\\n"; + $target .= "\t\t\$(KOHA_INST_ZEBRA_CONF_DIR) \$(KOHA_DEST_ZEBRA_CONF_DIR) \n"; + + return $target; +} + sub postamble { # put directory mappings into Makefile # so that Make will export as environment # variables -- this is for the use of # rewrite-confg.PL - my $env = join("\n", map { "export __${_}__ = $target_directories->{$_}" } keys %$target_directories); - $env .= "\n\n"; - $env .= join("\n", map { "export __${_}__ = $config{$_}" } keys %config); - return "$env\n"; + + # quote '$' in the two password parameters + my %config = %config; + $config{'DB_PASS'} =~ s/\$/\$\$/g; + if ($config{'INSTALL_ZEBRA'} eq "yes") { + $config{'ZEBRA_PASS'} =~ s/\$/\$\$/g; + } + + # Hereagain, we must alter syntax per platform... + if ( $^O eq 'MSWin32' ) { + # NOTE: it is imperative that there be no whitespaces in ENV=value... + my $env = join("\n", map { "__${_}__=$target_directories->{$_}" } keys %$target_directories); + $env .= "\n\n"; + $env .= join("\n", map { "__${_}__=$config{$_}" } keys %config); + return "$env\n"; + } + else { + my $env = join("\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories); + $env .= "\n\n"; + $env .= join("\n", map { "export __${_}__ := $config{$_}" } keys %config); + return "$env\n"; + } } + __END__