[PATCH] neon: honor --disable-openssl and use GNUTLS

Andres Gomez (via Code Review) gerrit at gerrit.libreoffice.org
Thu Apr 11 05:15:45 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3330

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/30/3330/1

neon: honor --disable-openssl and use GNUTLS

On --disable-openssl, the bundled neon library
will link against GNUTLS + gcrypt instead of
OpenSSL.

Change-Id: I5b3f09cd1003aefde0478aaab026536c962212c4
---
M config_host.mk.in
M configure.ac
M neon/Library_neon.mk
M neon/UnpackedTarball_neon.mk
M neon/configs/config.h
A neon/neon_with_gnutls.patch
6 files changed, 87 insertions(+), 7 deletions(-)



diff --git a/config_host.mk.in b/config_host.mk.in
index d794d16..a0f4675 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -182,6 +182,8 @@
 export GIT_NEEDED_SUBMODULES=@GIT_NEEDED_SUBMODULES@
 export GNOMEVFS_CFLAGS=$(gb_SPACE)@GNOMEVFS_CFLAGS@
 export GNOMEVFS_LIBS=$(gb_SPACE)@GNOMEVFS_LIBS@
+export GNUTLS_CFLAGS=$(gb_SPACE)@GNUTLS_CFLAGS@
+export GNUTLS_LIBS=$(gb_SPACE)@GNUTLS_LIBS@
 export PARALLELISM?=@PARALLELISM@
 @x_GNUCP@ export GNUCOPY=@GNUCP@
 export GNUMAKE=@GNUMAKE@
@@ -289,6 +291,8 @@
 export LIBEXTTEXTCAT_LIBS=$(gb_SPACE)@LIBEXTTEXTCAT_LIBS@
 export LIBFONTS_JAR=@LIBFONTS_JAR@
 export LIBFORMULA_JAR=@LIBFORMULA_JAR@
+export LIBGCRYPT_CFLAGS=@LIBGCRYPT_CFLAGS@
+export LIBGCRYPT_LIBS=@LIBGCRYPT_LIBS@
 export LIBLANGTAG_CFLAGS=$(gb_SPACE)@LIBLANGTAG_CFLAGS@
 export LIBLANGTAG_LIBS=$(gb_SPACE)@LIBLANGTAG_LIBS@
 export LIBLAYOUT_JAR=@LIBLAYOUT_JAR@
diff --git a/configure.ac b/configure.ac
index 9c1f2e9..2c852f2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8562,6 +8562,21 @@
 AC_SUBST([DISABLE_OPENSSL])
 
 dnl ===================================================================
+dnl Check for building gnutls
+dnl ===================================================================
+AC_MSG_CHECKING([whether to use gnutls])
+if test "$enable_neon" != "no" && test "$enable_openssl" = "no"; then
+    AC_MSG_RESULT([yes])
+    AM_PATH_LIBGCRYPT()
+    PKG_CHECK_MODULES(GNUTLS, [gnutls],,
+        AC_MSG_ERROR([Disabling OpenSSL was requested, but GNUTLS is not
+                      available in the system to use as replacement.]))
+fi
+
+AC_SUBST([LIBGCRYPT_CFLAGS])
+AC_SUBST([LIBGCRYPT_LIBS])
+
+dnl ===================================================================
 dnl Check for system redland
 dnl ===================================================================
 dnl versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
diff --git a/neon/Library_neon.mk b/neon/Library_neon.mk
index bc5fe25..0ea887f 100644
--- a/neon/Library_neon.mk
+++ b/neon/Library_neon.mk
@@ -13,10 +13,15 @@
 
 $(eval $(call gb_Library_use_externals,neon,\
 	libxml2 \
-	openssl \
-	openssl_headers \
 	zlib \
 ))
+
+ifneq ($(DISABLE_OPENSSL),YES)
+$(eval $(call gb_Library_use_externals,neon,\
+	openssl \
+	openssl_headers \
+))
+endif
 
 $(eval $(call gb_Library_set_visibility_default,neon))
 
@@ -56,8 +61,28 @@
 	UnpackedTarball/neon/src/ne_utils \
 	UnpackedTarball/neon/src/ne_xml \
 	UnpackedTarball/neon/src/ne_xmlreq \
+))
+
+
+ifneq ($(DISABLE_OPENSSL),YES)
+$(eval $(call gb_Library_add_generated_cobjects,neon,\
 	UnpackedTarball/neon/src/ne_openssl \
 ))
+else
+$(eval $(call gb_Library_add_generated_cobjects,neon,\
+	UnpackedTarball/neon/src/ne_gnutls \
+))
+$(eval $(call gb_Library_add_cflags,neon,\
+	-DDISABLE_OPENSSL \
+	$(LIBGCRYPT_CFLAGS) \
+	$(GNUTLS_CFLAGS) \
+))
+$(eval $(call gb_Library_add_libs,neon,\
+	$(LIBGCRYPT_LIBS) \
+	$(GNUTLS_LIBS) \
+))
+endif
+
 
 ifeq ($(OS),WNT)
 $(eval $(call gb_Library_use_system_win32_libs,neon,\
@@ -76,9 +101,11 @@
 ))
 
 else
