All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1
@ 2022-07-21 16:10 Baruch Siach via buildroot
  2022-07-23 11:49 ` Arnout Vandecappelle
  2022-08-12 15:11 ` Peter Korsgaard
  0 siblings, 2 replies; 3+ messages in thread
From: Baruch Siach via buildroot @ 2022-07-21 16:10 UTC (permalink / raw)
  To: buildroot; +Cc: Matt Weber

On platform that do not provide __atomic_exchange_1(), and when
libatomic is not available (e.g., threads support disabled) link of
libcurl.so fails. To solve this use an indirect way to make HAVE_ATOMIC
undefined. Add an upstream patch for checking the stdatomic.h header,
and seed the 'no' answer.

Fixes:
http://autobuild.buildroot.net/results/8f695d4dbb91cfde8e93ab38e837b0a0042b986b/
http://autobuild.buildroot.net/results/3b4712b0ace52da1650e88cdaafb6a20be135464/

Cc: Matt Weber <matthew.weber@collins.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 ...for-the-stdatomic.h-header-in-config.patch | 70 +++++++++++++++++++
 package/libcurl/libcurl.mk                    |  6 ++
 2 files changed, 76 insertions(+)
 create mode 100644 package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch

diff --git a/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch b/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch
new file mode 100644
index 000000000000..083238819b1b
--- /dev/null
+++ b/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch
@@ -0,0 +1,70 @@
+From a68074b5db2a1fb637853b808e5b263c2ce9cbdd Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Tue, 28 Jun 2022 08:37:22 +0200
+Subject: [PATCH] configure: check for the stdatomic.h header in configure
+
+... and only set HAVE_ATOMIC if that header exists since we use
+typedefes set in it.
+
+Reported-by: Ryan Schmidt
+Fixes #9059
+Closes #9060
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+Upstream status: commit a68074b5db2a1fb637853b808e5b263c2ce9cbdd
+
+ m4/curl-functions.m4 | 36 +++++++++++++++++++-----------------
+ 1 file changed, 19 insertions(+), 17 deletions(-)
+
+diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
+index ec406f56aed8..f3e12a53a9fd 100644
+--- a/m4/curl-functions.m4
++++ b/m4/curl-functions.m4
+@@ -6570,24 +6570,26 @@ AC_DEFUN([CURL_COVERAGE],[
+ ])
+ 
+ dnl CURL_ATOMIC
+-dnl --------------------------------------------------
+-dnl Check if _Atomic works
++dnl -------------------------------------------------------------
++dnl Check if _Atomic works. But only check if stdatomic.h exists.
+ dnl
+ AC_DEFUN([CURL_ATOMIC],[
+-  AC_MSG_CHECKING([if _Atomic is available])
+-  AC_COMPILE_IFELSE([
+-    AC_LANG_PROGRAM([[
+-      $curl_includes_unistd
+-    ]],[[
+-      _Atomic int i = 0;
+-    ]])
+-  ],[
+-    AC_MSG_RESULT([yes])
+-    AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
+-      [Define to 1 if you have _Atomic support.])
+-    tst_atomic="yes"
+-  ],[
+-    AC_MSG_RESULT([no])
+-    tst_atomic="no"
++  AC_CHECK_HEADERS(stdatomic.h, [
++    AC_MSG_CHECKING([if _Atomic is available])
++    AC_COMPILE_IFELSE([
++      AC_LANG_PROGRAM([[
++        $curl_includes_unistd
++      ]],[[
++        _Atomic int i = 0;
++      ]])
++    ],[
++      AC_MSG_RESULT([yes])
++      AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
++        [Define to 1 if you have _Atomic support.])
++      tst_atomic="yes"
++    ],[
++      AC_MSG_RESULT([no])
++      tst_atomic="no"
++    ])
+   ])
+ ])
+-- 
+2.35.1
+
diff --git a/package/libcurl/libcurl.mk b/package/libcurl/libcurl.mk
index 5dc4eebefa49..ab2fd75276b2 100644
--- a/package/libcurl/libcurl.mk
+++ b/package/libcurl/libcurl.mk
@@ -15,6 +15,8 @@ LIBCURL_LICENSE_FILES = COPYING
 LIBCURL_CPE_ID_VENDOR = haxx
 LIBCURL_CPE_ID_PRODUCT = libcurl
 LIBCURL_INSTALL_STAGING = YES
