> -----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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to