Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gpgme for openSUSE:Factory checked 
in at 2023-04-22 21:56:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gpgme (Old)
 and      /work/SRC/openSUSE:Factory/.gpgme.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gpgme"

Sat Apr 22 21:56:48 2023 rev:96 rq:1081075 version:1.20.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/gpgme/gpgme.changes      2023-04-16 
19:13:19.001425757 +0200
+++ /work/SRC/openSUSE:Factory/.gpgme.new.1533/gpgme.changes    2023-04-22 
21:57:29.236149922 +0200
@@ -1,0 +2,22 @@
+Fri Apr 21 06:19:17 UTC 2023 - Pedro Monreal <pmonr...@suse.com>
+
+- Update to 1.20.0:
+  * On Windows, the gettext functions provided by gpgrt are switched
+    into utf8 mode, so that all localized texts returned by GpgME or
+    gpgrt, e.g. the texts for error codes are now UTF-8 encoded. [T5960]
+  * Key::canSign now returns false for OpenPGP keys without signing
+    (sub)key. [T6456]
+  * The new macOS Homebrew location is now by default supported. [T6440]
+  * Fix regression in 1.19.0.
+  * Fix invocation of gpgtar on Windows.
+  * Interface changes relative to the 1.19.0 release:
+    - gpgme_subkey_t              EXTENDED: New field 'can_renc'.
+    - gpgme_subkey_t              EXTENDED: New field 'can_timestamp'.
+    - gpgme_subkey_t              EXTENDED: New field 'is_group_owned'.
+    - cpp: Subkey::canRenc        NEW.
+    - cpp: Subkey::canTimestamp   NEW.
+    - cpp: Subkey::isGroupOwned   NEW.
+    - cpp: Key::canReallySign     DEPRECATED.
+  * Release-info: https://dev.gnupg.org/T6463
+
+-------------------------------------------------------------------

Old:
----
  gpgme-1.19.0.tar.bz2
  gpgme-1.19.0.tar.bz2.sig

New:
----
  gpgme-1.20.0.tar.bz2
  gpgme-1.20.0.tar.bz2.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gpgme.spec ++++++
--- /var/tmp/diff_new_pack.rQZO5c/_old  2023-04-22 21:57:29.784153198 +0200
+++ /var/tmp/diff_new_pack.rQZO5c/_new  2023-04-22 21:57:29.792153246 +0200
@@ -33,7 +33,7 @@
 %bcond_without qt6
 %endif
 Name:           gpgme%{psuffix}
-Version:        1.19.0
+Version:        1.20.0
 Release:        0
 Summary:        Programmatic library interface to GnuPG
 License:        GPL-3.0-or-later AND LGPL-2.1-or-later

++++++ gpgme-1.19.0.tar.bz2 -> gpgme-1.20.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/ChangeLog new/gpgme-1.20.0/ChangeLog
--- old/gpgme-1.19.0/ChangeLog  2023-03-17 10:42:31.000000000 +0100
+++ new/gpgme-1.20.0/ChangeLog  2023-04-20 13:53:28.000000000 +0200
@@ -1,3 +1,88 @@
+2023-04-20  Werner Koch  <w...@gnupg.org>
+
+       Release 1.20.0.
+       + commit 451ed47434c5ffd2916adae25e5a128606b5ef98
+
+
+       core: Support the new macOS Homebrew location.
+       + commit 7351ef32ce7c04d20ee32fc9b645a1931b3b0aba
+       * src/posix-util.c (find_executable): Extend the path.
+
+2023-04-19  Ingo Klöcker  <d...@ingo-kloecker.de>
+
+       build,qt: Simplify check for moc.
+       + commit a14155d2c1b2ddc167dbf278faf1d6b469575492
+       m4/qt6.m4: Remove alternative checks for moc that were taken over from
+       Qt 5 and that are obsolete for Qt 6.
+
+       Update NEWS.
+       + commit e80bf34bf86f6f183145c31d598dda41c0496a4d
+       * NEWS: Add news for recent changes
+
+2023-04-18  Ingo Klöcker  <d...@ingo-kloecker.de>
+
+       cpp: Fix Key::canSign()
+       + commit 5bd84cfd3f092703bb4b9b993be7d89ca13b36b0
+       * lang/cpp/src/key.h (canReallySign): Deprecate.
+       * lang/cpp/src/key.cpp (canSign): Remove workaround. Use implementation
+       of canReallySign.
+       (canReallySign): Use canSign().
+       (operator<<): Use canSign().
+
+2023-04-17  Werner Koch  <w...@gnupg.org>
+
+       core: Avoid printf format warnings due to gpgme_ssize_t.
+       + commit 7d1159c1e99bb1bae0ab698c85105dcdcb95b7ea
+       * src/debug.h (_trace_sysres_ssize_t): Cast arg.
+
+       core,w32: Fix invocation of gpgtar.
+       + commit 0c29119e061cbdcb7342380938a25af91290f1a0
+       * src/dirinfo.c (EXEEXT_S): New.
+       (get_gpgconf_item): Append ".exe" to gpg-wks-client and gpgtar.
+
+       * src/gpgme-w32spawn.c (mystderr): Add code to ease debugging.
+
+2023-04-06  NIIBE Yutaka  <gni...@fsij.org>
+
+       build: Update gpg-error.m4.
+       + commit 806a5d18b988449fbaa3c2e6380acf3ae4580f4a
+       * m4/gpg-error.m4: Update from libgpg-error master.
+
+2023-04-04  Ingo Klöcker  <d...@ingo-kloecker.de>
+
+       w32: Always use UTF-8 for localized texts.
+       + commit d256ba7cc57d9bfcfa05fb05cf66dc992efbb695
+       * configure.ac: Define GPG_ERR_ENABLE_GETTEXT_MACROS.
+       * src/version.c (do_subsystem_inits) [W32]: Switch gettext to UTF-8.
+
+2023-03-27  Werner Koch  <w...@gnupg.org>
+
+       core: Minor code cleanup.
+       + commit 34cc7daba12a2a6baa3cfa337762656c210686fa
+       * src/engine-gpg.c (build_argv): Remove superfluous tes.
+
+2023-03-27  Ingo Klöcker  <d...@ingo-kloecker.de>
+
+       core: Initialize error variable.
+       + commit b608c084b9220d8ed288eb916e88a236abac0707
+       * src/engine-gpg.c (build_argv): Initialize err.
+
+2023-03-21  Werner Koch  <w...@gnupg.org>
+
+       core,cpp: Add new key flags to gpgme_subkey_t.
+       + commit 6d21256c9220df05bf92a695a787dde13fe44ca7
+       * src/gpgme.h.in (struct _gpgme_subkey): Add bit flags can_renc,
+       can_timestamp, adn is_group_owned. Reduce size of _unused.
+       * src/keylist.c (set_subkey_capability): Set them.
+       * tests/run-keylist.c (main): Print them.
+
+       * lang/cpp/src/key.h (Subkey::canRenc): New.
+       (Subkey::canTimestamp): New.
+       (Subkey::isGroupOwned): New.
+       * lang/cpp/src/key.cpp: Implement new methods.
+       (Subkey::isQualified): Print them.
+       (std::ostream &operator<<): Print them.
+
 2023-03-17  Werner Koch  <w...@gnupg.org>
 
        Release 1.19.0.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/NEWS new/gpgme-1.20.0/NEWS
