On Wed, Feb 15, 2012 at 4:21 PM, Sisyphus <sisyph...@optusnet.com.au> wrote: > > ----- Original Message ----- From: "David Oswald" > > >> If someone with an understanding of MacOSX/Darwin could have a look at >> the FAIL report here: >> >> http://www.cpantesters.org/cpan/report/ef9f6640-5528-11e1-b453-f9f6ec0326e0 >> I would appreciate feedback. >> <snip>
> Disclaimer: I know nothing about MacOS - except that it appears to be even > more arcane than Windows. > > The "Non-zero wait status" is probably significant. I think I've seen plenty > of "Non-zero exit status" announcements, but can't recall ever seeing > "Non-zero wait status". (Unless I've been misreading the "wait" as "exit" > .... which is possible) > > Understanding the sorts of things that could create a "Non-zero wait status" > is probably the key to determining what needs to be probed. (Other than > that, I don't see that there's anything to go by at all !) > > Anybody know what can cause a "Non-zero wait status" ? (I don't know.) > Perhaps it just indicates that the compilation of the script failed. If > BUILD_NOISY writes to STDERR (I haven't checked) then maybe specify that in > 01basic.t and 02prefix.t ... see if that sheds any light on the matter. I've done some searching. It seems to be one of the possible ways to crash whilst executing XS code. Since our test suite is passing on something like 96% of the smoke testers' systems now, I'm thinking that most of the stubborn ones are special cases that need to be addressed in Makefile.PL's attempt to guess the compiler and default libraries. Looking at the code in Makefile.PL for 0.34_001, and tracing the logic given the $Config{cc} and $Config{gccversion} states as reported in the failed tests for Darwin systems, I see that Makefile.PL's "special case" for darwin isn't being caught because the very first if() is already trapping this configuration. The result is that we're not including the necessary default libraries. ...this is my theory. Attached is a git diff representing a patch to Makefile.PL that should resolve the issue. I'm also attaching the patched version of Makefile.PL so that anyone wanting to verify that it doesn't break in some new way can easily check by dropping it into a distribution folder and performing the mantra. If this patch is successful we can cross two modes of failure off the list when I release 0.34_002: the MirBSD issue, and the Darwin issue. As I'm typing this email v0.34_001 has 207 test reports with 8 fails and 199 passes. The MirBSD issue fixes one smoke test failure. If my patch fixes the Darwin issue, that's three more smoke test failures, leaving four un-solved out of 207 tests for a pass rate of 98%. Here are links to the four "Darwin" test failure reports: http://www.cpantesters.org/cpan/report/ef9f6640-5528-11e1-b453-f9f6ec0326e0 http://www.cpantesters.org/cpan/report/e5fe6a1c-55d4-11e1-b453-f9f6ec0326e0 http://www.cpantesters.org/cpan/report/9715038e-580e-11e1-b453-f9f6ec0326e0 http://www.cpantesters.org/cpan/report/2ef84336-58b5-11e1-b453-f9f6ec0326e0 Dave -- David Oswald daosw...@gmail.com
diff --git a/Makefile.PL b/Makefile.PL index 740ad20..0037980 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -42,7 +42,17 @@ for (sort keys %PREREQ_PM) { #============================================================================ my $cc_guess; my $libs_guess; -if ($Config{gccversion} and $Config{cc} =~ m#\bgcc\b[^/]*$# ) { +if ($Config{osname} eq 'darwin'){ + my $stdlib_query = + 'find /usr/lib/gcc -name "libstdc++*" | grep $( uname -p )'; + my $stdcpp = + `$stdlib_query`; + $stdcpp =~ s/^(.*)\/[^\/]+$/$1/; + $cc_guess = + 'g++'; + $libs_guess = + "-L$stdcpp -lstdc++"; +} +elsif ($Config{gccversion} and $Config{cc} =~ m#\bgcc\b[^/]*$# ) { ($cc_guess = $Config{cc}) =~ s[\bgcc\b([^/]*)$(?:)][g\+\+$1]; $libs_guess = '-lstdc++'; } @@ -58,16 +68,6 @@ elsif ($Config{osname} eq 'cygwin') { $cc_guess = 'g++'; $libs_guess = '-lstdc++'; } -elsif ($Config{osname} eq 'darwin'){ - my $stdlib_query = - 'find /usr/lib/gcc -name "libstdc++*" | grep $( uname -p )'; - my $stdcpp = - `$stdlib_query`; + $stdcpp =~ s/^(.*)\/[^\/]+$/$1/; - $cc_guess = - 'g++'; - $libs_guess = - "-L$stdcpp -lstdc++"; -} elsif ($Config{osname} eq 'solaris' or $Config{osname} eq 'SunOS') { if ( $Config{cc} eq 'gcc' ||
Makefile.PL
Description: Perl program