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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.