All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Cc: Andrey Smirnov <andrew.smirnov@gmail.com>, buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH v3, 1/1] package/zstd: fix build without threads
Date: Sun, 12 Jun 2022 19:13:18 +0200	[thread overview]
Message-ID: <20220612171318.GH427639@scaer> (raw)
In-Reply-To: <20220612160217.2210177-1-fontaine.fabrice@gmail.com>

Fabrice, All,

On 2022-06-12 18:02 +0200, Fabrice Fontaine spake thusly:
> Move libzstd.pc in ZSTD_BUILD_LIBS so it will be suffixed by -nomt
> without threads. As a result, libzstd.pc will not contain -pthread in
> Libs.Private which will avoid the following static build failure with
> zchunk) raised since commit 0f0e913f10caf21f23c2e46f210519a7a3bc0b32:
> 
> /home/buildroot/autobuild/instance-2/output-1/host/bin/aarch64_be-buildroot-linux-uclibc-gcc  -o src/unzck src/unzck.p/unzck.c.o src/unzck.p/util_common.c.o -Wl,--as-needed -Wl,--no-undefined -static -Wl,--start-group src/lib/libzck.a -largp /home/buildroot/autobuild/instance-2/output-1/host/aarch64_be-buildroot-linux-uclibc/sysroot/usr/lib/libzstd.a -pthread /home/buildroot/autobuild/instance-2/output-1/host/aarch64_be-buildroot-linux-uclibc/sysroot/usr/lib/libssl.a /home/buildroot/autobuild/instance-2/output-1/host/aarch64_be-buildroot-linux-uclibc/sysroot/usr/lib/libcrypto.a -Wl,--end-group
> /home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/aarch64_be-buildroot-linux-uclibc/10.3.0/../../../../aarch64_be-buildroot-linux-uclibc/bin/ld: cannot find -lpthread
> 
> Fixes:
>  - http://autobuild.buildroot.org/results/481d1979920daaecac48dec763151e124651740f

So, I was very curious how the weird buildsystem for zstd would cope,
and I am afraid it does not cope well:

    $ wget -O .config 'http://autobuild.buildroot.org/results/481d1979920daaecac48dec763151e124651740f/config'
    $ make menuconfig
        -> switch to a bootlin toolchain (uClibc only, similar to the
           failing build)
    $ make zstd
    $ cat output/host/aarch64_be-buildroot-linux-uclibc/sysroot/usr/lib/pkgconfig/libzstd.pc
    #   ZSTD - standard compression algorithm
    #   Copyright (C) 2014-2016, Yann Collet, Facebook
    #   BSD 2-Clause License
    #   (http://www.opensource.org/licenses/bsd-license.php)

    prefix=/usr
    exec_prefix=${prefix}
    includedir=${prefix}/include
    libdir=${exec_prefix}/lib

    Name: zstd
    Description: fast lossless compression algorithm library
    URL: http://www.zstd.net/
    Version: 1.5.2
    Libs: -L${libdir} -lzstd
    Libs.private: -pthread
    Cflags: -I${includedir}

So, we still have -pthread in Libs.Private, which goes contrary to what
you wrote in the commit message...

And sure enough, the build still fails:

    $ make zchunk
    [success]

Wait, what?

Hold on a sec... What happens without your patch applied?

    $ make clean
    $ make zstd
    $ cat output/host/aarch64_be-buildroot-linux-uclibc/sysroot/usr/lib/pkgconfig/libzstd.pc
    #   ZSTD - standard compression algorithm
    #   Copyright (C) 2014-2016, Yann Collet, Facebook
    #   BSD 2-Clause License
    #   (http://www.opensource.org/licenses/bsd-license.php)

    prefix=/usr
    exec_prefix=${prefix}
    includedir=${prefix}/include
    libdir=${exec_prefix}/lib

    Name: zstd
    Description: fast lossless compression algorithm library
    URL: http://www.zstd.net/
    Version: 1.5.2
    Libs: -L${libdir} -lzstd
    Libs.private: -pthread
    Cflags: -I${includedir}

    $ make zchunk
    [success]

