> -----Original Message-----
> From: [email protected]
> <[email protected]> On Behalf Of Johannes Pointner via
> lists.openembedded.org
> Sent: den 1 december 2023 11:54
> To: [email protected]
> Cc: Johannes Pointner <[email protected]>
> Subject: [OE-core] [PATCH] ldconfig-native: Add usrmerge support
>
> If DISTRO_FEATURE usrmerge is enabled, SLIBDIR is just a symlink to LIBDIR,
> therefore don't add SLIBDIR for parsing in this case.
>
> Signed-off-by: Johannes Pointner <[email protected]>
> ---
> .../ldconfig-add-usrmerge-support.patch | 37 +++++++++++++++++++
> .../glibc/ldconfig-native_2.12.1.bb | 1 +
> 2 files changed, 38 insertions(+)
> create mode 100644
> meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig-add-usrmerge-support.patch
>
> diff --git
> a/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig-add-usrmerge-support.patch
>
> b/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig-add-usrmerge-support.patch
> new file mode 100644
> index 0000000000..3041d433fd
> --- /dev/null
> +++
> b/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig-add-usrmerge-support.patch
> @@ -0,0 +1,37 @@
> +From 6e543f39f6bec6eb2e02eea02029c7f4ec533b66 Mon Sep 17 00:00:00 2001
> +From: Johannes Pointner <[email protected]>
> +Date: Fri, 1 Dec 2023 11:02:39 +0100
> +Subject: [PATCH] ldconfig: add usrmerge support
> +
> +Check whether SLIBDIR is a symlink, which is the case if usrmerge
> +is enabled, and if so, ignore it.
> +
> +Upstream-Status: Inappropriate [embedded specific]
> +
> +Signed-off-by: Johannes Pointner <[email protected]>
> +---
> + ldconfig.c | 8 +++++++-
> + 1 file changed, 7 insertions(+), 1 deletion(-)
> +
> +diff --git a/ldconfig.c b/ldconfig.c
> +index e826410..72ac67b 100644
> +--- a/ldconfig.c
> ++++ b/ldconfig.c
> +@@ -1371,10 +1371,16 @@ main (int argc, char **argv)
> +
> + if (!opt_only_cline)
> + {
> ++ struct stat buf;
> ++ int ret;
> + parse_conf (config_file, true);
> +
> + /* Always add the standard search paths. */
> +- add_system_dir (SLIBDIR);
> ++ /* Check whether SLIBDIR is a symlink, which is the case if usrmerge
> ++ is enabled, and if so, ignore it. */
> ++ ret = lstat(SLIBDIR ,&buf);
> ++ if(ret == -1 || !S_ISLNK(buf.st_mode))
> ++ add_system_dir (SLIBDIR);
> + if (strcmp (SLIBDIR, LIBDIR))
> + add_system_dir (LIBDIR);
Rather than blindly assuming that SLIBDIR being a symbolic link
means it is a link to LIBDIR, I would recommend to change the
strcmp() above to compare the paths after running them through
realpath(). E.g., something like:
add_system_dir (LIBDIR);
if (strcmp (LIBDIR, SLIBDIR)) {
const char *libdir = realpath (LIBDIR, NULL);
const char *slibdir = realpath (SLIBDIR, NULL);
if (strcmp(libdir, slibdir))
add_system_dir (SLIBDIR);
free (slibdir);
free (libdir);
}
This of course assumes LIBDIR is not a symbolic link to SLIBDIR,
but I doubt anyone does that...
> + add_system_dir (SLIBDIR32);
> diff --git a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> index 4db67c3ad4..85fc87257d 100644
> --- a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> +++ b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> @@ -16,6 +16,7 @@ SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
> file://add-64-bit-flag-for-ELF64-entries.patch \
> file://no-aux-cache.patch \
> file://add-riscv-support.patch \
> + file://ldconfig-add-usrmerge-support.patch \
> "
>
>
> --
> 2.43.0
//Peter
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#191934):
https://lists.openembedded.org/g/openembedded-core/message/191934
Mute This Topic: https://lists.openembedded.org/mt/102912756/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-