X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=Makefile.PL;h=c1bfd2fa4a7b2a6408989c7bb82938a1c8e5e829;hb=734b749b5b2a96f2cd2f60d3d798e0715bd9b17c;hp=c529ad0cabad2b11685bfd7b8905f0952d304c4a;hpb=f5903fbbb5591657e89885d4296628f607475f9c;p=koha_fer diff --git a/Makefile.PL b/Makefile.PL index c529ad0cab..c1bfd2fa4a 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,41 +424,59 @@ 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") { push @{ $pl_files->{'rewrite-config.PL'} }, ( - 'blib/PERL_MODULE_DIR/C4/Context.pm' + 'blib/PERL_MODULE_DIR/C4/Context.pm', + 'blib/SCRIPT_DIR/kohalib.pl' ); } WriteMakefile( NAME => 'koha', #VERSION => strftime('2.9.%Y%m%d%H',gmtime), - VERSION_FROM => 'C4/Context.pm', + VERSION_FROM => 'kohaversion.pl', ABSTRACT => 'Award-winning integrated library system (ILS) and Web OPAC', AUTHOR => 'Koha Developers ', NO_META => 1, PREREQ_PM => { +# 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, 'Date::Calc' => 5.4, +'Date::ICal' => 1.72, 'Date::Manip' => 5.44, 'Digest::MD5' => 2.36, 'File::Temp' => 0.16, @@ -445,20 +490,24 @@ WriteMakefile( 'LWP::UserAgent' => 2.033, 'Lingua::Stem' => 0.82, 'List::Util' => 1.18, +'List::MoreUtils' => 0.21, 'Locale::Language' => 2.07, 'MARC::Charset' => 0.98, -'MARC::Crosswalk::DublinCore' => 0.03, +'MARC::Crosswalk::DublinCore' => 0.02, 'MARC::File::XML' => 0.88, 'MARC::Record' => 2.00, 'MIME::Base64' => 3.07, 'MIME::QuotedPrint' => 3.07, 'Mail::Sendmail' => 0.79, +'Net::LDAP' => 0.33, +'Net::LDAP::Filter' => 0.14, 'Net::Z3950::ZOOM' => 1.16, 'PDF::API2' => 2.000, 'PDF::API2::Page' => 2.000, 'PDF::API2::Util' => 2.000, 'PDF::Reuse' => 0.33, 'PDF::Reuse::Barcode' => 0.05, +'POE' => 0.9999, 'POSIX' => 1.09, 'Schedule::At' => 1.06, 'Term::ANSIColor' => 1.10, @@ -467,15 +516,18 @@ WriteMakefile( 'Test::More' => 0.62, 'Text::CSV' => 0.01, 'Text::CSV_XS' => 0.32, +'Text::Iconv' => 1.7, 'Text::Wrap' => 2005.082401, 'Time::HiRes' => 1.86, 'Time::localtime' => 1.02, 'Unicode::Normalize' => 0.32, 'XML::Dumper' => 0.81, 'XML::LibXML' => 1.59, +'XML::LibXSLT' => 1.59, 'XML::SAX::ParserFactory' => 1.01, 'XML::Simple' => 2.14, 'XML::RSS' => 1.31, +'YAML::Syck' => 0.71, }, # File tree mapping @@ -485,7 +537,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, ); @@ -678,7 +730,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 @@ -687,7 +739,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( @@ -702,8 +755,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 @@ -819,7 +873,41 @@ 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"; return %config; } @@ -840,8 +928,17 @@ sub _get_value { my $default = shift; my $valid_values = shift; + # override default value from environment + if (exists $ENV{$key}) { + $default = $ENV{$key}; + $msg .= " (default from environment)"; + } + my $val = prompt($msg, $default); - while (exists $valid_values->{$key} 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); @@ -870,9 +967,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') { @@ -901,7 +1005,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; @@ -941,11 +1045,23 @@ sub get_target_directories { $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb'); } + _get_env_overrides(\%dirmap); _get_argv_overrides(\%dirmap); return \%dirmap, \%skipdirs; } +sub _get_env_overrides { + my $dirmap = shift; + + foreach my $key (keys %$dirmap) { + if (exists $ENV{$key}) { + $dirmap->{$key} = $ENV{$key}; + print "Setting $key from environment\n"; + } + } +} + sub _get_argv_overrides { my $dirmap = shift; @@ -976,14 +1092,26 @@ sub display_configuration { 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"; + print "You can also set different default values for parameters\n"; + print "or override directory locations by using environment variables.\n"; + print "\nFor example:\n\n"; + print "export DB_USER=my_koha\n"; + print "perl Makefile.PL\n"; + print "\nor\n\n"; + print "DB_USER=my_koha DOC_DIR=/usr/local/info perl Makefile.PL\n\n"; } package MY; +# This will have to be reworked in order to accommodate Win32... + sub test { my $self = shift; my $test = $self->SUPER::test(@_); $test =~ s!\$\(INST_LIB\)!blib/PERL_MODULE_DIR!g; + + # set KOHA_CONF + $test =~ s!\$\(FULLPERLRUN\)!KOHA_CONF=blib/KOHA_CONF_DIR/koha-conf.xml \$(FULLPERLRUN)!g; return $test; } @@ -993,47 +1121,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|freebsd/ ) { # 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"; @@ -1045,23 +1196,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__