From c2ee3456c5f23447d56074ae449f9d59a5a9bc53 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 24 Mar 2023 17:15:02 +0000 Subject: [PATCH] glibc: Fix runtime linker path chaos Some architectures have a specific path for their runtime linker hardcoded and in order to avoid installing them into /lib or /lib64 instead of /usr/lib or /usr/lib64, we are adding artificial provides. Signed-off-by: Michael Tremer --- glibc/glibc.nm | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/glibc/glibc.nm b/glibc/glibc.nm index 3b1362d4d..b86d06a83 100644 --- a/glibc/glibc.nm +++ b/glibc/glibc.nm @@ -5,7 +5,7 @@ name = glibc version = 2.37 -release = 5 +release = 6 maintainer = Michael Tremer groups = System/Base @@ -52,6 +52,9 @@ build # Disable LTO LTO_CFLAGS = + # Path to put the runtime linker + rtlddir = %{libdir} + configure_options = \ --build=%{DISTRO_BUILDTARGET} \ --prefix=/usr \ @@ -73,28 +76,26 @@ build if "%{DISTRO_ARCH}" == "aarch64" configure_options += \ --enable-memory-tagging + + # The runtime linker on aarch64 for whatever braindead reason is in /usr/lib + rtlddir = %{prefix}/lib + + # Runtime Linker + rtld = /lib/ld-linux-aarch64.so.1 end if "%{DISTRO_ARCH}" == "x86_64" configure_options += \ --enable-cet + + # Runtime Linker + rtld = /lib64/ld-linux-x86-64.so.2 end install # Install everything make install install_root=%{BUILDROOT} \ - rtlddir=%{libdir} rootsbindir=%{sbindir} slibdir=%{libdir} - - if [ "%{DISTRO_ARCH}" = "aarch64" ]; then - # On aarch64, we did link various binaries against - # an incorrect linker in /lib. In order to migrate - # away from this, we are creating a symlink which - # can hopefully go after we drop the bootstrap repositories. - mkdir -pv %{BUILDROOT}%{prefix}/lib - ln -svf --relative \ - %{BUILDROOT}%{libdir}/ld-linux-aarch64.so.1 \ - %{BUILDROOT}%{prefix}/lib/ld-linux-aarch64.so.1 - fi + rtlddir=%{rtlddir} rootsbindir=%{sbindir} slibdir=%{libdir} # Locales mkdir -pv %{BUILDROOT}/usr/lib/locale @@ -141,9 +142,9 @@ end packages package glibc - if "%{DISTRO_ARCH}" == "aarch64" - provides += /lib/ld-linux-aarch64.so.1 - end + # Export the path to the runtime linker which is actually + # installed into /usr, but is being searched for elsewhere + provides += %{rtld} requires tzdata -- 2.47.3