libcurl-gnutls: add package, replaces gnURL

The gnURL-fork of cURL is no longer maintained as cURL finally supports
probing and selecting the TLS implementation at run-time.

Hence just build a gnuTLS-backed variant of libcurl, use patchelf to
change the shared object name, call the result libcurl-gnutls and be
done. Other distributions have opted for similar solutions.

In future we could convert the curl package to provide build-variants
for each TLS implementation; however, this is out of the scope of the
needs of GNUnet which used to be only user of libgnurl.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2023-01-14 01:03:10 +00:00
parent 3c34ef4c99
commit 03098233ef
2 changed files with 112 additions and 118 deletions

View file

@ -1,118 +0,0 @@
#
# Copyright (C) 2007-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=gnurl
PKG_VERSION:=7.72.0
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/gnunet
PKG_HASH:=b1e72be03fcf9b3fdaf01ae0702c686e9de10f67ef538918447c9e81555694f8
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/gnurl/Default
SECTION:=net
CATEGORY:=Network
URL:=https://gnunet.org/en/gnurl.html
endef
define Package/gnurl
$(call Package/gnurl/Default)
SUBMENU:=File Transfer
DEPENDS:=+libgnurl
TITLE:=A client-side HTTP/HTTPS transfer utility
endef
define Package/libgnurl
$(call Package/gnurl/Default)
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libgnutls +libidn2 +zlib
TITLE:=A client-side HTTP/HTTPS transfer library
endef
TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \
$(call autoconf_bool,CONFIG_IPV6,ipv6) \
--with-gnutls="$(STAGING_DIR)/usr" \
--with-libidn="$(STAGING_DIR)/usr" \
--with-zlib="$(STAGING_DIR)/usr" \
--with-ca-path="/etc/ssl/certs/" \
--enable-shared \
--enable-static \
--without-axtls \
--without-brotli \
--without-libssh2 \
--without-libmetalink \
--without-winidn \
--without-librtmp \
--without-nghttp2 \
--without-nss \
--without-cyassl \
--without-libpsl \
--without-polarssl \
--without-ssl \
--without-winssl \
--without-darwinssl \
--without-zstd \
--disable-ares \
--disable-sspi \
--disable-crypto-auth \
--disable-ntlm-wb \
--disable-tls-srp \
--disable-ldap \
--disable-ldaps \
--disable-rtsp \
--disable-dict \
--disable-telnet \
--disable-tftp \
--disable-pop3 \
--disable-imap \
--disable-smtp \
--disable-gopher \
--disable-file \
--disable-ftp \
--disable-smb \
--disable-debug \
--disable-manual \
--disable-verbose
define Build/InstallDev
$(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include/gnurl $(1)/usr/lib $(1)/usr/lib/pkgconfig
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnurl-config $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/include/gnurl/*.h $(1)/usr/include/gnurl
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnurl.{a,so*} $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libgnurl.pc $(1)/usr/lib/pkgconfig/
$(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/gnurl-config
[ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/libgnurl.pc || true
$(LN) $(STAGING_DIR)/usr/bin/gnurl-config $(2)/bin/
endef
define Package/gnurl/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnurl $(1)/usr/bin/
endef
define Package/libgnurl/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnurl.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,gnurl))
$(eval $(call BuildPackage,libgnurl))

112
net/libcurl-gnutls/Makefile Normal file
View file

@ -0,0 +1,112 @@
#
# Copyright (C) 2007-2023 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libcurl-gnutls
PKG_SOURCE_NAME:=curl
PKG_VERSION:=7.86.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/curl/curl/releases/download/curl-$(subst .,_,$(PKG_VERSION))/ \
https://dl.uxnr.de/mirror/curl/ \
https://curl.askapache.com/download/ \
https://curl.se/download/
PKG_HASH:=2d61116e5f485581f6d59865377df4463f2e788677ac43222b496d4e49fb627b
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:haxx:libcurl
PKG_ABI_VERSION:=4
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
# Make sure headers are present for packages using libcurl-gnutls
PKG_BUILD_DEPENDS:=curl
include $(INCLUDE_DIR)/package.mk
define Package/libcurl-gnutls
SECTION:=libs
CATEGORY:=Libraries
URL:=https://gnunet.org/en/gnurl.html
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libgnutls +libidn2 +zlib
TITLE:=A client-side HTTP/HTTPS transfer library (build against gnuTLS)
ABI_VERSION:=$(PKG_ABI_VERSION)
endef
TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \
$(call autoconf_bool,CONFIG_IPV6,ipv6) \
--with-gnutls="$(STAGING_DIR)/usr" \
--with-libidn="$(STAGING_DIR)/usr" \
--with-zlib="$(STAGING_DIR)/usr" \
--with-ca-path="/etc/ssl/certs/" \
--enable-shared \
--enable-static \
--without-axtls \
--without-brotli \
--without-libssh2 \
--without-winidn \
--without-librtmp \
--without-nghttp2 \
--without-nss \
--without-cyassl \
--without-libpsl \
--without-polarssl \
--without-openssl \
--without-winssl \
--without-zstd \
--disable-ares \
--disable-sspi \
--disable-crypto-auth \
--disable-ntlm-wb \
--disable-tls-srp \
--disable-ldap \
--disable-ldaps \
--disable-mqtt \
--disable-rtsp \
--disable-dict \
--disable-telnet \
--disable-tftp \
--disable-pop3 \
--disable-imap \
--disable-smtp \
--disable-gopher \
--disable-file \
--disable-ftp \
--disable-smb \
--disable-debug \
--disable-manual \
--disable-verbose
define Build/Compile
$(call Build/Compile/Default)
patchelf --set-soname 'libcurl-gnutls.so.$(PKG_ABI_VERSION)' $(PKG_BUILD_DIR)/lib/.libs/libcurl.so.$(PKG_ABI_VERSION).*
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.so.$(PKG_ABI_VERSION).* $(1)/usr/lib/libcurl-gnutls.so.$(PKG_ABI_VERSION)
$(LN) libcurl-gnutls.so.$(PKG_ABI_VERSION) $(1)/usr/lib/libcurl-gnutls.so
endef
define Package/libcurl-gnutls/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.so.$(PKG_ABI_VERSION).* $(1)/usr/lib/libcurl-gnutls.so.$(PKG_ABI_VERSION)
$(LN) libcurl-gnutls.so.$(PKG_ABI_VERSION) $(1)/usr/lib/libcurl-gnutls.so
endef
$(eval $(call BuildPackage,libcurl-gnutls))