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' ||

Attachment: Makefile.PL
Description: Perl program

Reply via email to