• Stephan Bergmann's avatar
    Fix creation/removal of GPG socketdir · f0305ec0
    Stephan Bergmann yazdı
    <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 d7ecf4a4 "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 7a95ee8d
    "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/63181Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
    Tested-by: Jenkins
    Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
    f0305ec0
config_gpgme.h.in 905 Bytes