+# We are patching configure.ac
+LIBCURL_AUTORECONF = YES
 
 # We disable NTLM support because it uses fork(), which doesn't work
 # on non-MMU platforms. Moreover, this authentication method is
@@ -36,6 +38,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
 LIBCURL_CONF_OPTS += LIBS=-latomic
 endif
 
+ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_1),)
+LIBCURL_CONF_ENV += ac_cv_header_stdatomic_h=no
+endif
+
 ifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y)
 LIBCURL_CONF_OPTS += --enable-verbose
 else
-- 
2.35.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1
  2022-07-21 16:10 [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1 Baruch Siach via buildroot
@ 2022-07-23 11:49 ` Arnout Vandecappelle
  2022-08-12 15:11 ` Peter Korsgaard
  1 sibling, 0 replies; 3+ messages in thread
From: Arnout Vandecappelle @ 2022-07-23 11:49 UTC (permalink / raw)
  To: Baruch Siach, buildroot; +Cc: Matt Weber



On 21/07/2022 18:10, Baruch Siach via buildroot wrote:
> On platform that do not provide __atomic_exchange_1(), and when
> libatomic is not available (e.g., threads support disabled) link of
> libcurl.so fails. To solve this use an indirect way to make HAVE_ATOMIC
> undefined. Add an upstream patch for checking the stdatomic.h header,
> and seed the 'no' answer.
> 
> Fixes:
> http://autobuild.buildroot.net/results/8f695d4dbb91cfde8e93ab38e837b0a0042b986b/
> http://autobuild.buildroot.net/results/3b4712b0ace52da1650e88cdaafb6a20be135464/
> 
> Cc: Matt Weber <matthew.weber@collins.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>   ...for-the-stdatomic.h-header-in-config.patch | 70 +++++++++++++++++++
>   package/libcurl/libcurl.mk                    |  6 ++
>   2 files changed, 76 insertions(+)
>   create mode 100644 package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch
> 
> diff --git a/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch b/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch
> new file mode 100644
> index 000000000000..083238819b1b
> --- /dev/null
> +++ b/package/libcurl/0002-configure-check-for-the-stdatomic.h-header-in-config.patch
> @@ -0,0 +1,70 @@
> +From a68074b5db2a1fb637853b808e5b263c2ce9cbdd Mon Sep 17 00:00:00 2001
> +From: Daniel Stenberg <daniel@haxx.se>
> +Date: Tue, 28 Jun 2022 08:37:22 +0200
> +Subject: [PATCH] configure: check for the stdatomic.h header in configure
> +
> +... and only set HAVE_ATOMIC if that header exists since we use
> +typedefes set in it.
> +
> +Reported-by: Ryan Schmidt
> +Fixes #9059
> +Closes #9060
> +
> +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> +---
> +Upstream status: commit a68074b5db2a1fb637853b808e5b263c2ce9cbdd
> +
> + m4/curl-functions.m4 | 36 +++++++++++++++++++-----------------
> + 1 file changed, 19 insertions(+), 17 deletions(-)
> +
> +diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
> +index ec406f56aed8..f3e12a53a9fd 100644
> +--- a/m4/curl-functions.m4
> ++++ b/m4/curl-functions.m4
> +@@ -6570,24 +6570,26 @@ AC_DEFUN([CURL_COVERAGE],[
> + ])
> +
> + dnl CURL_ATOMIC
> +-dnl --------------------------------------------------
> +-dnl Check if _Atomic works
> ++dnl -------------------------------------------------------------
> ++dnl Check if _Atomic works. But only check if stdatomic.h exists.
> + dnl
> + AC_DEFUN([CURL_ATOMIC],[
> +-  AC_MSG_CHECKING([if _Atomic is available])
> +-  AC_COMPILE_IFELSE([
> +-    AC_LANG_PROGRAM([[
> +-      $curl_includes_unistd
> +-    ]],[[
> +-      _Atomic int i = 0;
> +-    ]])
> +-  ],[
> +-    AC_MSG_RESULT([yes])
> +-    AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
> +-      [Define to 1 if you have _Atomic support.])
> +-    tst_atomic="yes"
> +-  ],[
> +-    AC_MSG_RESULT([no])
> +-    tst_atomic="no"
> ++  AC_CHECK_HEADERS(stdatomic.h, [
> ++    AC_MSG_CHECKING([if _Atomic is available])
> ++    AC_COMPILE_IFELSE([
> ++      AC_LANG_PROGRAM([[
> ++        $curl_includes_unistd
> ++      ]],[[
> ++        _Atomic int i = 0;
> ++      ]])
> ++    ],[
> ++      AC_MSG_RESULT([yes])
> ++      AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
> ++        [Define to 1 if you have _Atomic support.])
> ++      tst_atomic="yes"
> ++    ],[
> ++      AC_MSG_RESULT([no])
> ++      tst_atomic="no"
> ++    ])
> +   ])
> + ])
> +--
> +2.35.1
> +
> diff --git a/package/libcurl/libcurl.mk b/package/libcurl/libcurl.mk
> index 5dc4eebefa49..ab2fd75276b2 100644
> --- a/package/libcurl/libcurl.mk
> +++ b/package/libcurl/libcurl.mk
> @@ -15,6 +15,8 @@ LIBCURL_LICENSE_FILES = COPYING
>   LIBCURL_CPE_ID_VENDOR = haxx
>   LIBCURL_CPE_ID_PRODUCT = libcurl
>   LIBCURL_INSTALL_STAGING = YES
> +# We are patching configure.ac
> +LIBCURL_AUTORECONF = YES
>   
>   # We disable NTLM support because it uses fork(), which doesn't work
>   # on non-MMU platforms. Moreover, this authentication method is
> @@ -36,6 +38,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
>   LIBCURL_CONF_OPTS += LIBS=-latomic
>   endif
>   
> +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_1),)
> +LIBCURL_CONF_ENV += ac_cv_header_stdatomic_h=no

  I've added a comment to explain why this is needed, and applied to master, thanks.

  Regards,
  Arnout

