[Libreoffice-commits] core.git: Branch 'libreoffice-6-0' - config_host/config_gpgme.h.in config_host.mk.in configure.ac xmlsecurity/CppunitTest_xmlsecurity_signing.mk xmlsecurity/qa

Rene Engelhard rene at debian.org
Mon Mar 26 16:08:03 UTC 2018


 config_host.mk.in                              |    2 ++
 config_host/config_gpgme.h.in                  |    3 +++
 configure.ac                                   |   23 +++++++++++++++++++++++
 xmlsecurity/CppunitTest_xmlsecurity_signing.mk |   14 +++++++++++++-
 xmlsecurity/qa/unit/signing/signing.cxx        |    8 ++++++++
 5 files changed, 49 insertions(+), 1 deletion(-)

New commits:
commit 74d438f716d9cef165c78f950d4c53a46c37503c
Author: Rene Engelhard <rene at debian.org>
Date:   Sun Mar 18 22:25:36 2018 +0100

    gpg4libre: fix failing gpg test due to over-long filenames
    
    This squashes the following commits:
    
    From f68929ac611fdda19c1ee413effc59d33aa5ef97 Mon Sep 17 00:00:00 2001
    From: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Date: Fri, 9 Mar 2018 01:38:26 +0100
    Subject: gpg4libre: fix failing gpg test due to over-long filenames
    
    With long workdir path, gpg sometimes fails with 'gpg: can't connect
    to the agent: File name too long' error.
    WK recommends to create preferred socket dir under /run/user, needs
    prepping though via gpgconf.
    
    See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=84720
    
    From d7ecf4a4e37a9eeffa2b40f9fe5a2e6a8f90c876 Mon Sep 17 00:00:00 2001
    From: Rene Engelhard <rene at debian.org>
    Date: Sun, 18 Mar 2018 11:25:41 +0100
    Subject: properly check for gpgconf (and --create-socketdir) working
    
    From d6ed1d415d36809d784af780231258ea0ee1024f Mon Sep 17 00:00:00 2001
    From: Rene Engelhard <rene at debian.org>
    Date: Sun, 18 Mar 2018 19:06:58 +0100
    Subject: actually add GPGCONF to config_host.mk.in
    
    From 7a95ee8d0badb2cbbd137a6e18af1bada35ae933 Mon Sep 17 00:00:00 2001
    From: Rene Engelhard <rene at debian.org>
    Date: Sun, 18 Mar 2018 19:26:45 +0100
    Subject: actually add HAVE_GPGCONF_SOCKETDIR to config_host.mk.in...
    
    From 5204a5145d8232ea0650144fb4756c38303ef06e Mon Sep 17 00:00:00 2001
    From: Rene Engelhard <rene at debian.org>
    Date: Sun, 18 Mar 2018 19:28:55 +0100
    Subject: revert accidentially comitted local changes :(
    
    From bc358d39ac985914160e8aaa23b29469470c032b Mon Sep 17 00:00:00 2001
    From: Rene Engelhard <rene at debian.org>
    Date: Sun, 18 Mar 2018 20:36:45 +0100
    Subject: this is sh, not make...
    
    Change-Id: I7880fd7eee57cedc19b72348b45f0c1389409fe6
    Reviewed-on: https://gerrit.libreoffice.org/51521
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/config_host.mk.in b/config_host.mk.in
index 7d793455901b..8cbbc5fee1d5 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -198,6 +198,7 @@ export EPOXY_LIBS=$(gb_SPACE)@EPOXY_LIBS@
 export GLM_CFLAGS=$(gb_SPACE)@GLM_CFLAGS@
 export GPG_ERROR_CFLAGS=$(gb_SPACE)@GPG_ERROR_CFLAGS@
 export GPG_ERROR_LIBS=$(gb_SPACE)@GPG_ERROR_LIBS@
+export GPGCONF=@GPGCONF@
 export GPGMEPP_CFLAGS=$(gb_SPACE)@GPGMEPP_CFLAGS@
 export GPGMEPP_LIBS=$(gb_SPACE)@GPGMEPP_LIBS@
 export GNUTLS_CFLAGS=$(gb_SPACE)@GNUTLS_CFLAGS@
@@ -241,6 +242,7 @@ export HAVE_GCC_FNO_INLINE=@HAVE_GCC_FNO_INLINE@
 export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@
 export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@
 export HAVE_GNUMAKE_FILE_FUNC=@HAVE_GNUMAKE_FILE_FUNC@
+export HAVE_GPGCONF_SOCKETDIR=@HAVE_GPGCONF_SOCKETDIR@
 export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@
 export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@
 export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@
diff --git a/config_host/config_gpgme.h.in b/config_host/config_gpgme.h.in
index 7e46f3703ec3..4a2f24a2de61 100644
--- a/config_host/config_gpgme.h.in
+++ b/config_host/config_gpgme.h.in
@@ -19,6 +19,9 @@
 // Defined if gpg and gpgme signature verification is available
 #define HAVE_FEATURE_GPGVERIFY 0
 
+// Defined if gpgconf --create-socketdir works
+#define HAVE_GPGCONF_SOCKETDIR 0
+
 #if HAVE_FEATURE_GPGME
 # include "config_lgpl.h"
 #endif
diff --git a/configure.ac b/configure.ac
index 24eb7d846985..6ab7bc51f4bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10164,6 +10164,27 @@ elif test "$_os" = "Linux" -o "$_os" = "Darwin" \
         # gpg installation to run OpenPGP signature verification
         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
     fi
+    if test "$_os" = "Linux"; then
+      uid=`id -u`
+      AC_MSG_CHECKING([for /run/user/$uid])
+      if test -d /run/user/$uid; then
+        AC_MSG_RESULT([yes])
+        AC_PATH_PROG(GPGCONF, gpgconf)
+        AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
+        if $GPGCONF --dump-options > /dev/null ; then
+          if $GPGCONF --dump-options | grep -q create-socketdir ; then
+	    AC_MSG_RESULT([yes])
+            AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
+          else
+            AC_MSG_RESULT([no])
+          fi
+        else
+	  AC_MSG_RESULT([no. missing or broken gpgconf?])
+        fi
+      else
+        AC_MSG_RESULT([no])
+     fi
+   fi
 fi
 AC_SUBST(ENABLE_GPGMEPP)
 AC_SUBST(SYSTEM_GPGMEPP)
@@ -10173,6 +10194,8 @@ AC_SUBST(LIBASSUAN_CFLAGS)
 AC_SUBST(LIBASSUAN_LIBS)
 AC_SUBST(GPGMEPP_CFLAGS)
 AC_SUBST(GPGMEPP_LIBS)
+AC_SUBST(GPGCONF)
+AC_SUBST(HAVE_GPGCONF_SOCKETDIR)
 
 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
diff --git a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
index c382e3b09e75..2f3ed41e2dfb 100644
--- a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
+++ b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
@@ -52,11 +52,23 @@ ifeq ($(ENABLE_PDFIMPORT),TRUE)
 $(eval $(call gb_CppunitTest_use_executable,xmlsecurity_signing,xpdfimport))
 endif
 
-# reset the LD_LIBRARY_PATH for spawned GPG processes
+# various hacks to make unit test work on Linux more often
 ifeq ($(OS),LINUX)
+# reset the LD_LIBRARY_PATH for spawned GPG processes
 $(call gb_CppunitTest_get_target,xmlsecurity_signing): \
     EXTRA_ENV_VARS := \
         LIBO_LD_PATH=$$LD_LIBRARY_PATH
+
+ifneq (,$(HAVE_GPGCONF_SOCKETDIR))
+# create socket dir below /run/user/ instead of in workdir
+.PHONY : gb_CppunitTest_run_gpgconf
+gb_CppunitTest_run_gpgconf:
+	GNUPGHOME=$(WORKDIR)/CppunitTest/xmlsecurity_signing.test.user \
+	$(GPGCONF) --create-socketdir
+
+$(call gb_CppunitTest_get_target,xmlsecurity_signing): \
+    gb_CppunitTest_run_gpgconf
+endif
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx
index 39a6d0ca6299..b7cc077d2097 100644
--- a/xmlsecurity/qa/unit/signing/signing.cxx
+++ b/xmlsecurity/qa/unit/signing/signing.cxx
@@ -113,9 +113,11 @@ public:
     void testODFBrokenStreamGPG();
     /// Test a typical broken ODF signature where the XML dsig hash is corrupted.
     void testODFBrokenDsigGPG();
+#if HAVE_GPGCONF_SOCKETDIR
     /// Test loading an encrypted ODF document
     void testODFEncryptedGPG();
 #endif
+#endif
     CPPUNIT_TEST_SUITE(SigningTest);
     CPPUNIT_TEST(testDescription);
     CPPUNIT_TEST(testODFGood);
@@ -143,8 +145,10 @@ public:
     CPPUNIT_TEST(testODFUntrustedGoodGPG);
     CPPUNIT_TEST(testODFBrokenStreamGPG);
     CPPUNIT_TEST(testODFBrokenDsigGPG);
+#if HAVE_GPGCONF_SOCKETDIR
     CPPUNIT_TEST(testODFEncryptedGPG);
 #endif
+#endif
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -743,6 +747,8 @@ void SigningTest::testODFBrokenDsigGPG()
     CPPUNIT_ASSERT_EQUAL(static_cast<int>(SignatureState::BROKEN), static_cast<int>(pObjectShell->GetDocumentSignatureState()));
 }
 
+#if HAVE_GPGCONF_SOCKETDIR
+
 void SigningTest::testODFEncryptedGPG()
 {
     createDoc(m_directories.getURLFromSrc(DATA_DIRECTORY) + "encryptedGPG.odt");
@@ -754,6 +760,8 @@ void SigningTest::testODFEncryptedGPG()
 
 #endif
 
+#endif
+
 void SigningTest::registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx)
 {
     xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("odfds"), BAD_CAST("urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0"));


More information about the Libreoffice-commits mailing list