[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 01/11] hvf: Add hypervisor entitlement to output binaries
From: |
Alexander Graf |
Subject: |
[PATCH v5 01/11] hvf: Add hypervisor entitlement to output binaries |
Date: |
Fri, 11 Dec 2020 16:12:50 +0100 |
In macOS 11, QEMU only gets access to Hypervisor.framework if it has the
respective entitlement. Add an entitlement template and automatically self
sign and apply the entitlement in the build.
Signed-off-by: Alexander Graf <agraf@csgraf.de>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Tested-by: Roman Bolshakov <r.bolshakov@yadro.com>
---
v1 -> v2:
- Make safe to ctrl-C
v3 -> v4:
- Remove unused exe_full variable
- Reuse exe_name variable
---
accel/hvf/entitlements.plist | 8 ++++++++
meson.build | 29 +++++++++++++++++++++++++----
scripts/entitlement.sh | 13 +++++++++++++
3 files changed, 46 insertions(+), 4 deletions(-)
create mode 100644 accel/hvf/entitlements.plist
create mode 100755 scripts/entitlement.sh
diff --git a/accel/hvf/entitlements.plist b/accel/hvf/entitlements.plist
new file mode 100644
index 0000000000..154f3308ef
--- /dev/null
+++ b/accel/hvf/entitlements.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.hypervisor</key>
+ <true/>
+</dict>
+</plist>
diff --git a/meson.build b/meson.build
index 9ea05ab49f..0c59bea475 100644
--- a/meson.build
+++ b/meson.build
@@ -1849,9 +1849,14 @@ foreach target : target_dirs
}]
endif
foreach exe: execs
- emulators += {exe['name']:
- executable(exe['name'], exe['sources'],
- install: true,
+ exe_name = exe['name']
+ exe_sign = 'CONFIG_HVF' in config_target
+ if exe_sign
+ exe_name += '-unsigned'
+ endif
+
+ emulator = executable(exe_name, exe['sources'],
+ install: not exe_sign,
c_args: c_args,
dependencies: arch_deps + deps + exe['dependencies'],
objects: lib.extract_all_objects(recursive: true),
@@ -1859,7 +1864,23 @@ foreach target : target_dirs
link_depends: [block_syms, qemu_syms] + exe.get('link_depends',
[]),
link_args: link_args,
gui_app: exe['gui'])
- }
+
+ if exe_sign
+ emulators += {exe['name'] : custom_target(exe['name'],
+ install: true,
+ install_dir: get_option('bindir'),
+ depends: emulator,
+ output: exe['name'],
+ command: [
+ meson.current_source_dir() / 'scripts/entitlement.sh',
+ meson.current_build_dir() / exe_name,
+ meson.current_build_dir() / exe['name'],
+ meson.current_source_dir() /
'accel/hvf/entitlements.plist'
+ ])
+ }
+ else
+ emulators += {exe['name']: emulator}
+ endif
if 'CONFIG_TRACE_SYSTEMTAP' in config_host
foreach stp: [
diff --git a/scripts/entitlement.sh b/scripts/entitlement.sh
new file mode 100755
index 0000000000..c540fa6435
--- /dev/null
+++ b/scripts/entitlement.sh
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+#
+# Helper script for the build process to apply entitlements
+
+SRC="$1"
+DST="$2"
+ENTITLEMENT="$3"
+
+trap 'rm "$DST.tmp"' exit
+cp -af "$SRC" "$DST.tmp"
+codesign --entitlements "$ENTITLEMENT" --force -s - "$DST.tmp"
+mv "$DST.tmp" "$DST"
+trap '' exit
--
2.24.3 (Apple Git-128)
- [PATCH v5 00/11] hvf: Implement Apple Silicon Support, Alexander Graf, 2020/12/11
- [PATCH v5 02/11] hvf: x86: Remove unused definitions, Alexander Graf, 2020/12/11
- [PATCH v5 01/11] hvf: Add hypervisor entitlement to output binaries,
Alexander Graf <=
- [PATCH v5 04/11] hvf: Introduce hvf vcpu struct, Alexander Graf, 2020/12/11
- [PATCH v5 03/11] hvf: Move common code out, Alexander Graf, 2020/12/11
- [PATCH v5 05/11] arm: Set PSCI to 0.2 for HVF, Alexander Graf, 2020/12/11
- [PATCH v5 08/11] arm: Add Hypervisor.framework build target, Alexander Graf, 2020/12/11
- [PATCH v5 06/11] hvf: Simplify post reset/init/loadvm hooks, Alexander Graf, 2020/12/11
- [PATCH v5 10/11] hvf: arm: Add support for GICv3, Alexander Graf, 2020/12/11
- [PATCH v5 07/11] hvf: Add Apple Silicon support, Alexander Graf, 2020/12/11
- [PATCH v5 09/11] arm/hvf: Add a WFI handler, Alexander Graf, 2020/12/11
- [PATCH v5 11/11] hvf: arm: Implement -cpu host, Alexander Graf, 2020/12/11