--- old/gpgme-1.19.0/NEWS       2023-03-17 10:33:55.000000000 +0100
+++ new/gpgme-1.20.0/NEWS       2023-04-20 13:47:16.000000000 +0200
@@ -1,3 +1,36 @@
+Noteworthy changes in version 1.20.0 (2023-04-20)
+-------------------------------------------------
+
+ * On Windows, the gettext functions provided by gpgrt are switched
+   into utf8 mode, so that all localized texts returned by GpgME or
+   gpgrt, e.g. the texts for error codes are now UTF-8 encoded.
+   [T5960]
+
+ * Key::canSign now returns false for OpenPGP keys without signing
+   (sub)key.  [T6456]
+
+ * The new macOS Homebrew location is now by default supported.
+   [T6440]
+
+ * Fix regression in 1.19.0.  [rMb608c084b9]
+
+ * Fix invocation of gpgtar on Windows.  [rM0c29119e06]
+
+ * Interface changes relative to the 1.19.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_subkey_t              EXTENDED: New field 'can_renc'.
+ gpgme_subkey_t              EXTENDED: New field 'can_timestamp'.
+ gpgme_subkey_t              EXTENDED: New field 'is_group_owned'.
+ cpp: Subkey::canRenc                       NEW.
+ cpp: Subkey::canTimestamp                  NEW.
+ cpp: Subkey::isGroupOwned                  NEW.
+ cpp: Key::canReallySign                    DEPRECATED.
+
+ [c=C40/A29/R0 cpp=C23/A17/R0 qt=C17/A2/R1]
+
+ Release-info: https://dev.gnupg.org/T6463
+
+
 Noteworthy changes in version 1.19.0 (2023-03-17)
 -------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/VERSION new/gpgme-1.20.0/VERSION
--- old/gpgme-1.19.0/VERSION    2023-03-17 10:42:05.000000000 +0100
+++ new/gpgme-1.20.0/VERSION    2023-04-20 13:53:03.000000000 +0200
@@ -1 +1 @@
-1.19.0
+1.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/conf/config.h.in 
new/gpgme-1.20.0/conf/config.h.in
--- old/gpgme-1.19.0/conf/config.h.in   2023-03-17 10:42:24.000000000 +0100
+++ new/gpgme-1.20.0/conf/config.h.in   2023-04-20 13:53:22.000000000 +0200
@@ -295,6 +295,9 @@
 # define GPGME_GCC_A_PURE
 #endif
 
+/* Under Windows we use the gettext code from gpgrt.  */
+#define GPG_ERR_ENABLE_GETTEXT_MACROS
+
 /* Under WindowsCE we need gpg-error's strerror macro.  */
 #define GPG_ERR_ENABLE_ERRNO_MACROS 1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/configure new/gpgme-1.20.0/configure
--- old/gpgme-1.19.0/configure  2023-03-17 10:42:06.000000000 +0100
+++ new/gpgme-1.20.0/configure  2023-04-20 13:53:04.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gpgme 1.19.0.
+# Generated by GNU Autoconf 2.69 for gpgme 1.20.0.
 #
 # Report bugs to <https://bugs.gnupg.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='gpgme'
 PACKAGE_TARNAME='gpgme'
-PACKAGE_VERSION='1.19.0'
-PACKAGE_STRING='gpgme 1.19.0'
+PACKAGE_VERSION='1.20.0'
+PACKAGE_STRING='gpgme 1.20.0'
 PACKAGE_BUGREPORT='https://bugs.gnupg.org'
 PACKAGE_URL=''
 
