Greetings, here are :lib:blib.pm and :lib:blib.t patches for MacPerl 5.7.3/5.8.0.
diff -ru blib.pm.orig blib.pm --- blib.pm.orig Mon May 27 18:31:03 2002 +++ blib.pm Tue May 28 21:13:22 2002 @@ -37,6 +37,7 @@ =cut use Cwd; +use File::Spec; use vars qw($VERSION $Verbose); $VERSION = '1.01'; @@ -52,20 +53,32 @@ $dir = shift; $dir =~ s/blib\z//; $dir =~ s,/+\z,,; - $dir = '.' unless ($dir); + $dir = File::Spec->curdir() unless ($dir); die "$dir is not a directory\n" unless (-d $dir); } - my $i = 5; + my $i = 5; + my ($blib, $blib_lib, $blib_arch); while ($i--) { - my $blib = "${dir}/blib"; - if (-d $blib && -d "$blib/arch" && -d "$blib/lib") + $blib = File::Spec->catdir($dir, "blib"); + $blib_lib = File::Spec->catdir($blib, "lib"); + + if ($^O eq 'MacOS') + { + $blib_arch = File::Spec->catdir($blib_lib, "MacPPC"); + } + else + { + $blib_arch = File::Spec->catdir($blib, "arch"); + } + + if (-d $blib && -d $blib_arch && -d $blib_lib) { - unshift(@INC,"$blib/arch","$blib/lib"); + unshift(@INC,$blib_arch,$blib_lib); warn "Using $blib\n" if $Verbose; return; - } - $dir .= "/.."; + } + $dir = File::Spec->catdir($dir, File::Spec->updir()); } die "Cannot find blib even in $dir\n"; } diff -ru blib.t.orig blib.t --- blib.t.orig Mon May 27 18:33:42 2002 +++ blib.t Tue May 28 21:26:22 2002 @@ -6,10 +6,11 @@ } use strict; +my ($blib, $blib_arch, $blib_lib, @blib_dirs); sub _cleanup { - rmdir foreach reverse qw(blib blib/arch blib/lib); - unlink "stderr"; + rmdir foreach reverse (@_); + unlink "stderr" unless ($^O eq 'MacOS'); } sub _mkdirs { @@ -18,16 +19,32 @@ mkdir $dir or die "Can't mkdir $dir: $!" if ! -d $dir; } } - -BEGIN { _cleanup } + +BEGIN { + if ($^O eq 'MacOS') + { + $blib = ":blib:"; + $blib_lib = ":blib:lib:"; + $blib_arch = ":blib:lib:MacPPC:"; + @blib_dirs = ($blib, $blib_lib, $blib_arch); # order is important ! + } + else + { + $blib = "blib"; + $blib_arch = "blib/arch"; + $blib_lib = "blib/lib"; + @blib_dirs = ($blib, $blib_arch, $blib_lib); + } + _cleanup( @blib_dirs ); +} use Test::More tests => 7; eval 'use blib;'; ok( $@ =~ /Cannot find blib/, 'Fails if blib directory not found' ); -_mkdirs(qw(blib blib/arch blib/lib)); +_mkdirs( @blib_dirs ); { my $warnings = ''; @@ -39,7 +56,7 @@ is( @INC, 3, '@INC now has 3 elements' ); is( $INC[2], '../lib', 'blib added to the front of @INC' ); -ok( grep(m|blib/lib$|, @INC[0,1]) == 1, ' blib/lib in @INC'); -ok( grep(m|blib/arch$|, @INC[0,1]) == 1, ' blib/arch in @INC'); +ok( grep(m|$blib_lib$|, @INC[0,1]) == 1, ' blib/lib in @INC'); +ok( grep(m|$blib_arch$|, @INC[0,1]) == 1, ' blib/arch in @INC'); -END { _cleanup(); } +END { _cleanup( @blib_dirs ); } __END__ of 2 patches Best regards, --Thomas