From 2cbce6b01297b623dc7d098e39b78e6935c11569 Mon Sep 17 00:00:00 2001 From: Artturin Date: Thu, 7 Jul 2022 21:29:21 +0300 Subject: [PATCH] mesonEmulatorHook: check if the target binaries can be executed this prevents having to bring in the emulator when compiling e.g. pkgsStatic --- doc/stdenv/cross-compilation.chapter.md | 4 ++-- pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/stdenv/cross-compilation.chapter.md b/doc/stdenv/cross-compilation.chapter.md index 7b8f2b4ce6c..0eff70de5ca 100644 --- a/doc/stdenv/cross-compilation.chapter.md +++ b/doc/stdenv/cross-compilation.chapter.md @@ -155,14 +155,14 @@ doCheck = stdenv.hostPlatform == stdenv.buildPlatform; #### Package using Meson needs to run binaries for the host platform during build. {#cross-meson-runs-host-code} -Add `mesonEmulatorHook` cross conditionally to `nativeBuildInputs`. +Add `mesonEmulatorHook` to `nativeBuildInputs` conditionally on if the target binaries can be executed. e.g. ``` nativeBuildInputs = [ meson -] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ +] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ]; ``` diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac44da1d0c3..df041ee793e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4131,7 +4131,7 @@ with pkgs; # example of an error which this fixes # [Errno 8] Exec format error: './gdk3-scan' mesonEmulatorHook = - if (stdenv.buildPlatform != stdenv.targetPlatform) then + if (!stdenv.buildPlatform.canExecute stdenv.targetPlatform) then makeSetupHook { name = "mesonEmulatorHook"; @@ -4142,7 +4142,7 @@ with pkgs; ''; }; } ../development/tools/build-managers/meson/emulator-hook.sh - else throw "mesonEmulatorHook has to be in a cross conditional i.e. (stdenv.buildPlatform != stdenv.hostPlatform)"; + else throw "mesonEmulatorHook has to be in a conditional to check if the target binaries can be executed i.e. (!stdenv.buildPlatform.canExecute stdenv.hostPlatform)"; meson-tools = callPackage ../misc/meson-tools { };