@@ -1488,7 +1488,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gpgme 1.19.0 to adapt to many kinds of systems.
+\`configure' configures gpgme 1.20.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1559,7 +1559,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gpgme 1.19.0:";;
+     short | recursive ) echo "Configuration of gpgme 1.20.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1724,7 +1724,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gpgme configure 1.19.0
+gpgme configure 1.20.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2554,7 +2554,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gpgme $as_me 1.19.0, which was
+It was created by gpgme $as_me 1.20.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2919,20 +2919,20 @@
 #   (Interfaces added:                 AGE++)
 #   (Interfaces removed:               AGE=0)
 #
-LIBGPGME_LT_CURRENT=39
-LIBGPGME_LT_AGE=28
+LIBGPGME_LT_CURRENT=40
+LIBGPGME_LT_AGE=29
 LIBGPGME_LT_REVISION=0
 
 # If there is an ABI break in gpgmepp or qgpgme also bump the
 # version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
 
-LIBGPGMEPP_LT_CURRENT=22
-LIBGPGMEPP_LT_AGE=16
+LIBGPGMEPP_LT_CURRENT=23
+LIBGPGMEPP_LT_AGE=17
 LIBGPGMEPP_LT_REVISION=0
 
 LIBQGPGME_LT_CURRENT=17
 LIBQGPGME_LT_AGE=2
-LIBQGPGME_LT_REVISION=0
+LIBQGPGME_LT_REVISION=1
 ################################################
 
 
@@ -2957,7 +2957,7 @@
 
 
 VERSION_MAJOR=1
-VERSION_MINOR=19
+VERSION_MINOR=20
 VERSION_MICRO=0
 
 ac_aux_dir=
@@ -3474,7 +3474,7 @@
 
 # Define the identity of the package.
  PACKAGE='gpgme'
- VERSION='1.19.0'
+ VERSION='1.20.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6534,7 +6534,7 @@
 
 
 
-VERSION_NUMBER=0x011300
+VERSION_NUMBER=0x011400
 
 
 # We need to compile and run a program on the build machine.  A
@@ -18828,216 +18828,11 @@
   MOC="$ac_cv_path_MOC"
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking moc version" >&5
-$as_echo_n "checking moc version... " >&6; }
-    mocversion=`$MOC -v 2>&1`
-    mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-    if test x"$mocversiongrep" != x"$mocversion"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      # moc was not the qt6 one, try with moc-qt6
-      if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}moc-qt6", so it can be a 
program name with args.
-set dummy ${ac_tool_prefix}moc-qt6; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MOC2+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MOC2"; then
-  ac_cv_prog_MOC2="$MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt6"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MOC2=$ac_cv_prog_MOC2
-if test -n "$MOC2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5
-$as_echo "$MOC2" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MOC2"; then
-  ac_ct_MOC2=$MOC2
-  # Extract the first word of "moc-qt6", so it can be a program name with args.
-set dummy moc-qt6; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MOC2+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MOC2"; then
-  ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MOC2="moc-qt6"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2
-if test -n "$ac_ct_MOC2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5
-$as_echo "$ac_ct_MOC2" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MOC2" = x; then
-    MOC2=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    MOC2=$ac_ct_MOC2
-  fi
-else
-  MOC2="$ac_cv_prog_MOC2"
-fi
-
-      mocversion=`$MOC2 -v 2>&1`
-      mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"`
-      if test x"$mocversiongrep" != x"$mocversion"; then
-        if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a 
program name with args.
-set dummy ${ac_tool_prefix}qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_QTCHOOSER+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$QTCHOOSER"; then
-  ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-QTCHOOSER=$ac_cv_prog_QTCHOOSER
-if test -n "$QTCHOOSER"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
-$as_echo "$QTCHOOSER" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_QTCHOOSER"; then
-  ac_ct_QTCHOOSER=$QTCHOOSER
-  # Extract the first word of "qtchooser", so it can be a program name with 
args.
-set dummy qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_QTCHOOSER+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_QTCHOOSER"; then
-  ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the 
test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_QTCHOOSER="qtchooser"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
-if test -n "$ac_ct_QTCHOOSER"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
-$as_echo "$ac_ct_QTCHOOSER" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_QTCHOOSER" = x; then
-    QTCHOOSER=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    QTCHOOSER=$ac_ct_QTCHOOSER
-  fi
-else
-  QTCHOOSER="$ac_cv_prog_QTCHOOSER"
-fi
-
-        qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut 
-d '=' -f 2 | cut -d \" -f 2`
-        mocversion=`$qt6tooldir/moc -v 2>&1`
-        mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-        if test x"$mocversiongrep" != x"$mocversion"; then
-          # no valid moc found
-          have_qt6_libs="no";
-        else
-          MOC=$qt6tooldir/moc
-        fi
-      else
-        MOC=$MOC2
-      fi
+    if test -z "$MOC"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 
binding will not be built." >&5
+$as_echo "$as_me: WARNING: moc not found - Qt 6 binding will not be built." 
>&2;}
+      have_qt6_libs="no";
     fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5
-$as_echo "$mocversion" >&6; }
   fi
   if test "$have_qt6_libs" = "yes"; then
                         OLDCPPFLAGS=$CPPFLAGS
