guix_mirror_bot pushed a commit to branch core-packages-team in repository guix.
commit 23cca09b70a21faf931436fa0cc8f62ccd5844f7 Author: Zheng Junjie <z572@z572.online> AuthorDate: Tue Jun 24 23:35:41 2025 +0800 gnu: qemu: fix build with glibc-2.41. * gnu/packages/patches/qemu-glibc-2.41.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/virtualization.scm (qemu): Use it. Change-Id: I54d71f35c311798d43cf7f4a73fe7bfd8e054c59 --- gnu/local.mk | 1 + gnu/packages/patches/qemu-glibc-2.41.patch | 52 ++++++++++++++++++++++++++++++ gnu/packages/virtualization.scm | 3 +- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/gnu/local.mk b/gnu/local.mk index 4ad4938c58..697c4c1d00 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2187,6 +2187,7 @@ dist_patch_DATA = \ %D%/packages/patches/qemu-disable-migration-test.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ %D%/packages/patches/qemu-glibc-2.30.patch \ + %D%/packages/patches/qemu-glibc-2.41.patch \ %D%/packages/patches/qemu-fix-agent-paths.patch \ %D%/packages/patches/qrcodegen-cpp-cmake.patch \ %D%/packages/patches/qtbase-absolute-runpath.patch \ diff --git a/gnu/packages/patches/qemu-glibc-2.41.patch b/gnu/packages/patches/qemu-glibc-2.41.patch new file mode 100644 index 0000000000..56beab690e --- /dev/null +++ b/gnu/packages/patches/qemu-glibc-2.41.patch @@ -0,0 +1,52 @@ +from https://gitlab.com/qemu-project/qemu/-/commit/27a8d899c7a100fd5aa040a8b993bb257687c393 + +From 27a8d899c7a100fd5aa040a8b993bb257687c393 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.k...@gmail.com> +Date: Fri, 7 Feb 2025 16:09:20 +0000 +Subject: [PATCH] linux-user: Do not define struct sched_attr if libc headers + do + +glibc 2.41+ has added [1] definitions for sched_setattr and +sched_getattr functions and struct sched_attr. Therefore, it needs +to be checked for here as well before defining sched_attr, to avoid +a compilation failure. + +Define sched_attr conditionally only when SCHED_ATTR_SIZE_VER0 is +not defined. + +[1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 + +Signed-off-by: Khem Raj <raj.k...@gmail.com> +Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2799 +Cc: qemu-sta...@nongnu.org +Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> +Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> +--- + linux-user/syscall.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/linux-user/syscall.c b/linux-user/syscall.c +index 6ee02383daf..df5ed18062c 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -360,7 +360,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len, + #define __NR_sys_sched_setaffinity __NR_sched_setaffinity + _syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len, + unsigned long *, user_mask_ptr); +-/* sched_attr is not defined in glibc */ ++/* sched_attr is not defined in glibc < 2.41 */ ++#ifndef SCHED_ATTR_SIZE_VER0 + struct sched_attr { + uint32_t size; + uint32_t sched_policy; +@@ -373,6 +374,7 @@ struct sched_attr { + uint32_t sched_util_min; + uint32_t sched_util_max; + }; ++#endif + #define __NR_sys_sched_getattr __NR_sched_getattr + _syscall4(int, sys_sched_getattr, pid_t, pid, struct sched_attr *, attr, + unsigned int, size, unsigned int, flags); +-- +GitLab + diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 480aa10639..42ebb3d5b0 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -199,7 +199,8 @@ (patches (search-patches "qemu-build-info-manual.patch" "qemu-disable-bios-tables-test.patch" "qemu-disable-migration-test.patch" - "qemu-fix-agent-paths.patch")) + "qemu-fix-agent-paths.patch" + "qemu-glibc-2.41.patch")) (modules '((guix build utils))) (snippet '(begin