瀏覽代碼

package/libcurl: fix libpsl static build

Fix the following static build failure with libpsl raised since bump to
version 8.6.0 in commit 5cee6b6be6524e443012d130e09b0e6983b0ff90:

configure:28830: /home/autobuild/autobuild/instance-6/output-1/host/bin/aarch64_be-buildroot-linux-musl-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -g0 -static -Werror-implicit-function-declaration -Wno-system-headers -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -I/home/autobuild/autobuild/instance-6/output-1/host/aarch64_be-buildroot-linux-musl/sysroot/usr/include  -static -L/home/autobuild/autobuild/instance-6/output-1/host/bin/../aarch64_be-buildroot-linux-musl/sysroot/usr/lib  -L/home/autobuild/autobuild/instance-6/output-1/host/aarch64_be-buildroot-linux-musl/sysroot/usr/lib conftest.c -lpsl  -lmbedtls -lmbedx509 -lmbedcrypto -lz  -latomic >&5
/home/autobuild/autobuild/instance-6/output-1/host/lib/gcc/aarch64_be-buildroot-linux-musl/11.4.0/../../../../aarch64_be-buildroot-linux-musl/bin/ld: /home/autobuild/autobuild/instance-6/output-1/host/bin/../aarch64_be-buildroot-linux-musl/sysroot/usr/lib/libpsl.a(psl.c.o): in function `is_public_suffix':
psl.c:(.text+0x2a8): undefined reference to `idn2_lookup_u8'

[...]

checking for library containing psl_builtin... no
configure: error: libpsl was not found

Fixes: 5cee6b6be6524e443012d130e09b0e6983b0ff90
 - http://autobuild.buildroot.org/results/1fb15e1a99472c403d0d3b1a688902f32e78d002

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
(cherry picked from commit bedcd1cd39c7654d1243e2cb0f4a68870f67782c)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Fabrice Fontaine 1 年之前
父節點
當前提交
e1eb85c3ce
共有 2 個文件被更改,包括 111 次插入0 次删除
  1. 109 0
      package/libcurl/0001-configure.ac-find-libpsl-with-pkg-config.patch
  2. 2 0
      package/libcurl/libcurl.mk

+ 109 - 0
package/libcurl/0001-configure.ac-find-libpsl-with-pkg-config.patch

@@ -0,0 +1,109 @@
+From 9b3f67e267d1fa8d7867655d133bdbf8830a0ab3 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Thu, 15 Feb 2024 20:59:25 +0100
+Subject: [PATCH] configure.ac: find libpsl with pkg-config
+
+Find libpsl with pkg-config to avoid static build failures.
+
+Ref: http://autobuild.buildroot.org/results/1fb15e1a99472c403d0d3b1a688902f32e78d002
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Closes #12947
+
+Upstream: https://github.com/curl/curl/commit/9b3f67e267d1fa8d7867655d133bdbf8830a0ab3
+---
+ configure.ac | 79 ++++++++++++++++++++++++++++++++++++++++++++--------
+ docs/TODO    |  7 -----
+ 2 files changed, 67 insertions(+), 19 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index cd0e2d07d8d164..09d5364f4de575 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2075,19 +2075,74 @@ dnl **********************************************************************
+ dnl Check for libpsl
+ dnl **********************************************************************
+ 
+-AC_ARG_WITH(libpsl,
+-           AS_HELP_STRING([--without-libpsl],
+-           [disable support for libpsl]),
+-           with_libpsl=$withval,
+-           with_libpsl=yes)
+-curl_psl_msg="no      (libpsl disabled)"
+-if test $with_libpsl != "no"; then
+-  AC_SEARCH_LIBS(psl_builtin, psl,
+-    [curl_psl_msg="enabled";
+-     AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled])
+-     ],
+-    [AC_MSG_ERROR([libpsl was not found]) ]
++dnl Default to compiler & linker defaults for LIBPSL files & libraries.
++OPT_LIBPSL=off
++AC_ARG_WITH(libpsl,dnl
++AS_HELP_STRING([--with-libpsl=PATH],[Where to look for libpsl, PATH points to the LIBPSL installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
++AS_HELP_STRING([--without-libpsl], [disable LIBPSL]),
++  OPT_LIBPSL=$withval)
++
++if test X"$OPT_LIBPSL" != Xno; then
++  dnl backup the pre-libpsl variables
++  CLEANLDFLAGS="$LDFLAGS"
++  CLEANCPPFLAGS="$CPPFLAGS"
++  CLEANLIBS="$LIBS"
++
++  case "$OPT_LIBPSL" in
++  yes)
++    dnl --with-libpsl (without path) used
++    CURL_CHECK_PKGCONFIG(libpsl)
++
++    if test "$PKGCONFIG" != "no" ; then
++      LIB_PSL=`$PKGCONFIG --libs-only-l libpsl`
++      LD_PSL=`$PKGCONFIG --libs-only-L libpsl`
++      CPP_PSL=`$PKGCONFIG --cflags-only-I libpsl`
++    else
++      dnl no libpsl pkg-config found
++      LIB_PSL="-lpsl"
++    fi
++
++    ;;
++  off)
++    dnl no --with-libpsl option given, just check default places
++    LIB_PSL="-lpsl"
++    ;;
++  *)
++    dnl use the given --with-libpsl spot
++    LIB_PSL="-lpsl"
++    PREFIX_PSL=$OPT_LIBPSL
++    ;;
++  esac
++
++  dnl if given with a prefix, we set -L and -I based on that
++  if test -n "$PREFIX_PSL"; then
++    LD_PSL=-L${PREFIX_PSL}/lib$libsuff
++    CPP_PSL=-I${PREFIX_PSL}/include
++  fi
++
++  LDFLAGS="$LDFLAGS $LD_PSL"
++  CPPFLAGS="$CPPFLAGS $CPP_PSL"
++  LIBS="$LIB_PSL $LIBS"
++
++  AC_CHECK_LIB(psl, psl_builtin,
++    [
++     AC_CHECK_HEADERS(libpsl.h,
++        curl_psl_msg="enabled"
++        LIBPSL_ENABLED=1
++        AC_DEFINE(USE_LIBPSL, 1, [if libpsl is in use])
++        AC_SUBST(USE_LIBPSL, [1])
++     )
++    ],
++      dnl not found, revert back to clean variables
++      LDFLAGS=$CLEANLDFLAGS
++      CPPFLAGS=$CLEANCPPFLAGS
++      LIBS=$CLEANLIBS
+   )
++
++  if test X"$OPT_LIBPSL" != Xoff &&
++     test "$LIBPSL_ENABLED" != "1"; then
++    AC_MSG_ERROR([libpsl libs and/or directories were not found where specified!])
++  fi
+ fi
+ AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])
+ 

+ 2 - 0
package/libcurl/libcurl.mk

@@ -14,6 +14,8 @@ LIBCURL_LICENSE = curl
 LIBCURL_LICENSE_FILES = COPYING
 LIBCURL_CPE_ID_VENDOR = haxx
 LIBCURL_INSTALL_STAGING = YES
+# 0001-configure.ac-find-libpsl-with-pkg-config.patch
+LIBCURL_AUTORECONF = YES
 
 # We disable NTLM delegation to winbinds ntlm_auth ('--disable-ntlm-wb')
 # support because it uses fork(), which doesn't work on non-MMU platforms.