@@ -19897,216 +19692,11 @@
   MOC="$ac_cv_path_MOC"
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking moc version" >&5
-$as_echo_n "checking moc version... " >&6; }
-    mocversion=`$MOC -v 2>&1`
-    mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-    if test x"$mocversiongrep" != x"$mocversion"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      # moc was not the qt6 one, try with moc-qt6
-      if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}moc-qt6", so it can be a 
program name with args.
-set dummy ${ac_tool_prefix}moc-qt6; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MOC2+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MOC2"; then
-  ac_cv_prog_MOC2="$MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt6"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MOC2=$ac_cv_prog_MOC2
-if test -n "$MOC2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5
-$as_echo "$MOC2" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MOC2"; then
-  ac_ct_MOC2=$MOC2
-  # Extract the first word of "moc-qt6", so it can be a program name with args.
-set dummy moc-qt6; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MOC2+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MOC2"; then
-  ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MOC2="moc-qt6"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2
-if test -n "$ac_ct_MOC2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5
-$as_echo "$ac_ct_MOC2" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MOC2" = x; then
-    MOC2=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    MOC2=$ac_ct_MOC2
-  fi
-else
-  MOC2="$ac_cv_prog_MOC2"
-fi
-
-      mocversion=`$MOC2 -v 2>&1`
-      mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"`
-      if test x"$mocversiongrep" != x"$mocversion"; then
-        if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a 
program name with args.
-set dummy ${ac_tool_prefix}qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_QTCHOOSER+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$QTCHOOSER"; then
-  ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-QTCHOOSER=$ac_cv_prog_QTCHOOSER
-if test -n "$QTCHOOSER"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
-$as_echo "$QTCHOOSER" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_QTCHOOSER"; then
-  ac_ct_QTCHOOSER=$QTCHOOSER
-  # Extract the first word of "qtchooser", so it can be a program name with 
args.
-set dummy qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_QTCHOOSER+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_QTCHOOSER"; then
-  ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the 
test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_QTCHOOSER="qtchooser"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
-if test -n "$ac_ct_QTCHOOSER"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
-$as_echo "$ac_ct_QTCHOOSER" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_QTCHOOSER" = x; then
-    QTCHOOSER=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
-ac_tool_warned=yes ;;
-esac
-    QTCHOOSER=$ac_ct_QTCHOOSER
-  fi
-else
-  QTCHOOSER="$ac_cv_prog_QTCHOOSER"
-fi
-
-        qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut 
-d '=' -f 2 | cut -d \" -f 2`
-        mocversion=`$qt6tooldir/moc -v 2>&1`
-        mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-        if test x"$mocversiongrep" != x"$mocversion"; then
-          # no valid moc found
-          have_qt6_libs="no";
-        else
-          MOC=$qt6tooldir/moc
-        fi
-      else
-        MOC=$MOC2
-      fi
+    if test -z "$MOC"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 
binding will not be built." >&5
+$as_echo "$as_me: WARNING: moc not found - Qt 6 binding will not be built." 
>&2;}
+      have_qt6_libs="no";
     fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5
-$as_echo "$mocversion" >&6; }
   fi
   if test "$have_qt6_libs" = "yes"; then
                         OLDCPPFLAGS=$CPPFLAGS
@@ -30132,7 +29722,7 @@
 #
 # Provide information about the build.
 #
-BUILD_REVISION="96a30fdf"
+BUILD_REVISION="451ed474"
 
 
 cat >>confdefs.h <<_ACEOF
@@ -30141,7 +29731,7 @@
 
 
 BUILD_VERSION=`echo "$PACKAGE_VERSION" | sed 's/\([0-9.]*\).*/\1./'`
-BUILD_VERSION="${BUILD_VERSION}38563"
+BUILD_VERSION="${BUILD_VERSION}17694"
 BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
 
 
@@ -31347,12 +30937,9 @@
         fi
         if test -n "$gpgrt_libdir"; then break; fi
       done
-      if test -z "$libdir_candidates"; then
-        # No valid pkgconfig dir in any of the system directories, fallback
-        gpgrt_libdir=${possible_libdir1}
-      fi
-    else
-      # When we cannot determine system libdir-format, use this:
+    fi
+    if test -z "$gpgrt_libdir"; then
+      # No valid pkgconfig dir in any of the system directories, fallback
       gpgrt_libdir=${possible_libdir1}
     fi
   else
@@ -31367,6 +30954,7 @@
 $as_echo "$as_me: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" 
>&6;}
       gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
     else
+      gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
       unset GPGRT_CONFIG
     fi
   elif test "$GPG_ERROR_CONFIG" != "no"; then
@@ -32609,7 +32197,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gpgme $as_me 1.19.0, which was
+This file was extended by gpgme $as_me 1.20.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -32675,7 +32263,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gpgme config.status 1.19.0
+gpgme config.status 1.20.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -35010,7 +34598,7 @@
 echo "
         GPGME v${VERSION} has been configured as follows:
 
-        Revision:          96a30fdf  (38563)
+        Revision:          451ed474  (17694)
         Platform:          $host
 
         UI Server:         $uiserver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/configure.ac 
new/gpgme-1.20.0/configure.ac
--- old/gpgme-1.19.0/configure.ac       2023-03-17 10:34:18.000000000 +0100
+++ new/gpgme-1.20.0/configure.ac       2023-04-20 13:46:47.000000000 +0200
@@ -31,7 +31,7 @@
 # for the LT versions.
 m4_define([mym4_package],[gpgme])
 m4_define([mym4_major], [1])
-m4_define([mym4_minor], [19])
+m4_define([mym4_minor], [20])
 m4_define([mym4_micro], [0])
 
 # Below is m4 magic to extract and compute the git revision number,
@@ -53,20 +53,20 @@
 #   (Interfaces added:                 AGE++)
 #   (Interfaces removed:               AGE=0)
 #
-LIBGPGME_LT_CURRENT=39
-LIBGPGME_LT_AGE=28
+LIBGPGME_LT_CURRENT=40
+LIBGPGME_LT_AGE=29
 LIBGPGME_LT_REVISION=0
 
 # If there is an ABI break in gpgmepp or qgpgme also bump the
 # version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
 
-LIBGPGMEPP_LT_CURRENT=22
-LIBGPGMEPP_LT_AGE=16
+LIBGPGMEPP_LT_CURRENT=23
+LIBGPGMEPP_LT_AGE=17
 LIBGPGMEPP_LT_REVISION=0
 
 LIBQGPGME_LT_CURRENT=17
 LIBQGPGME_LT_AGE=2
