* Re: [Buildroot] [PATCH 1/1] package/tcl: add mandatory dependency to zlib
2023-09-17 13:01 [Buildroot] [PATCH 1/1] package/tcl: add mandatory dependency to zlib Julien Olivain
@ 2023-09-17 13:31 ` Yann E. MORIN
2023-09-25 5:27 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Yann E. MORIN @ 2023-09-17 13:31 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
Julien, All,
On 2023-09-17 15:01 +0200, Julien Olivain spake thusly:
> Tcl changed its zlib handling in upstream commit [1]. Before this
> commit, the HAVE_ZLIB macro was defined only if a zlib headers/library
> was found. After that commit, the HAVE_ZLIB macro is unconditionally
> defined. The only change is that: if a working zlib library is found
> in the toolchain sysroot, it is used. Otherwise, the package will use
> a shipped version in [2]. See also [3] and [4].
>
> This tcl commit is included in Buildroot since commit 7fda943b43
> "tcl: bump to version 8.6.1".
>
> This behavior leads to runtime failures, when the package is compiled
> with toolchains including zlib in their sysroot. This is because at
> configuration time, the package will detect zlib in the sysroot and
> link against it, but the library files won't be installed on target.
>
> This happen to be the case with Bootlin toolchains such as [5]. This
I would think that this is a bug that those toolchains have zlib in
their sysroot.
Indeed, Buildroot only supports "pure" toolchains, i.e. those that only
have the libraries from the toolchain components: the C library, and the
gcc runtime.
But those toolchains also bundle gdbserver, and zlib is a dependency of
gdb. Thomas believes this is a spurious dependency, and I think that's
correct, and that we need to fix it.
Still, this change is correct, not because the toolchain has zlib, but
because we do not want to use bundled versions where possible.
So, I slightly expanded the commit log with that extra information.
Applied to master, thanks.
Regards,
Yann E. MORIN.
> toolchain also happen to be the one used in basic configurations
> of the runtime test infrastructure (this issue was found while
> attempting to write a runtime test for tcl).
>
> In such cases, running "tclsh" command fails with error message:
>
> tclsh: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
>
> libtcl library also miss its dependency.
>
> ldd /usr/lib/libtcl8.6.so
> libz.so.1 => not found
> libm.so.6 => /lib/libm.so.6 (0xb6dad000)
> libc.so.6 => /lib/libc.so.6 (0xb6c65000)
> /lib/ld-linux.so.3 (0xb6f6c000)
>
> This commit fixes this issue by adding zlib as a mandatory dependency.
>
> [1] https://github.com/tcltk/tcl/commit/6f3dea45cee94f12ffa0b2acbbdb3eedbc01807b
> [2] https://github.com/tcltk/tcl/tree/core-8-6-13/compat/zlib
> [3] https://github.com/tcltk/tcl/blob/core-8-6-13/unix/configure.in#L172
> [4] https://github.com/tcltk/tcl/blob/core-8-6-13/unix/Makefile.in#L240
> [5] https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2023.08-1.tar.bz2
>
> Signed-off-by: Julien Olivain <ju.o@free.fr>
> ---
> Patch tested on branch master at commit 7691377 with commands:
>
> make check-package
> ...
> 0 warnings generated
>
> utils/test-pkg -p tcl
> ...
> 6 builds, 2 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed
>
> Also runtime-tested manually with the case described in the
> commit log. I'll send an automated runtime test later...
> ---
> package/tcl/Config.in | 1 +
> package/tcl/tcl.mk | 3 ++-
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/package/tcl/Config.in b/package/tcl/Config.in
> index f1fa0541a1..adb9f22488 100644
> --- a/package/tcl/Config.in
> +++ b/package/tcl/Config.in
> @@ -10,6 +10,7 @@ config BR2_PACKAGE_TCL
> # See this mailing list thread:
> # http://lists.busybox.net/pipermail/buildroot/2015-March/121198.html
> depends on !BR2_STATIC_LIBS
> + select BR2_PACKAGE_ZLIB
> help
> TCL (Tool Command Language) is a simple textual language.
>
> diff --git a/package/tcl/tcl.mk b/package/tcl/tcl.mk
> index 843d58a4ae..1943bc7b27 100644
> --- a/package/tcl/tcl.mk
> +++ b/package/tcl/tcl.mk
> @@ -75,7 +75,8 @@ TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA
>
> TCL_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) \
> $(if $(BR2_PACKAGE_MYSQL),mysql) \
> - $(if $(BR2_PACKAGE_POSTGRESQL),postgresql)
> + $(if $(BR2_PACKAGE_POSTGRESQL),postgresql) \
> + zlib
>
> $(eval $(autotools-package))
> $(eval $(host-autotools-package))
> --
> 2.41.0
>
> _______________________________________________
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/tcl: add mandatory dependency to zlib
2023-09-17 13:01 [Buildroot] [PATCH 1/1] package/tcl: add mandatory dependency to zlib Julien Olivain
2023-09-17 13:31 ` Yann E. MORIN
@ 2023-09-25 5:27 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2023-09-25 5:27 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
>>>>> "Julien" == Julien Olivain <ju.o@free.fr> writes:
> Tcl changed its zlib handling in upstream commit [1]. Before this
> commit, the HAVE_ZLIB macro was defined only if a zlib headers/library
> was found. After that commit, the HAVE_ZLIB macro is unconditionally
> defined. The only change is that: if a working zlib library is found
> in the toolchain sysroot, it is used. Otherwise, the package will use
> a shipped version in [2]. See also [3] and [4].
> This tcl commit is included in Buildroot since commit 7fda943b43
> "tcl: bump to version 8.6.1".
> This behavior leads to runtime failures, when the package is compiled
> with toolchains including zlib in their sysroot. This is because at
> configuration time, the package will detect zlib in the sysroot and
> link against it, but the library files won't be installed on target.
> This happen to be the case with Bootlin toolchains such as [5]. This
> toolchain also happen to be the one used in basic configurations
> of the runtime test infrastructure (this issue was found while
> attempting to write a runtime test for tcl).
> In such cases, running "tclsh" command fails with error message:
> tclsh: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
> libtcl library also miss its dependency.
> ldd /usr/lib/libtcl8.6.so
> libz.so.1 => not found
> libm.so.6 => /lib/libm.so.6 (0xb6dad000)
> libc.so.6 => /lib/libc.so.6 (0xb6c65000)
> /lib/ld-linux.so.3 (0xb6f6c000)
> This commit fixes this issue by adding zlib as a mandatory dependency.
> [1] https://github.com/tcltk/tcl/commit/6f3dea45cee94f12ffa0b2acbbdb3eedbc01807b
> [2] https://github.com/tcltk/tcl/tree/core-8-6-13/compat/zlib
> [3] https://github.com/tcltk/tcl/blob/core-8-6-13/unix/configure.in#L172
> [4] https://github.com/tcltk/tcl/blob/core-8-6-13/unix/Makefile.in#L240
> [5] https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2023.08-1.tar.bz2
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Committed to 2023.02.x, 2023.05.x and 2023.08.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