diff options
author | Ben Wolsieffer <benwolsieffer@gmail.com> | 2020-09-28 19:46:04 -0400 |
---|---|---|
committer | Ben Wolsieffer <benwolsieffer@gmail.com> | 2020-09-28 19:46:04 -0400 |
commit | 295a6690f9d98ec81b4f6ef10a9230d49f0d8c42 (patch) | |
tree | 7897be24cd161f198fc23495a33a98ea24336327 /pkgs/build-support/rust/build-rust-crate | |
parent | 670fe111f45d08dd2b098a362b6fb57435afeecc (diff) | |
download | nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar.gz nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar.bz2 nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar.lz nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar.xz nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.tar.zst nixpkgs-295a6690f9d98ec81b4f6ef10a9230d49f0d8c42.zip |
buildRustCrate: support cross compilation
Diffstat (limited to 'pkgs/build-support/rust/build-rust-crate')
-rw-r--r-- | pkgs/build-support/rust/build-rust-crate/default.nix | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix index d559aba1616..0e06f5f89ab 100644 --- a/pkgs/build-support/rust/build-rust-crate/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/default.nix @@ -4,7 +4,8 @@ # This can be useful for deploying packages with NixOps, and to share # binary dependencies between projects. -{ lib, stdenv, defaultCrateOverrides, fetchCrate, rustc, rust, cargo, jq }: +{ lib, stdenv, defaultCrateOverrides, fetchCrate, pkgsBuildBuild, rustc, rust +, cargo, jq }: let # This doesn't appear to be officially documented anywhere yet. @@ -83,6 +84,8 @@ in # A list of rust/cargo features to enable while building the crate. # Example: [ "std" "async" ] , features + # Additional native build inputs for building this crate. + , nativeBuildInputs # Additional build inputs for building this crate. # # Example: [ pkgs.openssl ] @@ -188,12 +191,13 @@ let crate = crate_ // (lib.attrByPath [ crate_.crateName ] (attr: {}) crateOverr dependencies_ = dependencies; buildDependencies_ = buildDependencies; processedAttrs = [ - "src" "buildInputs" "crateBin" "crateLib" "libName" "libPath" + "src" "nativeBuildInputs" "buildInputs" "crateBin" "crateLib" "libName" "libPath" "buildDependencies" "dependencies" "features" "crateRenames" "crateName" "version" "build" "authors" "colors" "edition" "buildTests" ]; extraDerivationAttrs = builtins.removeAttrs crate processedAttrs; + nativeBuildInputs_ = nativeBuildInputs; buildInputs_ = buildInputs; extraRustcOpts_ = extraRustcOpts; buildTests_ = buildTests; @@ -225,7 +229,8 @@ stdenv.mkDerivation (rec { src = crate.src or (fetchCrate { inherit (crate) crateName version sha256; }); name = "rust_${crate.crateName}-${crate.version}${lib.optionalString buildTests_ "-test"}"; version = crate.version; - depsBuildBuild = [ rust stdenv.cc cargo jq ]; + depsBuildBuild = [ pkgsBuildBuild.stdenv.cc ]; + nativeBuildInputs = [ rust stdenv.cc cargo jq ] ++ (crate.nativeBuildInputs or []) ++ nativeBuildInputs_; buildInputs = (crate.buildInputs or []) ++ buildInputs_; dependencies = map lib.getLib dependencies_; buildDependencies = map lib.getLib buildDependencies_; @@ -301,6 +306,7 @@ stdenv.mkDerivation (rec { verbose = crate_.verbose or true; extraRustcOpts = []; features = []; + nativeBuildInputs = []; buildInputs = []; crateOverrides = defaultCrateOverrides; preUnpack = crate_.preUnpack or ""; |