From: Alexander Graf <agraf@csgraf.de> To: qemu-devel@nongnu.org Cc: Peter Maydell <peter.maydell@linaro.org>, Eduardo Habkost <ehabkost@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <r.bolshakov@yadro.com>, qemu-arm@nongnu.org, Frank Yang <lfy@google.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Collingbourne <pcc@google.com> Subject: [PATCH v6 01/11] hvf: Add hypervisor entitlement to output binaries Date: Wed, 20 Jan 2021 23:44:34 +0100 Message-ID: <20210120224444.71840-2-agraf@csgraf.de> (raw) In-Reply-To: <20210120224444.71840-1-agraf@csgraf.de> 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 3d889857a0..c667d64498 100644 --- a/meson.build +++ b/meson.build @@ -2146,9 +2146,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), @@ -2156,7 +2161,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)
next prev parent reply index Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-20 22:44 [PATCH v6 00/11] hvf: Implement Apple Silicon Support Alexander Graf 2021-01-20 22:44 ` Alexander Graf [this message] 2021-02-23 11:56 ` [PATCH v6 01/11] hvf: Add hypervisor entitlement to output binaries Akihiko Odaki 2021-02-23 15:07 ` Paolo Bonzini 2021-02-25 0:06 ` [PATCH] hvf: Sign the code after installation Akihiko Odaki 2021-02-25 13:48 ` Paolo Bonzini 2021-02-26 4:58 ` Akihiko Odaki 2021-01-20 22:44 ` [PATCH v6 02/11] hvf: x86: Remove unused definitions Alexander Graf 2021-01-21 7:27 ` Philippe Mathieu-Daudé 2021-02-09 10:07 ` Roman Bolshakov 2021-01-20 22:44 ` [PATCH v6 03/11] hvf: Move common code out Alexander Graf 2021-01-21 7:26 ` Philippe Mathieu-Daudé 2021-01-28 15:23 ` Peter Maydell 2021-01-20 22:44 ` [PATCH v6 04/11] hvf: Introduce hvf vcpu struct Alexander Graf 2021-01-20 22:44 ` [PATCH v6 05/11] arm: Set PSCI to 0.2 for HVF Alexander Graf 2021-01-28 15:25 ` Peter Maydell 2021-01-20 22:44 ` [PATCH v6 06/11] hvf: Simplify post reset/init/loadvm hooks Alexander Graf 2021-01-28 15:28 ` Peter Maydell 2021-02-10 21:34 ` Alexander Graf 2021-01-20 22:44 ` [PATCH v6 07/11] hvf: Add Apple Silicon support Alexander Graf 2021-01-28 15:52 ` Peter Maydell 2021-02-10 22:20 ` Alexander Graf 2021-02-10 22:39 ` Peter Maydell 2021-02-11 13:06 ` Alexander Graf 2021-02-11 13:16 ` Peter Maydell 2021-01-20 22:44 ` [PATCH v6 08/11] arm: Add Hypervisor.framework build target Alexander Graf 2021-01-28 16:00 ` Peter Maydell 2021-01-20 22:44 ` [PATCH v6 09/11] arm/hvf: Add a WFI handler Alexander Graf 2021-01-28 16:25 ` Peter Maydell 2021-02-10 20:25 ` Peter Collingbourne 2021-02-10 22:17 ` Peter Maydell 2021-02-11 0:33 ` Alexander Graf 2021-03-21 16:28 ` Alexander Graf 2021-01-20 22:44 ` [PATCH v6 10/11] hvf: arm: Add support for GICv3 Alexander Graf 2021-01-28 16:40 ` Peter Maydell 2021-03-21 16:36 ` Alexander Graf 2021-01-20 22:44 ` [PATCH v6 11/11] hvf: arm: Implement -cpu host Alexander Graf 2021-01-28 16:55 ` Peter Maydell 2021-01-20 23:03 ` [PATCH v6 00/11] hvf: Implement Apple Silicon Support no-reply 2021-01-28 16:55 ` Stefan Weil 2021-01-28 16:59 ` Peter Maydell 2021-01-28 17:12 ` Roman Bolshakov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210120224444.71840-2-agraf@csgraf.de \ --to=agraf@csgraf.de \ --cc=dirty@apple.com \ --cc=ehabkost@redhat.com \ --cc=lfy@google.com \ --cc=pbonzini@redhat.com \ --cc=pcc@google.com \ --cc=peter.maydell@linaro.org \ --cc=qemu-arm@nongnu.org \ --cc=qemu-devel@nongnu.org \ --cc=r.bolshakov@yadro.com \ --cc=richard.henderson@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
QEMU-Devel Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/qemu-devel/0 qemu-devel/git/0.git git clone --mirror https://lore.kernel.org/qemu-devel/1 qemu-devel/git/1.git git clone --mirror https://lore.kernel.org/qemu-devel/2 qemu-devel/git/2.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 qemu-devel qemu-devel/ https://lore.kernel.org/qemu-devel \ qemu-devel@nongnu.org public-inbox-index qemu-devel Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.nongnu.qemu-devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git