diff -Nurd -x'*~' Test-Harness-3.34.orig/lib/TAP/Parser/SourceHandler/Perl.pm Test-Harness-3.34/lib/TAP/Parser/SourceHandler/Perl.pm --- Test-Harness-3.34.orig/lib/TAP/Parser/SourceHandler/Perl.pm 2014-11-05 18:10:54.000000000 -0500 +++ Test-Harness-3.34/lib/TAP/Parser/SourceHandler/Perl.pm 2014-11-29 15:55:25.000000000 -0500 @@ -265,7 +265,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, '-@ARCH@'; # 64-bit + } + } + push @command, ($command, @${switches}, $file, @args); return @command; } diff -Nurd -x'*~' Test-Harness-3.34.orig/t/nofork.t Test-Harness-3.34/t/nofork.t --- Test-Harness-3.34.orig/t/nofork.t 2014-11-05 17:55:28.000000000 -0500 +++ Test-Harness-3.34/t/nofork.t 2014-11-29 15:55:25.000000000 -0500 @@ -27,7 +27,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, '-@ARCH@'; # 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.34.orig/t/proverun.t Test-Harness-3.34/t/proverun.t --- Test-Harness-3.34.orig/t/proverun.t 2014-11-05 17:58:35.000000000 -0500 +++ Test-Harness-3.34/t/proverun.t 2014-11-29 15:55:25.000000000 -0500 @@ -164,6 +164,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 '-@ARCH@' + } $call->[2]->{command}->[0] = 'PERL'; } }