Subject: | Build failure, compile warnings & silent failure. |
Tried to update from 0.10 to 0.16 under Perl 5.8.8.
Compile fails with a number of errors (and warnings).
I know this is an old version of perl, but this application is hard to update.
I'm not an XS person, but there only seem to be a couple of new functions
referenced...can Crypt::SMIME be made to work on 5.8.8?
In any case, a number of the warnings should be fixed.
The missing declarations for RAND_*() are fixed if you add:
#include <openssl/rand.h>
at line 11 of SMIME.xs
SMIME.xs:783: warning: suggest parentheses around comparison in operand of &
should look like:
if ((flags & PKCS7_NOVERIFY) == 0) {
The remaining errors are XS-specific & I don't know how to fix them.
Also, looking at _addPublicKey(), you fixed a problem when a string has two or more certificates
by introducing a loop. However, I think this code will fail silently if a string has no certificates.
This should be an error.
[you exit the while() and assume success when you encounter PEM_R_NO_START_LINE. But this can be
true if the string is null or doesn't contain a certificate.]
On Fedora core 6 (linux), perl v5.8.8 built for i386-linux-thread-multi
Here is the build log from cpan install:
Configuring M/MI/MIKAGE/Crypt-SMIME-0.16.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
checking for gettimeofday... yes
checking for time... yes
checking for libcrypto... 1.0.1j
checking for LIBCRYPTO_CFLAGS... -I/usr/local/include
checking for LIBCRYPTO_LIBS... -L/usr/local/lib -lcrypto -ldl
Generating a Unix-style Makefile
Writing Makefile for Crypt::SMIME
Writing MYMETA.yml and MYMETA.json
MIKAGE/Crypt-SMIME-0.16.tar.gz
/usr/bin/perl Makefile.PL -- OK
Running make for M/MI/MIKAGE/Crypt-SMIME-0.16.tar.gz
cp lib/SMIME/JA.pod blib/lib/Crypt/SMIME/JA.pod
cp lib/SMIME.pm blib/lib/Crypt/SMIME.pm
Running Mkbootstrap for Crypt::SMIME ()
chmod 644 SMIME.bs
/usr/bin/perl /usr/lib/perl5/site_perl/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap typemap SMIME.xs > SMIME.xsc && mv SMIME.xsc SMIME.c
gcc -c -I/usr/local/include -DOPENSSL_LOAD_CONF -DHAVE_GETTIMEOFDAY -DHAVE_SYS_TIME_H -DHAVE_TIME -DHAVE_TIME_H -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"0.16\" -DXS_VERSION=\"0.16\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" SMIME.c
SMIME.xs: In function âseed_rngâ:
SMIME.xs:393: warning: implicit declaration of function âRAND_pollâ
SMIME.xs:394: warning: implicit declaration of function âRAND_statusâ
SMIME.xs:400: warning: implicit declaration of function âRAND_seedâ
In file included from SMIME.xs:415:
const-c.inc: In function âget_missing_hashâ:
const-c.inc:66: warning: value computed is not used
./const-xs.inc: In function âXS_Crypt__SMIME_AUTOLOADâ:
./const-xs.inc:84: warning: implicit declaration of function ânewSVpvn_flagsâ
./const-xs.inc:84: warning: initialization makes pointer from integer without a cast
./const-xs.inc:105: warning: implicit declaration of function âcroak_svâ
SMIME.xs: In function âXS_Crypt__SMIME_setPublicKeyStoreâ:
SMIME.xs:626: warning: ISO C90 forbids mixed declarations and code
SMIME.xs: In function âXS_Crypt__SMIME_checkâ:
SMIME.xs:783: warning: suggest parentheses around comparison in operand of &
SMIME.xs: In function âXS_Crypt__SMIME_extractCertificatesâ:
SMIME.xs:853: warning: ISO C90 forbids mixed declarations and code
SMIME.xs: In function âXS_Crypt__SMIME_getSignersâ:
SMIME.xs:941: warning: ISO C90 forbids mixed declarations and code
./const-xs.inc: In function âboot_Crypt__SMIMEâ:
./const-xs.inc:31: warning: implicit declaration of function âhv_common_key_lenâ
./const-xs.inc:34: error: âHV_FETCH_LVALUEâ undeclared (first use in this function)
./const-xs.inc:34: error: (Each undeclared identifier is reported only once
./const-xs.inc:34: error: for each function it appears in.)
./const-xs.inc:67: warning: implicit declaration of function âhv_commonâ
./const-xs.inc:68: error: âHV_FETCH_ISSTOREâ undeclared (first use in this function)
make: *** [SMIME.o] Error 1
MIKAGE/Crypt-SMIME-0.16.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
MIKAGE/Crypt-SMIME-0.16.tar.gz : make NO
Thanks!