From 04be5ced7efb8838821a16c78af4ad91ce38fa5a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 31 May 2021 18:34:55 +0200 Subject: [PATCH] qemu: fix build w/glibc-2.33 --- pkgs/applications/virtualization/qemu/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 7fd01a8ffa95..df0e54798c53 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -114,6 +114,18 @@ stdenv.mkDerivation rec { # This means `-accel hvf` is broken for now, on aarch64-darwin only. substituteInPlace meson.build \ --replace 'if exe_sign' 'if false' + + # glibc 2.33 compat fix: if `has_statx = true` is set, `tools/virtiofsd/passthrough_ll.c` will + # rely on `stx_mnt_id`[1] which is not part of glibc's `statx`-struct definition. + # + # `has_statx` will be set to `true` if a simple C program which uses a few `statx` + # consts & struct fields successfully compiles. It seems as this only builds on glibc-2.33 + # since most likely[2] and because of that, the problematic code-path will be used. + # + # [1] https://github.com/torvalds/linux/commit/fa2fcf4f1df1559a0a4ee0f46915b496cc2ebf60#diff-64bab5a0a3fcb55e1a6ad77b1dfab89d2c9c71a770a07ecf44e6b82aae76a03a + # [2] https://sourceware.org/git/?p=glibc.git;a=blobdiff;f=io/bits/statx-generic.h;h=c34697e3c1fd79cddd60db294302e461ed8db6e2;hp=7a09e94be2abb92d2df612090c132e686a24d764;hb=88a2cf6c4bab6e94a65e9c0db8813709372e9180;hpb=c4e4b2e149705559d28b16a9b47ba2f6142d6a6c + substituteInPlace meson.build \ + --replace 'has_statx = cc.links(statx_test)' 'has_statx = false' ''; preConfigure = ''