-LIBQGPGME_LT_REVISION=0
+LIBQGPGME_LT_REVISION=1
 ################################################
 
 AC_SUBST(LIBGPGME_LT_CURRENT)
@@ -922,6 +922,9 @@
 # define GPGME_GCC_A_PURE
 #endif
 
+/* Under Windows we use the gettext code from gpgrt.  */
+#define GPG_ERR_ENABLE_GETTEXT_MACROS
+
 /* Under WindowsCE we need gpg-error's strerror macro.  */
 #define GPG_ERR_ENABLE_ERRNO_MACROS 1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/gpgme.spec new/gpgme-1.20.0/gpgme.spec
--- old/gpgme-1.19.0/gpgme.spec 2023-03-17 10:42:31.000000000 +0100
+++ new/gpgme-1.20.0/gpgme.spec 2023-04-20 13:53:28.000000000 +0200
@@ -1,7 +1,7 @@
 # This is a template.  The dist target uses it to create the real file.
 Summary: GPGME - GnuPG Made Easy
 Name: gpgme
-Version: 1.19.0
+Version: 1.20.0
 Release: 1
 URL: https://gnupg.org/gpgme.html
 Source: https://www.gnupg.org/ftp/gcrypt/gpgme/%{name}-%{version}.tar.gz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/lang/cl/gpgme.asd 
new/gpgme-1.20.0/lang/cl/gpgme.asd
--- old/gpgme-1.19.0/lang/cl/gpgme.asd  2023-03-17 10:42:21.000000000 +0100
+++ new/gpgme-1.20.0/lang/cl/gpgme.asd  2023-04-20 13:53:19.000000000 +0200
@@ -27,7 +27,7 @@
 (defsystem gpgme
   :description "GnuPG Made Easy."
   :author "g10 Code GmbH"
-  :version "1.19.0"
+  :version "1.20.0"
   :licence "GPL"
   :defsystem-depends-on ("cffi-grovel")
   :depends-on ("cffi" "gpg-error" "trivial-garbage")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/lang/cpp/src/key.cpp 
new/gpgme-1.20.0/lang/cpp/src/key.cpp
--- old/gpgme-1.19.0/lang/cpp/src/key.cpp       2023-02-01 17:50:48.000000000 
+0100
+++ new/gpgme-1.20.0/lang/cpp/src/key.cpp       2023-04-19 09:03:06.000000000 
+0200
@@ -208,17 +208,12 @@
 
 bool Key::canSign() const
 {
-#ifndef GPGME_CAN_SIGN_ON_SECRET_OPENPGP_KEYLISTING_NOT_BROKEN
-    if (key && key->protocol == GPGME_PROTOCOL_OpenPGP) {
-        return true;
-    }
-#endif
-    return canReallySign();
+    return key && key->can_sign;
 }
 
 bool Key::canReallySign() const
 {
-    return key && key->can_sign;
+    return canSign();
 }
 
 bool Key::canCertify() const
@@ -515,6 +510,21 @@
     return subkey && subkey->can_authenticate;
 }
 
