diff --git a/configure.ac b/configure.ac index e0aafba6..4341f1f5 100644 --- a/configure.ac +++ b/configure.ac @@ -94,9 +94,9 @@ AC_ARG_WITH(openssl, [], [with_openssl=check]) # Help line for libfetch -AC_ARG_ENABLE(internal-download, - AS_HELP_STRING([--disable-internal-download], [do not build with libfetch support]), - [internaldownload=$enableval], [internaldownload=yes]) +AC_ARG_WITH(fetch, + AS_HELP_STRING([--with-fetch], [use libfetch as an internal downloader]), + [], [with_fetch=check]) # Help line for documentation AC_ARG_ENABLE(doc, @@ -150,21 +150,20 @@ AM_CONDITIONAL([HAVE_LIBSSL], [test "x$ac_cv_lib_ssl_MD5_Final" = "xyes"]) # Enable or disable usage of libfetch AC_MSG_CHECKING(whether to link with libfetch) -if test "x$internaldownload" = "xyes" ; then - AC_MSG_RESULT(yes) - AC_DEFINE([INTERNAL_DOWNLOAD], , [Use internal download library]) - # Check for a download library if it was actually requested +AS_IF([test "x$with_fetch" = "xyes"], + [AC_MSG_RESULT(yes) AC_CHECK_LIB([fetch], [fetchParseURL], , - AC_MSG_ERROR([libfetch is needed to compile with internal download support]), [-lcrypto -ldl] ) - # Check if libfetch supports conditional GET - # (version >=2.21, struct url has member last_modified) - AC_CHECK_MEMBER(struct url.last_modified, , - AC_MSG_ERROR([libfetch must be version 2.21 or greater]), - [#include ] ) -else - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(INTERNAL_DOWNLOAD, test "x$internaldownload" = "xyes") + [if test "x$with_fetch" != "xcheck"; then + AC_MSG_FAILURE([--with-fetch was given, but -lfetch was not found]) + fi], + [-lcrypto -ldl]) + # Check if libfetch supports connnection caching which we use + AC_CHECK_DECL(fetchConnectionCacheInit, , + AC_MSG_ERROR([libfetch must be version 2.28 or greater]), + [#include ]) + ], + AC_MSG_RESULT(no)) +AM_CONDITIONAL([HAVE_LIBFETCH], [test "x$ac_cv_lib_fetch_fetchParseURL" = "xyes"]) # Checks for header files. AC_CHECK_HEADERS([fcntl.h glob.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h sys/time.h syslog.h wchar.h]) @@ -406,7 +405,6 @@ ${PACKAGE_NAME}: Compilation options: Run make in doc/ dir : ${wantdoc} ${asciidoc} - Use download library : ${internaldownload} Doxygen support : ${usedoxygen} debug support : ${debug} " diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index 7bcfc8f1..6f4f4a4c 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -24,7 +24,7 @@ #include "config.h" /* connection caching setup */ -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH #include #endif @@ -59,7 +59,7 @@ int SYMEXPORT alpm_initialize(void) bindtextdomain("libalpm", LOCALEDIR); #endif -#ifdef INTERNAL_DOWNLOAD +#ifdef HAVE_FETCH fetchConnectionCacheInit(5, 1); #endif @@ -82,7 +82,7 @@ int SYMEXPORT alpm_release(void) _alpm_handle_free(handle); handle = NULL; -#ifdef INTERNAL_DOWNLOAD +#ifdef HAVE_FETCH fetchConnectionCacheClose(); #endif diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c index 3185d2aa..32096e24 100644 --- a/lib/libalpm/dload.c +++ b/lib/libalpm/dload.c @@ -38,7 +38,7 @@ #include /* MAXHOSTNAMELEN */ #endif -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH #include #endif @@ -58,7 +58,7 @@ static char *get_filename(const char *url) { return(filename); } -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH static char *get_destfile(const char *path, const char *filename) { char *destfile; /* len = localpath len + filename len + null */ @@ -338,7 +338,7 @@ cleanup: static int download(const char *url, const char *localpath, int force) { if(handle->fetchcb == NULL) { -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH return(download_internal(url, localpath, force)); #else RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1); diff --git a/lib/libalpm/error.c b/lib/libalpm/error.c index 8d8d0458..b64ee67c 100644 --- a/lib/libalpm/error.c +++ b/lib/libalpm/error.c @@ -31,7 +31,7 @@ #include /* MAXHOSTNAMELEN */ #endif -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH #include /* fetchLastErrString */ #endif @@ -145,7 +145,7 @@ const char SYMEXPORT *alpm_strerror(int err) * error string instead. */ return _("libarchive error"); case PM_ERR_LIBFETCH: -#if defined(INTERNAL_DOWNLOAD) +#ifdef HAVE_FETCH return fetchLastErrString; #else /* obviously shouldn't get here... */