diff -Nurd -x'*~' Test-Harness-3.22.orig/lib/TAP/Parser/SourceHandler/Perl.pm Test-Harness-3.22/lib/TAP/Parser/SourceHandler/Perl.pm --- Test-Harness-3.22.orig/lib/TAP/Parser/SourceHandler/Perl.pm 2010-08-14 18:30:13.000000000 -0400 +++ Test-Harness-3.22/lib/TAP/Parser/SourceHandler/Perl.pm 2010-09-19 06:37:48.000000000 -0400 @@ -256,7 +256,21 @@ # XXX don't need to quote if we treat the parts as atoms (except maybe vms) #$file = qq["$file"] if ( $file =~ /\s/ ) && ( $file !~ /^".*"$/ ); - my @command = ( $command, @{$switches}, $file, @args ); + my @command; + if ($] >= 5.010 && $Config{"byteorder"} =~ /^1/) { + # little-endian means intel (not powerpc), for which fink has + # multiple single-arch distros that are seen by a single (fat) + # perl interp from apple for a perl version supported by fink + # (i.e., starting with 5.10.0). This is the logic taken from + # Fink::PkgVersion as of fink-0.29.13. + push @command, '/usr/bin/arch'; + if ( $Config{"longsize"} == 4 ) { + push @command, '-i386'; # 32-bit + } else { + push @command, '-x86_64'; # 64-bit + } + } + push @command, ($command, @${switches}, $file, @args); return @command; } diff -Nurd -x'*~' Test-Harness-3.22.orig/t/nofork.t Test-Harness-3.22/t/nofork.t --- Test-Harness-3.22.orig/t/nofork.t 2010-08-14 18:30:13.000000000 -0400 +++ Test-Harness-3.22/t/nofork.t 2010-09-19 06:52:21.000000000 -0400 @@ -26,7 +26,21 @@ } my @libs = map "-I$_", @INC; -my @perl = ( $^X, @libs ); +my @perl; +if ($] >= 5.010 && $Config{"byteorder"} =~ /^1/) { + # little-endian means intel (not powerpc), for which fink has + # multiple single-arch distros that are seen by a single (fat) + # perl interp from apple for a perl version supported by fink + # (i.e., starting with 5.10.0). This is the logic taken from + # Fink::PkgVersion as of fink-0.29.13. + push @perl, '/usr/bin/arch'; + if ( $Config{"longsize"} == 4 ) { + push @perl, '-i386'; # 32-bit + } else { + push @perl, '-x86_64'; # 64-bit + } +} +push @perl, ( $^X, @libs ); my $mod = 'TAP::Parser::Iterator::Process'; { # just check the introspective method to start... diff -Nurd -x'*~' Test-Harness-3.22.orig/t/proverun.t Test-Harness-3.22/t/proverun.t --- Test-Harness-3.22.orig/t/proverun.t 2010-08-14 18:30:13.000000000 -0400 +++ Test-Harness-3.22/t/proverun.t 2010-09-19 06:37:48.000000000 -0400 @@ -166,6 +166,11 @@ # obliterate it here. Need to test that it's sane. for my $call (@log) { if ( 'HASH' eq ref $call->[2] && exists $call->[2]->{command} ) { + if ($call->[2]->{command}->[0] eq '/usr/bin/arch') { + # nuke fink single-arch wrapper to actual perl interp + shift @{$call->[2]->{command}}; # '/usr/bin/arch' + shift @{$call->[2]->{command}}; # '-i386' or '-x86_64' + } $call->[2]->{command}->[0] = 'PERL'; } }