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>
This commit is contained in:
Dan McGee 2011-04-24 11:40:58 -05:00
parent b7b3fc2386
commit 97be2f0e0a
3 changed files with 32 additions and 4 deletions

View File

@ -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 \

View File

@ -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)

View File

@ -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