summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-04-24 11:40:58 -0500
committerDan McGee <dan@archlinux.org>2011-04-27 16:58:58 -0500
commit97be2f0e0a0daad2f9058377c7dbee62cc7a8718 (patch)
tree74e836f26a77219db43237e5a082af8f243fbaa6
parentb7b3fc23869475d3d1729de802935b98594d1677 (diff)
downloadpacman-97be2f0e0a0daad2f9058377c7dbee62cc7a8718.tar.xz
Allow conditional compilation with GPGME
This makes it possible to omit usage of -lgpgme, just as we can do for -lcurl and -lcrypto. Thanks to Rémy Oudompheng for an initial stab at this. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--configure.ac18
-rw-r--r--lib/libalpm/Makefile.am6
-rw-r--r--lib/libalpm/signing.c12
3 files changed, 32 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index b5fdfff8..738cd7fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -93,6 +93,11 @@ AC_ARG_WITH(openssl,
AS_HELP_STRING([--with-openssl], [use OpenSSL crypto implementations instead of internal routines]),
[], [with_openssl=check])
+# Help line for using gpgme
+AC_ARG_WITH(gpgme,
+ AS_HELP_STRING([--with-gpgme], [use GPGME for PGP signature verification]),
+ [], [with_gpgme=check])
+
# Check for useable libcurl
LIBCURL_CHECK_CONFIG([yes], [7.19.4])
@@ -151,8 +156,17 @@ AS_IF([test "x$with_openssl" != "xno"],
AM_CONDITIONAL([HAVE_LIBSSL], [test "x$ac_cv_lib_ssl_MD5_Final" = "xyes"])
# Check for gpgme
-AC_CHECK_LIB([gpgme], [gpgme_check_version], ,
- AC_MSG_ERROR([gpgme is needed to compile pacman!]))
+AC_MSG_CHECKING(whether to link with libgpgme)
+AS_IF([test "x$with_gpgme" != "xno"],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB([gpgme], [gpgme_check_version], ,
+ [if test "x$with_gpgme" != "xcheck"; then
+ AC_MSG_FAILURE([--with-ggpme was given, but -lgpgme was not found])
+ fi],
+ [-lgpgme])
+ with_gpgme=$ac_cv_lib_gpgme_gpgme_check_version],
+ AC_MSG_RESULT(no))
+AM_CONDITIONAL([HAVE_LIBGPGME], [test "x$with_gpgme" = "xyes"])
# Checks for header files.
AC_CHECK_HEADERS([fcntl.h glob.h libintl.h locale.h mntent.h string.h \
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index 080ac195..b2b6d0d2 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -25,7 +25,6 @@ libalpm_la_SOURCES = \
alpm.h alpm.c \
alpm_list.h alpm_list.c \
backup.h backup.c \
- base64.h base64.c \
be_local.c \
be_package.c \
be_sync.c \
@@ -54,6 +53,11 @@ libalpm_la_SOURCES += \
md5.h md5.c
endif
+if HAVE_LIBGPGME
+libalpm_la_SOURCES += \
+ base64.h base64.c
+endif
+
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO) @LIBCURL@
libalpm_la_LIBADD = $(LTLIBINTL)
diff --git a/lib/libalpm/signing.c b/lib/libalpm/signing.c
index 867e0a58..a2a6457a 100644
--- a/lib/libalpm/signing.c
+++ b/lib/libalpm/signing.c
@@ -22,17 +22,21 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+
+#if HAVE_LIBGPGME
#include <locale.h> /* setlocale() */
#include <gpgme.h>
+#include "base64.h"
+#endif
/* libalpm */
#include "signing.h"
#include "package.h"
-#include "base64.h"
#include "util.h"
#include "log.h"
#include "alpm.h"
+#if HAVE_LIBGPGME
#define CHECK_ERR(void) do { \
if(err != GPG_ERR_NO_ERROR) { goto error; } \
} while(0)
@@ -364,6 +368,12 @@ error:
}
return ret;
}
+#else
+int _alpm_gpgme_checksig(const char *path, const char *base64_sig)
+{
+ return -1;
+}
+#endif
/**
* Determines the necessity of checking for a valid PGP signature