+bool Subkey::canRenc() const
+{
+    return subkey && subkey->can_renc;
+}
+
+bool Subkey::canTimestamp() const
+{
+    return subkey && subkey->can_timestamp;
+}
+
+bool Subkey::isGroupOwned() const
+{
+    return subkey && subkey->is_group_owned;
+}
+
 bool Subkey::isQualified() const
 {
     return subkey && subkey->is_qualified;
@@ -1261,7 +1271,10 @@
            << "\n canEncrypt:    " << subkey.canEncrypt()
            << "\n canCertify:    " << subkey.canCertify()
            << "\n canAuth:       " << subkey.canAuthenticate()
+           << "\n canRenc:       " << subkey.canRenc()
+           << "\n canTimestanp:  " << subkey.canTimestamp()
            << "\n isSecret:      " << subkey.isSecret()
+           << "\n isGroupOwned:  " << subkey.isGroupOwned()
            << "\n isQualified:   " << subkey.isQualified()
            << "\n isDeVs:        " << subkey.isDeVs()
            << "\n isCardKey:     " << subkey.isCardKey()
@@ -1279,7 +1292,7 @@
            << "\n issuer:     " << protect(key.issuerName())
            << "\n fingerprint:" << protect(key.primaryFingerprint())
            << "\n listmode:   " << key.keyListMode()
-           << "\n canSign:    " << key.canReallySign()
+           << "\n canSign:    " << key.canSign()
            << "\n canEncrypt: " << key.canEncrypt()
            << "\n canCertify: " << key.canCertify()
            << "\n canAuth:    " << key.canAuthenticate()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/lang/cpp/src/key.h 
new/gpgme-1.20.0/lang/cpp/src/key.h
--- old/gpgme-1.19.0/lang/cpp/src/key.h 2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/lang/cpp/src/key.h 2023-04-19 09:03:06.000000000 +0200
@@ -110,16 +110,8 @@
     bool isBad() const;
 
     bool canEncrypt() const;
-    /*!
-      This function contains a workaround for old gpgme's: all secret
-      OpenPGP keys canSign() == true, which canReallySign() doesn't
-      have. I don't have time to find what breaks when I remove this
-      workaround, but since Kleopatra merges secret into public keys,
-      the workaround is not necessary there (and actively harms), I've
-      added a new function instead.
-     */
     bool canSign() const;
-    bool canReallySign() const;
+    GPGMEPP_DEPRECATED bool canReallySign() const;
     bool canCertify() const;
     bool canAuthenticate() const;
     bool isQualified() const;
@@ -270,6 +262,9 @@
     bool canSign() const;
     bool canCertify() const;
     bool canAuthenticate() const;
+    bool canRenc() const;
+    bool canTimestamp() const;
+    bool isGroupOwned() const;
     bool isQualified() const;
     bool isDeVs() const;
     bool isCardKey() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/m4/gpg-error.m4 
new/gpgme-1.20.0/m4/gpg-error.m4
--- old/gpgme-1.19.0/m4/gpg-error.m4    2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/m4/gpg-error.m4    2023-04-17 14:03:06.000000000 +0200
@@ -10,7 +10,7 @@
 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
-# Last-changed: 2022-11-15
+# Last-changed: 2023-04-01
 
 dnl
 dnl Find gpg-error-config, for backward compatibility
@@ -115,12 +115,9 @@
         fi
         if test -n "$gpgrt_libdir"; then break; fi
       done
-      if test -z "$libdir_candidates"; then
-        # No valid pkgconfig dir in any of the system directories, fallback
-        gpgrt_libdir=${possible_libdir1}
-      fi
-    else
-      # When we cannot determine system libdir-format, use this:
+    fi
+    if test -z "$gpgrt_libdir"; then
+      # No valid pkgconfig dir in any of the system directories, fallback
       gpgrt_libdir=${possible_libdir1}
     fi
   else
@@ -134,6 +131,7 @@
       AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
       gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
     else
+      gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
       unset GPGRT_CONFIG
     fi
   elif test "$GPG_ERROR_CONFIG" != "no"; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/m4/qt6.m4 new/gpgme-1.20.0/m4/qt6.m4
--- old/gpgme-1.19.0/m4/qt6.m4  2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/m4/qt6.m4  2023-04-20 13:35:50.000000000 +0200
@@ -27,31 +27,10 @@
     # Qt6 moved moc to libexec
     qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0')
     AC_PATH_TOOL(MOC, moc, [], [$qt6libexecdir])
-    AC_MSG_CHECKING([moc version])
-    mocversion=`$MOC -v 2>&1`
-    mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-    if test x"$mocversiongrep" != x"$mocversion"; then
-      AC_MSG_RESULT([no])
-      # moc was not the qt6 one, try with moc-qt6
-      AC_CHECK_TOOL(MOC2, moc-qt6)
-      mocversion=`$MOC2 -v 2>&1`
-      mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"`
-      if test x"$mocversiongrep" != x"$mocversion"; then
-        AC_CHECK_TOOL(QTCHOOSER, qtchooser)
-        qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut 
-d '=' -f 2 | cut -d \" -f 2`
-        mocversion=`$qt6tooldir/moc -v 2>&1`
-        mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
-        if test x"$mocversiongrep" != x"$mocversion"; then
-          # no valid moc found
-          have_qt6_libs="no";
-        else
-          MOC=$qt6tooldir/moc
-        fi
-      else
-        MOC=$MOC2
-      fi
+    if test -z "$MOC"; then
+      AC_MSG_WARN([moc not found - Qt 6 binding will not be built.])
+      have_qt6_libs="no";
     fi
-    AC_MSG_RESULT([$mocversion])
   fi
   if test "$have_qt6_libs" = "yes"; then
     dnl Check that a binary can actually be build with this qt.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/debug.h new/gpgme-1.20.0/src/debug.h
--- old/gpgme-1.19.0/src/debug.h        2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/src/debug.h        2023-04-17 15:09:48.000000000 +0200
@@ -180,7 +180,7 @@
 _trace_sysres_ssize_t (gpgme_ssize_t res, int lvl, const char *func, int line)
 {
   if (res >= 0)
-    _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", res);
+    _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", (ssize_t)res);
   else
     _gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL,
                   "%s:%d: error: %s (%d)\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/dirinfo.c 
new/gpgme-1.20.0/src/dirinfo.c
--- old/gpgme-1.19.0/src/dirinfo.c      2023-02-10 11:12:52.000000000 +0100
+++ new/gpgme-1.20.0/src/dirinfo.c      2023-04-17 15:09:48.000000000 +0200
@@ -32,6 +32,12 @@
 #include "sema.h"
 #include "sys-util.h"
 
+#ifdef HAVE_DOSISH_SYSTEM
+# define EXEEXT_S ".exe"
+#else
+# define EXEEXT_S ""
+#endif
+
 DEFINE_STATIC_LOCK (dirinfo_lock);
 
 /* Constants used internally to select the data.  */
@@ -404,16 +410,18 @@
     case WANT_GPG_WKS_CLIENT_NAME:
       if (!dirinfo.gpg_wks_client_name && dirinfo.libexecdir)
         dirinfo.gpg_wks_client_name = _gpgme_strconcat (dirinfo.libexecdir,
-                                                        "/",
+                                                        DIRSEP_S,
                                                         "gpg-wks-client",
+                                                        EXEEXT_S,
                                                         NULL);
       result = dirinfo.gpg_wks_client_name;
       break;
     case WANT_GPGTAR_NAME:
       if (!dirinfo.gpgtar_name && dirinfo.bindir)
         dirinfo.gpgtar_name = _gpgme_strconcat (dirinfo.bindir,
-                                                "/",
+                                                DIRSEP_S,
                                                 "gpgtar",
+                                                EXEEXT_S,
                                                 NULL);
       result = dirinfo.gpgtar_name;
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/engine-gpg.c 
new/gpgme-1.20.0/src/engine-gpg.c
--- old/gpgme-1.19.0/src/engine-gpg.c   2023-02-09 13:56:35.000000000 +0100
+++ new/gpgme-1.20.0/src/engine-gpg.c   2023-04-17 09:32:09.000000000 +0200
@@ -874,7 +874,7 @@
 static gpgme_error_t
 build_argv (engine_gpg_t gpg, const char *pgmname)
 {
-  gpgme_error_t err;
+  gpgme_error_t err = 0;
   struct arg_and_data_s *a;
   struct fd_data_map_s *fd_data_map = NULL;
   size_t datac=0, argc=0, allocated_argc=0;
@@ -958,8 +958,7 @@
   if (!fd_data_map)
     {
       err = gpg_error_from_syserror ();
-      if (err)
-        goto leave;
+      goto leave;
     }
 
   argc = datac = 0;
@@ -967,8 +966,7 @@
   if (!argv[argc])
     {
       err = gpg_error_from_syserror ();
-      if (err)
-        goto leave;
+      goto leave;
     }
   argc++;
   if (need_special)
@@ -977,8 +975,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -988,8 +985,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1004,8 +1000,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1014,8 +1009,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1028,8 +1022,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1037,8 +1030,7 @@
       if (!argv[argc])
         {
           err = gpg_error_from_syserror ();
-          if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1051,8 +1043,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1060,8 +1051,7 @@
       if (!argv[argc])
         {
           err = gpg_error_from_syserror ();
-          if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1074,8 +1064,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1083,8 +1072,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1097,8 +1085,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1106,8 +1093,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1120,8 +1106,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1129,8 +1114,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1143,8 +1127,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1152,8 +1135,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1177,8 +1159,7 @@
               if (!argv[argc])
                 {
                   err = gpg_error_from_syserror ();
-                  if (err)
-                    goto leave;
+                  goto leave;
                 }
               argc++;
             }
@@ -1186,8 +1167,7 @@
           if (!argv[argc])
             {
               err = gpg_error_from_syserror ();
-              if (err)
-                goto leave;
+              goto leave;
             }
           argc++;
         }
@@ -1199,8 +1179,7 @@
       if (!argv[argc])
        {
           err = gpg_error_from_syserror ();
-         if (err)
-            goto leave;
+          goto leave;
         }
       argc++;
     }
@@ -1222,8 +1201,7 @@
                == -1)
              {
                err = gpg_error_from_syserror ();
-               if (err)
-                  goto leave;
+                goto leave;
              }
            if (_gpgme_io_set_close_notify (fds[0],
                                            close_notify_handler, gpg)
@@ -1272,8 +1250,7 @@
              if (!argv[argc])
                {
                   err = gpg_error_from_syserror ();
-                 if (err)
-                    goto leave;
+                  goto leave;
                 }
 
              ptr = argv[argc];
@@ -1298,8 +1275,7 @@
               if (!argv[argc])
                 {
                   err = gpg_error_from_syserror ();
-                  if (err)
-                    goto leave;
+                  goto leave;
                 }
               argc++;
             }
@@ -1307,8 +1283,7 @@
          if (!argv[argc])
            {
               err = gpg_error_from_syserror ();
-             if (err)
-                goto leave;
+              goto leave;
             }
             argc++;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/gpgme-w32spawn.c 
new/gpgme-1.20.0/src/gpgme-w32spawn.c
--- old/gpgme-1.19.0/src/gpgme-w32spawn.c       2019-06-07 10:21:18.000000000 
+0200
+++ new/gpgme-1.20.0/src/gpgme-w32spawn.c       2023-04-17 15:09:48.000000000 
+0200
@@ -40,10 +40,18 @@
 
 #include "priv-io.h"
 
+/* #define DEBUG_TO_FILE 1 */
+
 
 /* Name of this program.  */
 #define PGM "gpgme-w32spawn"
 
+#ifdef DEBUG_TO_FILE
+static FILE *mystderr;
+#else
+#define mystderr stderr
+#endif
+
 
 
 static char *
@@ -126,7 +134,7 @@
   i = 0;
   while (argv[i])
     {
-      fprintf (stderr, PGM": argv[%2i] = %s\n", i, argv[i]);
+      fprintf (mystderr, PGM": argv[%2i] = %s\n", i, argv[i]);
       i++;
     }
 
@@ -146,8 +154,6 @@
   si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE);
   si.hStdError = GetStdHandle (STD_ERROR_HANDLE);
 
