* [PATCH] Set icon for QEMU binary on Mac OS @ 2021-07-05 13:54 Programmingkid 2021-07-05 16:56 ` Paolo Bonzini 0 siblings, 1 reply; 6+ messages in thread From: Programmingkid @ 2021-07-05 13:54 UTC (permalink / raw) To: Paolo Bonzini, QEMU devel list Hi Paolo, I was told you were the one who I should send this patch to. Please let me know if you feel otherwise. Before switching the build system over to Meson, an icon was added to the QEMU binary on Mac OS. This patch adds back that feature. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> --- meson.build | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/meson.build b/meson.build index f00b7754fd..7f534f4e75 100644 --- a/meson.build +++ b/meson.build @@ -2183,6 +2183,26 @@ foreach target : target_dirs link_args: link_args, gui_app: exe['gui']) +# set QEMU's icon on Mac OS +if targetos == 'darwin' + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', + depends : emulator, + input : emulator, + output : 'new icon for ' + exe_name + ' - 1', + command : ['Rez', '-append', + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', + meson.current_build_dir() / exe['name']], + build_by_default : true) + + custom_target('Icon for ' + exe_name + ' - part 2', + depends : newiconpart1, + input : emulator, + output : 'new icon for ' + exe_name + ' - 2', + command : ['SetFile', '-a', 'C', + meson.current_build_dir() / exe['name']], + build_by_default : true) +endif + if exe_sign emulators += {exe['name'] : custom_target(exe['name'], install: true, -- 2.24.3 (Apple Git-128) ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Set icon for QEMU binary on Mac OS 2021-07-05 13:54 [PATCH] Set icon for QEMU binary on Mac OS Programmingkid @ 2021-07-05 16:56 ` Paolo Bonzini 0 siblings, 0 replies; 6+ messages in thread From: Paolo Bonzini @ 2021-07-05 16:56 UTC (permalink / raw) To: Programmingkid, QEMU devel list On 05/07/21 15:54, Programmingkid wrote: > Hi Paolo, I was told you were the one who I should send this patch to. Please let me know if you feel otherwise. Absolutely, thanks. Removing the icon was mostly done out of lack of a machine to test it on, and it's nice to add it back. > +# set QEMU's icon on Mac OS > +if targetos == 'darwin' > + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', > + depends : emulator, > + input : emulator, > + output : 'new icon for ' + exe_name + ' - 1', > + command : ['Rez', '-append', > + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', > + meson.current_build_dir() / exe['name']], > + build_by_default : true) I think having a command that never actually creates the "new icon for ... - 1" file will cause the command to be run over and over. We already have scripts/entitlement.sh to do (possibly) in-place changes to the executable on Darwin. I suggest something like this: diff --git a/meson.build b/meson.build index 380b40ba07..5313cf4a32 100644 --- a/meson.build +++ b/meson.build @@ -2505,8 +2505,7 @@ foreach target : target_dirs endif foreach exe: execs exe_name = exe['name'] - exe_sign = 'CONFIG_HVF' in config_target - if exe_sign + if targetos == 'darwin' exe_name += '-unsigned' endif @@ -2520,7 +2519,13 @@ foreach target : target_dirs link_args: link_args, win_subsystem: exe['win_subsystem']) - if exe_sign + if 'CONFIG_HVF' in config_target + entitlement = meson.current_source_dir() / 'accel/hvf/entitlements.plist' + else + entitlement = '/dev/null' + endif + if targetos == 'darwin' + icon = '...' emulators += {exe['name'] : custom_target(exe['name'], depends: emulator, output: exe['name'], @@ -2528,14 +2534,14 @@ foreach target : target_dirs 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' + entitlements, icon ]) } meson.add_install_script('scripts/entitlement.sh', '--install', get_option('bindir') / exe_name, get_option('bindir') / exe['name'], - meson.current_source_dir() / 'accel/hvf/entitlements.plist') + entitlements, icon) else emulators += {exe['name']: emulator} endif diff --git a/scripts/entitlement.sh b/scripts/entitlement.sh index f7aaaf2766..573bed0c2f 100755 --- a/scripts/entitlement.sh +++ b/scripts/entitlement.sh @@ -11,6 +11,7 @@ fi SRC="$1" DST="$2" ENTITLEMENT="$3" +ICON="$4" if $in_place; then trap 'rm "$DST.tmp"' exit @@ -20,6 +21,9 @@ else cd "$MESON_INSTALL_DESTDIR_PREFIX" fi -codesign --entitlements "$ENTITLEMENT" --force -s - "$SRC" +if test "$ENTITLEMENT" != '/dev/null'; then + codesign --entitlements "$ENTITLEMENT" --force -s - "$SRC" +fi +# icon stuff here mv -f "$SRC" "$DST" trap '' exit Paolo ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] Set icon for QEMU binary on Mac OS @ 2021-02-02 13:44 John Arbuckle [not found] ` <2cdac45d-6a4d-dca1-4f32-2fc6b549f8d5@redhat.com> 0 siblings, 1 reply; 6+ messages in thread From: John Arbuckle @ 2021-02-02 13:44 UTC (permalink / raw) To: qemu-devel, peter.maydell; +Cc: John Arbuckle Before switching the build system over to Meson, an icon was added to the QEMU binary on Mac OS. This patch adds back that feature. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> --- meson.build | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/meson.build b/meson.build index f00b7754fd..7f534f4e75 100644 --- a/meson.build +++ b/meson.build @@ -2183,6 +2183,26 @@ foreach target : target_dirs link_args: link_args, gui_app: exe['gui']) +# set QEMU's icon on Mac OS +if targetos == 'darwin' + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', + depends : emulator, + input : emulator, + output : 'new icon for ' + exe_name + ' - 1', + command : ['Rez', '-append', + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', + meson.current_build_dir() / exe['name']], + build_by_default : true) + + custom_target('Icon for ' + exe_name + ' - part 2', + depends : newiconpart1, + input : emulator, + output : 'new icon for ' + exe_name + ' - 2', + command : ['SetFile', '-a', 'C', + meson.current_build_dir() / exe['name']], + build_by_default : true) +endif + if exe_sign emulators += {exe['name'] : custom_target(exe['name'], install: true, -- 2.24.3 (Apple Git-128) ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <2cdac45d-6a4d-dca1-4f32-2fc6b549f8d5@redhat.com>]
* Re: [PATCH] Set icon for QEMU binary on Mac OS [not found] ` <2cdac45d-6a4d-dca1-4f32-2fc6b549f8d5@redhat.com> @ 2021-02-04 15:39 ` Programmingkid 2021-02-04 15:42 ` Peter Maydell 0 siblings, 1 reply; 6+ messages in thread From: Programmingkid @ 2021-02-04 15:39 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Peter Maydell, QEMU Developers > On Feb 4, 2021, at 3:54 AM, Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 02/02/21 14:44, John Arbuckle wrote: >> Before switching the build system over to Meson, an icon was >> added to the QEMU binary on Mac OS. This patch adds back that >> feature. >> Signed-off-by: John Arbuckle <programmingkidx@gmail.com> >> --- >> meson.build | 20 ++++++++++++++++++++ >> 1 file changed, 20 insertions(+) >> diff --git a/meson.build b/meson.build >> index f00b7754fd..7f534f4e75 100644 >> --- a/meson.build >> +++ b/meson.build >> @@ -2183,6 +2183,26 @@ foreach target : target_dirs >> link_args: link_args, >> gui_app: exe['gui']) >> +# set QEMU's icon on Mac OS >> +if targetos == 'darwin' >> + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', >> + depends : emulator, >> + input : emulator, >> + output : 'new icon for ' + exe_name + ' - 1', >> + command : ['Rez', '-append', >> + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', >> + meson.current_build_dir() / exe['name']], >> + build_by_default : true) >> + >> + custom_target('Icon for ' + exe_name + ' - part 2', >> + depends : newiconpart1, >> + input : emulator, >> + output : 'new icon for ' + exe_name + ' - 2', >> + command : ['SetFile', '-a', 'C', >> + meson.current_build_dir() / exe['name']], >> + build_by_default : true) >> +endif >> + >> if exe_sign >> emulators += {exe['name'] : custom_target(exe['name'], >> install: true, > > Maybe you can do it on install, using add_install_script instead? > > Paolo The script would only be two lines long: Rez -append ./pc-bios/qemu.rsrc -o $(QEMU_BINARY) SetFile -a C $(QEMU_BINARY) Is a separate script file still preferred? ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Set icon for QEMU binary on Mac OS 2021-02-04 15:39 ` Programmingkid @ 2021-02-04 15:42 ` Peter Maydell 2021-02-04 17:48 ` Paolo Bonzini 0 siblings, 1 reply; 6+ messages in thread From: Peter Maydell @ 2021-02-04 15:42 UTC (permalink / raw) To: Programmingkid; +Cc: Paolo Bonzini, QEMU Developers On Thu, 4 Feb 2021 at 15:39, Programmingkid <programmingkidx@gmail.com> wrote: > > > > > On Feb 4, 2021, at 3:54 AM, Paolo Bonzini <pbonzini@redhat.com> wrote: > > > > On 02/02/21 14:44, John Arbuckle wrote: > >> Before switching the build system over to Meson, an icon was > >> added to the QEMU binary on Mac OS. This patch adds back that > >> feature. > >> Signed-off-by: John Arbuckle <programmingkidx@gmail.com> > >> --- > >> meson.build | 20 ++++++++++++++++++++ > >> 1 file changed, 20 insertions(+) > >> diff --git a/meson.build b/meson.build > >> index f00b7754fd..7f534f4e75 100644 > >> --- a/meson.build > >> +++ b/meson.build > >> @@ -2183,6 +2183,26 @@ foreach target : target_dirs > >> link_args: link_args, > >> gui_app: exe['gui']) > >> +# set QEMU's icon on Mac OS > >> +if targetos == 'darwin' > >> + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', > >> + depends : emulator, > >> + input : emulator, > >> + output : 'new icon for ' + exe_name + ' - 1', > >> + command : ['Rez', '-append', > >> + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', > >> + meson.current_build_dir() / exe['name']], > >> + build_by_default : true) > >> + > >> + custom_target('Icon for ' + exe_name + ' - part 2', > >> + depends : newiconpart1, > >> + input : emulator, > >> + output : 'new icon for ' + exe_name + ' - 2', > >> + command : ['SetFile', '-a', 'C', > >> + meson.current_build_dir() / exe['name']], > >> + build_by_default : true) > >> +endif > >> + > >> if exe_sign > >> emulators += {exe['name'] : custom_target(exe['name'], > >> install: true, > > > > Maybe you can do it on install, using add_install_script instead? Why would we want to only do it on install? A QEMU which you run from the build tree ought to still have its icon, surely ? -- PMM ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Set icon for QEMU binary on Mac OS 2021-02-04 15:42 ` Peter Maydell @ 2021-02-04 17:48 ` Paolo Bonzini 0 siblings, 0 replies; 6+ messages in thread From: Paolo Bonzini @ 2021-02-04 17:48 UTC (permalink / raw) To: Peter Maydell, Programmingkid; +Cc: QEMU Developers On 04/02/21 16:42, Peter Maydell wrote: > On Thu, 4 Feb 2021 at 15:39, Programmingkid <programmingkidx@gmail.com> wrote: >> >> >> >>> On Feb 4, 2021, at 3:54 AM, Paolo Bonzini <pbonzini@redhat.com> wrote: >>> >>> On 02/02/21 14:44, John Arbuckle wrote: >>>> Before switching the build system over to Meson, an icon was >>>> added to the QEMU binary on Mac OS. This patch adds back that >>>> feature. >>>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com> >>>> --- >>>> meson.build | 20 ++++++++++++++++++++ >>>> 1 file changed, 20 insertions(+) >>>> diff --git a/meson.build b/meson.build >>>> index f00b7754fd..7f534f4e75 100644 >>>> --- a/meson.build >>>> +++ b/meson.build >>>> @@ -2183,6 +2183,26 @@ foreach target : target_dirs >>>> link_args: link_args, >>>> gui_app: exe['gui']) >>>> +# set QEMU's icon on Mac OS >>>> +if targetos == 'darwin' >>>> + newiconpart1 = custom_target('Icon for ' + exe_name + ' - part 1', >>>> + depends : emulator, >>>> + input : emulator, >>>> + output : 'new icon for ' + exe_name + ' - 1', >>>> + command : ['Rez', '-append', >>>> + meson.source_root() + '/pc-bios/qemu.rsrc', '-o', >>>> + meson.current_build_dir() / exe['name']], >>>> + build_by_default : true) >>>> + >>>> + custom_target('Icon for ' + exe_name + ' - part 2', >>>> + depends : newiconpart1, >>>> + input : emulator, >>>> + output : 'new icon for ' + exe_name + ' - 2', >>>> + command : ['SetFile', '-a', 'C', >>>> + meson.current_build_dir() / exe['name']], >>>> + build_by_default : true) >>>> +endif >>>> + >>>> if exe_sign >>>> emulators += {exe['name'] : custom_target(exe['name'], >>>> install: true, >>> >>> Maybe you can do it on install, using add_install_script instead? > > Why would we want to only do it on install? A QEMU which > you run from the build tree ought to still have its icon, > surely ? Mostly because edit-in-place commands are not very well suited to a "make" workflow, while they're common at install time (e.g. strip). But since we already have scripts/entitlement.sh, and it's only Apple that like in-place build steps it is even better to combine all the in-place adjustment to the executable in scripts/entitlement.sh. For example if no entitlements are needed, you pass an empty third argument and scripts/entitlement.sh (now scripts/postprocess-darwin-executable.sh or something like that?) can do Rez+SetFile but not codesign. The existing "if exe_sign" becomes an "if targetos == 'darwin'". Paolo ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-07-05 16:58 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-05 13:54 [PATCH] Set icon for QEMU binary on Mac OS Programmingkid 2021-07-05 16:56 ` Paolo Bonzini -- strict thread matches above, loose matches on Subject: below -- 2021-02-02 13:44 John Arbuckle [not found] ` <2cdac45d-6a4d-dca1-4f32-2fc6b549f8d5@redhat.com> 2021-02-04 15:39 ` Programmingkid 2021-02-04 15:42 ` Peter Maydell 2021-02-04 17:48 ` Paolo Bonzini
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.