office-gobmx/config_host
Stephan Bergmann f0305ec0a7 Fix creation/removal of GPG socketdir
<https://gerrit.libreoffice.org/#/c/50978/> "gpg4libre: fix failing gpg test due
to over-long filenames" had introduced the gb_CppunitTest_run_gpgconf target in
xmlsecurity/CppunitTest_xmlsecurity_signing.mk, calling `gpgconf
--craete-socketdir`.  A 2018-03-18 comment there notes that "Stephan's last
comment: (and `gpgconf --remove-sockedir` be called after the test?) is not
addressed yet, will do in follow-up commit".

Follow-up d7ecf4a4e3 "properly check for gpgconf
(and --create-socketdir) working" makes gb_CppunitTest_run_gpgconf conditional.
However, in configure.ac,

  HAVE_GPGCONF_SOCKETDIR=TRUE

is missing, so even after follow-up 7a95ee8d0b
"actually add HAVE_GPGCONF_SOCKETDIR to config_host.mk.in...", config_host.mk
will always contain

  export HAVE_GPGCONF_SOCKETDIR=

so gb_CppunitTest_run_gpgconf will never be executed (and `pgconf
--crate-socketdir` will never called).

But even if it were executed, it would not create the socket dir that the test
code in xmlsecurity/qa/unit/signing/signing.cxx is actually using, as
gb_CppunitTest_run_gpgconf sets

  GNUPGHOME=.../workdir/CppunitTest/xmlsecurity_signing.test.user

while xmlsecurity/qa/unit/signing/signing.cxx's SigningTest::setUp sets

  GNUPGHOME=.../workdir//CppunitTest/xmlsecurity_signing.test.user/

and the GPG software is apparently picky about extra slashes when computing the
socket dir name from the GNUPGHOME env var.

(That `gpgconf --create-socketdir` was never executed with the current setup
shows that calling it explicitly is probably not really needed, as the GPG
software apparently creates it automatically on demand.)

However, what is still missing is to remove the socket dir again (see the
comment quoted above), and, probably more importantly, to exit any gpg-agent
daemon operating on that socket dir that has (indirectly) been started by the
tests in xmlsecurity/qa/unit/signing/signing.cxx.  At least with Fedora 29
gpgconf from gnupg2-2.2.9-1.fc29.x86_64, that daemon is successfully terminated
by calling `gpgconf --remove-socket`.

So move the call to `gpgconf --create-socketdir` from the makefile to the test
setup code (which makes it easier to guarantee that a single GNUPGHOME value,
and thus a single socket dir, is used), and add a corresponding `gpgconf
--remove-socketdir` call to the test shutdown code.  (As argued above, the
`gpgconf --create-socketdir` call shouldn't be stricktly necessary, but it looks
cleaner to do it explicitly anyway.)

Change-Id: I2ec8f08943ed63ec27f8507461588ee7cdadf372
Reviewed-on: https://gerrit.libreoffice.org/63181
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-11-09 15:05:18 +01:00
..
.gitignore
config_buildid.h.in
config_cairo_canvas.h.in
config_clang.h.in
config_cxxabi.h.in
config_dbus.h.in
config_dconf.h.in
config_eot.h.in
config_extensions.h.in
config_features.h.in
config_firebird.h.in
config_folders.h.in
config_fuzzers.h.in
config_gio.h.in
config_global.h.in
config_gpgme.h.in
config_gtk3_kde5.h.in
config_java.h.in
config_kde4.h.in
config_kde5.h.in
config_langs.h.in
config_lgpl.h.in
config_libcxx.h.in
config_liblangtag.h.in
config_libnumbertext.h.in
config_locales.h.in
config_mpl.h.in
config_oauth2.h.in
config_oox.h.in
config_options.h.in
config_options_calc.h.in
config_poppler.h.in
config_probes.h.in
config_python.h.in
config_qt5.h.in
config_typesizes.h.in
config_vcl.h.in
config_vclplug.h.in
config_vendor.h.in
config_version.h.in
config_writerperfect.h.in
README

These are configuration files for various features as detected by configure.

Include only those files you need (in order to reduce rebuilds when a setting changes).

Settings here are only C/C++ #define directives, so they apply only to C/C++ source,
not to Makefiles.



Adding a new setting:
=====================

- do AC_DEFINE(HAVE_FOO) in configure.ac when a setting should be set
- choose the proper config_host/config_XXX.h file to use
    - if it is a global setting (such as availability of a compiler feature),
        use config_host/config_global.h
    - otherwise check if there is a matching config_host/config_XXX.h file
    - if none matches, add a new one:
        - add config_host/config_XXX.h.in here, with just #ifndef include guard
        - add AC_CONFIG_HEADERS([config_host/config_XXX.h]) next to the others
            in configure.ac
- add #define HAVE_FOO 0 to the config_host/config_XXX.h , possibly with a comment
  (do not use #undef HAVE_FOO, unless the setting has more values than on/off)
- add #include <config_XXX.h> before any #if HAVE_FOO in a source file
- make sure you use #if HAVE_FOO for on/off settings, do not use #ifdef