-  fprintf (stderr, PGM": spawning: %s\n", arg_string);
-
   for (i = 0; fd_list[i].fd != -1; i++)
     {
       /* The handle already is inheritable.  */
@@ -155,19 +161,19 @@
        {
          si.hStdInput = (HANDLE) fd_list[i].peer_name;
          duped_stdin = 1;
-         fprintf (stderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name);
+         fprintf (mystderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name);
         }
       else if (fd_list[i].dup_to == 1)
        {
          si.hStdOutput = (HANDLE) fd_list[i].peer_name;
          duped_stdout = 1;
-         fprintf (stderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name);
+         fprintf (mystderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name);
         }
       else if (fd_list[i].dup_to == 2)
        {
          si.hStdError = (HANDLE) fd_list[i].peer_name;
          duped_stderr = 1;
-         fprintf (stderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name);
+         fprintf (mystderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name);
         }
     }
 
@@ -216,6 +222,7 @@
                       &pi))          /* returns process information */
     {
       free (arg_string);
+      fprintf (mystderr, PGM": spawn error: %d\n", (int)GetLastError ());
       /* FIXME: Should translate the error code.  */
       errno = EIO;
       return -1;
@@ -252,7 +259,7 @@
       if (func)
         {
           int rc = func (pi.dwProcessId);
-          fprintf (stderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n",
+          fprintf (mystderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n",
                    (int)pi.dwProcessId, rc);
         }
     }
@@ -418,7 +425,7 @@
 
       if (aidx >= n_args)
         {
-         fprintf (stderr, PGM": translation file does not match args\n");
+         fprintf (mystderr, PGM": translation file does not match args\n");
           return NULL;
         }
 
@@ -455,6 +462,10 @@
       goto leave;
     }
 
