diff --git a/pkgs/development/python-modules/setuptools-rust/default.nix b/pkgs/development/python-modules/setuptools-rust/default.nix index 0ccf20709c5d..a4f2997eac7c 100644 --- a/pkgs/development/python-modules/setuptools-rust/default.nix +++ b/pkgs/development/python-modules/setuptools-rust/default.nix @@ -45,12 +45,20 @@ buildPythonPackage rec { # integrate the setup hook to set up the build environment for cross compilation # this hook is automatically propagated to consumers using setuptools-rust as build-system - setupHook = replaceVars ./setuptools-rust-hook.sh { - pyLibDir = "${python.pythonOnTargetForTarget}/lib/${python.pythonOnTargetForTarget.libPrefix}"; - cargoBuildTarget = stdenv.targetPlatform.rust.rustcTargetSpec; - cargoLinkerVar = stdenv.targetPlatform.rust.cargoEnvVarTarget; - targetLinker = "${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc"; - }; + # + # Only include the setup hook if python.pythonOnTargetForTarget is not empty. + # python.pythonOnTargetForTarget is not always available, for example in + # pkgsLLVM.python3.pythonOnTargetForTarget. cross build with pkgsLLVM should not be affected. + setupHook = + if python.pythonOnTargetForTarget == { } then + null + else + replaceVars ./setuptools-rust-hook.sh { + pyLibDir = "${python.pythonOnTargetForTarget}/lib/${python.pythonOnTargetForTarget.libPrefix}"; + cargoBuildTarget = stdenv.targetPlatform.rust.rustcTargetSpec; + cargoLinkerVar = stdenv.targetPlatform.rust.cargoEnvVarTarget; + targetLinker = "${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc"; + }; passthru.tests = { pyo3 = maturin.tests.pyo3.override {