Can you format the patch to match the style and also create a PR on
githut for cross-localedef?

On Wed, Feb 12, 2025 at 10:42 PM Xiaofeng Yuan
<[email protected]> wrote:
>
> compile glibc-locale triger error, the error info
> is "cross-localedef-native: /xxx/glibc-locale/2.40+git/
> locale-tree/Makefile is on different filesystem than rest
> (use -f option to override)." But check the file, find it's
> filesystem is same as the rest. Now use the f_type instead of
> dev_t to check the filesystem.
>
> Change-Id: I62d840dd74467e8e1afd6e322b05ce012d35458c
>
> Signed-off-by: Xiaofeng Yuan <[email protected]>
>
> CC: Jason Wessel <[email protected]>
> CC: Khem Raj <[email protected]>
> Change-Id: I0cf8f143dc4a38fc1835439f4d5e7641832b7a81
> ---
>  .../glibc/cross-localedef-native_2.40.bb      |  1 +
>  ...ixup-hardlink-filesystem-check-error.patch | 78 +++++++++++++++++++
>  2 files changed, 79 insertions(+)
>  create mode 100644 
> meta/recipes-core/glibc/glibc/0001-localedef-fixup-hardlink-filesystem-check-error.patch
>
> diff --git a/meta/recipes-core/glibc/cross-localedef-native_2.40.bb 
> b/meta/recipes-core/glibc/cross-localedef-native_2.40.bb
> index fed6e4ea97..15204f3744 100644
> --- a/meta/recipes-core/glibc/cross-localedef-native_2.40.bb
> +++ b/meta/recipes-core/glibc/cross-localedef-native_2.40.bb
> @@ -32,6 +32,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
>             
> file://0014-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
>             
> file://0017-Replace-echo-with-printf-builtin-in-nscd-init-script.patch \
>             
> file://0019-timezone-Make-shell-interpreter-overridable-in-tzsel.patch \
> +           file://0001-localedef-fixup-hardlink-filesystem-check-error.patch 
> \
>             "
>  # Makes for a rather long rev (22 characters), but...
>  #
> diff --git 
> a/meta/recipes-core/glibc/glibc/0001-localedef-fixup-hardlink-filesystem-check-error.patch
>  
> b/meta/recipes-core/glibc/glibc/0001-localedef-fixup-hardlink-filesystem-check-error.patch
> new file mode 100644
> index 0000000000..a7b3e01259
> --- /dev/null
> +++ 
> b/meta/recipes-core/glibc/glibc/0001-localedef-fixup-hardlink-filesystem-check-error.patch
> @@ -0,0 +1,78 @@
> +From af6fa1c52d1f83f7a16adf6fa6241269e0034b0b Mon Sep 17 00:00:00 2001
> +From: Xiaofeng Yuan <[email protected]>
> +Date: Thu, 13 Feb 2025 11:46:59 +0800
> +Subject: [PATCH] cross-localedef-native : fixup filesystem check error
> +
> +Since ordinary files and directories within the same
> +directory but on the same filesystem may have different dev_t,
> +using dev_t to determine whether files (including directories)
> +belong to the same file system is unreliable and may lead to
> +incorrect results. To address this issue, statfs is used to
> +retrieve the filesystem information, allowing the determination
> +of whether files belong to the same file system.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Xiaofeng Yuan <[email protected]>
> +---
> + locale/programs/cross-localedef-hardlink.c | 32 +++++++++++++---------
> + 1 file changed, 19 insertions(+), 13 deletions(-)
> +
> +diff --git a/locale/programs/cross-localedef-hardlink.c 
> b/locale/programs/cross-localedef-hardlink.c
> +index 726e6dd948..a51f076923 100644
> +--- a/locale/programs/cross-localedef-hardlink.c
> ++++ b/locale/programs/cross-localedef-hardlink.c
> +@@ -42,6 +42,7 @@
> + #include "xalloc.h"
> + //#include "nls.h"
> + //#include "closestream.h"
> ++#include <sys/statfs.h>
> +
> + #define NHASH   (1<<17)  /* Must be a power of 2! */
> + #define NBUF    64
> +@@ -93,6 +94,7 @@ struct hardlink_ctl {
> +               no_link:1,
> +               content_only:1,
> +               force:1;
> ++      long f_type;
> + };
> + /* ctl is in global scope due use in atexit() */
> + struct hardlink_ctl global_ctl;
> +@@ -185,20 +187,24 @@ static void growstr(struct hardlink_dynstr *str, 
> size_t newlen)
> +
> + static void process_path(struct hardlink_ctl *ctl, const char *name)
> + {
> +-      struct stat st, st2, st3;
> +-      const size_t namelen = strlen(name);
> ++        struct stat st, st2, st3;
> ++        struct statfs stfs;
> ++        const size_t namelen = strlen(name);
> ++
> ++        ctl->nobjects++;
> ++        if (lstat(name, &st))
> ++                return;
> ++        if (statfs(name, &stfs))
> ++                return;
> ++
> ++        if (stfs.f_type != ctl->f_type && !ctl->force) {
> ++                if (ctl->f_type)
> ++                        errx(EXIT_FAILURE,
> ++                             ("%s is on different filesystem than the rest "
> ++                               "(use -f option to override)."), name);
> ++                ctl->f_type = stfs.f_type;
> ++        }
> +
> +-      ctl->nobjects++;
> +-      if (lstat(name, &st))
> +-              return;
> +-
> +-      if (st.st_dev != ctl->dev && !ctl->force) {
> +-              if (ctl->dev)
> +-                      errx(EXIT_FAILURE,
> +-                           ("%s is on different filesystem than the rest "
> +-                             "(use -f option to override)."), name);
> +-              ctl->dev = st.st_dev;
> +-      }
> +       if (S_ISDIR(st.st_mode)) {
> +               struct hardlink_dir *dp = xmalloc(add3(sizeof(*dp), namelen, 
> 1));
> +               memcpy(dp->name, name, namelen + 1);
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211304): 
https://lists.openembedded.org/g/openembedded-core/message/211304
Mute This Topic: https://lists.openembedded.org/mt/111158902/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to