diff --git a/pkgs/applications/virtualization/qemu/allow-virtfs-on-darwin.patch b/pkgs/applications/virtualization/qemu/allow-virtfs-on-darwin.patch deleted file mode 100644 index a498d309c23..00000000000 --- a/pkgs/applications/virtualization/qemu/allow-virtfs-on-darwin.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 4ca09b7cd1d42eb6b1587fed74cd4d684e31bfbe Mon Sep 17 00:00:00 2001 -From: Keno Fischer -Date: Sun, 27 Feb 2022 17:35:22 -0500 -Subject: [PATCH] 9p: darwin: meson: Allow VirtFS on Darwin - -To allow VirtFS on darwin, we need to check that pthread_fchdir_np is -available, which has only been available since macOS 10.12. - -Additionally, virtfs_proxy_helper is disabled on Darwin. This patch -series does not currently provide an implementation of the proxy-helper, -but this functionality could be implemented later on. - -Signed-off-by: Keno Fischer -[Michael Roitzsch: - Rebase for NixOS] -Signed-off-by: Michael Roitzsch -[Will Cohen: - Rebase to master] -Signed-off-by: Will Cohen -Reviewed-by: Paolo Bonzini -[Will Cohen: - Add check for pthread_fchdir_np to virtfs - - Add comments to patch commit - - Note that virtfs_proxy_helper does not work - on macOS - - Fully adjust meson virtfs error note to specify - macOS - - Rebase to master] -Signed-off-by: Will Cohen -Message-Id: <20220227223522.91937-12-wwcohen@gmail.com> -Signed-off-by: Christian Schoenebeck -Acked-by: Christian Schoenebeck ---- - fsdev/meson.build | 1 + - meson.build | 17 +++++++++++------ - 2 files changed, 12 insertions(+), 6 deletions(-) - -diff --git a/fsdev/meson.build b/fsdev/meson.build -index adf57cc43e..b632b66348 100644 ---- a/fsdev/meson.build -+++ b/fsdev/meson.build -@@ -7,6 +7,7 @@ fsdev_ss.add(when: ['CONFIG_FSDEV_9P'], if_true: files( - 'qemu-fsdev.c', - ), if_false: files('qemu-fsdev-dummy.c')) - softmmu_ss.add_all(when: 'CONFIG_LINUX', if_true: fsdev_ss) -+softmmu_ss.add_all(when: 'CONFIG_DARWIN', if_true: fsdev_ss) - - if have_virtfs_proxy_helper - executable('virtfs-proxy-helper', -diff --git a/meson.build b/meson.build -index 2265fa409a..6d73c02903 100644 ---- a/meson.build -+++ b/meson.build -@@ -1383,12 +1383,17 @@ endif - have_host_block_device = (targetos != 'darwin' or - cc.has_header('IOKit/storage/IOMedia.h')) - --have_virtfs = (targetos == 'linux' and -- have_system and -- libattr.found() and -- libcap_ng.found()) -- --have_virtfs_proxy_helper = have_virtfs and have_tools -+have_virtfs = get_option('virtfs') \ -+ .require(targetos == 'linux' or targetos == 'darwin', -+ error_message: 'virtio-9p (virtfs) requires Linux or macOS') \ -+ .require(targetos == 'linux' or cc.has_function('pthread_fchdir_np'), -+ error_message: 'virtio-9p (virtfs) on macOS requires the presence of pthread_fchdir_np') \ -+ .require(targetos == 'darwin' or (libattr.found() and libcap_ng.found()), -+ error_message: 'virtio-9p (virtfs) on Linux requires libcap-ng-devel and libattr-devel') \ -+ .disable_auto_if(not have_tools and not have_system) \ -+ .allowed() -+ -+have_virtfs_proxy_helper = targetos != 'darwin' and have_virtfs and have_tools - - if get_option('virtfs').enabled() - if not have_virtfs --- -2.35.1 - diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 68082f5de41..ac661ea330c 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -4,6 +4,7 @@ , makeWrapper, runtimeShell, removeReferencesTo , attr, libcap, libcap_ng, socat , CoreServices, Cocoa, Hypervisor, rez, setfile +, guestAgentSupport ? with stdenv.hostPlatform; isLinux || isSunOS || isWindows , numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl , seccompSupport ? stdenv.isLinux, libseccomp , alsaSupport ? lib.hasSuffix "linux" stdenv.hostPlatform.system && !nixosTestRunner @@ -40,11 +41,11 @@ stdenv.mkDerivation rec { + lib.optionalString xenSupport "-xen" + lib.optionalString hostCpuOnly "-host-cpu-only" + lib.optionalString nixosTestRunner "-for-vm-tests"; - version = "6.2.0"; + version = "7.0.0"; src = fetchurl { url= "https://download.qemu.org/qemu-${version}.tar.xz"; - sha256 = "0iavlsy9hin8k38230j8lfmyipx3965zljls1dp34mmc8n75vqb8"; + sha256 = "sha256-9rN1x5UfcoQCeYsLqrsthkeMpT1Eztvvq74cRr9G+Dk="; }; depsBuildBuild = [ buildPackages.stdenv.cc ]; @@ -82,80 +83,26 @@ stdenv.mkDerivation rec { dontUseMesonConfigure = true; # meson's configurePhase isn't compatible with qemu build - outputs = [ "out" "ga" ]; + outputs = [ "out" ] ++ lib.optional guestAgentSupport "ga"; # On aarch64-linux we would shoot over the Hydra's 2G output limit. separateDebugInfo = !(stdenv.isAarch64 && stdenv.isLinux); patches = [ ./fix-qemu-ga.patch - # MTP Devices were broken in QEMU 6.1.0, this patch fixes that. - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/9d30c78c7d3b994825cbe63fa277279ae3ef4248.patch"; - sha256 = "sha256-AChB9HMEShrM+2UW2aOT9+MqlAm568sG3HxHK3nDC/M="; - }) - # Cocoa clipboard support only works on macOS 10.14+ - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/7e3e20d89129614f4a7b2451fe321cc6ccca3b76.diff"; - sha256 = "09xz06g57wxbacic617pq9c0qb7nly42gif0raplldn5lw964xl2"; - revert = true; - }) - # 9p-darwin for 7.0 backported to 6.2.0 - # - # Can generally be removed when updating derivation to 7.0. Nine of the - # patches can be drawn directly from QEMU upstream, but the second commit - # and the eleventh commit had to be modified when rebasing back to 6.2.0. - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/e0bd743bb2dd4985791d4de880446bdbb4e04fed.patch"; - sha256 = "sha256-c6QYL3zig47fJwm6rqkqGp3E1PakVTaihvXDRebbBlQ="; - }) - ./rename-9p-util.patch - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/f41db099c71151291c269bf48ad006de9cbd9ca6.patch"; - sha256 = "sha256-70/rrhZw+02JJbJ3CoW8B1GbdM4Lwb2WkUdwstYAoIQ="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/6b3b279bd670c6a2fa23c9049820c814f0e2c846.patch"; - sha256 = "sha256-7WqklSvLirEuxTXTIMQDQhWpXnwMseJ1RumT+faq/Y8="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/67a71e3b71a2834d028031a92e76eb9444e423c6.patch"; - sha256 = "sha256-COFm/SwfJSoSl9YDpL6ceAE8CcE4mGhsGxw1HMuL++o="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/38d7fd68b0c8775b5253ab84367419621aa032e6.patch"; - sha256 = "sha256-iwGIzq9FWW6zpbDg/IKrp5OZpK9cgQqTRWWq8WBIHRQ="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/57b3910bc3513ab515296692daafd1c546f3c115.patch"; - sha256 = "sha256-ybl9+umZAcQKHYL7NkGJQC0W7bccTagA9KQiFaR2LYA="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/b5989326f558faedd2511f29459112cced2ca8f5.patch"; - sha256 = "sha256-s+O9eCgj2Ev+INjL9LY9MJBdISIdZLslI3lue2DICGM="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/029ed1bd9defa33a80bb40cdcd003699299af8db.patch"; - sha256 = "sha256-mGqcRWcEibDJdhTRrN7ZWrMuCfUWW8vWiFj7sb2/RYo="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/d3671fd972cd185a6923433aa4802f54d8b62112.patch"; - sha256 = "sha256-GUh5o7mbFTm/dm6CqcGdoMlC+YrV8RlcEwu/mxrfTzo="; - }) - # The next two commits are to make Linux v5.17 work on aarch64-darwin. These are included in QEMU v7. - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/ad99f64f1cfff7c5e7af0e697523d9b7e45423b6.patch"; - sha256 = "sha256-e6WtfQIPEiXhWucd5ab7UIoccbWEAv3bwksn4hR85CY="; - }) - (fetchpatch { - url = "https://gitlab.com/qemu-project/qemu/-/commit/7f6c295cdfeaa229c360cac9a36e4e595aa902ae.patch"; - sha256 = "sha256-mORtgfU1CYQFKO5UrXgM9cJyZxeF2bz8iAoq0UlFQeY="; - }) - ./allow-virtfs-on-darwin.patch + # QEMU upstream does not demand compatibility to pre-10.13, so 9p-darwin # support on nix requires utimensat fallback. The patch adding this fallback # set was removed during the process of upstreaming this functionality, and # will still be needed in nix until the macOS SDK reaches 10.13+. ./provide-fallback-for-utimensat.patch + # Cocoa clipboard support only works on macOS 10.14+ + ./revert-ui-cocoa-add-clipboard-support.patch + # Standard about panel requires AppKit and macOS 10.13+ + (fetchpatch { + url = "https://gitlab.com/qemu-project/qemu/-/commit/99eb313ddbbcf73c1adcdadceba1423b691c6d05.diff"; + sha256 = "sha256-gTRf9XENAfbFB3asYCXnw4OV4Af6VE1W56K2xpYDhgM="; + revert = true; + }) ] ++ lib.optional nixosTestRunner ./force-uid0-on-9p.patch; @@ -194,7 +141,6 @@ stdenv.mkDerivation rec { "--disable-strip" # We'll strip ourselves after separating debug info. "--enable-docs" "--enable-tools" - "--enable-guest-agent" "--localstatedir=/var" "--sysconfdir=/etc" # Always use our Meson, not the bundled version, which doesn't @@ -202,6 +148,7 @@ stdenv.mkDerivation rec { "--meson=meson" "--cross-prefix=${stdenv.cc.targetPrefix}" "--cpu=${stdenv.hostPlatform.uname.processor}" + (lib.enableFeature guestAgentSupport "guest-agent") ] ++ lib.optional numaSupport "--enable-numa" ++ lib.optional seccompSupport "--enable-seccomp" ++ lib.optional smartcardSupport "--enable-smartcard" @@ -233,7 +180,7 @@ stdenv.mkDerivation rec { postFixup = '' # the .desktop is both invalid and pointless rm -f $out/share/applications/qemu.desktop - + '' + lib.optionalString guestAgentSupport '' # move qemu-ga (guest agent) to separate output mkdir -p $ga/bin mv $out/bin/qemu-ga $ga/bin/ diff --git a/pkgs/applications/virtualization/qemu/provide-fallback-for-utimensat.patch b/pkgs/applications/virtualization/qemu/provide-fallback-for-utimensat.patch index dbc4e2b9af5..98cc09d7200 100644 --- a/pkgs/applications/virtualization/qemu/provide-fallback-for-utimensat.patch +++ b/pkgs/applications/virtualization/qemu/provide-fallback-for-utimensat.patch @@ -1,4 +1,4 @@ -From 70328c307001f4bb75d30d93c5bba3c3cd790c88 Mon Sep 17 00:00:00 2001 +From 747a741772cde6bb340eb8bdb493390280de8d16 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Sat, 16 Jun 2018 20:56:54 -0400 Subject: [PATCH] 9p: darwin: Provide fallback impl for utimensat @@ -160,7 +160,7 @@ index db451b0784..320697f347 100644 + return utimensat(dirfd, filename, times, AT_SYMLINK_NOFOLLOW); +} diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h -index 1f74d37558..a4b002d1b5 100644 +index 97e681e167..fd50d6243a 100644 --- a/hw/9pfs/9p-util.h +++ b/hw/9pfs/9p-util.h @@ -36,6 +36,12 @@ static inline int qemu_lsetxattr(const char *path, const char *name, @@ -176,14 +176,14 @@ index 1f74d37558..a4b002d1b5 100644 static inline void close_preserve_errno(int fd) { int serrno = errno; -@@ -96,6 +102,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char *filename, +@@ -98,6 +104,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char *filename, char *list, size_t size); ssize_t fremovexattrat_nofollow(int dirfd, const char *filename, const char *name); +int utimensat_nofollow(int dirfd, const char *filename, + const struct timespec times[2]); - /** + /* * Darwin has d_seekoff, which appears to function similarly to d_off. -- 2.35.1 diff --git a/pkgs/applications/virtualization/qemu/rename-9p-util.patch b/pkgs/applications/virtualization/qemu/rename-9p-util.patch deleted file mode 100644 index fe3e2d7b4b8..00000000000 --- a/pkgs/applications/virtualization/qemu/rename-9p-util.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 011b121d7f84c8974f03a81582cf1107249245bb Mon Sep 17 00:00:00 2001 -From: Keno Fischer -Date: Sun, 27 Feb 2022 17:35:13 -0500 -Subject: [PATCH] 9p: Rename 9p-util -> 9p-util-linux -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current file only has the Linux versions of these functions. -Rename the file accordingly and update the Makefile to only build -it on Linux. A Darwin version of these will follow later in the -series. - -Signed-off-by: Keno Fischer -[Michael Roitzsch: - Rebase for NixOS] -Signed-off-by: Michael Roitzsch -Signed-off-by: Will Cohen -Reviewed-by: Greg Kurz -Reviewed-by: Philippe Mathieu-Daudé -Message-Id: <20220227223522.91937-3-wwcohen@gmail.com> -Signed-off-by: Christian Schoenebeck ---- - hw/9pfs/{9p-util.c => 9p-util-linux.c} | 0 - hw/9pfs/meson.build | 2 +- - 2 files changed, 1 insertion(+), 1 deletion(-) - rename hw/9pfs/{9p-util.c => 9p-util-linux.c} (100%) - -diff --git a/hw/9pfs/9p-util.c b/hw/9pfs/9p-util-linux.c -similarity index 100% -rename from hw/9pfs/9p-util.c -rename to hw/9pfs/9p-util-linux.c -diff --git a/hw/9pfs/meson.build b/hw/9pfs/meson.build -index 99be5d9119..1b28e70040 100644 ---- a/hw/9pfs/meson.build -+++ b/hw/9pfs/meson.build -@@ -4,7 +4,6 @@ fs_ss.add(files( - '9p-posix-acl.c', - '9p-proxy.c', - '9p-synth.c', -- '9p-util.c', - '9p-xattr-user.c', - '9p-xattr.c', - '9p.c', -@@ -14,6 +13,7 @@ fs_ss.add(files( - 'coth.c', - 'coxattr.c', - )) -+fs_ss.add(when: 'CONFIG_LINUX', if_true: files('9p-util-linux.c')) - fs_ss.add(when: 'CONFIG_XEN', if_true: files('xen-9p-backend.c')) - softmmu_ss.add_all(when: 'CONFIG_FSDEV_9P', if_true: fs_ss) - --- -2.35.1 - diff --git a/pkgs/applications/virtualization/qemu/revert-ui-cocoa-add-clipboard-support.patch b/pkgs/applications/virtualization/qemu/revert-ui-cocoa-add-clipboard-support.patch new file mode 100644 index 00000000000..775066f6fdd --- /dev/null +++ b/pkgs/applications/virtualization/qemu/revert-ui-cocoa-add-clipboard-support.patch @@ -0,0 +1,208 @@ +From 19b0952b36b6b5c4bd2665cc0bd4e55a85f81b55 Mon Sep 17 00:00:00 2001 +From: Will Cohen +Date: Tue, 29 Mar 2022 14:00:56 -0400 +Subject: [PATCH] Revert "ui/cocoa: Add clipboard support" + +This reverts commit 7e3e20d89129614f4a7b2451fe321cc6ccca3b76. +--- + include/ui/clipboard.h | 2 +- + ui/clipboard.c | 2 +- + ui/cocoa.m | 121 ----------------------------------------- + 3 files changed, 2 insertions(+), 123 deletions(-) + +diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h +index ce76aa451f..c4e1dc4ff4 100644 +--- a/include/ui/clipboard.h ++++ b/include/ui/clipboard.h +@@ -269,7 +269,7 @@ void qemu_clipboard_set_data(QemuClipboardPeer *peer, + QemuClipboardInfo *info, + QemuClipboardType type, + uint32_t size, +- const void *data, ++ void *data, + bool update); + + G_DEFINE_AUTOPTR_CLEANUP_FUNC(QemuClipboardInfo, qemu_clipboard_info_unref) +diff --git a/ui/clipboard.c b/ui/clipboard.c +index 9079ef829b..6b9ed59e1b 100644 +--- a/ui/clipboard.c ++++ b/ui/clipboard.c +@@ -140,7 +140,7 @@ void qemu_clipboard_set_data(QemuClipboardPeer *peer, + QemuClipboardInfo *info, + QemuClipboardType type, + uint32_t size, +- const void *data, ++ void *data, + bool update) + { + if (!info || +diff --git a/ui/cocoa.m b/ui/cocoa.m +index c4e5468f9e..cd3bdf0cec 100644 +--- a/ui/cocoa.m ++++ b/ui/cocoa.m +@@ -28,7 +28,6 @@ + #include + + #include "qemu-common.h" +-#include "ui/clipboard.h" + #include "ui/console.h" + #include "ui/input.h" + #include "ui/kbd-state.h" +@@ -107,10 +106,6 @@ static void cocoa_switch(DisplayChangeListener *dcl, + static QemuSemaphore app_started_sem; + static bool allow_events; + +-static NSInteger cbchangecount = -1; +-static QemuClipboardInfo *cbinfo; +-static QemuEvent cbevent; +- + // Utility functions to run specified code block with iothread lock held + typedef void (^CodeBlock)(void); + typedef bool (^BoolCodeBlock)(void); +@@ -1805,105 +1800,6 @@ static void addRemovableDevicesMenuItems(void) + qapi_free_BlockInfoList(pointerToFree); + } + +-@interface QemuCocoaPasteboardTypeOwner : NSObject +-@end +- +-@implementation QemuCocoaPasteboardTypeOwner +- +-- (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSPasteboardType)type +-{ +- if (type != NSPasteboardTypeString) { +- return; +- } +- +- with_iothread_lock(^{ +- QemuClipboardInfo *info = qemu_clipboard_info_ref(cbinfo); +- qemu_event_reset(&cbevent); +- qemu_clipboard_request(info, QEMU_CLIPBOARD_TYPE_TEXT); +- +- while (info == cbinfo && +- info->types[QEMU_CLIPBOARD_TYPE_TEXT].available && +- info->types[QEMU_CLIPBOARD_TYPE_TEXT].data == NULL) { +- qemu_mutex_unlock_iothread(); +- qemu_event_wait(&cbevent); +- qemu_mutex_lock_iothread(); +- } +- +- if (info == cbinfo) { +- NSData *data = [[NSData alloc] initWithBytes:info->types[QEMU_CLIPBOARD_TYPE_TEXT].data +- length:info->types[QEMU_CLIPBOARD_TYPE_TEXT].size]; +- [sender setData:data forType:NSPasteboardTypeString]; +- [data release]; +- } +- +- qemu_clipboard_info_unref(info); +- }); +-} +- +-@end +- +-static QemuCocoaPasteboardTypeOwner *cbowner; +- +-static void cocoa_clipboard_notify(Notifier *notifier, void *data); +-static void cocoa_clipboard_request(QemuClipboardInfo *info, +- QemuClipboardType type); +- +-static QemuClipboardPeer cbpeer = { +- .name = "cocoa", +- .notifier = { .notify = cocoa_clipboard_notify }, +- .request = cocoa_clipboard_request +-}; +- +-static void cocoa_clipboard_update_info(QemuClipboardInfo *info) +-{ +- if (info->owner == &cbpeer || info->selection != QEMU_CLIPBOARD_SELECTION_CLIPBOARD) { +- return; +- } +- +- if (info != cbinfo) { +- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; +- qemu_clipboard_info_unref(cbinfo); +- cbinfo = qemu_clipboard_info_ref(info); +- cbchangecount = [[NSPasteboard generalPasteboard] declareTypes:@[NSPasteboardTypeString] owner:cbowner]; +- [pool release]; +- } +- +- qemu_event_set(&cbevent); +-} +- +-static void cocoa_clipboard_notify(Notifier *notifier, void *data) +-{ +- QemuClipboardNotify *notify = data; +- +- switch (notify->type) { +- case QEMU_CLIPBOARD_UPDATE_INFO: +- cocoa_clipboard_update_info(notify->info); +- return; +- case QEMU_CLIPBOARD_RESET_SERIAL: +- /* ignore */ +- return; +- } +-} +- +-static void cocoa_clipboard_request(QemuClipboardInfo *info, +- QemuClipboardType type) +-{ +- NSData *text; +- +- switch (type) { +- case QEMU_CLIPBOARD_TYPE_TEXT: +- text = [[NSPasteboard generalPasteboard] dataForType:NSPasteboardTypeString]; +- if (text) { +- qemu_clipboard_set_data(&cbpeer, info, type, +- [text length], [text bytes], true); +- [text release]; +- } +- break; +- default: +- break; +- } +-} +- + /* + * The startup process for the OSX/Cocoa UI is complicated, because + * OSX insists that the UI runs on the initial main thread, and so we +@@ -1938,7 +1834,6 @@ static void cocoa_clipboard_request(QemuClipboardInfo *info, + COCOA_DEBUG("Second thread: calling qemu_main()\n"); + status = qemu_main(gArgc, gArgv, *_NSGetEnviron()); + COCOA_DEBUG("Second thread: qemu_main() returned, exiting\n"); +- [cbowner release]; + exit(status); + } + +@@ -2054,18 +1949,6 @@ static void cocoa_refresh(DisplayChangeListener *dcl) + [cocoaView setAbsoluteEnabled:YES]; + }); + } +- +- if (cbchangecount != [[NSPasteboard generalPasteboard] changeCount]) { +- qemu_clipboard_info_unref(cbinfo); +- cbinfo = qemu_clipboard_info_new(&cbpeer, QEMU_CLIPBOARD_SELECTION_CLIPBOARD); +- if ([[NSPasteboard generalPasteboard] availableTypeFromArray:@[NSPasteboardTypeString]]) { +- cbinfo->types[QEMU_CLIPBOARD_TYPE_TEXT].available = true; +- } +- qemu_clipboard_update(cbinfo); +- cbchangecount = [[NSPasteboard generalPasteboard] changeCount]; +- qemu_event_set(&cbevent); +- } +- + [pool release]; + } + +@@ -2105,10 +1988,6 @@ static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts) + + // register vga output callbacks + register_displaychangelistener(&dcl); +- +- qemu_event_init(&cbevent, false); +- cbowner = [[QemuCocoaPasteboardTypeOwner alloc] init]; +- qemu_clipboard_peer_register(&cbpeer); + } + + static QemuDisplay qemu_display_cocoa = { +-- +2.35.1 +