Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Korsgaard <peter@korsgaard.com>
To: Norbert Lange <nolange79@gmail.com>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH] package/util-linux: fix build with old glibc
Date: Wed, 06 Sep 2023 19:24:13 +0200	[thread overview]
Message-ID: <8734zri5aa.fsf@48ers.dk> (raw)
In-Reply-To: <CADYdroOi_QjoOorN6wji5Y4_sUMUe_=YSK42Eik0S8mqHiTosA@mail.gmail.com> (Norbert Lange's message of "Mon, 4 Sep 2023 14:48:14 +0200")

>>>>> "Norbert" == Norbert Lange <nolange79@gmail.com> writes:

 > Am Mo., 4. Sept. 2023 um 14:46 Uhr schrieb Norbert Lange <nolange79@gmail.com>:
 >> 
 >> The build still fails with older glibc versions (2.28 for example).
 >> Apply an upstream fix from
 >> https://github.com/util-linux/util-linux/issues/2448.
 >> 
 >> Signed-off-by: Norbert Lange <nolange79@gmail.com>
 >> ---
 >> .../0001-libmount-fix-statx-includes.patch    | 127 ++++++++++++++++++
 >> .../0001-libmount-fix-statx-includes.patch    |   1 +
 >> 2 files changed, 128 insertions(+)
 >> create mode 100644 package/util-linux/0001-libmount-fix-statx-includes.patch
 >> create mode 120000 package/util-linux/util-linux-libs/0001-libmount-fix-statx-includes.patch
 >> 
 >> diff --git
 >> a/package/util-linux/0001-libmount-fix-statx-includes.patch
 >> b/package/util-linux/0001-libmount-fix-statx-includes.patch
 >> new file mode 100644
 >> index 0000000000..c818423769
 >> --- /dev/null
 >> +++ b/package/util-linux/0001-libmount-fix-statx-includes.patch
 >> @@ -0,0 +1,127 @@
 >> +From 7d679f29aee9f56b07bd792e07b5b4e1ca2f3fa7 Mon Sep 17 00:00:00 2001
 >> +From: Karel Zak <kzak@redhat.com>
 >> +Date: Wed, 23 Aug 2023 11:50:37 +0200
 >> +Subject: [PATCH] libmount: fix statx() includes
 >> +
 >> +Using sys/stat.h and linux/stat is too tricky.h together. It seems
 >> +better to rely on libc and use sys/stat.h only. Users affected
 >> +by old libc must update to use recent util-linux.
 >> +
 >> +Fixes: https://github.com/util-linux/util-linux/issues/2448
 >> +Signed-off-by: Karel Zak <kzak@redhat.com>
 >> +Signed-off-by: Norbert Lange <nolange79@gmail.com>
 >> +---
 >> + configure.ac              | 5 ++---
 >> + include/fileutils.h       | 4 ++--
 >> + libmount/src/hook_mount.c | 2 +-
 >> + libmount/src/utils.c      | 2 +-
 >> + meson.build               | 5 ++---
 >> + 5 files changed, 8 insertions(+), 10 deletions(-)
 >> +
 >> +diff --git a/configure.ac b/configure.ac
 >> +index 738b369ee8..e6114aac36 100644
 >> +--- a/configure.ac
 >> ++++ b/configure.ac
 >> +@@ -326,7 +326,6 @@ AC_CHECK_HEADERS([ \
 >> +       linux/nsfs.h \
 >> +       linux/pr.h \
 >> +       linux/raw.h \
 >> +-      linux/stat.h \
 >> +       linux/securebits.h \
 >> +       linux/tiocl.h \
 >> +       linux/version.h \
 >> +@@ -518,7 +517,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 >> + ])
 >> +
 >> + AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]])
 >> +-AC_CHECK_TYPES([struct statx], [], [], [[#include <linux/stat.h>]])
 >> + AC_CHECK_TYPES([enum fsconfig_command], [], [], [[#include <linux/mount.h>]])
 >> +
 >> + AC_CHECK_MEMBERS([struct termios.c_line],,,
 >> +@@ -527,8 +525,9 @@ AC_CHECK_MEMBERS([struct termios.c_line],,,
 >> + AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,,
 >> +     [[#include <sys/stat.h>]])
 >> +
 >> ++AC_CHECK_TYPES([struct statx], [], [], [[#include <sys/stat.h>]])
 >> + AC_CHECK_MEMBERS([struct statx.stx_mnt_id],,,
 >> +-    [[#include <linux/stat.h>]])
 >> ++    [[#include <sys/stat.h>]])
 >> +
 >> + AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include <langinfo.h>]])
 >> +
 >> +diff --git a/include/fileutils.h b/include/fileutils.h
 >> +index a5fe517266..538eab0b74 100644
 >> +--- a/include/fileutils.h
 >> ++++ b/include/fileutils.h
 >> +@@ -94,13 +94,13 @@ static inline int close_range(unsigned int first, unsigned int last, int flags)
 >> + #  define HAVE_CLOSE_RANGE 1
 >> + # endif       /* SYS_close_range */
 >> +
 >> +-# if !defined(HAVE_STATX) && defined(HAVE_STRUCT_STATX) && defined(SYS_statx) && defined(HAVE_LINUX_STAT_H)
 >> +-#  include <linux/stat.h>
 >> ++# if !defined(HAVE_STATX) && defined(HAVE_STRUCT_STATX) && defined(SYS_statx)
 >> + static inline int statx(int fd, const char *restrict path, int flags,
 >> +                   unsigned int mask, struct statx *stx)
 >> + {
 >> +       return syscall(SYS_statx, fd, path, flags, mask, stx);
 >> + }
 >> ++#  define HAVE_STATX 1
 >> + # endif /* SYS_statx */
 >> +
 >> + #endif        /* HAVE_SYS_SYSCALL_H */
 >> +diff --git a/libmount/src/hook_mount.c b/libmount/src/hook_mount.c
 >> +index 056338c491..0ebb829985 100644
 >> +--- a/libmount/src/hook_mount.c
 >> ++++ b/libmount/src/hook_mount.c
 >> +@@ -294,7 +294,7 @@ static int hook_create_mount(struct libmnt_context *cxt,
 >> +               /* cleanup after fail (libmount may only try the FS type) */
 >> +               close_sysapi_fds(api);
 >> +
 >> +-#if defined(HAVE_STRUCT_STATX) && defined(HAVE_STRUCT_STATX_STX_MNT_ID)
 >> ++#if defined(HAVE_STATX) && defined(HAVE_STRUCT_STATX) && defined(HAVE_STRUCT_STATX_STX_MNT_ID)
 >> +       if (!rc && cxt->fs) {
 >> +               struct statx st;
 >> +
 >> +diff --git a/libmount/src/utils.c b/libmount/src/utils.c
 >> +index 1d3f4abcec..3817b39271 100644
 >> +--- a/libmount/src/utils.c
 >> ++++ b/libmount/src/utils.c
 >> +@@ -111,7 +111,7 @@ static int safe_stat(const char *target, struct stat *st, int nofollow)
 >> +
 >> +       memset(st, 0, sizeof(struct stat));
 >> +
 >> +-#if defined(AT_STATX_DONT_SYNC) && defined (HAVE_STRUCT_STATX)
 >> ++#if defined(HAVE_STATX) && defined(HAVE_STRUCT_STATX) && defined(AT_STATX_DONT_SYNC)
 >> +       {
 >> +               int rc;
 >> +               struct statx stx = { 0 };
 >> +diff --git a/meson.build b/meson.build
 >> +index 221ae373b6..6beb9dbaba 100644
 >> +--- a/meson.build
 >> ++++ b/meson.build
 >> +@@ -79,7 +79,7 @@ have_mountfd_api = cc.sizeof('struct mount_attr', prefix : '#include <linux/moun
 >> + conf.set('HAVE_STRUCT_MOUNT_ATTR', have_mountfd_api ? 1 : false)
 >> + conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false)
 >> +
 >> +-have_struct_statx = cc.sizeof('struct statx', prefix : '#include <linux/stat.h>') > 0
 >> ++have_struct_statx = cc.sizeof('struct statx', prefix : '#include <sys/stat.h>') > 0
 >> + conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false)
 >> +
 >> + build_libmount = not get_option('build-libmount').disabled()
 >> +@@ -177,7 +177,6 @@ headers = '''
 >> +         linux/nsfs.h
 >> +         linux/mount.h
 >> +         linux/pr.h
 >> +-        linux/stat.h
 >> +         linux/securebits.h
 >> +         linux/tiocl.h
 >> +         linux/version.h
 >> +@@ -640,7 +639,7 @@ have = cc.has_member('struct stat', 'st_mtim.tv_nsec',
 >> + conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', have ? 1 : false)
 >> +
 >> + have = cc.has_member('struct statx', 'stx_mnt_id',
 >> +-                     prefix : '#include <linux/stat.h>')
 >> ++                     prefix : '#include <sys/stat.h>')
 >> + conf.set('HAVE_STRUCT_STATX_STX_MNT_ID', have ? 1 : false)
 >> +
 >> + # replacement for AC_STRUCT_TIMEZONE
 >> diff --git
 >> a/package/util-linux/util-linux-libs/0001-libmount-fix-statx-includes.patch
 >> b/package/util-linux/util-linux-libs/0001-libmount-fix-statx-includes.patch
 >> new file mode 120000
 >> index 0000000000..bc21ebedb7
 >> --- /dev/null
 >> +++ b/package/util-linux/util-linux-libs/0001-libmount-fix-statx-includes.patch
 >> @@ -0,0 +1 @@
 >> +../0001-libmount-fix-statx-includes.patch
 >> \ No newline at end of file
 >> --
 >> 2.39.2
 >> 

 > I think this, together with the version bugfix bump to 2.39.2 should
 > end up in BR 2023.08.

Can you give some more details about why? Is this a fix for a new issue
in 2.39.2 or already in 2.39.1? What is the relation between this and
commit 898bdbca1f11f (package/util-linux: fix compile issue with older
kernel headers)?

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2023-09-06 17:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-04 12:45 [Buildroot] [PATCH] package/util-linux: fix build with old glibc Norbert Lange
2023-09-04 12:48 ` Norbert Lange
2023-09-06 17:24   ` Peter Korsgaard [this message]
2023-09-06 19:17     ` Peter Korsgaard
2023-09-06 20:12       ` Norbert Lange

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8734zri5aa.fsf@48ers.dk \
    --to=peter@korsgaard.com \
    --cc=buildroot@buildroot.org \
    --cc=nolange79@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox