From acd80bbf005658bf55dad08819d31529b91fe6cd Mon Sep 17 00:00:00 2001 From: David Stritzl <437018+davidstritzl@users.noreply.github.com> Date: Sat, 4 Nov 2023 21:19:07 +0100 Subject: [PATCH] mpv: sign darwin bundle executable This fixes the application exiting immediately after launch via application bundle on macOS 14 (#261072). --- pkgs/applications/video/mpv/default.nix | 8 +++++++- pkgs/applications/video/mpv/wrapper.nix | 2 +- pkgs/top-level/all-packages.nix | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix index 8290e39979c3..95681d4a4ab4 100644 --- a/pkgs/applications/video/mpv/default.nix +++ b/pkgs/applications/video/mpv/default.nix @@ -19,6 +19,7 @@ , libuchardet , libiconv , xcbuild +, sigtool , waylandSupport ? stdenv.isLinux , wayland @@ -154,7 +155,7 @@ in stdenv'.mkDerivation (finalAttrs: { pkg-config python3 ] - ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun ] + ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun sigtool ] ++ lib.optionals swiftSupport [ swift ] ++ lib.optionals waylandSupport [ wayland-scanner ]; @@ -203,6 +204,11 @@ in stdenv'.mkDerivation (finalAttrs: { postBuild = lib.optionalString stdenv.isDarwin '' pushd .. # Must be run from the source dir because it uses relative paths python3 TOOLS/osxbundle.py -s build/mpv + # Swap binary and bundle symlink to sign bundle executable as symlinks cannot be signed + rm build/mpv.app/Contents/MacOS/mpv-bundle + mv build/mpv.app/Contents/MacOS/mpv build/mpv.app/Contents/MacOS/mpv-bundle + ln -s mpv-bundle build/mpv.app/Contents/MacOS/mpv + codesign --force --sign - build/mpv.app/Contents/MacOS/mpv-bundle popd ''; diff --git a/pkgs/applications/video/mpv/wrapper.nix b/pkgs/applications/video/mpv/wrapper.nix index b427318121ef..a86c9671a481 100644 --- a/pkgs/applications/video/mpv/wrapper.nix +++ b/pkgs/applications/video/mpv/wrapper.nix @@ -97,7 +97,7 @@ let '' + lib.optionalString stdenv.isDarwin '' # wrapProgram can't operate on symlinks rm "$out/Applications/mpv.app/Contents/MacOS/mpv" - makeWrapper "${mpv}/Applications/mpv.app/Contents/MacOS/mpv" "$out/Applications/mpv.app/Contents/MacOS/mpv" ${mostMakeWrapperArgs} + makeWrapper "${mpv}/Applications/mpv.app/Contents/MacOS/mpv-bundle" "$out/Applications/mpv.app/Contents/MacOS/mpv" ${mostMakeWrapperArgs} ''; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 724b95d682b8..038b8923a1d6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -33939,6 +33939,7 @@ with pkgs; mpv-unwrapped = darwin.apple_sdk_11_0.callPackage ../applications/video/mpv { stdenv = if stdenv.isDarwin then swiftPackages.stdenv else stdenv; inherit lua; + inherit (darwin) sigtool; }; shaka-packager = callPackage ../applications/video/shaka-packager { };