perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: resolving Apache::Test vs. Apache::test collision
Date Tue, 20 May 2003 03:17:19 GMT
David Wheeler wrote:
> On Monday, May 19, 2003, at 07:57  PM, Stas Bekman wrote:
> 
>> As long as they hide it from MakeMaker so it won't attempt to install 
>> it, which will just cause an inconvenience to its users.
> 
> 
> Of course. Mine is in t/lib, as is Mason's, I believe.

And here is a patch that will try to alert users to remove old Apache/test.pm 
if any. Probably not very useful as most will miss the warnings, but we can 
always say, "you have been warned" ;)

I'm just not sure that it's a good idea to silently nuke any files at all.

Index: Apache-Test/Makefile.PL
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/Makefile.PL,v
retrieving revision 1.8
diff -u -r1.8 Makefile.PL
--- Apache-Test/Makefile.PL	29 Apr 2003 06:37:47 -0000	1.8
+++ Apache-Test/Makefile.PL	20 May 2003 03:13:56 -0000
@@ -2,12 +2,14 @@

  use ExtUtils::MakeMaker;
  use Symbol;
+use File::Spec::Functions qw(catfile catdir);

  use lib qw(lib);

  my $VERSION;

  use Apache::Test5005compat;
+use Apache::TestTrace;

  use Apache::TestMM qw(test); #enable 'make test'

@@ -21,6 +23,8 @@

  set_version();

+find_old_Apache_test_pm();
+
  WriteMakefile(
      NAME      => 'Apache::Test',
      VERSION   => $VERSION,
@@ -57,5 +61,41 @@
  EOF

      return $string;
+}
+
+# on case-insensitive systems we want to alert users to remove
+# Apache/test.pm if any
+sub find_old_Apache_test_pm {
+    my $is_case_insensitive = -e catfile qw(lib Apache testconfig.pm);
+
+    return unless $is_case_insensitive;
+
+    eval { require Apache::test };
+    return if $@; # not found any m|Apache/[Tt]est.pm|
+
+    my $old_file;
+
+    unless (defined $Apache::Test::VERSION) {
+        $old_file = $INC{"Apache/test.pm"};
+    } else {
+        # picked Apache/Test.pm instead of Apache/test.pm. Next
+        # traverse manually to check whether we have
+        # Apache/test.pm installed
+        foreach (@INC) {
+            my $dir = catdir $_, "Apache";
+            next unless -d $dir;
+            opendir DIR, $dir or die "Cannot opendir $dir: $!\n";
+            my @matches = grep /^test.pm$/, readdir DIR;
+            closedir DIR;
+            next unless @matches;
+            $old_file = catfile $dir, $matches[0];
+            last;
+        }
+    }
+
+    if ($old_file) {
+        error "Please remove the stale file $old_file, or you may" .
+            "have problems running tests";
+    }
  }



__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message