[Help-gnutls] Re: gnutls 2.3.4 doesn't copile using MinGW

Massimo Gaspari massimo.gaspari at alice.it
Wed Apr 16 20:18:29 CEST 2008


Simon Josefsson wrote:

> Massimo Gaspari <massimo.gaspari at alice.it> writes:

> Yes, that is one solution, however doing it systematically for each and
> every symbol defined by gnulib is a lot of work.
>
> Maybe you could add '#define vasprintf gnutls_vasprintf' in your
> config.h when building GnuTLS?  I'm not sure it will work, but something
> like that will be necessary to fully solve this problem.
>
>   
Up to now only the vasprintf seems to have problems. So It's not 
difficult to change the code.
>>
>> I edited the Makefile in doc/example changing
>>
>> LIBS =  -lws2_32
>>
>> to
>>
>> LIBS =  -lws2_32 ../../gl/.libs/libgnu.a
>>
>>
>> and this issue disappeared.
>>     
>
> I'm not sure if it will solve this, but I changed the order of libgnu.la
> in Makefile.am.  Please test tomorrow's snapshot.
>
>   
In my opinion it fixes the issue. Moreover if you use the following link

http://hpux.cs.utah.edu/hppd/cgi-bin/wwwtar?/hpux/Gnu/gnutls-2.3.4/gnutls-2.3.4-src-11.11.tar.gz+gnutls-2.3.4/HPUX.Install+text

you find some suggestion to get GnuTls compiled in HPUX for 2.3.4. 
There's the following comment

* doc/examples/Makefile.in:
  - Use ../../gl/.libs/libgnu.la at the end of the libtool link line
    to link examples, rather than ../../gl/libgnu.la in the middle of the
    line. This avoids a missing rpl_strerror symbol when linking on the
    Itanium platform.

So I'm not alone :-)

>
> To build the manual, you need a newer texinfo.  However, building it
> shouldn't be required unless you modified any source files that is used
> by the manual.  Possibly you have done that...  I think this should go
> away when all your other build problems are solved in the official
> distribution.
>   
I'll update the texinfo package. In the meantime I can skip the doc 
building using an empty Makefile

all:
check:

(quick and dirty, but better than an error)

So now I'm able to get gnutls compiled . Here's the full story

I get gnutls-2.3.5.tar.bz2 then

1) libgpg-error

./configure --disable-shared --disable-rpath
make
make check
make install


2) libgcrypt

./configure --disable-shared --disable-asm --enable-random=w32 
--disable-dev-random

make
make check
make install

3) GnuTLS

Edit the sources changing any vasprintf to gnutls_vasprintf (stdio.in.h, 
vasprintf.c, asprintf.c and gnutls_str.c)
Edit the config.h.in to have #define HAVE_ALLOCA 0 and #define 
HAVE_ALLOCA_H 0

./configure --disable-shared --disable-rpath --disable-cxx --disable-guile

Edit config.h to have #define HAVE_ALLOCA 0 (configure sets HAVE_ALLOCA 1)
Edit Makefile in doc to do nothing
Edit Makefile in doc/example adding ../../gl/libgnu.la to LIBS

4) make

Yup, it does! The compilation ended without any error, just two warnings 
only. All other issues disappear. The warnings are

/bin/sh ../libtool --tag=CC   --mode=compile gcc -std=gnu99 
-DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\"       
-I../lgl -I../lgl -I../includes -I../includes -I./x509 -I../libextra 
-I../lib/openpgp/ -I../lib/opencdk  -I/usr/local/includ      e 
-I./opencdk -I./minitasn1   -pipe -I/usr/local/include -Wno-pointer-sign 
-MT pkix_asn1_tab.lo -MD -MP -MF .deps/pkix_asn1_t      ab.Tpo -c -o 
pkix_asn1_tab.lo pkix_asn1_tab.c
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. 
-DLOCALEDIR=\"/usr/local/share/locale\" -I../lgl -I../lgl -I../inc      
ludes -I../includes -I./x509 -I../libextra -I../lib/openpgp/ 
-I../lib/opencdk -I/usr/local/include -I./opencdk -I./minitasn1       
-pipe -I/usr/local/include -Wno-pointer-sign -MT pkix_asn1_tab.lo -MD 
-MP -MF .deps/pkix_asn1_tab.Tpo -c pkix_asn1_tab.c -o p      kix_asn1_tab.o
pkix_asn1_tab.c:7: warning: 'pkix_asn1_tab' initialized and declared 
'extern'

