Subject: 24.0.91; Compile failure at gnutls.c
From: David J Fussner <[email-masked]>
To: [email-masked]
Date: Tue, 1 Nov 2011 10:33:34 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Compilation of the latest pretest fails with this recipe:

./configure

make

gnutls.c: In function 'Fgnutls_boot':
gnutls.c:962: error: 'GNUTLS_CERT_NOT_ACTIVATED' undeclared (first use
in this function)
gnutls.c:962: error: (Each undeclared identifier is reported only once
gnutls.c:962: error: for each function it appears in.)
gnutls.c:966: error: 'GNUTLS_CERT_EXPIRED' undeclared (first use in
this function)
make[1]: *** [gnutls.o] Error 1
make[1]: Leaving directory `/home/Downloads/emacs-24.0.91/src'
make: *** [src] Error 2

This is Slackware GNU/Linux 12

pkg-config --modversion gnutls: 2.6.2

gcc (GCC) 4.1.2
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

Selected parts of config.log, in case it helps:

configure:11710: checking for gnutls >= 2.6.0
configure:11714: result: yes
configure:11718: checking LIBGNUTLS_CFLAGS
configure:11721: result:  
configure:11724: checking LIBGNUTLS_LIBS
configure:11727: result: -lgnutls  
configure:11764: checking for gnutls_certificate_set_verify_function
configure:11764: gcc -std=gnu99 -o conftest  -g -O2
-I/usr/include/librsvg-2 -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/usr/include/freetype2 -I/usr/include/libpng12
-Wl,-znocombreloc  conftest.c -lgnutls   -lgtk-x11-2.0 -lgdk-x11-2.0
-latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo
-lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0   -lWand -lMagick
-lrsvg-2 -lgdk_pixbuf-2.0 -lm -lgobject-2.0 -lgmodule-2.0 -ldl
-lglib-2.0   -lX11 -lpthread   -ldbus-1   >&5 /tmp/ccgDoSOW.o: In
function `main': /home/Downloads/emacs-24.0.91/conftest.c:138:
undefined reference to `gnutls_certificate_set_verify_function'
collect2: ld returned 1 exit status
configure:11764: $? = 1
configure: failed program was:
| /* confdefs.h */
....
| #define HAVE_GNUTLS 1
| /* end confdefs.h.  */
| /* Define gnutls_certificate_set_verify_function to an innocuous
variant, in case <limits.h> declares
gnutls_certificate_set_verify_function.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define gnutls_certificate_set_verify_function
innocuous_gnutls_certificate_set_verify_function
|
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char
gnutls_certificate_set_verify_function (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef gnutls_certificate_set_verify_function
|
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char gnutls_certificate_set_verify_function ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_gnutls_certificate_set_verify_function || defined
__stub___gnutls_certificate_set_verify_function
| choke me
| #endif
| 
| int
| main ()
| {
| return gnutls_certificate_set_verify_function ();
|   ;
|   return 0;
| }

./configure --without-gnutls works fine:

In GNU Emacs 24.0.91.1 (i686-pc-linux-gnu, GTK+ Version 2.10.13)
 of 2011-10-31 on font
Windowing system distributor `The X.Org Foundation', version
11.0.10300000 configured using `configure  '--without-gnutls''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.ISO8859-1
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t

There was, by the way, the same problem compiling 24.0.90.  I'm happy to
test fixes, or indeed upgrade gnutls if necessary.

Many thanks,

David.