libcurl-gnutls: add package, replaces gnURL
authorDaniel Golle <daniel@makrotopia.org>
Sat, 14 Jan 2023 01:03:10 +0000 (01:03 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 14 Jan 2023 15:39:29 +0000 (15:39 +0000)
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>
net/gnurl/Makefile [deleted file]
net/libcurl-gnutls/Makefile [new file with mode: 0644]

diff --git a/net/gnurl/Makefile b/net/gnurl/Makefile
deleted file mode 100644 (file)
index dd17143..0000000
+++ /dev/null
@@ -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))
diff --git a/net/libcurl-gnutls/Makefile b/net/libcurl-gnutls/Makefile
new file mode 100644 (file)
index 0000000..55801dc
--- /dev/null
@@ -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))