diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 9839aadc9c1f..0496adb6f409 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -21,8 +21,8 @@ with stdenv.lib; let - version = "2.11.1"; - sha256 = "1jrcff0szyjxc3vywyiclwdzk0xgq4cxvjbvmcfyjcpdrq9j5pyr"; + version = "2.12.0"; + sha256 = "17377xxbmwbrnh895a108z944pqi39hzrbw4jzgj8pcipi3s3x69"; audio = optionalString (hasSuffix "linux" stdenv.system) "alsa," + optionalString pulseSupport "pa," + optionalString sdlSupport "sdl,"; @@ -69,11 +69,7 @@ stdenv.mkDerivation rec { outputs = [ "out" "ga" ]; - patches = [ ./no-etc-install.patch ./statfs-flags.patch (fetchpatch { - name = "glibc-2.27-memfd.patch"; - url = "https://git.qemu.org/?p=qemu.git;a=patch;h=75e5b70e6b5dcc4f2219992d7cffa462aa406af0"; - sha256 = "0gaz93kb33qc0jx6iphvny0yrd17i8zhcl3a9ky5ylc2idz0wiwa"; - }) ] + patches = [ ./no-etc-install.patch ] ++ optional nixosTestRunner ./force-uid0-on-9p.patch ++ optional pulseSupport ./fix-hda-recording.patch ++ optionals stdenv.hostPlatform.isMusl [ diff --git a/pkgs/applications/virtualization/qemu/statfs-flags.patch b/pkgs/applications/virtualization/qemu/statfs-flags.patch deleted file mode 100644 index 52a470a2869a..000000000000 --- a/pkgs/applications/virtualization/qemu/statfs-flags.patch +++ /dev/null @@ -1,197 +0,0 @@ -commit 909fe47c7009aa9a75fe9470c5f8d3dd5b50917a -Author: Shea Levy -Date: Sun Feb 18 13:50:11 2018 -0500 - - linux-user: Support f_flags in statfs when available. - - Signed-off-by: Shea Levy - -diff --git a/configure b/configure -index 913e14839d..52fe2bf941 100755 ---- a/configure -+++ b/configure -@@ -5303,6 +5303,22 @@ if compile_prog "" "" ; then - have_utmpx=yes - fi - -+########################################## -+# Check for newer fields of struct statfs on Linux -+ -+if test "$linux_user" = "yes"; then -+ cat > $TMPC < -+ -+int main(void) { -+ struct statfs fs; -+ fs.f_flags = 0; -+} -+EOF -+ if compile_object ; then -+ have_statfs_flags=yes -+ fi -+fi - ########################################## - # checks for sanitizers - -@@ -6518,6 +6534,10 @@ if test "$have_utmpx" = "yes" ; then - echo "HAVE_UTMPX=y" >> $config_host_mak - fi - -+if test "$have_statfs_flags" = "yes" ; then -+ echo "HAVE_STATFS_FLAGS=y" >> $config_host_mak -+fi -+ - if test "$ivshmem" = "yes" ; then - echo "CONFIG_IVSHMEM=y" >> $config_host_mak - fi -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index 82b35a6bdf..77481eca2c 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -9534,6 +9534,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, - __put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); - __put_user(stfs.f_namelen, &target_stfs->f_namelen); - __put_user(stfs.f_frsize, &target_stfs->f_frsize); -+#ifdef HAVE_STATFS_FLAGS -+ __put_user(stfs.f_flags, &target_stfs->f_flags); -+#endif - memset(target_stfs->f_spare, 0, sizeof(target_stfs->f_spare)); - unlock_user_struct(target_stfs, arg2, 1); - } -diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h -index a35c52a60a..64aa49d3c5 100644 ---- a/linux-user/syscall_defs.h -+++ b/linux-user/syscall_defs.h -@@ -362,7 +362,14 @@ struct kernel_statfs { - int f_ffree; - kernel_fsid_t f_fsid; - int f_namelen; -+#ifdef HAVE_STATFS_FLAGS -+ int f_frsize; -+ int f_flags; -+ int f_spare[4]; -+#else - int f_spare[6]; -+#endif -+ - }; - - struct target_dirent { -@@ -2223,7 +2230,12 @@ struct target_statfs { - /* Linux specials */ - target_fsid_t f_fsid; - int32_t f_namelen; -+#ifdef HAVE_STATFS_FLAGS -+ int32_t f_flags; -+ int32_t f_spare[5]; -+#else - int32_t f_spare[6]; -+#endif - }; - #else - struct target_statfs { -@@ -2239,7 +2251,12 @@ struct target_statfs { - /* Linux specials */ - target_fsid_t f_fsid; - abi_long f_namelen; -+#ifdef HAVE_STATFS_FLAGS -+ abi_long f_flags; -+ abi_long f_spare[5]; -+#else - abi_long f_spare[6]; -+#endif - }; - #endif - -@@ -2255,7 +2272,12 @@ struct target_statfs64 { - uint64_t f_bavail; - target_fsid_t f_fsid; - uint32_t f_namelen; -+#ifdef HAVE_STATFS_FLAGS -+ uint32_t f_flags; -+ uint32_t f_spare[5]; -+#else - uint32_t f_spare[6]; -+#endif - }; - #elif (defined(TARGET_PPC64) || defined(TARGET_X86_64) || \ - defined(TARGET_SPARC64) || defined(TARGET_AARCH64)) && \ -@@ -2271,7 +2293,12 @@ struct target_statfs { - target_fsid_t f_fsid; - abi_long f_namelen; - abi_long f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ abi_long f_flags; -+ abi_long f_spare[4]; -+#else - abi_long f_spare[5]; -+#endif - }; - - struct target_statfs64 { -@@ -2285,7 +2312,12 @@ struct target_statfs64 { - target_fsid_t f_fsid; - abi_long f_namelen; - abi_long f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ abi_long f_flags; -+ abi_long f_spare[4]; -+#else - abi_long f_spare[5]; -+#endif - }; - #elif defined(TARGET_S390X) - struct target_statfs { -@@ -2299,7 +2331,13 @@ struct target_statfs { - kernel_fsid_t f_fsid; - int32_t f_namelen; - int32_t f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ int32_t f_flags; -+ int32_t f_spare[4]; -+#else - int32_t f_spare[5]; -+#endif -+ - }; - - struct target_statfs64 { -@@ -2313,7 +2351,12 @@ struct target_statfs64 { - kernel_fsid_t f_fsid; - int32_t f_namelen; - int32_t f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ int32_t f_flags; -+ int32_t f_spare[4]; -+#else - int32_t f_spare[5]; -+#endif - }; - #else - struct target_statfs { -@@ -2327,7 +2370,12 @@ struct target_statfs { - target_fsid_t f_fsid; - uint32_t f_namelen; - uint32_t f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ uint32_t f_flags; -+ uint32_t f_spare[4]; -+#else - uint32_t f_spare[5]; -+#endif - }; - - struct target_statfs64 { -@@ -2341,7 +2389,12 @@ struct target_statfs64 { - target_fsid_t f_fsid; - uint32_t f_namelen; - uint32_t f_frsize; -+#ifdef HAVE_STATFS_FLAGS -+ uint32_t f_flags; -+ uint32_t f_spare[4]; -+#else - uint32_t f_spare[5]; -+#endif - }; - #endif -