From 83693349fc5a68c944ed0c7e6f2ba14cee0e82d8 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 2 Feb 2015 09:02:24 +0000 Subject: [PATCH] cURL: implement new functionality with cleanup and fixes remove obsolete configuration settings --disable-thread --enable-nonblocking --without-krb4 remove SSPI support only supported on windows correct --with/without-ca-path handling only supported with OpenSSL and PolarSSL correct LDAP/LDAPS protocol add dependency libopenldap added SCP/SFTP protocol default "No" depends on libssh2 added IDN support default "No" depends on libidn added SMB protocol (new in 7.40) default "No" require 'cryptographic authentication' and either 'GnuTLS' or 'OpenSSL' selected added Unix sockets support (new in 7.40) default "No" added error verbose messages default "No" changes to Makefile Increase PKG_RELEASE PKG_CONFIG_DEPENDS and CONFIGURE_ARGS extended for new functionality use "autoconf_bool" for all --enable/--disable options restructure for easier reading changes to Config.in extended for new functionality implement dependencies restructure and grouping for easier reading build tested on XUbuntu 14.10 x86 for x86 (generic) and ar71xx (WNDR3800) Signed-off-by: Christian Schoenebeck SVN-Revision: 44243 --- package/network/utils/curl/Config.in | 137 ++++++++++++++++++--------- package/network/utils/curl/Makefile | 114 ++++++++++++---------- 2 files changed, 155 insertions(+), 96 deletions(-) diff --git a/package/network/utils/curl/Config.in b/package/network/utils/curl/Config.in index 87e5f99f57..11cfa39e95 100644 --- a/package/network/utils/curl/Config.in +++ b/package/network/utils/curl/Config.in @@ -1,111 +1,154 @@ if PACKAGE_libcurl +comment "SSL support" + choice - prompt "SSL library" + prompt "Selected SSL library" default LIBCURL_POLARSSL -config LIBCURL_POLARSSL - bool "PolarSSL" + config LIBCURL_POLARSSL + bool "PolarSSL" -config LIBCURL_CYASSL - bool "CyaSSL" + config LIBCURL_CYASSL + bool "CyaSSL" -config LIBCURL_AXTLS - bool "axTLS" + config LIBCURL_AXTLS + bool "axTLS" -config LIBCURL_OPENSSL - bool "OpenSSL" + config LIBCURL_OPENSSL + bool "OpenSSL" -config LIBCURL_GNUTLS - bool "GNUTLS" + config LIBCURL_GNUTLS + bool "GNUTLS" -config LIBCURL_NOSSL - bool "No SSL support" + config LIBCURL_NOSSL + bool "No SSL support" endchoice -config LIBCURL_COOKIES - bool "Enable cookies support" - default y - -config LIBCURL_CRYPTO_AUTH - bool "Enable cryptographic authentication" - default n +comment "Supported protocols" config LIBCURL_DICT - bool "Enable DICT support" + bool "DICT protocol" default n config LIBCURL_FILE - bool "Enable FILE support" + bool "FILE protocol" default y config LIBCURL_FTP - bool "Enable FTP support" + bool "FTP / FTPS protocol" default y config LIBCURL_GOPHER - bool "Enable Gopher support" + bool "Gopher protocol" default n config LIBCURL_HTTP - bool "Enable HTTP support" + bool "HTTP / HTTPS protocol" + default y + +config LIBCURL_COOKIES + bool "Enable Cookies support" + depends on LIBCURL_HTTP default y config LIBCURL_IMAP - bool "Enable IMAP support" + bool "IMAP / IMAPS protocol" default n config LIBCURL_LDAP - bool "Enable LDAP support" + bool "LDAP protocol" default n config LIBCURL_LDAPS bool "Enable LDAPS support" + depends on LIBCURL_LDAP && !LIBCURL_NOSSL + default y + +config LIBCURL_POP3 + bool "POP3 / POP3S protocol" default n -config LIBCURL_LIBCURL_OPTION - bool "Enable --libcurl C code generation support" +config LIBCURL_RTSP + bool "RTSP protocol" + depends on LIBCURL_HTTP default n +config LIBCURL_NO_RTSP + string "RTSP require HTTP protocol" + depends on !LIBCURL_HTTP + default "!" -config LIBCURL_POP3 - bool "Enable POP3 support" +config LIBCURL_SSH2 + bool "SCP / SFTP protocol" + default n + +config LIBCURL_SMB + bool "SMB protocol (CIFS)" + depends on LIBCURL_CRYPTO_AUTH && (LIBCURL_GNUTLS || LIBCURL_OPENSSL) + default n +config LIBCURL_NO_SMB + string "SMB require 'cryptographic authentication' and either 'GnuTLS' or 'OpenSSL'" + depends on !LIBCURL_CRYPTO_AUTH || (!LIBCURL_GNUTLS && !LIBCURL_OPENSSL) + default "!" + +config LIBCURL_SMTP + bool "SMTP / SMTPS protocol" default n +config LIBCURL_TELNET + bool "TELNET protocol" + default n + +config LIBCURL_TFTP + bool "TFTP protocol" + default n + +comment "Miscellaneous" + config LIBCURL_PROXY bool "Enable proxy support" default y -config LIBCURL_RTSP - bool "Enable RTSP support" +config LIBCURL_CRYPTO_AUTH + bool "Enable cryptographic authentication" default n -config LIBCURL_SMTP - bool "Enable SMTP support" +config LIBCURL_TLS_SRP + bool "Enable TLS-SRP authentication" default n -config LIBCURL_SSPI - bool "Enable SSPI" +config LIBCURL_LIBIDN + bool "Enable IDN support" default n -config LIBCURL_TELNET - bool "Enable TELNET support" +config LIBCURL_THREADED_RESOLVER + bool "Enable threaded DNS resolver" default n + help + Enable POSIX threaded asynchronous DNS resolution -config LIBCURL_TFTP - bool "Enable TFTP support" +config LIBCURL_ZLIB + bool "Enable zlib support" default n -config LIBCURL_THREADED_RESOLVER - bool "Enable threaded resolver" +config LIBCURL_UNIX_SOCKETS + bool "Enable unix domain socket support" default n + help + Enable HTTP over unix domain sockets. + To use this with the curl command line, you specify the socket path to the new --unix-domain option. + This feature is actually not limited to HTTP, you can do all the TCP-based protocols + except FTP over the unix domain socket, but it is only HTTP that is regularly used this way. + The reason FTP isn't supported is of course its use of two connections + which would be even weirder to do like this. -config LIBCURL_TLS-SRP - bool "Enable TLS-SRP authentication" +config LIBCURL_LIBCURL_OPTION + bool "Enable generation of C code" default n -config LIBCURL_ZLIB - bool "Use zlib" +config LIBCURL_VERBOSE + bool "Enable verbose error strings" default n endif diff --git a/package/network/utils/curl/Makefile b/package/network/utils/curl/Makefile index 7274e2cb11..6da3a66a02 100644 --- a/package/network/utils/curl/Makefile +++ b/package/network/utils/curl/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=curl PKG_VERSION:=7.40.0 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://curl.haxx.se/download/ \ @@ -26,34 +26,45 @@ PKG_LICENSE_FILES:=COPYING PKG_FIXUP:=autoreconf PKG_BUILD_PARALLEL:=1 -PKG_CONFIG_DEPENDS := \ +PKG_CONFIG_DEPENDS:= \ + CONFIG_IPV6 \ + \ LIBCURL_AXTLS \ - LIBCURL_COOKIES \ - LIBCURL_CRYPTO_AUTH \ LIBCURL_CYASSL \ + LIBCURL_GNUTLS \ + LIBCURL_OPENSSL \ + LIBCURL_POLARSSL \ + LIBCURL_NOSSL \ + \ + LIBCURL_LIBIDN \ + LIBCURL_SSH2 \ + LIBCURL_ZLIB \ + \ LIBCURL_DICT \ LIBCURL_FILE \ LIBCURL_FTP \ - LIBCURL_GNUTLS \ LIBCURL_GOPHER \ LIBCURL_HTTP \ LIBCURL_IMAP \ LIBCURL_LDAP \ LIBCURL_LDAPS \ - LIBCURL_LIBCURL_OPTION \ - LIBCURL_NOSSL \ - LIBCURL_OPENSSL \ - LIBCURL_POLARSSL \ LIBCURL_POP3 \ - LIBCURL_PROXY \ LIBCURL_RTSP \ + LIBCURL_NO_RTSP \ + LIBCURL_SMB \ + LIBCURL_NO_SMB \ LIBCURL_SMTP \ - LIBCURL_SSPI \ LIBCURL_TELNET \ LIBCURL_TFTP \ + \ + LIBCURL_COOKIES \ + LIBCURL_CRYPTO_AUTH \ + LIBCURL_LIBCURL_OPTION \ + LIBCURL_PROXY \ LIBCURL_THREADED_RESOLVER \ - LIBCURL_TLS-SRP \ - LIBCURL_ZLIB + LIBCURL_TLS_SRP \ + LIBCURL_UNIX_SOCKETS \ + LIBCURL_VERBOSE \ include $(INCLUDE_DIR)/package.mk @@ -75,8 +86,9 @@ define Package/libcurl $(call Package/curl/Default) SECTION:=libs CATEGORY:=Libraries - DEPENDS:=+LIBCURL_POLARSSL:libpolarssl +LIBCURL_CYASSL:libcyassl +LIBCURL_AXTLS:libaxtls +LIBCURL_OPENSSL:libopenssl +LIBCURL_GNUTLS:libgnutls +LIBCURL_ZLIB:zlib +LIBCURL_THREADED_RESOLVER:libpthread - TITLE:=A client-side URL transfer library using $(if $(CONFIG_LIBCURL_POLARSSL),PolarSSL)$(if $(CONFIG_LIBCURL_OPENSSL),OpenSSL)$(if $(CONFIG_LIBCURL_GNUTLS),GNUTLS)$(if $(CONFIG_LIBCURL_NOSSL),no SSL) + DEPENDS:=+LIBCURL_POLARSSL:libpolarssl +LIBCURL_CYASSL:libcyassl +LIBCURL_AXTLS:libaxtls +LIBCURL_OPENSSL:libopenssl +LIBCURL_GNUTLS:libgnutls + DEPENDS += +LIBCURL_ZLIB:zlib +LIBCURL_THREADED_RESOLVER:libpthread +LIBCURL_LDAP:libopenldap +LIBCURL_LIBIDN:libidn +LIBCURL_SSH2:libssh2 + TITLE:=A client-side URL transfer library MENU:=1 endef @@ -88,47 +100,51 @@ endef TARGET_CFLAGS += $(FPIC) CONFIGURE_ARGS += \ + --disable-debug \ + --disable-ares \ --enable-shared \ --enable-static \ - --disable-thread \ - --enable-nonblocking \ - --disable-ares \ - --disable-debug \ --disable-manual \ - --disable-verbose \ --without-ca-bundle \ - $(if $(CONFIG_LIBCURL_NOSSL),,--with-ca-path=/etc/ssl/certs/) \ - --without-krb4 \ - --without-libidn \ --without-nss \ - --without-libssh2 \ + --without-libmetalink \ + --without-librtmp \ + \ $(call autoconf_bool,CONFIG_IPV6,ipv6) \ - $(if $(CONFIG_LIBCURL_AXTLS),--with-axtls="$(STAGING_DIR)/usr",--without-axtls) \ - $(if $(CONFIG_LIBCURL_COOKIES),--enable,--disable)-cookies \ - $(if $(CONFIG_LIBCURL_CRYPTO_AUTH),--enable,--disable)-crypto-auth \ - $(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr",--without-cyassl) \ - $(if $(CONFIG_LIBCURL_DICT),--enable,--disable)-dict \ - $(if $(CONFIG_LIBCURL_FILE),--enable,--disable)-file \ - $(if $(CONFIG_LIBCURL_FTP),--enable,--disable)-ftp \ - $(if $(CONFIG_LIBCURL_GOPHER),--enable,--disable)-gopher \ - $(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr",--without-gnutls) \ - $(if $(CONFIG_LIBCURL_HTTP),--enable,--disable)-http \ - $(if $(CONFIG_LIBCURL_IMAP),--enable,--disable)-imap \ - $(if $(CONFIG_LIBCURL_LDAP),--enable,--disable)-ldap \ - $(if $(CONFIG_LIBCURL_LDAPS),--enable,--disable)-ldaps \ - $(if $(CONFIG_LIBCURL_LIBCURL_OPTION),--enable,--disable)-libcurl-option \ - $(if $(CONFIG_LIBCURL_OPENSSL),--with-ssl="$(STAGING_DIR)/usr",--without-ssl) \ - $(if $(CONFIG_LIBCURL_POLARSSL),--with-polarssl="$(STAGING_DIR)/usr",--without-polarssl) \ - $(if $(CONFIG_LIBCURL_POP3),--enable,--disable)-pop3 \ - $(if $(CONFIG_LIBCURL_PROXY),--enable,--disable)-proxy \ - $(if $(CONFIG_LIBCURL_RTSP),--enable,--disable)-rtsp \ - $(if $(CONFIG_LIBCURL_TELNET),--enable,--disable)-telnet \ - $(if $(CONFIG_LIBCURL_TFTP),--enable,--disable)-tftp \ - $(if $(CONFIG_LIBCURL_SMTP),--enable,--disable)-smtp \ - $(if $(CONFIG_LIBCURL_SSPI),--enable,--disable)-sspi \ - $(if $(CONFIG_LIBCURL_THREADED_RESOLVER),--enable,--disable)-threaded-resolver \ - $(if $(CONFIG_LIBCURL_TLS-SRP),--enable,--disable)-tls-srp \ + \ + $(if $(CONFIG_LIBCURL_AXTLS),--with-axtls="$(STAGING_DIR)/usr" --without-ca-path,--without-axtls) \ + $(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr" --without-ca-path,--without-cyassl) \ + $(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr" --without-ca-path,--without-gnutls) \ + $(if $(CONFIG_LIBCURL_OPENSSL),--with-ssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-ssl) \ + $(if $(CONFIG_LIBCURL_POLARSSL),--with-polarssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-polarssl) \ + \ + $(if $(CONFIG_LIBCURL_LIBIDN),--with-libidn="$(STAGING_DIR)/usr",--without-libidn) \ + $(if $(CONFIG_LIBCURL_SSH2),--with-libssh2="$(STAGING_DIR)/usr",--without-libssh2) \ $(if $(CONFIG_LIBCURL_ZLIB),--with-zlib="$(STAGING_DIR)/usr",--without-zlib) \ + \ + $(call autoconf_bool,CONFIG_LIBCURL_DICT,dict) \ + $(call autoconf_bool,CONFIG_LIBCURL_FILE,file) \ + $(call autoconf_bool,CONFIG_LIBCURL_FTP,ftp) \ + $(call autoconf_bool,CONFIG_LIBCURL_GOPHER,gopher) \ + $(call autoconf_bool,CONFIG_LIBCURL_HTTP,http) \ + $(call autoconf_bool,CONFIG_LIBCURL_IMAP,imap) \ + $(call autoconf_bool,CONFIG_LIBCURL_LDAP,ldap) \ + $(call autoconf_bool,CONFIG_LIBCURL_LDAPS,ldaps) \ + $(call autoconf_bool,CONFIG_LIBCURL_POP3,pop3) \ + $(call autoconf_bool,CONFIG_LIBCURL_RTSP,rtsp) \ + $(call autoconf_bool,CONFIG_LIBCURL_SMB,smb) \ + $(call autoconf_bool,CONFIG_LIBCURL_SMTP,smtp) \ + $(call autoconf_bool,CONFIG_LIBCURL_TELNET,telnet) \ + $(call autoconf_bool,CONFIG_LIBCURL_TFTP,tftp) \ + \ + $(call autoconf_bool,CONFIG_LIBCURL_COOKIES,cookies) \ + $(call autoconf_bool,CONFIG_LIBCURL_CRYPTO_AUTH,crypto-auth) \ + $(call autoconf_bool,CONFIG_LIBCURL_LIBCURL_OPTION,libcurl-option) \ + $(call autoconf_bool,CONFIG_LIBCURL_PROXY,proxy) \ + $(call autoconf_bool,CONFIG_LIBCURL_THREADED_RESOLVER,threaded-resolver) \ + $(call autoconf_bool,CONFIG_LIBCURL_TLS_SRP,tls-srp) \ + $(call autoconf_bool,CONFIG_LIBCURL_UNIX_SOCKETS,unix-sockets) \ + $(call autoconf_bool,CONFIG_LIBCURL_VERBOSE,verbose) \ define Build/Compile +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ -- 2.30.2