Unverified Commit 52d39440 authored by Adam Joseph's avatar Adam Joseph Committed by GitHub
Browse files

Merge pull request #212795 from Cynerd/setuptools-rust-hook

Setuptools rust hook for cross compilation
parents e913a05c f5f80fa8
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -160,6 +160,20 @@ in {
      };
    } ./setuptools-check-hook.sh) {};

    setuptoolsRustBuildHook = callPackage ({ makePythonHook, setuptools-rust, rust }:
      makePythonHook {
        name = "setuptools-rust-setup-hook";
        propagatedBuildInputs = [ setuptools-rust ];
        substitutions = {
          pyLibDir = "${python}/lib/${python.libPrefix}";
          cargoBuildTarget = rust.toRustTargetSpec stdenv.hostPlatform;
          cargoLinkerVar = lib.toUpper (
              builtins.replaceStrings ["-"] ["_"] (
                rust.toRustTarget stdenv.hostPlatform));
          targetLinker = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
        };
      } ./setuptools-rust-hook.sh) {};

  unittestCheckHook = callPackage ({ makePythonHook }:
    makePythonHook {
      name = "unittest-check-hook";
+18 −0
Original line number Diff line number Diff line
echo "Sourcing setuptools-rust-hook"

setuptoolsRustSetup() {
    # This can work only if rustPlatform.cargoSetupHook is also included
    if ! command -v cargoSetupPostPatchHook >/dev/null; then
        echo "ERROR: setuptools-rust has to be used alongside with rustPlatform.cargoSetupHook!"
        exit 1
    fi

    export PYO3_CROSS_LIB_DIR="@pyLibDir@"
    export CARGO_BUILD_TARGET=@cargoBuildTarget@
    # TODO theoretically setting linker should not be required because it is
    # already set in pkgs/build-support/rust/hooks/default.nix but build fails
    # on missing linker without this.
    export CARGO_TARGET_@cargoLinkerVar@_LINKER=@targetLinker@
}

preConfigureHooks+=(setuptoolsRustSetup)
+2 −2
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
, rustPlatform
, cargo
, rustc
, setuptools-rust
, setuptoolsRustBuildHook
, openssl
, Security
, isPyPy
@@ -54,7 +54,7 @@ buildPythonPackage rec {

  nativeBuildInputs = [
    rustPlatform.cargoSetupHook
    setuptools-rust
    setuptoolsRustBuildHook
    cargo
    rustc
    pkg-config