+ifneq ($(DISABLE_OPENSSL),YES)
 $(eval $(call gb_Library_add_generated_cobjects,neon,\
 	UnpackedTarball/neon/src/ne_ntlm \
 ))
+endif
 
 endif
 
diff --git a/neon/UnpackedTarball_neon.mk b/neon/UnpackedTarball_neon.mk
index a099718..a6cb87b 100644
--- a/neon/UnpackedTarball_neon.mk
+++ b/neon/UnpackedTarball_neon.mk
@@ -20,6 +20,7 @@
 $(eval $(call gb_UnpackedTarball_add_patches,neon,\
 	neon/neon.patch \
 	neon/neon_ne_set_request_flag.patch \
+	neon/neon_with_gnutls.patch \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/neon/configs/config.h b/neon/configs/config.h
index db68aa2..b0fdf22 100644
--- a/neon/configs/config.h
+++ b/neon/configs/config.h
@@ -79,23 +79,25 @@
 #define HAVE_GETSOCKOPT 1
 #endif
 
+#ifdef DISABLE_OPENSSL
 /* Define if GnuTLS support is enabled */
-/* #undef HAVE_GNUTLS */
+#define HAVE_GNUTLS
 
 /* Define to 1 if you have the `gnutls_certificate_get_x509_cas' function. */
 /* #undef HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS */
 
 /* Define to 1 if you have the `gnutls_certificate_verify_peers2' function. */
-/* #undef HAVE_GNUTLS_CERTIFICATE_VERIFY_PEERS2 */
+#define HAVE_GNUTLS_CERTIFICATE_VERIFY_PEERS2
 
 /* Define to 1 if you have the `gnutls_session_get_data2' function. */
-/* #undef HAVE_GNUTLS_SESSION_GET_DATA2 */
+#define HAVE_GNUTLS_SESSION_GET_DATA2
 
 /* Define to 1 if you have the `gnutls_sign_callback_set' function. */
-/* #undef HAVE_GNUTLS_SIGN_CALLBACK_SET */
+#define HAVE_GNUTLS_SIGN_CALLBACK_SET
 
 /* Define to 1 if you have the `gnutls_x509_dn_get_rdn_ava' function. */
-/* #undef HAVE_GNUTLS_X509_DN_GET_RDN_AVA */
+#define HAVE_GNUTLS_X509_DN_GET_RDN_AVA
+#endif /* DISABLE_OPENSSL */
 
 /* Define if GSSAPI support is enabled */
 /* #undef HAVE_GSSAPI */
@@ -179,6 +181,7 @@
 #define HAVE_NETINET_TCP_H 1
 #endif
 
+#ifndef DISABLE_OPENSSL
 /* Define if NTLM is supported */
 #ifndef WIN32
 #define HAVE_NTLM 1
@@ -192,6 +195,7 @@
 
 /* Define to 1 if you have the <openssl/ssl.h> header file. */
 #define HAVE_OPENSSL_SSL_H 1
+#endif /* !DISABLE_OPENSSL */
 
 /* Define if pakchois library supported */
 /* #undef HAVE_PAKCHOIS */
diff --git a/neon/neon_with_gnutls.patch b/neon/neon_with_gnutls.patch
new file mode 100644
index 0000000..ed8b7fa
--- /dev/null
+++ b/neon/neon_with_gnutls.patch
@@ -0,0 +1,29 @@
+--- src/ne_gnutls.c	2009-12-02 23:40:41.000000000 +0200
++++ src/ne_gnutls.c	2013-03-29 13:41:00.429857276 +0200
+@@ -48,6 +48,26 @@
+ #include <iconv.h>
+ #endif
+ 
++
++/* GnuTLS removed these symbols from 2.99.0.
++ *
++ * This is a dodgy solution to avoid further patching of neon
++ * sources */
++#if LIBGNUTLS_VERSION_NUMBER >= 0x026300
++# define gnutls_pkcs12          gnutls_pkcs12_t
++# define gnutls_pkcs12_bag      gnutls_pkcs12_bag_t
++# define gnutls_pkcs12_bag_type gnutls_pkcs12_bag_type_t
++# define gnutls_certificate_verify_peers(_ssl) ({ \
++    int __status_ ## __LINE__ = 0; \
++    gnutls_certificate_verify_peers2((_ssl), &__status_ ## __LINE__) == 0 \
++        ? __status_ ## __LINE__ : -1; \
++  })
++#elif LIBGNUTLS_VERSION_NUMBER >= 0x020303
++/* GnuTLS had these symbols since 2.3.3. */
++# define HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS
++#endif /* LIBGNUTLS_VERSION_NUMBER */
++
++
+ #include "ne_ssl.h"
+ #include "ne_string.h"
+ #include "ne_session.h"

-- 
To view, visit https://gerrit.libreoffice.org/3330
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b3f09cd1003aefde0478aaab026536c962212c4
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Andres Gomez <agomez at igalia.com>



More information about the LibreOffice mailing list