Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt
@ 2020-06-13 16:20 Paul Cercueil
  2020-06-14 15:00 ` Yann E. MORIN
  0 siblings, 1 reply; 4+ messages in thread
From: Paul Cercueil @ 2020-06-13 16:20 UTC (permalink / raw)
  To: buildroot

All the symbols that were previously present in libdl.so.0, libm.so.0,
libpthread.so.0 and librt.so.0 are now all packed within uClibc.

In order to keep binary compatibility with old executables, which were
dynamically linked with one of the libraries above, add symbolic links
to the uClibc shared library.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 package/uclibc/uclibc.mk | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index 3ba4589672..73664d5b0b 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -424,6 +424,10 @@ define UCLIBC_INSTALL_TARGET_CMDS
 		RUNTIME_PREFIX=/ \
 		install_runtime
 	$(UCLIBC_INSTALL_UTILS_TARGET)
+	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libdl.so.0
+	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libm.so.0
+	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libpthread.so.0
+	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/librt.so.0
 endef
 
 # STATIC has no ld* tools, only getconf
-- 
2.27.0

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

* [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt
  2020-06-13 16:20 [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt Paul Cercueil
@ 2020-06-14 15:00 ` Yann E. MORIN
  2020-06-14 17:51   ` Paul Cercueil
  0 siblings, 1 reply; 4+ messages in thread
From: Yann E. MORIN @ 2020-06-14 15:00 UTC (permalink / raw)
  To: buildroot

Paul, All,

On 2020-06-13 18:20 +0200, Paul Cercueil spake thusly:
> All the symbols that were previously present in libdl.so.0, libm.so.0,
> libpthread.so.0 and librt.so.0 are now all packed within uClibc.
> 
> In order to keep binary compatibility with old executables, which were
> dynamically linked with one of the libraries above, add symbolic links
> to the uClibc shared library.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
>  package/uclibc/uclibc.mk | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
> index 3ba4589672..73664d5b0b 100644
> --- a/package/uclibc/uclibc.mk
> +++ b/package/uclibc/uclibc.mk
> @@ -424,6 +424,10 @@ define UCLIBC_INSTALL_TARGET_CMDS
>  		RUNTIME_PREFIX=/ \
>  		install_runtime
>  	$(UCLIBC_INSTALL_UTILS_TARGET)
> +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libdl.so.0
> +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libm.so.0
> +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libpthread.so.0
> +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/librt.so.0

This does not account for external toolchains.

I wonder how good those symlinks are anyway: uClibc has no ABI/API
stability anyway, so there are no guarantee that a program linked
against a version of uClibc will work against another version, or even
the same version that was compiled with another configuration...

And I am not sure we want to condone such a case.

My opinion would be that, if you really need those legacy symlinks,
then you should create them in a post-build script.

I'm leaving this patch opened in patchwork, so other maintainers may
reverse my position.

Regards,
Yann E. MORIN.

>  endef
>  
>  # STATIC has no ld* tools, only getconf
> -- 
> 2.27.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/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.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt
  2020-06-14 15:00 ` Yann E. MORIN
@ 2020-06-14 17:51   ` Paul Cercueil
  2020-06-21  8:51     ` Yann E. MORIN
  0 siblings, 1 reply; 4+ messages in thread
From: Paul Cercueil @ 2020-06-14 17:51 UTC (permalink / raw)
  To: buildroot

Hi Yann,

