On Thu, 27 Nov 2003, Stas Bekman wrote:
> Randy Kobes wrote:
> [...]
> > I think it is a ModPerl::BuildMM thing - this patch
[ .. ]
> > arranges for everything to be put under an Apache2/.
>
> Cool. Though, it's probably easier to read:
>
> $v =~ s{(blib([/\\])lib)}{$1$2Apache2};
>
> or even:
>
> $v =~ s{ (blib[/\\]lib) }{ catdir $1, 'Apache2'}xe;
>
> I thought there is at least one more variation of the dir
> separator, wasn't it ':'?
Good point - how about
===========================================================
Index: lib/ModPerl/BuildMM.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/ModPerl/BuildMM.pm,v
retrieving revision 1.12
diff -u -r1.12 BuildMM.pm
--- lib/ModPerl/BuildMM.pm 11 Sep 2003 01:31:22 -0000 1.12
+++ lib/ModPerl/BuildMM.pm 29 Nov 2003 12:54:59 -0000
@@ -5,7 +5,7 @@
use ExtUtils::MakeMaker ();
use Cwd ();
-use File::Spec;
+use File::Spec::Functions qw(catdir catfile splitdir);
use File::Basename;
use Apache::Build ();
@@ -20,7 +20,7 @@
ModPerl::MM::override_eu_mm_mv_all_methods(@methods);
use strict 'refs';
-my $apache_test_dir = File::Spec->catdir(Cwd::getcwd(), "Apache-Test", "lib");
+my $apache_test_dir = catdir(Cwd::getcwd(), "Apache-Test", "lib");
#to override MakeMaker MOD_INSTALL macro
sub mod_install {
@@ -144,7 +144,7 @@
sub ModPerl::BuildMM::MY::postamble {
my $self = shift;
- my $doc_root = File::Spec->catdir(Cwd::getcwd(), "docs", "api");
+ my $doc_root = catdir(Cwd::getcwd(), "docs", "api");
my @targets = ();
@@ -153,10 +153,10 @@
if (-d $doc_root) {
while (my ($pm, $blib) = each %{$self->{PM}}) {
- my $pod = File::Spec->catdir(
- (File::Spec->splitdir($blib))[-2 .. -1]);
+ my $pod = catdir(
+ (splitdir($blib))[-2 .. -1]);
$pod =~ s/\.pm/\.pod/;
- my $podpath = File::Spec->catfile($doc_root, $pod);
+ my $podpath = catfile($doc_root, $pod);
next unless -r $podpath;
push @target,
@@ -235,7 +235,7 @@
#unless already specified with \$(INST_LIB)
#or already in Apache2/
unless ($v =~ /Apache2/) {
- $v =~ s|(blib/lib)|$1/Apache2|;
+ $v =~ s{ (blib[/\\:]lib) }{ catdir($1, 'Apache2')}xe;
}
$pm->{$k} = $v;
===============================================================
> > One consideration about this - if someone has a Win32 build
> > under the current system (where some files are under an
> > Apache2/, and others aren't), and then installs a build with
> > a patch like above applied where everything gets put under
> > an Apache2/, there'll be duplicates of some files. I think
> > using Apache2.pm will pick up the newer files installed
> > under an Apache2/, in preference to the older ones which
> > weren't, as @INC will have D:/Perl/site/lib/Apache2 before
> > D:/Perl/site/lib, so that should be OK. However, perhaps we
> > should think about unlinking the old files not under an
> > Apache2/?
>
> Sure, we can arrange that, via the .packlist, like we do
> for Apache::test in Apache::Test. Though it's dangerous.
> Consider the following scenario.
>
> 1) Install a fresh perl
> 2) Install mp2 w/o Apache2
> 3) Install mp1 which now overwrites some of the mp2 files
> 4) Install mp2 w/ Apache2 and uninstall files not under Apache2
>
> results - you will ruin the mp1 install from (3).
>
> In the test suite we make sure that we load files from
> Apache2/ first. Users can do the same, in which case there
> is no problem. There is no problem if someone installs
> into Apache2/ and then decides to install into the main
> @INC. When this happens Apache2.pm will be rewritten not
> to prepend Apache2 dirs into @INC.
>
> So may be let's just keep it there.
Good idea - I hadn't thought of the above scenario.
--
best regards,
randy
--
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html