summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-04-20 17:36:51 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2019-04-21 08:17:14 +0200
commitcca6830288f8d4f541077ead5ee229e02304601d (patch)
tree8e63065c44df56ee556be88600bb451e8af5aa13 /external
parenta7c72b3725f38bba8463ebf10958574a4334837e (diff)
Properly initialize gpgme-w32spawn.exe path on Windows
On Windows, gpgme expects gpgme-w32spawn.exe to be in the same directory as the current process executable. This assumption might be wrong, e.g., for bundled python, which is in instdir/program/python-core-x.y.z/bin, while gpgme-w32spawn.exe is in instdir/program. In this case, if an operation in a python script requires initializing gpgme, it will be interrupted by a modal warning box telling that gpgme-w32spawn.exe was not found. If we can't find gpgme-w32spawn.exe in the current executable location, then try to find the spawn executable, and inform gpgme about actual location using gpgme_set_global_flag. Change-Id: Ie30a0d4a6666767e8c54f1bdc67b67570d6ea47a Reviewed-on: https://gerrit.libreoffice.org/71014 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'external')
-rw-r--r--external/gpgmepp/UnpackedTarball_gpgmepp.mk1
-rw-r--r--external/gpgmepp/add-gpgme_set_global_flag-wrapper.patch27
2 files changed, 28 insertions, 0 deletions
diff --git a/external/gpgmepp/UnpackedTarball_gpgmepp.mk b/external/gpgmepp/UnpackedTarball_gpgmepp.mk
index d7472a27a18d..4dfee72890b5 100644
--- a/external/gpgmepp/UnpackedTarball_gpgmepp.mk
+++ b/external/gpgmepp/UnpackedTarball_gpgmepp.mk
@@ -25,6 +25,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,gpgmepp, \
$(if $(filter MSC,$(COM)),external/gpgmepp/w32-fix-libtool.patch.1) \
$(if $(filter MSC,$(COM)),external/gpgmepp/w32-add-initializer.patch.1) \
external/gpgmepp/w32-build-fixes-2.patch \
+ external/gpgmepp/add-gpgme_set_global_flag-wrapper.patch \
$(if $(filter LINUX,$(OS)),external/gpgmepp/asan.patch) \
$(if $(filter LINUX,$(OS)),external/gpgmepp/rpath.patch) \
external/gpgmepp/gcc9.patch \
diff --git a/external/gpgmepp/add-gpgme_set_global_flag-wrapper.patch b/external/gpgmepp/add-gpgme_set_global_flag-wrapper.patch
new file mode 100644
index 000000000000..fade88a3e2b2
--- /dev/null
+++ b/external/gpgmepp/add-gpgme_set_global_flag-wrapper.patch
@@ -0,0 +1,27 @@
+diff -ur lang/cpp/src/context.cpp.old lang/cpp/src/context.cpp
+--- lang/cpp/src/context.cpp.old 2019-04-20 16:03:09.575605300 +0300
++++ lang/cpp/src/context.cpp 2019-04-20 16:06:43.078419700 +0300
+@@ -1656,6 +1656,11 @@
+ return Error(gpgme_engine_check_version(p));
+ }
+
++int GpgME::setGlobalFlag(const char *name, const char *value)
++{
++ return gpgme_set_global_flag(name, value);
++}
++
+ static const unsigned long supported_features = 0
+ | GpgME::ValidatingKeylistModeFeature
+ | GpgME::CancelOperationFeature
+diff -ur lang/cpp/src/global.h lang/cpp/src/global.h
+--- lang/cpp/src/global.h.old 2016-09-07 09:48:44.000000000 +0300
++++ lang/cpp/src/global.h 2019-04-20 16:06:41.918912600 +0300
+@@ -95,6 +95,8 @@
+ GPGMEPP_EXPORT Error checkEngine(Protocol proto);
+ GPGMEPP_EXPORT Error checkEngine(Engine engine);
+
++GPGMEPP_EXPORT int setGlobalFlag(const char *name, const char *value);
++
+ GPGMEPP_EXPORT GIOChannel *getGIOChannel(int fd);
+ GPGMEPP_EXPORT QIODevice *getQIODevice(int fd);
+