Damned... :-/

Regards,
Yann E. MORIN.

> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> ---
> Changes v2 -> v3 (after review of Yann E. Morin):
>  - Drop ZSTD_BUILD_LIBS overrides
> 
> Changes v1 -> v2:
>  - Fix the following check-package error:
>    package/zstd/zstd.mk:67: conditional override of variable ZSTD_BUILD_LIBS
>    package/zstd/zstd.mk:70: conditional override of variable ZSTD_BUILD_LIBS
> 
>  package/zstd/zstd.mk | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/package/zstd/zstd.mk b/package/zstd/zstd.mk
> index bef46deae8..75eb6ecc07 100644
> --- a/package/zstd/zstd.mk
> +++ b/package/zstd/zstd.mk
> @@ -38,14 +38,15 @@ endif
>  # zstd will append -O3 after $(CFLAGS), use MOREFLAGS to override again
>  ZSTD_OPTS += MOREFLAGS="$(TARGET_OPTIMIZATION) -D_GNU_SOURCE"
>  
> +ZSTD_BUILD_LIBS_BASENAMES = libzstd.pc
>  ifeq ($(BR2_STATIC_LIBS),y)
> -ZSTD_BUILD_LIBS = libzstd.a
> +ZSTD_BUILD_LIBS_BASENAMES += libzstd.a
>  ZSTD_INSTALL_LIBS = install-static
>  else ifeq ($(BR2_SHARED_LIBS),y)
> -ZSTD_BUILD_LIBS = lib
> +ZSTD_BUILD_LIBS_BASENAMES += lib
>  ZSTD_INSTALL_LIBS = install-shared
>  else
> -ZSTD_BUILD_LIBS = lib
> +ZSTD_BUILD_LIBS_BASENAMES += lib
>  ZSTD_INSTALL_LIBS = install-static install-shared
>  endif
>  
> @@ -63,17 +64,20 @@ endif
>  # purpose.
>  ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
>  ZSTD_OPTS += HAVE_THREAD=1
> -ZSTD_BUILD_LIBS := $(addsuffix -mt,$(ZSTD_BUILD_LIBS))
> +ZSTD_BUILD_LIBS_THREAD_SUFFIX = -mt
>  else
>  ZSTD_OPTS += HAVE_THREAD=0
> -ZSTD_BUILD_LIBS := $(addsuffix -nomt,$(ZSTD_BUILD_LIBS))
> +ZSTD_BUILD_LIBS_THREAD_SUFFIX = -nomt
>  endif
>  # check-package disable OverriddenVariable - override intended
> -ZSTD_BUILD_LIBS := $(addsuffix -release,$(ZSTD_BUILD_LIBS))
> +ZSTD_BUILD_LIBS = \
> +	$(addsuffix -release, \
> +		$(addsuffix $(ZSTD_BUILD_LIBS_THREAD_SUFFIX), \
> +			$(ZSTD_BUILD_LIBS_BASENAMES)))
>  
>  define ZSTD_BUILD_CMDS
>  	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
> -		-C $(@D)/lib $(ZSTD_BUILD_LIBS) libzstd.pc
> +		-C $(@D)/lib $(ZSTD_BUILD_LIBS)
>  	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
>  		-C $(@D)/programs $(ZSTD_BUILD_PROG_TARGET)
>  endef
> -- 
> 2.35.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2022-06-12 17:13 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-12 16:02 [Buildroot] [PATCH v3, 1/1] package/zstd: fix build without threads Fabrice Fontaine
2022-06-12 17:13 ` Yann E. MORIN [this message]
2022-06-12 17:40   ` Yann E. MORIN
2022-06-12 18:13   ` Fabrice Fontaine
2022-06-12 18:47     ` Yann E. MORIN
2022-06-12 19:36 ` Yann E. MORIN
2022-06-19 13:40 ` Peter Korsgaard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220612171318.GH427639@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=andrew.smirnov@gmail.com \
    --cc=buildroot@buildroot.org \
    --cc=fontaine.fabrice@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.