c7e0f6b905
stdenv.targetPlatform really shouldn't be used by software that doesn't generate or manipulate binaries. I reviewed all uses of targetPlatform outside of pkgs/development/compilers and pkgs/stdenv and replaced those which weren't involved in something which fits these criteria.
85 lines
2.2 KiB
Nix
85 lines
2.2 KiB
Nix
{ lib, stdenvNoCC, buildPackages }:
|
|
|
|
let
|
|
rpath = lib.makeLibraryPath [
|
|
buildPackages.stdenv.cc.libc
|
|
"$out"
|
|
];
|
|
bootstrapCrossRust = stdenvNoCC.mkDerivation {
|
|
name = "binary-redox-rust";
|
|
|
|
src = buildPackages.fetchzip {
|
|
name = "redox-rust-toolchain.tar.gz";
|
|
url = "https://www.dropbox.com/s/qt7as0j7cwnin8z/redox-rust-toolchain.tar.gz?dl=1";
|
|
sha256 = "1g17qp2q6b88p04yclkw6amm374pqlakrmw9kd86vw8z4g70jkxm";
|
|
};
|
|
|
|
dontBuild = true;
|
|
dontPatchELF = true;
|
|
dontStrip = true;
|
|
installPhase = ''
|
|
mkdir $out/
|
|
cp -r * $out/
|
|
|
|
find $out/ -executable -type f -exec patchelf \
|
|
--set-interpreter "${buildPackages.stdenv.cc.libc}/lib/ld-linux-x86-64.so.2" \
|
|
--set-rpath "${rpath}" \
|
|
"{}" \;
|
|
find $out/ -name "*.so" -type f -exec patchelf \
|
|
--set-rpath "${rpath}" \
|
|
"{}" \;
|
|
'';
|
|
|
|
meta.platforms = with lib; platforms.redox ++ platforms.linux;
|
|
};
|
|
|
|
redoxRustPlatform = buildPackages.makeRustPlatform {
|
|
rustc = bootstrapCrossRust;
|
|
cargo = bootstrapCrossRust;
|
|
};
|
|
|
|
in
|
|
redoxRustPlatform.buildRustPackage rec {
|
|
pname = "relibc";
|
|
version = "latest";
|
|
|
|
LD_LIBRARY_PATH = "${buildPackages.zlib}/lib";
|
|
|
|
src = buildPackages.fetchgit {
|
|
url = "https://gitlab.redox-os.org/redox-os/relibc/";
|
|
rev = "5af8e3ca35ad401014a867ac1a0cc3b08dee682b";
|
|
sha256 = "1j4wsga9psl453031izkl3clkvm31d1wg4y8f3yqqvhml2aliws5";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
RUSTC_BOOTSTRAP = 1;
|
|
|
|
dontInstall = true;
|
|
dontFixup = true;
|
|
doCheck = false;
|
|
|
|
postBuild = ''
|
|
mkdir -p $out
|
|
DESTDIR=$out make install
|
|
'';
|
|
|
|
TARGET = stdenvNoCC.hostPlatform.rust.rustcTargetSpec;
|
|
|
|
cargoLock = {
|
|
lockFile = ./Cargo.lock;
|
|
outputHashes = {
|
|
"redox_syscall-0.2.0" = "sha256-nwbJBrhuc01fPbBgd5ShboNu0Nauqp2UjkA+sm9oCeE=";
|
|
};
|
|
};
|
|
|
|
# error: Usage of `RUSTC_WORKSPACE_WRAPPER` requires `-Z unstable-options`
|
|
auditable = false;
|
|
|
|
meta = with lib; {
|
|
homepage = "https://gitlab.redox-os.org/redox-os/relibc";
|
|
description = "C Library in Rust for Redox and Linux";
|
|
license = licenses.mit;
|
|
maintainers = [ maintainers.aaronjanse ];
|
|
platforms = platforms.redox ++ [ "x86_64-linux" ];
|
|
};
|
|
}
|