[PATCH] [5.12] Allow build on aix 4.2 (sigaction and IPv6)
H.Merijn Brand [Fri, 16 Apr 2010 15:47:15 +0000 (17:47 +0200)]
Based on a patch by AUGUSTE-ETIENNE José <jose.auguste-etienne@cgss-guyane.fr>

The attached patches are necessary to work around aix 4.2 lack of support for IPv6,
and limited support for POSIX sigaction()

The hints/aix_4.sh patch solves the following build failure:

"Socket.xs", line 468.16: 1506-007 (S) "struct in6_addr" is undefined.

The ext/POSIX/t/sigaction.t patch solves the failing test reported a looong time ago:

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-01/msg01124.html

After testing a simple C program using POSIX sigaction() with SA_SIGINFO,
I found that it worked on aix 4.3 but failed on aix 4.2.

I think it's safe to skip the SA_SIGINFO test on the aix 4.2 platform.

perl 5.12.0 builds fine on the following platforms / C compiler :

aix 4.2.1 / vac 5.0.2.7 (with attached patches)
aix 4.3.2 / gcc 2.95.3
aix 4.3.3 / vac 4.4.0.3
aix 4.3.3 / vac 5.0.28
aix 5.2 / GNUpro gcc 2.9.aix51.020209

The atatched patches should be applied to blead and maint.

ext/POSIX/t/sigaction.t
hints/aix_4.sh

index fd6cf2d..bb1b715 100644 (file)
@@ -192,6 +192,7 @@ SKIP: {
 SKIP: {
     eval 'use POSIX qw(SA_SIGINFO); SA_SIGINFO';
     skip("no SA_SIGINFO", 1) if $@;
+    skip("SA_SIGINFO is broken on AIX 4.2", 1) if $^O.$Config{osvers} =~ m/^aix4\.2/;
     sub hiphup {
        is($_[1]->{signo}, SIGHUP, "SA_SIGINFO got right signal");
     }
index 46b95b9..08a6894 100755 (executable)
@@ -119,8 +119,12 @@ case "$cc" in
 # 1506-294 (S) Syntax error in expression on #if directive.
 #
 case "$osvers" in
-    4.2.1.0) ccflags="$ccflags -D_XOPEN_SOURCE" ;;
-    *) ;;
+    4.2.1.0)
+       ccflags="$ccflags -D_XOPEN_SOURCE"
+       # aix 4.2 does not have IPv6 support
+       d_inetpton='undef'
+       d_inetntop='undef'
+       ;;
     esac
 nm_opt='-B'