* [Buildroot] [PATCH 1/1] package/tcl: add mandatory dependency to zlib
@ 2023-09-17 13:01 Julien Olivain
2023-09-17 13:31 ` Yann E. MORIN
2023-09-25 5:27 ` Peter Korsgaard
0 siblings, 2 replies; 3+ messages in thread
From: Julien Olivain @ 2023-09-17 13:01 UTC (permalink / raw)
To: buildroot; +Cc: Julien Olivain
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>
---
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
^ permalink raw reply related [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: 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
end of thread, other threads:[~2023-09-25 5:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox