From patchwork Sat Jan 31 14:00:47 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Schoenebeck X-Patchwork-Id: 435145 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id B80341401DA for ; Sun, 1 Feb 2015 01:01:17 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id E215C28AFC2; Sat, 31 Jan 2015 14:58:39 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id C03A528AFC2 for ; Sat, 31 Jan 2015 14:58:20 +0100 (CET) X-policyd-weight: using cached result; rate: -8.5 Received: from mail-wg0-f49.google.com (mail-wg0-f49.google.com [74.125.82.49]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Sat, 31 Jan 2015 14:58:20 +0100 (CET) Received: by mail-wg0-f49.google.com with SMTP id k14so31407591wgh.8 for ; Sat, 31 Jan 2015 06:00:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=OZXeVU4R05S2XnuIZs9iPdzlGAJKJySmRXENTr+TMf8=; b=rJqsklWmkPil6TkNXKp6pcuhvPHyvcvfm07Tf9NIRDWYTtr768ZQ15AvSlDSXqqiKW CQ4xDVvDIO+K9RDko8uPAZ3P+964b9vwHUhsU1aW8wi6/twNHVQheIe6UZx/WoTFFG2s hYukyWWeU/vKRKVV1PNT8IMIvdP6xg8BJkfBSDnulu/56V7MfSsOZDjEJ12CV1b87i4S ZyxL5Cu5ZoMAS0S+aiMW2moTD2hJYmLQtog479L2pXSydryEDEiFQsdEAhNBLZK09h4b nR+HpnXfsYUaFPFFZeG9J3nAW8kbnwycTcrtCVWLW/z63N/WeI1YXKJOlEon44eyoXSn 0GXQ== X-Received: by 10.195.13.104 with SMTP id ex8mr23889890wjd.12.1422712848849; Sat, 31 Jan 2015 06:00:48 -0800 (PST) Received: from [172.27.10.167] (ip-37-24-132-140.hsi14.unitymediagroup.de. [37.24.132.140]) by mx.google.com with ESMTPSA id cy8sm11365404wib.9.2015.01.31.06.00.47 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 31 Jan 2015 06:00:48 -0800 (PST) Message-ID: <54CCE00F.5000909@gmail.com> Date: Sat, 31 Jan 2015 15:00:47 +0100 From: Christian Schoenebeck User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: kaloz@openwrt.org, openWrt Development List Subject: [OpenWrt-Devel] cURL: implement new functionality with cleanup and fixes X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" 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 --- 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 87e5f99..11cfa39 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 7274e2c..6da3a66 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) \