Le dim. 14 juin 2020 ? 17:00, Yann E. MORIN <yann.morin.1998@free.fr> 
a ?crit :
> Paul, All,
> 
> On 2020-06-13 18:20 +0200, Paul Cercueil spake thusly:
>>  All the symbols that were previously present in libdl.so.0, 
>> libm.so.0,
>>  libpthread.so.0 and librt.so.0 are now all packed within uClibc.
>> 
>>  In order to keep binary compatibility with old executables, which 
>> were
>>  dynamically linked with one of the libraries above, add symbolic 
>> links
>>  to the uClibc shared library.
>> 
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  ---
>>   package/uclibc/uclibc.mk | 4 ++++
>>   1 file changed, 4 insertions(+)
>> 
>>  diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
>>  index 3ba4589672..73664d5b0b 100644
>>  --- a/package/uclibc/uclibc.mk
>>  +++ b/package/uclibc/uclibc.mk
>>  @@ -424,6 +424,10 @@ define UCLIBC_INSTALL_TARGET_CMDS
>>   		RUNTIME_PREFIX=/ \
>>   		install_runtime
>>   	$(UCLIBC_INSTALL_UTILS_TARGET)
>>  +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libdl.so.0
>>  +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/libm.so.0
>>  +	ln -sf libuClibc-$(UCLIBC_VERSION).so 
>> $(TARGET_DIR)/lib/libpthread.so.0
>>  +	ln -sf libuClibc-$(UCLIBC_VERSION).so $(TARGET_DIR)/lib/librt.so.0
> 
> This does not account for external toolchains.

True.

> I wonder how good those symlinks are anyway: uClibc has no ABI/API
> stability anyway, so there are no guarantee that a program linked
> against a version of uClibc will work against another version, or even
> the same version that was compiled with another configuration...

I didn't encounter any issue, everything works fine as intended. Tested 
with a broad panel of games compiled between 2014.05 and now.

> And I am not sure we want to condone such a case.
> 
> My opinion would be that, if you really need those legacy symlinks,
> then you should create them in a post-build script.

I had them in an overlay, but then everytime I merge upstream/master 
and uclibc gets bumped, my symlinks are stale and I end up with a 
rootfs that can't run the old binaries.

Cheers,
-Paul

> I'm leaving this patch opened in patchwork, so other maintainers may
> reverse my position.
> 
> Regards,
> Yann E. MORIN.
> 
>>   endef
>> 
>>   # STATIC has no ld* tools, only getconf
>>  --
>>  2.27.0
>> 
>>  _______________________________________________
>>  buildroot mailing list
>>  buildroot at busybox.net
>>  http://lists.busybox.net/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.  |
> '------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt
  2020-06-14 17:51   ` Paul Cercueil
@ 2020-06-21  8:51     ` Yann E. MORIN
  0 siblings, 0 replies; 4+ messages in thread
From: Yann E. MORIN @ 2020-06-21  8:51 UTC (permalink / raw)
  To: buildroot

Paul, All,

On 2020-06-14 19:51 +0200, Paul Cercueil spake thusly:
> Le dim. 14 juin 2020 ? 17:00, Yann E. MORIN <yann.morin.1998@free.fr> a
> ?crit :
> >On 2020-06-13 18:20 +0200, Paul Cercueil spake thusly:
> >> All the symbols that were previously present in libdl.so.0, libm.so.0,
> >> libpthread.so.0 and librt.so.0 are now all packed within uClibc.
> >>
> >> In order to keep binary compatibility with old executables, which were
> >> dynamically linked with one of the libraries above, add symbolic links
> >> to the uClibc shared library.
> >This does not account for external toolchains.
[--SNIP--]
> >I wonder how good those symlinks are anyway: uClibc has no ABI/API
> >stability anyway, so there are no guarantee that a program linked
> >against a version of uClibc will work against another version, or even
> >the same version that was compiled with another configuration...

We've discussed this with the other maintainers, and we agree that "we do
not really care about binary-level compatibility, especially with uClibc
where it is anyway not guaranteed" (quoting the conclusion from Thomas)

The best bet for you is to remove those symlinks from your overlay, and
create them from a post-build script (where you can do the globbing you
need to find the current version string).

Or to create them as symlinks to libc.so.0 which we already create as a
sylink to the actual libuclibc-XXXX.so (but this is less flexible than a
post-build script).

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'

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

end of thread, other threads:[~2020-06-21  8:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-13 16:20 [Buildroot] [PATCH] uclibc: add simlinks from libdl/libm/libpthread/librt Paul Cercueil
2020-06-14 15:00 ` Yann E. MORIN
2020-06-14 17:51   ` Paul Cercueil
2020-06-21  8:51     ` Yann E. MORIN

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox