diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/relibc/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/relibc/default.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/relibc/default.nix b/nixpkgs/pkgs/development/libraries/relibc/default.nix new file mode 100644 index 00000000000..43e02fc8758 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/relibc/default.nix @@ -0,0 +1,77 @@ +{ stdenvNoCC, buildPackages, makeRustPlatform }: + +let + rpath = stdenvNoCC.lib.makeLibraryPath [ + buildPackages.stdenv.cc.libc + "$out" + ]; + bootstrapCrossRust = stdenvNoCC.mkDerivation { + name = "binary-redox-rust"; + + src = fetchTarball { + name = "redox-rust-toolchain-bin.tar.gz"; + url = "https://www.dropbox.com/s/33r92en0t47l1ei/redox-rust-toolchain-bin.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 stdenvNoCC.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 = buildPackages.rust.toRustTarget stdenvNoCC.targetPlatform; + + cargoSha256 = "1fzz7ba3ga57x1cbdrcfrdwwjr70nh4skrpxp4j2gak2c3scj6rz"; + + meta = with stdenvNoCC.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; + }; +} |