compiler les modules perl cpan qui utilisent sramdom

Creation: 16 septembre 2014
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2014 Jean-Louis BICQUELET-SALAÜN

problème

Lors de l'installation de module CPAN sous AIX (avec perl 5.8.2 et 5.8.8 et sans doute d'autres versions) on obtient le message d'arreur suivant:
 #make
        gcc -c    -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -O    -DVERSION=\"1.631\"  -DXS_VERSION=\"1.631\"  "-I/usr/opt/perl5/lib/5.8.8/aix-thread-multi/CORE"   DBI.c
gcc: unrecognized option '-qmaxmem=-1'
gcc: unrecognized option '-qnoansialias'
gcc: unrecognized option '-q32'
gcc: unrecognized option '-qlonglong'
In file included from /usr/opt/perl5/lib/5.8.8/aix-thread-multi/CORE/op.h:497,
                 from /usr/opt/perl5/lib/5.8.8/aix-thread-multi/CORE/perl.h:2754,
                 from DBIXS.h:23,
                 from DBI.xs:17:

				 : error: field '_srandom_struct' has incomplete type
make: 1254-004 The error code from the last command is 1.

Stop.

solution

Si les options non reconnues ne portent pas à conséquence, la déclaration deans le fichier /usr/opt/perl5/lib/5.8.8/aix-thread-multi/CORE/reentr.h de la structure _srandom_struct provoque une erreur. srandom() n'a pas l'air d'être utilisé par CORE perl.

#ifdef HAS_SRANDOM_R
        struct random_data _srandom_struct;
#endif /* HAS_SRANDOM_R */

    int dummy; /* cannot have empty structs */
} REENTR;

On suprime les lignes en rouge et on peut relancer la séquence :

perl Makefile.PL
make
make test
make install

Les modules posant problème se compilent et s'installent sans soucis.