Merge pull request #99050 from lopsided98/buildrustcrate-cross
buildRustCrate: support cross compilation
This commit is contained in:
commit
cffc0eaa98
|
@ -4,7 +4,8 @@
|
||||||
# This can be useful for deploying packages with NixOps, and to share
|
# This can be useful for deploying packages with NixOps, and to share
|
||||||
# binary dependencies between projects.
|
# binary dependencies between projects.
|
||||||
|
|
||||||
{ lib, stdenv, defaultCrateOverrides, fetchCrate, rustc, rust, cargo, jq }:
|
{ lib, stdenv, defaultCrateOverrides, fetchCrate, pkgsBuildBuild, rustc, rust
|
||||||
|
, cargo, jq }:
|
||||||
|
|
||||||
let
|
let
|
||||||
# This doesn't appear to be officially documented anywhere yet.
|
# 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.
|
# A list of rust/cargo features to enable while building the crate.
|
||||||
# Example: [ "std" "async" ]
|
# Example: [ "std" "async" ]
|
||||||
, features
|
, features
|
||||||
|
# Additional native build inputs for building this crate.
|
||||||
|
, nativeBuildInputs
|
||||||
# Additional build inputs for building this crate.
|
# Additional build inputs for building this crate.
|
||||||
#
|
#
|
||||||
# Example: [ pkgs.openssl ]
|
# Example: [ pkgs.openssl ]
|
||||||
|
@ -188,12 +191,13 @@ let crate = crate_ // (lib.attrByPath [ crate_.crateName ] (attr: {}) crateOverr
|
||||||
dependencies_ = dependencies;
|
dependencies_ = dependencies;
|
||||||
buildDependencies_ = buildDependencies;
|
buildDependencies_ = buildDependencies;
|
||||||
processedAttrs = [
|
processedAttrs = [
|
||||||
"src" "buildInputs" "crateBin" "crateLib" "libName" "libPath"
|
"src" "nativeBuildInputs" "buildInputs" "crateBin" "crateLib" "libName" "libPath"
|
||||||
"buildDependencies" "dependencies" "features" "crateRenames"
|
"buildDependencies" "dependencies" "features" "crateRenames"
|
||||||
"crateName" "version" "build" "authors" "colors" "edition"
|
"crateName" "version" "build" "authors" "colors" "edition"
|
||||||
"buildTests"
|
"buildTests"
|
||||||
];
|
];
|
||||||
extraDerivationAttrs = builtins.removeAttrs crate processedAttrs;
|
extraDerivationAttrs = builtins.removeAttrs crate processedAttrs;
|
||||||
|
nativeBuildInputs_ = nativeBuildInputs;
|
||||||
buildInputs_ = buildInputs;
|
buildInputs_ = buildInputs;
|
||||||
extraRustcOpts_ = extraRustcOpts;
|
extraRustcOpts_ = extraRustcOpts;
|
||||||
buildTests_ = buildTests;
|
buildTests_ = buildTests;
|
||||||
|
@ -225,7 +229,8 @@ stdenv.mkDerivation (rec {
|
||||||
src = crate.src or (fetchCrate { inherit (crate) crateName version sha256; });
|
src = crate.src or (fetchCrate { inherit (crate) crateName version sha256; });
|
||||||
name = "rust_${crate.crateName}-${crate.version}${lib.optionalString buildTests_ "-test"}";
|
name = "rust_${crate.crateName}-${crate.version}${lib.optionalString buildTests_ "-test"}";
|
||||||
version = crate.version;
|
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_;
|
buildInputs = (crate.buildInputs or []) ++ buildInputs_;
|
||||||
dependencies = map lib.getLib dependencies_;
|
dependencies = map lib.getLib dependencies_;
|
||||||
buildDependencies = map lib.getLib buildDependencies_;
|
buildDependencies = map lib.getLib buildDependencies_;
|
||||||
|
@ -301,6 +306,7 @@ stdenv.mkDerivation (rec {
|
||||||
verbose = crate_.verbose or true;
|
verbose = crate_.verbose or true;
|
||||||
extraRustcOpts = [];
|
extraRustcOpts = [];
|
||||||
features = [];
|
features = [];
|
||||||
|
nativeBuildInputs = [];
|
||||||
buildInputs = [];
|
buildInputs = [];
|
||||||
crateOverrides = defaultCrateOverrides;
|
crateOverrides = defaultCrateOverrides;
|
||||||
preUnpack = crate_.preUnpack or "";
|
preUnpack = crate_.preUnpack or "";
|
||||||
|
|
|
@ -16,18 +16,21 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
libz-sys = attrs: {
|
libz-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig zlib ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ zlib ];
|
||||||
extraLinkFlags = ["-L${zlib.out}/lib"];
|
extraLinkFlags = ["-L${zlib.out}/lib"];
|
||||||
};
|
};
|
||||||
|
|
||||||
curl-sys = attrs: {
|
curl-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig zlib curl ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ zlib curl ];
|
||||||
propagatedBuildInputs = [ curl zlib ];
|
propagatedBuildInputs = [ curl zlib ];
|
||||||
extraLinkFlags = ["-L${zlib.out}/lib"];
|
extraLinkFlags = ["-L${zlib.out}/lib"];
|
||||||
};
|
};
|
||||||
|
|
||||||
dbus = attrs: {
|
dbus = attrs: {
|
||||||
buildInputs = [ pkgconfig dbus ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ dbus ];
|
||||||
};
|
};
|
||||||
|
|
||||||
foundationdb-sys = attrs: {
|
foundationdb-sys = attrs: {
|
||||||
|
@ -62,19 +65,23 @@ in
|
||||||
|
|
||||||
libgit2-sys = attrs: {
|
libgit2-sys = attrs: {
|
||||||
LIBGIT2_SYS_USE_PKG_CONFIG = true;
|
LIBGIT2_SYS_USE_PKG_CONFIG = true;
|
||||||
buildInputs = [ pkgconfig openssl zlib libgit2 ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ openssl zlib libgit2 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
libsqlite3-sys = attrs: {
|
libsqlite3-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig sqlite ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ sqlite ];
|
||||||
};
|
};
|
||||||
|
|
||||||
libssh2-sys = attrs: {
|
libssh2-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig openssl zlib libssh2 ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ openssl zlib libssh2 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
libdbus-sys = attrs: {
|
libdbus-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig dbus ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ dbus ];
|
||||||
};
|
};
|
||||||
|
|
||||||
openssl = attrs: {
|
openssl = attrs: {
|
||||||
|
@ -82,11 +89,13 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
openssl-sys = attrs: {
|
openssl-sys = attrs: {
|
||||||
buildInputs = [ pkgconfig openssl ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ openssl ];
|
||||||
};
|
};
|
||||||
|
|
||||||
pq-sys = attr: {
|
pq-sys = attr: {
|
||||||
buildInputs = [ pkgconfig postgresql ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ postgresql ];
|
||||||
};
|
};
|
||||||
|
|
||||||
rink = attrs: {
|
rink = attrs: {
|
||||||
|
@ -103,7 +112,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
thrussh-libsodium = attrs: {
|
thrussh-libsodium = attrs: {
|
||||||
buildInputs = [ pkgconfig libsodium ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ libsodium ];
|
||||||
};
|
};
|
||||||
|
|
||||||
xcb = attrs: {
|
xcb = attrs: {
|
||||||
|
|
Loading…
Reference in New Issue