> +endif
> +
>   ifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y)
>   LIBCURL_CONF_OPTS += --enable-verbose
>   else
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1
  2022-07-21 16:10 [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1 Baruch Siach via buildroot
  2022-07-23 11:49 ` Arnout Vandecappelle
@ 2022-08-12 15:11 ` Peter Korsgaard
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2022-08-12 15:11 UTC (permalink / raw)
  To: Baruch Siach via buildroot; +Cc: buildroot, Matt Weber

>>>>> "Baruch" == Baruch Siach via buildroot <buildroot@buildroot.org> writes:

 > On platform that do not provide __atomic_exchange_1(), and when
 > libatomic is not available (e.g., threads support disabled) link of
 > libcurl.so fails. To solve this use an indirect way to make HAVE_ATOMIC
 > undefined. Add an upstream patch for checking the stdatomic.h header,
 > and seed the 'no' answer.

 > Fixes:
 > http://autobuild.buildroot.net/results/8f695d4dbb91cfde8e93ab38e837b0a0042b986b/
 > http://autobuild.buildroot.net/results/3b4712b0ace52da1650e88cdaafb6a20be135464/

 > Cc: Matt Weber <matthew.weber@collins.com>
 > Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Committed to 2022.05.x and 2022.02.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-08-12 15:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-21 16:10 [Buildroot] [PATCH] package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1 Baruch Siach via buildroot
2022-07-23 11:49 ` Arnout Vandecappelle
2022-08-12 15:11 ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.