aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/libraries/relibc/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/relibc/default.nix')
-rw-r--r--nixpkgs/pkgs/development/libraries/relibc/default.nix77
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;
+ };
+}