diff options
Diffstat (limited to 'nixpkgs/pkgs/build-support/rust/build-rust-package/sysroot/default.nix')
-rw-r--r-- | nixpkgs/pkgs/build-support/rust/build-rust-package/sysroot/default.nix | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/build-support/rust/build-rust-package/sysroot/default.nix b/nixpkgs/pkgs/build-support/rust/build-rust-package/sysroot/default.nix new file mode 100644 index 000000000000..bb95b7bdc35c --- /dev/null +++ b/nixpkgs/pkgs/build-support/rust/build-rust-package/sysroot/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, rustPlatform, buildPackages }: + +{ shortTarget, originalCargoToml, target, RUSTFLAGS }: + +let + cargoSrc = import ../../sysroot/src.nix { + inherit lib stdenv rustPlatform buildPackages originalCargoToml; + }; +in rustPlatform.buildRustPackage { + inherit target RUSTFLAGS; + + name = "custom-sysroot"; + src = cargoSrc; + + RUSTC_BOOTSTRAP = 1; + __internal_dontAddSysroot = true; + cargoSha256 = "sha256-zgkwevitxsu1C4OgGTsqNSc0gDxaNXYK1WPbfER48d0="; + + doCheck = false; + + installPhase = '' + export LIBS_DIR=$out/lib/rustlib/${shortTarget}/lib + mkdir -p $LIBS_DIR + for f in target/${shortTarget}/release/deps/*.{rlib,rmeta}; do + cp $f $LIBS_DIR + done + + export RUST_SYSROOT=$(rustc --print=sysroot) + host=${stdenv.buildPlatform.rust.rustcTarget} + cp -r $RUST_SYSROOT/lib/rustlib/$host $out + ''; + + # allows support for cross-compilation + meta.platforms = lib.platforms.all; +} |