diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2019-03-07 23:10:38 -0500 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2019-03-19 14:05:53 +1000 |
commit | 0a72874734ceafdf0a9f9e7a96c8b3f88507a54b (patch) | |
tree | c13dfd08367e3ebd39879e811e76d5547d0024f9 | |
parent | 226d2c124884c7318b7fb86c2e6bdf792eddd1a9 (diff) | |
download | pacman-0a72874734ceafdf0a9f9e7a96c8b3f88507a54b.tar.xz |
build: check for gpgme with pkg-config before gpgme-config
gpgme in git master now supports pkg-config and with the next release we
can and should prefer its use. However, retain the legacy code that
enables building with older versions of gpgme, as a fallback.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | configure.ac | 68 | ||||
-rw-r--r-- | lib/libalpm/libalpm.pc.in | 4 | ||||
-rw-r--r-- | meson.build | 49 |
3 files changed, 66 insertions, 55 deletions
diff --git a/configure.ac b/configure.ac index 2f091f69..cb2fb2bf 100644 --- a/configure.ac +++ b/configure.ac @@ -268,37 +268,43 @@ AS_IF([test "x$with_gpgme" != "xno"], [AC_MSG_RESULT([no])]) have_gpgme=no -AS_IF([test "x$with_gpgme" != "xno"], - [AM_PATH_GPGME([1.3.0], - [LIBS_save="$LIBS" - CPPFLAGS_save="$CPPFLAGS" - CFLAGS_save="$CFLAGS" - - LIBS="$LIBS $GPGME_LIBS" - CPPFLAGS="$CPPFLAGS $GPGME_CPPFLAGS" - CFLAGS="$CFLAGS $GPGME_CFLAGS" - - AC_MSG_CHECKING([for sane gpgme]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <gpgme.h>]], - [[return gpgme_check_version("1.3.0");]])], - [AC_MSG_RESULT([yes]) - have_gpgme=yes - AC_DEFINE([HAVE_LIBGPGME], [1], [Define if gpgme should be used to provide GPG signature support.])], - [AC_MSG_RESULT([no]) - have_gpgme=no - unset GPGME_LIBS - unset GPGME_CFLAGS] - AS_IF([test "x$with_gpgme" = "xyes"], - [AC_MSG_FAILURE([*** gpgme >= 1.3.0 is needed for GPG signature support])]) - ) - - LIBS="$LIBS_save" - CPPFLAGS="$CPPFLAGS_save" - CFLAGS="$CFLAGS_save" - unset CPPFLAGS_save - unset CFLAGS_save],)]) +if test "x$with_gpgme" != "xno"; then + PKG_CHECK_MODULES(GPGME, [gpgme], + [AC_DEFINE([HAVE_LIBGPGME], [1], [Define if gpgme should be used to provide GPG signature support.]) + AC_SUBST(pc_gpgme, [gpgme]) + have_gpgme=yes], + [AM_PATH_GPGME([1.3.0], + [LIBS_save="$LIBS" + CPPFLAGS_save="$CPPFLAGS" + CFLAGS_save="$CFLAGS" + + LIBS="$LIBS $GPGME_LIBS" + CPPFLAGS="$CPPFLAGS $GPGME_CPPFLAGS" + CFLAGS="$CFLAGS $GPGME_CFLAGS" + + AC_MSG_CHECKING([for sane gpgme]) + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <gpgme.h>]], + [[return gpgme_check_version("1.3.0");]])], + [AC_MSG_RESULT([yes]) + have_gpgme=yes + AC_DEFINE([HAVE_LIBGPGME], [1], [Define if gpgme should be used to provide GPG signature support.]) + AC_SUBST(pc_gpgme_libs, ["$GPGME_LIBS"])], + [AC_MSG_RESULT([no]) + have_gpgme=no + unset GPGME_LIBS + unset GPGME_CFLAGS] + AS_IF([test "x$with_gpgme" = "xyes"], + [AC_MSG_FAILURE([*** gpgme >= 1.3.0 is needed for GPG signature support])]) + ) + + LIBS="$LIBS_save" + CPPFLAGS="$CPPFLAGS_save" + CFLAGS="$CFLAGS_save" + unset CPPFLAGS_save + unset CFLAGS_save],)]) +fi AS_IF([test "x$have_gpgme" = xno -a "x$with_gpgme" = xyes], [AC_MSG_FAILURE([--with-gpgme was given, but gpgme was not found])]) diff --git a/lib/libalpm/libalpm.pc.in b/lib/libalpm/libalpm.pc.in index 6b905747..126a6e6a 100644 --- a/lib/libalpm/libalpm.pc.in +++ b/lib/libalpm/libalpm.pc.in @@ -7,7 +7,7 @@ Name: libalpm Description: Arch Linux package management library URL: http://www.archlinux.org/pacman/ Version: @LIB_VERSION@ -Requires.private: libarchive @pc_crypto@ @pc_libcurl@ +Requires.private: libarchive @pc_crypto@ @pc_libcurl@ @pc_gpgme@ Cflags: -I${includedir} @LFS_CFLAGS@ Libs: -L${libdir} -lalpm -Libs.private: @LIBS@ @GPGME_LIBS@ +Libs.private: @LIBS@ @pc_gpgme_libs@ diff --git a/meson.build b/meson.build index d443a2b3..cbd4b5d0 100644 --- a/meson.build +++ b/meson.build @@ -98,29 +98,34 @@ libcurl = dependency('libcurl', conf.set('HAVE_LIBCURL', libcurl.found()) want_gpgme = get_option('gpgme') -gpgme_config = find_program('gpgme-config', required : want_gpgme) -if not want_gpgme.disabled() and gpgme_config.found() - gpgme_version = run_command(gpgme_config, '--version').stdout().strip() - - needed_gpgme_version = '>=1.3.0' - have = gpgme_version.version_compare(needed_gpgme_version) - if want_gpgme.enabled() and not have - error('gpgme @0@ is needed for GPG signature support'.format(needed_gpgme_version)) +gpgme = dependency('gpgme', + required : false, + static : get_option('buildstatic')) +# gpgme recently began providing a pkg-config file. Create a fake dependency +# object if it cannot be found, by manually searching for libs. +if not want_gpgme.disabled() and not gpgme.found() + gpgme_config = find_program('gpgme-config', required : want_gpgme) + if gpgme_config.found() + gpgme_version = run_command(gpgme_config, '--version').stdout().strip() + + needed_gpgme_version = '>=1.3.0' + if gpgme_version.version_compare(needed_gpgme_version) + gpgme_libs = [ + cc.find_library('gpgme', + dirs : [get_option('gpgme-libdir')]), + cc.find_library('gpg-error', + dirs : [get_option('gpgme-libdir')]), + cc.find_library('assuan', + dirs : [get_option('gpgme-libdir')]), + ] + gpgme = declare_dependency(dependencies : gpgme_libs) + endif endif +endif - gpgme_libs = [ - cc.find_library('gpgme', required : have, - dirs : [get_option('gpgme-libdir')]), - cc.find_library('gpg-error', required : have, - dirs : [get_option('gpgme-libdir')]), - cc.find_library('assuan', required : have, - dirs : [get_option('gpgme-libdir')]), - ] - - conf.set('HAVE_LIBGPGME', have) -else - gpgme_libs = [] - conf.set('HAVE_LIBGPGME', false) +conf.set('HAVE_LIBGPGME', gpgme.found()) +if want_gpgme.enabled() and not conf.get('HAVE_LIBGPGME') + error('gpgme @0@ is needed for GPG signature support'.format(needed_gpgme_version)) endif want_crypto = get_option('crypto') @@ -341,7 +346,7 @@ libalpm_a = static_library( 'alpm', libalpm_sources, include_directories : includes, - dependencies : [crypto_provider, libarchive, libcurl] + gpgme_libs, + dependencies : [crypto_provider, libarchive, libcurl, gpgme], link_with : [libcommon], install : true) |