On Wed, 22 Feb 2023 at 15:28, Martin Jansa <martin.ja...@gmail.com> wrote: > > Hi, > > I've seen this build issue on my gentoo builder today with qemu-native, so > I've removed the stray cross.patch and sent v2. > > Then RP had good question how to reproduce this failure and I've checked when > I've updated glibc in gentoo for last time and it was a month ago (and I've > rebuilt qemu-native few time since then). > > So in the end it was linux-libc-headers upgrade to 6.2 from yesterday > (sys-kernel/linux-headers-6.2 in gentoo) which caused this for me (if I > downgrade to 6.1 I can build qemu-native again even without this patch). > > Joel: Should I send v3 with updated commit message or will you do it?
Thanks for picking this one up. Please continue the good work. Cheers, Joel > > Regards, > > On Wed, Feb 22, 2023 at 4:00 PM Martin Jansa via lists.openembedded.org > <Martin.Jansa=gmail....@lists.openembedded.org> wrote: >> >> From: Joel Stanley <j...@jms.id.au> >> >> When building native qemu with glibc 2.36 (including latest changes from >> the glibc stable branch), qemu fails to build: >> >> In file included from /usr/include/linux/btrfs.h:29, >> from ../qemu-7.2.0/linux-user/syscall.c:165: >> /usr/include/linux/fs.h:50:8: error: redefinition of ‘struct >> file_clone_range’ >> 50 | struct file_clone_range { >> | ^~~~~~~~~~~~~~~~ >> ../qemu-7.2.0/linux-user/syscall.c:129:8: note: originally defined here >> 129 | struct file_clone_range { >> | ^~~~~~~~~~~~~~~~ >> >> Backport changes to linux-user that remove the local copy of struct >> file_clone_range. >> >> Patches from >> https://lore.kernel.org/qemu-devel/20230110174901.2580297-1-berra...@redhat.com/ >> >> Signed-off-by: Joel Stanley <j...@jms.id.au> >> Tested-by: Martin Jansa <martin.ja...@gmail.com> >> --- >> meta/recipes-devtools/qemu/qemu.inc | 2 + >> ...er-add-more-compat-ioctl-definitions.patch | 69 ++++++++++++++++ >> ...r-fix-compat-with-glibc-2.36-sys-mou.patch | 78 +++++++++++++++++++ >> 3 files changed, 149 insertions(+) >> create mode 100644 >> meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch >> create mode 100644 >> meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch >> >> diff --git a/meta/recipes-devtools/qemu/qemu.inc >> b/meta/recipes-devtools/qemu/qemu.inc >> index 92828e8f2d..1e768b560d 100644 >> --- a/meta/recipes-devtools/qemu/qemu.inc >> +++ b/meta/recipes-devtools/qemu/qemu.inc >> @@ -30,6 +30,8 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ >> >> file://0001-contrib-vhost-user-blk-Replace-lseek64-with-lseek.patch \ >> >> file://0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch \ >> >> file://0001-configure-Fix-check-tcg-not-executing-any-tests.patch \ >> + >> file://0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch \ >> + >> file://0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch \ >> " >> UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" >> >> diff --git >> a/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch >> >> b/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch >> new file mode 100644 >> index 0000000000..cd8121fed1 >> --- /dev/null >> +++ >> b/meta/recipes-devtools/qemu/qemu/0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch >> @@ -0,0 +1,69 @@ >> +From afa96c55f2c270405de8984e2466067bbb44c0e4 Mon Sep 17 00:00:00 2001 >> +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berra...@redhat.com> >> +Date: Tue, 10 Jan 2023 12:49:00 -0500 >> +Subject: [PATCH] Revert "linux-user: add more compat ioctl definitions" >> +MIME-Version: 1.0 >> +Content-Type: text/plain; charset=UTF-8 >> +Content-Transfer-Encoding: 8bit >> + >> +This reverts commit c5495f4ecb0cdaaf2e9dddeb48f1689cdb520ca0. >> + >> +glibc has fixed (in 2.36.9000-40-g774058d729) the problem >> +that caused a clash when both sys/mount.h annd linux/mount.h >> +are included, and backported this to the 2.36 stable release >> +too: >> + >> + >> https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E >> + >> +It is saner for QEMU to remove the workaround it applied for >> +glibc 2.36 and expect distros to ship the 2.36 maint release >> +with the fix. This avoids needing to add a further workaround >> +to QEMU to deal with the fact that linux/brtfs.h now also pulls >> +in linux/mount.h via linux/fs.h since Linux 6.1 >> + >> +Upstream-Status: Backport from v8.0 (master) >> + >> +Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> >> +Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> >> +Link: https://lore.kernel.org/r/20230110174901.2580297-2-berra...@redhat.com >> +Signed-off-by: Joel Stanley <j...@jms.id.au> >> +--- >> + linux-user/syscall.c | 25 ------------------------- >> + 1 file changed, 25 deletions(-) >> + >> +diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> +index f95a6161e..510de8edc 100644 >> +--- a/linux-user/syscall.c >> ++++ b/linux-user/syscall.c >> +@@ -111,31 +111,6 @@ >> + #define FS_IOC32_SETFLAGS _IOW('f', 2, int) >> + #define FS_IOC32_GETVERSION _IOR('v', 1, int) >> + #define FS_IOC32_SETVERSION _IOW('v', 2, int) >> +- >> +-#define BLKGETSIZE64 _IOR(0x12,114,size_t) >> +-#define BLKDISCARD _IO(0x12,119) >> +-#define BLKIOMIN _IO(0x12,120) >> +-#define BLKIOOPT _IO(0x12,121) >> +-#define BLKALIGNOFF _IO(0x12,122) >> +-#define BLKPBSZGET _IO(0x12,123) >> +-#define BLKDISCARDZEROES _IO(0x12,124) >> +-#define BLKSECDISCARD _IO(0x12,125) >> +-#define BLKROTATIONAL _IO(0x12,126) >> +-#define BLKZEROOUT _IO(0x12,127) >> +- >> +-#define FIBMAP _IO(0x00,1) >> +-#define FIGETBSZ _IO(0x00,2) >> +- >> +-struct file_clone_range { >> +- __s64 src_fd; >> +- __u64 src_offset; >> +- __u64 src_length; >> +- __u64 dest_offset; >> +-}; >> +- >> +-#define FICLONE _IOW(0x94, 9, int) >> +-#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) >> +- >> + #else >> + #include <linux/fs.h> >> + #endif >> diff --git >> a/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch >> >> b/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch >> new file mode 100644 >> index 0000000000..d754f21ad4 >> --- /dev/null >> +++ >> b/meta/recipes-devtools/qemu/qemu/0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch >> @@ -0,0 +1,78 @@ >> +From e95c0a42940ca1cf763ca3374b36a9be030039d7 Mon Sep 17 00:00:00 2001 >> +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berra...@redhat.com> >> +Date: Tue, 10 Jan 2023 12:49:01 -0500 >> +Subject: [PATCH] Revert "linux-user: fix compat with glibc >= 2.36 >> + sys/mount.h" >> +MIME-Version: 1.0 >> +Content-Type: text/plain; charset=UTF-8 >> +Content-Transfer-Encoding: 8bit >> + >> +This reverts commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532. >> + >> +glibc has fixed (in 2.36.9000-40-g774058d729) the problem >> +that caused a clash when both sys/mount.h annd linux/mount.h >> +are included, and backported this to the 2.36 stable release >> +too: >> + >> + >> https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E >> + >> +It is saner for QEMU to remove the workaround it applied for >> +glibc 2.36 and expect distros to ship the 2.36 maint release >> +with the fix. This avoids needing to add a further workaround >> +to QEMU to deal with the fact that linux/brtfs.h now also pulls >> +in linux/mount.h via linux/fs.h since Linux 6.1 >> + >> +Upstream-Status: Backport from v8.0 (master) >> + >> +Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> >> +Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> >> +Link: https://lore.kernel.org/r/20230110174901.2580297-3-berra...@redhat.com >> +Signed-off-by: Joel Stanley <j...@jms.id.au> >> +--- >> + linux-user/syscall.c | 18 ------------------ >> + meson.build | 2 -- >> + 2 files changed, 20 deletions(-) >> + >> +diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> +index 510de8edc..13a67b84b 100644 >> +--- a/linux-user/syscall.c >> ++++ b/linux-user/syscall.c >> +@@ -95,25 +95,7 @@ >> + #include <linux/soundcard.h> >> + #include <linux/kd.h> >> + #include <linux/mtio.h> >> +- >> +-#ifdef HAVE_SYS_MOUNT_FSCONFIG >> +-/* >> +- * glibc >= 2.36 linux/mount.h conflicts with sys/mount.h, >> +- * which in turn prevents use of linux/fs.h. So we have to >> +- * define the constants ourselves for now. >> +- */ >> +-#define FS_IOC_GETFLAGS _IOR('f', 1, long) >> +-#define FS_IOC_SETFLAGS _IOW('f', 2, long) >> +-#define FS_IOC_GETVERSION _IOR('v', 1, long) >> +-#define FS_IOC_SETVERSION _IOW('v', 2, long) >> +-#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap) >> +-#define FS_IOC32_GETFLAGS _IOR('f', 1, int) >> +-#define FS_IOC32_SETFLAGS _IOW('f', 2, int) >> +-#define FS_IOC32_GETVERSION _IOR('v', 1, int) >> +-#define FS_IOC32_SETVERSION _IOW('v', 2, int) >> +-#else >> + #include <linux/fs.h> >> +-#endif >> + #include <linux/fd.h> >> + #if defined(CONFIG_FIEMAP) >> + #include <linux/fiemap.h> >> +diff --git a/meson.build b/meson.build >> +index e44432370..f37ba4114 100644 >> +--- a/meson.build >> ++++ b/meson.build >> +@@ -2032,8 +2032,6 @@ config_host_data.set('HAVE_OPTRESET', >> + cc.has_header_symbol('getopt.h', 'optreset')) >> + config_host_data.set('HAVE_IPPROTO_MPTCP', >> + cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) >> +-config_host_data.set('HAVE_SYS_MOUNT_FSCONFIG', >> +- cc.has_header_symbol('sys/mount.h', >> 'FSCONFIG_SET_FLAG')) >> + >> + # has_member >> + config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID', >> -- >> 2.39.2 >> >> >> >>
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#177592): https://lists.openembedded.org/g/openembedded-core/message/177592 Mute This Topic: https://lists.openembedded.org/mt/97161162/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-