mv -f .deps/pkix_asn1_tab.Tpo .deps/pkix_asn1_tab.Plo
/bin/sh ../libtool --tag=CC   --mode=compile gcc -std=gnu99 
-DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\"       
-I../lgl -I../lgl -I../includes -I../includes -I./x509 -I../libextra 
-I../lib/openpgp/ -I../lib/opencdk  -I/usr/local/includ      e 
-I./opencdk -I./minitasn1   -pipe -I/usr/local/include -Wno-pointer-sign 
-MT gnutls_asn1_tab.lo -MD -MP -MF .deps/gnutls_as      n1_tab.Tpo -c -o 
gnutls_asn1_tab.lo gnutls_asn1_tab.c
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. 
-DLOCALEDIR=\"/usr/local/share/locale\" -I../lgl -I../lgl -I../inc      
ludes -I../includes -I./x509 -I../libextra -I../lib/openpgp/ 
-I../lib/opencdk -I/usr/local/include -I./opencdk -I./minitasn1       
-pipe -I/usr/local/include -Wno-pointer-sign -MT gnutls_asn1_tab.lo -MD 
-MP -MF .deps/gnutls_asn1_tab.Tpo -c gnutls_asn1_tab.      c -o 
gnutls_asn1_tab.o
gnutls_asn1_tab.c:7: warning: 'gnutls_asn1_tab' initialized and declared 
'extern'

I think the compiler is right. The two variable are used in

pkix_asn1_tab.c
gnutls_global.c

in both files you use the extern qualifier, but in pkix_asn1_tab.c you 
also assign a "value". Wouldn't it be better to remove the extern 
qualifier in
pkix_asn1_tab.c? Ok is a very minor issue but avoid two warnings.

So is this the end of the story? Unfortunately no!!When I did 'make 
check' I got

==================
All 1 tests passed
==================
make[3]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests/userid'
make[2]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests/userid'
Making check in pathlen
make[2]: Entering directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
make  pathlen
make[3]: Entering directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
make[3]: Nothing to be done for `pathlen'.
make[3]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
make  check-TESTS
make[3]: Entering directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
NOTE: you should run 'diskperf -y' to enable the disk statistics
NOTE: you should run 'diskperf -y' to enable the disk statistics
NOTE: you should run 'diskperf -y' to enable the disk statistics
NOTE: you should run 'diskperf -y' to enable the disk statistics
NOTE: you should run 'diskperf -y' to enable the disk statistics
NOTE: you should run 'diskperf -y' to enable the disk statistics
--- ./ca-no-pathlen.pem Mon Feb 25 16:20:41 2008
+++ new-ca-no-pathlen.pem       Wed Apr 16 15:13:11 2008
@@ -3,8 +3,8 @@
        Serial Number (hex): 00
        Issuer: O=GnuTLS test certificate
        Validity:
-               Not Before: Fri Jan 26 10:00:04 UTC 2007
-               Not After: Sat Jan 27 10:00:06 UTC 2007
+               Not Before: Fri Jan  10:00:04 UTC 2007
+               Not After: Sat Jan  10:00:06 UTC 2007
        Subject: O=GnuTLS test certificate
        Subject Public Key Algorithm: RSA
                Modulus (bits 512):
FAIL: pathlen
===================================
1 of 1 tests failed
Please report to bug-gnutls at gnu.org
===================================
make[3]: *** [check-TESTS] Error 1
make[3]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
make[2]: *** [check-am] Error 2
make[2]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests/pathlen'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/home/emasgas/gnutls-2.3.5/tests'
make: *** [check-recursive] Error 1

Googling the internet I  got the opinion that this may be related to 
isprint(), I'm not sure anyway. Is the following recommandation (from 
HPUX suggestions) relevat to the failure?

* lib/x509/output.c:
  - The isprint() routine on Itanium platforms seemed to like printing
    8-bit chars (possibly to do with the sign of the char?), so changed it
    to simply print any char between ' ' and '~'. Without this change,
    Itanium's "gmake check" fails one of the checks.

Just for verification I repeated the whole process twice (from scratch) 
using

CFLAGS=-O2

and

CFLAGS=

getting exactly the same results

So the optimizer is not involved.

I absolutely need your help to fix the latest issue.

Massimo

-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/attachments/20080416/ffbb97e7/attachment.htm>


More information about the Gnutls-help mailing list