+#ifdef DEBUG_TO_FILE
+  mystderr = fopen ("h:/gpgme-w32spawn.log", "w");
+#endif
+
   argv_spawn = translate_handles (argv[1], &argv[2], fd_list, &flags);
   if (!argv_spawn)
     {
@@ -468,7 +479,7 @@
   rc = my_spawn (argv_spawn, fd_list, flags);
   if (rc < 0)
     {
-      fprintf (stderr, PGM": executing `%s' failed: %s\n",
+      fprintf (mystderr, PGM": executing `%s' failed: %s\n",
               argv[0], strerror (errno));
       rc = 2;
       goto leave;
@@ -476,12 +487,12 @@
 
  leave:
   if (rc)
-    fprintf (stderr, PGM": internal error\n");
+    fprintf (mystderr, PGM": internal error\n");
   /* Always try to delete the temporary file.  */
   if (argc >= 2)
     {
       if (DeleteFile (argv[1]) == 0)
-       fprintf (stderr, PGM": failed to delete %s: ec=%ld\n",
+       fprintf (mystderr, PGM": failed to delete %s: ec=%ld\n",
                 argv[1], GetLastError ());
     }
   return rc;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/gpgme.h.in 
new/gpgme-1.20.0/src/gpgme.h.in
--- old/gpgme-1.19.0/src/gpgme.h.in     2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/src/gpgme.h.in     2023-03-21 08:18:52.000000000 +0100
@@ -575,8 +575,17 @@
   /* True if the key is compliant to the de-vs mode.  */
   unsigned int is_de_vs : 1;
 
+  /* True if the key can be used for restricted encryption (ADSK).  */
+  unsigned int can_renc : 1;
+
+  /* True if the key can be used for timestamping.  */
+  unsigned int can_timestamp : 1;
+
+  /* True if the private key is possessed by more than one person.  */
+  unsigned int is_group_owned : 1;
+
   /* Internal to GPGME, do not use.  */
-  unsigned int _unused : 20;
+  unsigned int _unused : 17;
 
   /* Public key algorithm supported by this subkey.  */
   gpgme_pubkey_algo_t pubkey_algo;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/keylist.c 
new/gpgme-1.20.0/src/keylist.c
--- old/gpgme-1.19.0/src/keylist.c      2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/src/keylist.c      2023-03-21 08:19:00.000000000 +0100
@@ -287,6 +287,18 @@
          subkey->can_authenticate = 1;
          break;
 
+        case 'r':
+          subkey->can_renc = 1;
+          break;
+
+        case 't':
+          subkey->can_timestamp = 1;
+          break;
+
+        case 'g':
+          subkey->is_group_owned = 1;
+          break;
+
        case 'q':
          subkey->is_qualified = 1;
          break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/posix-util.c 
new/gpgme-1.20.0/src/posix-util.c
--- old/gpgme-1.19.0/src/posix-util.c   2023-02-01 17:50:48.000000000 +0100
+++ new/gpgme-1.20.0/src/posix-util.c   2023-04-20 13:35:50.000000000 +0200
@@ -144,7 +144,8 @@
   /* On apple, especially when started through gpgme-json via
      the browser interface we should look into some additional
      fallback paths. */
-  const char *additional_path = "/usr/local/bin:/usr/local/MacGPG2/bin";
+  const char *additional_path
+    = "/usr/local/bin:/usr/local/MacGPG2/bin:/opt/homebrew/bin";
   if (!ret)
     {
       ret = walk_path_str (additional_path, pgm);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/src/version.c 
new/gpgme-1.20.0/src/version.c
--- old/gpgme-1.19.0/src/version.c      2019-06-07 10:21:18.000000000 +0200
+++ new/gpgme-1.20.0/src/version.c      2023-04-17 14:56:38.000000000 +0200
@@ -72,6 +72,9 @@
 
     WSAStartup (0x202, &wsadat);
   }
+
+  /* We want gpgrt's gettext to always output UTF-8. */
+  gettext_use_utf8 (1);
 #endif
 
   _gpgme_debug_subsystem_init ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gpgme-1.19.0/tests/run-keylist.c 
new/gpgme-1.20.0/tests/run-keylist.c
--- old/gpgme-1.19.0/tests/run-keylist.c        2023-02-01 17:50:48.000000000 
+0100
+++ new/gpgme-1.20.0/tests/run-keylist.c        2023-03-21 08:19:19.000000000 
+0100
@@ -309,19 +309,22 @@
             printf ("grip  %2d: %s\n", nsub, subkey->keygrip);
           if (subkey->curve)
             printf ("curve %2d: %s\n", nsub, subkey->curve);
-          printf ("caps  %2d: %s%s%s%s\n",
+          printf ("caps  %2d: %s%s%s%s%s%s\n",
                   nsub,
                   subkey->can_encrypt? "e":"",
                   subkey->can_sign? "s":"",
                   subkey->can_certify? "c":"",
-                  subkey->can_authenticate? "a":"");
-          printf ("flags %2d:%s%s%s%s%s%s%s%s\n",
+                  subkey->can_authenticate? "a":"",
+                  subkey->can_renc? "r":"",
+                  subkey->can_timestamp? "t":"");
+          printf ("flags %2d:%s%s%s%s%s%s%s%s%s\n",
                   nsub,
                   subkey->secret? " secret":"",
                   subkey->revoked? " revoked":"",
                   subkey->expired? " expired":"",
                   subkey->disabled? " disabled":"",
                   subkey->invalid? " invalid":"",
+                  subkey->is_group_owned? " group":"",
                   subkey->is_qualified? " qualified":"",
                   subkey->is_de_vs? " de-vs":"",
                   subkey->is_cardkey? " cardkey":"");

Reply via email to