Merge pull request #16052 from dvc94ch/rust-cross
Rust and cargo improvements
This commit is contained in:
commit
e72282be84
27 changed files with 310 additions and 315 deletions
|
@ -1,4 +1,4 @@
|
|||
{ stdenv, cacert, git, cargo, rustRegistry }:
|
||||
{ stdenv, cacert, git, rust, rustRegistry }:
|
||||
{ name, depsSha256
|
||||
, src ? null
|
||||
, srcs ? null
|
||||
|
@ -10,7 +10,7 @@
|
|||
|
||||
let
|
||||
fetchDeps = import ./fetchcargo.nix {
|
||||
inherit stdenv cacert git cargo rustRegistry;
|
||||
inherit stdenv cacert git rust rustRegistry;
|
||||
};
|
||||
|
||||
cargoDeps = fetchDeps {
|
||||
|
@ -23,7 +23,7 @@ in stdenv.mkDerivation (args // {
|
|||
|
||||
patchRegistryDeps = ./patch-registry-deps;
|
||||
|
||||
buildInputs = [ git cargo cargo.rustc ] ++ buildInputs;
|
||||
buildInputs = [ git rust.cargo rust.rustc ] ++ buildInputs;
|
||||
|
||||
configurePhase = args.configurePhase or "true";
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{ stdenv, cacert, git, cargo, rustRegistry }:
|
||||
{ stdenv, cacert, git, rust, rustRegistry }:
|
||||
{ name ? "cargo-deps", src, srcs, sourceRoot, sha256, cargoUpdateHook ? "" }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "${name}-fetch";
|
||||
buildInputs = [ cargo git ];
|
||||
buildInputs = [ rust.cargo rust.rustc git ];
|
||||
inherit src srcs sourceRoot rustRegistry cargoUpdateHook;
|
||||
|
||||
phases = "unpackPhase installPhase";
|
||||
|
|
27
pkgs/development/compilers/rust/beta.nix
Normal file
27
pkgs/development/compilers/rust/beta.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ stdenv, callPackage, rustPlatform,
|
||||
targets ? [], targetToolchains ? [], targetPatches ? [] }:
|
||||
|
||||
rec {
|
||||
rustc = callPackage ./rustc.nix {
|
||||
shortVersion = "beta-1.10.0";
|
||||
forceBundledLLVM = false;
|
||||
configureFlags = [ "--release-channel=beta" ];
|
||||
srcRev = "d18e321abeecc69e4d1bf9cafba4fba53ddf267d";
|
||||
srcSha = "1ck8mbjrq0bzq5xzwgaqdilakwm2ab0xpzqibjycds62ad4yw774";
|
||||
patches = [ ./patches/disable-lockfile-check.patch ]
|
||||
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
inherit targets;
|
||||
inherit targetPatches;
|
||||
inherit targetToolchains;
|
||||
inherit rustPlatform;
|
||||
};
|
||||
|
||||
cargo = callPackage ./cargo.nix rec {
|
||||
version = "0.10.0";
|
||||
srcRev = "refs/tags/${version}";
|
||||
srcSha = "06scvx5qh60mgvlpvri9ig4np2fsnicsfd452fi9w983dkxnz4l2";
|
||||
depsSha256 = "0js4697n7v93wnqnpvamhp446w58llj66za5hkd6wannmc0gsy3b";
|
||||
inherit rustc; # the rustc that will be wrapped by cargo
|
||||
inherit rustPlatform; # used to build cargo
|
||||
};
|
||||
}
|
78
pkgs/development/compilers/rust/bootstrap.nix
Normal file
78
pkgs/development/compilers/rust/bootstrap.nix
Normal file
|
@ -0,0 +1,78 @@
|
|||
{ stdenv, fetchurl, makeWrapper, cacert, zlib }:
|
||||
|
||||
let
|
||||
platform =
|
||||
if stdenv.system == "i686-linux"
|
||||
then "i686-unknown-linux-gnu"
|
||||
else if stdenv.system == "x86_64-linux"
|
||||
then "x86_64-unknown-linux-gnu"
|
||||
else if stdenv.system == "i686-darwin"
|
||||
then "i686-apple-darwin"
|
||||
else if stdenv.system == "x86_64-darwin"
|
||||
then "x86_64-apple-darwin"
|
||||
else abort "missing boostrap url for platform ${stdenv.system}";
|
||||
|
||||
# fetch hashes by running `print-hashes.sh 1.9.0`
|
||||
bootstrapHash =
|
||||
if stdenv.system == "i686-linux"
|
||||
then "dd4d9bf1b9393867eb18d00431e8fb733894984f2c7b5154bc1b64d045077b45"
|
||||
else if stdenv.system == "x86_64-linux"
|
||||
then "288ff13efa2577e81c77fc2cb6e2b49b1ed0ceab51b4fa12f7efb87039ac49b7"
|
||||
else if stdenv.system == "i686-darwin"
|
||||
then "4d4d4b256d6bd6ae2527cf61007b2553de200f0a1910b7ad41e4f51d2b21e536"
|
||||
else if stdenv.system == "x86_64-darwin"
|
||||
then "d59b5509e69c1cace20a57072e3b3ecefdbfd8c7e95657b0ff2ac10aa1dfebe6"
|
||||
else throw "missing boostrap hash for platform ${stdenv.system}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://static.rust-lang.org/dist/rust-${version}-${platform}.tar.gz";
|
||||
sha256 = bootstrapHash;
|
||||
};
|
||||
|
||||
version = "1.9.0";
|
||||
in
|
||||
|
||||
rec {
|
||||
rustc = stdenv.mkDerivation rec {
|
||||
name = "rustc-bootstrap-${version}";
|
||||
|
||||
inherit version;
|
||||
inherit src;
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
phases = ["unpackPhase" "installPhase"];
|
||||
|
||||
installPhase = ''
|
||||
./install.sh --prefix=$out \
|
||||
--components=rustc,rust-std-${platform},rust-docs
|
||||
|
||||
patchelf \
|
||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
||||
"$out/bin/rustc"
|
||||
|
||||
wrapProgram "$out/bin/rustc"
|
||||
'';
|
||||
};
|
||||
|
||||
cargo = stdenv.mkDerivation rec {
|
||||
name = "cargo-bootstrap-${version}";
|
||||
|
||||
inherit version;
|
||||
inherit src;
|
||||
|
||||
buildInputs = [ makeWrapper zlib rustc ];
|
||||
phases = ["unpackPhase" "installPhase"];
|
||||
|
||||
installPhase = ''
|
||||
./install.sh --prefix=$out \
|
||||
--components=cargo
|
||||
|
||||
patchelf \
|
||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
||||
"$out/bin/cargo"
|
||||
|
||||
wrapProgram "$out/bin/cargo" \
|
||||
--suffix PATH : "${rustc}/bin"
|
||||
'';
|
||||
};
|
||||
}
|
64
pkgs/development/compilers/rust/cargo.nix
Normal file
64
pkgs/development/compilers/rust/cargo.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{ stdenv, fetchgit, file, curl, pkgconfig, python, openssl, cmake, zlib
|
||||
, makeWrapper, libiconv, cacert, rustPlatform, rustc
|
||||
, version, srcRev, srcSha, depsSha256 }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
name = "cargo-${version}";
|
||||
inherit version;
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/rust-lang/cargo";
|
||||
rev = srcRev;
|
||||
sha256 = srcSha;
|
||||
};
|
||||
|
||||
inherit depsSha256;
|
||||
|
||||
passthru.rustc = rustc;
|
||||
|
||||
buildInputs = [ file curl pkgconfig python openssl cmake zlib makeWrapper ]
|
||||
++ stdenv.lib.optional stdenv.isDarwin libiconv;
|
||||
|
||||
configurePhase = ''
|
||||
./configure --enable-optimize --prefix=$out --local-cargo=${rustPlatform.rust.cargo}/bin/cargo
|
||||
'';
|
||||
|
||||
buildPhase = "make";
|
||||
|
||||
installPhase = ''
|
||||
make install
|
||||
${postInstall}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
rm "$out/lib/rustlib/components" \
|
||||
"$out/lib/rustlib/install.log" \
|
||||
"$out/lib/rustlib/rust-installer-version" \
|
||||
"$out/lib/rustlib/uninstall.sh" \
|
||||
"$out/lib/rustlib/manifest-cargo"
|
||||
|
||||
wrapProgram "$out/bin/cargo" \
|
||||
--suffix PATH : "${rustc}/bin" \
|
||||
--run "export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt" \
|
||||
${stdenv.lib.optionalString stdenv.isDarwin ''--suffix DYLD_LIBRARY_PATH : "${rustc}/lib"''}
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
# Export SSL_CERT_FILE as without it one test fails with SSL verification error
|
||||
export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
|
||||
# Disable cross compilation tests
|
||||
export CFG_DISABLE_CROSS_TESTS=1
|
||||
cargo test
|
||||
'';
|
||||
|
||||
# Disable check phase as there are failures (author_prefers_cargo test fails)
|
||||
doCheck = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://crates.io;
|
||||
description = "Downloads your Rust project's dependencies and builds your project";
|
||||
maintainers = with maintainers; [ wizeman retrry ];
|
||||
license = [ licenses.mit licenses.asl20 ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
33
pkgs/development/compilers/rust/default.nix
Normal file
33
pkgs/development/compilers/rust/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform,
|
||||
targets ? [], targetToolchains ? [], targetPatches ? [] }:
|
||||
|
||||
let
|
||||
rustPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./bootstrap.nix {}) rustPlatform);
|
||||
rustSnapshotPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./snapshot.nix {}) rustPlatform);
|
||||
in
|
||||
|
||||
rec {
|
||||
rustc = callPackage ./rustc.nix {
|
||||
shortVersion = "1.9.0";
|
||||
isRelease = true;
|
||||
forceBundledLLVM = false;
|
||||
configureFlags = [ "--release-channel=stable" ];
|
||||
srcRev = "e4e8b666850a763fdf1c3c2c142856ab51e32779";
|
||||
srcSha = "1pz4qx70mqv78fxm4w1mq7csk5pssq4qmr2vwwb5v8hyx03caff8";
|
||||
patches = [ ./patches/remove-uneeded-git.patch ]
|
||||
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
inherit targets;
|
||||
inherit targetPatches;
|
||||
inherit targetToolchains;
|
||||
rustPlatform = rustSnapshotPlatform;
|
||||
};
|
||||
|
||||
cargo = callPackage ./cargo.nix rec {
|
||||
version = "0.10.0";
|
||||
srcRev = "refs/tags/${version}";
|
||||
srcSha = "06scvx5qh60mgvlpvri9ig4np2fsnicsfd452fi9w983dkxnz4l2";
|
||||
depsSha256 = "0js4697n7v93wnqnpvamhp446w58llj66za5hkd6wannmc0gsy3b";
|
||||
inherit rustc; # the rustc that will be wrapped by cargo
|
||||
inherit rustPlatform; # used to build cargo
|
||||
};
|
||||
}
|
27
pkgs/development/compilers/rust/head.nix
Normal file
27
pkgs/development/compilers/rust/head.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ stdenv, callPackage, rustPlatform,
|
||||
targets ? [], targetToolchains ? [], targetPatches ? [] }:
|
||||
|
||||
rec {
|
||||
rustc = callPackage ./rustc.nix {
|
||||
shortVersion = "master-1.11.0";
|
||||
forceBundledLLVM = false;
|
||||
srcRev = "298730e7032cd55809423773da397cd5c7d827d4";
|
||||
srcSha = "0hyz5j1z75sjkgsifzgxviv3b1lhgaz8wqwvmq80xx5vd78yd0c1";
|
||||
patches = [ ./patches/disable-lockfile-check.patch
|
||||
./patches/use-rustc-1.9.0.patch ]
|
||||
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
inherit targets;
|
||||
inherit targetPatches;
|
||||
inherit targetToolchains;
|
||||
inherit rustPlatform;
|
||||
};
|
||||
|
||||
cargo = callPackage ./cargo.nix rec {
|
||||
version = "2016.06.07";
|
||||
srcRev = "3e70312a2a4ebedace131fc63bb8f27463c5db28";
|
||||
srcSha = "0nibzyfjkiqfnq0c00hhqvs856l5qls8wds252p97q5q92yvp40f";
|
||||
depsSha256 = "1xbb33aqnf5yyws6gjys9w8kznbh9rh6hw8mpg1hhq1ahipc2j1f";
|
||||
inherit rustc; # the rustc that will be wrapped by cargo
|
||||
inherit rustPlatform; # used to build cargo
|
||||
};
|
||||
}
|
17
pkgs/development/compilers/rust/print-hashes.sh
Executable file
17
pkgs/development/compilers/rust/print-hashes.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
|
||||
PLATFORMS="i686-unknown-linux-gnu x86_64-unknown-linux-gnu i686-apple-darwin x86_64-apple-darwin"
|
||||
BASEURL="https://static.rust-lang.org/dist"
|
||||
VERSION=$1
|
||||
|
||||
if [[ -z $VERSION ]]
|
||||
then
|
||||
echo "No version supplied"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
for PLATFORM in $PLATFORMS
|
||||
do
|
||||
URL="$BASEURL/rust-$VERSION-$PLATFORM.tar.gz.sha256"
|
||||
curl $URL
|
||||
done
|
|
@ -1,5 +1,5 @@
|
|||
{ stdenv, fetchurl, fetchgit, fetchzip, file, python2, tzdata, procps
|
||||
, llvm, jemalloc, ncurses, darwin, binutils, rustc
|
||||
, llvm, jemalloc, ncurses, darwin, binutils, rustPlatform, git
|
||||
|
||||
, isRelease ? false
|
||||
, shortVersion
|
||||
|
@ -7,22 +7,11 @@
|
|||
, srcSha, srcRev
|
||||
, configureFlags ? []
|
||||
, patches
|
||||
, targets
|
||||
, targetPatches
|
||||
, targetToolchains
|
||||
} @ args:
|
||||
|
||||
/* Rust's build process has a few quirks :
|
||||
|
||||
- The Rust compiler is written is Rust, so it requires a bootstrap
|
||||
compiler, which is downloaded during the build. To make the build
|
||||
pure, we download it ourself before and put it where it is
|
||||
expected. Once the language is stable (1.0) , we might want to
|
||||
switch it to use nix's packaged rust compiler. This might not be possible
|
||||
as the compiler is highly coupled to the bootstrap.
|
||||
|
||||
NOTE : some derivation depend on rust. When updating this, please make
|
||||
sure those derivations still compile. (racer, for example).
|
||||
|
||||
*/
|
||||
|
||||
let
|
||||
version = if isRelease then
|
||||
"${shortVersion}"
|
||||
|
@ -35,15 +24,7 @@ let
|
|||
|
||||
llvmShared = llvm.override { enableSharedLibraries = true; };
|
||||
|
||||
target = if stdenv.system == "i686-linux"
|
||||
then "i686-unknown-linux-gnu"
|
||||
else if stdenv.system == "x86_64-linux"
|
||||
then "x86_64-unknown-linux-gnu"
|
||||
else if stdenv.system == "i686-darwin"
|
||||
then "i686-apple-darwin"
|
||||
else if stdenv.system == "x86_64-darwin"
|
||||
then "x86_64-apple-darwin"
|
||||
else abort "no snapshot to bootstrap for this platform (missing target triple)";
|
||||
target = builtins.replaceStrings [" "] [","] (builtins.toString targets);
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.rust-lang.org/;
|
||||
|
@ -71,13 +52,15 @@ stdenv.mkDerivation {
|
|||
|
||||
# We need rust to build rust. If we don't provide it, configure will try to download it.
|
||||
configureFlags = configureFlags
|
||||
++ [ "--enable-local-rust" "--local-rust-root=${rustc}" "--enable-rpath" ]
|
||||
++ [ "--enable-local-rust" "--local-rust-root=${rustPlatform.rust.rustc}" "--enable-rpath" ]
|
||||
# ++ [ "--jemalloc-root=${jemalloc}/lib"
|
||||
++ [ "--default-linker=${stdenv.cc}/bin/cc" "--default-ar=${binutils.out}/bin/ar" ]
|
||||
++ stdenv.lib.optional (stdenv.cc.cc ? isClang) "--enable-clang"
|
||||
++ stdenv.lib.optional (targets != []) "--target=${target}"
|
||||
++ stdenv.lib.optional (!forceBundledLLVM) "--llvm-root=${llvmShared}";
|
||||
|
||||
inherit patches;
|
||||
patches = patches ++ targetPatches;
|
||||
passthru.target = target;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/rust-installer/gen-install-script.sh \
|
||||
|
@ -112,8 +95,8 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
# ps is needed for one of the test cases
|
||||
nativeBuildInputs = [ file python2 procps rustc ];
|
||||
buildInputs = [ ncurses ]
|
||||
nativeBuildInputs = [ file python2 procps rustPlatform.rust.rustc git ];
|
||||
buildInputs = [ ncurses ] ++ targetToolchains
|
||||
++ stdenv.lib.optional (!forceBundledLLVM) llvmShared;
|
||||
|
||||
# https://github.com/rust-lang/rust/issues/30181
|
||||
|
@ -125,4 +108,5 @@ stdenv.mkDerivation {
|
|||
preCheck = "export TZDIR=${tzdata}/share/zoneinfo";
|
||||
|
||||
doCheck = true;
|
||||
dontSetConfigureCross = true;
|
||||
}
|
|
@ -1,4 +1,8 @@
|
|||
{ stdenv, fetchurl }:
|
||||
/* NOTE: Rust 1.9.0 is the last version that uses snapshots
|
||||
This file can be deleted after the 1.10.0 release and bootstrap.nix
|
||||
can be used instead
|
||||
*/
|
||||
{ stdenv, fetchurl, callPackage }:
|
||||
|
||||
let
|
||||
platform = if stdenv.system == "i686-linux"
|
||||
|
@ -17,7 +21,6 @@ let
|
|||
https://github.com/rust-lang/rust/blob/{$shortVersion}/src/snapshots.txt
|
||||
with the set you want at the top. Make sure this is the latest snapshot
|
||||
for the tagged release and not a snapshot in the current HEAD.
|
||||
NOTE: Rust 1.9.0 is the last version that uses snapshots
|
||||
*/
|
||||
|
||||
snapshotHashLinux686 = "0e0e4448b80d0a12b75485795244bb3857a0a7ef";
|
||||
|
@ -40,19 +43,23 @@ let
|
|||
snapshotName = "rust-stage0-${snapshotDate}-${snapshotRev}-${platform}-${snapshotHash}.tar.bz2";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "rust-bootstrap";
|
||||
src = fetchurl {
|
||||
url = "http://static.rust-lang.org/stage0-snapshots/${snapshotName}";
|
||||
sha1 = snapshotHash;
|
||||
rec {
|
||||
rustc = stdenv.mkDerivation {
|
||||
name = "rustc-snapshot";
|
||||
src = fetchurl {
|
||||
url = "http://static.rust-lang.org/stage0-snapshots/${snapshotName}";
|
||||
sha1 = snapshotHash;
|
||||
};
|
||||
dontStrip = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cp -r bin "$out/bin"
|
||||
'' + stdenv.lib.optionalString stdenv.isLinux ''
|
||||
patchelf --interpreter "${stdenv.glibc.out}/lib/${stdenv.cc.dynamicLinker}" \
|
||||
--set-rpath "${stdenv.cc.cc.lib}/lib/:${stdenv.cc.cc.lib}/lib64/" \
|
||||
"$out/bin/rustc"
|
||||
'';
|
||||
};
|
||||
dontStrip = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cp -r bin "$out/bin"
|
||||
'' + stdenv.lib.optionalString stdenv.isLinux ''
|
||||
patchelf --interpreter "${stdenv.glibc.out}/lib/${stdenv.cc.dynamicLinker}" \
|
||||
--set-rpath "${stdenv.cc.cc.lib}/lib/:${stdenv.cc.cc.lib}/lib64/" \
|
||||
"$out/bin/rustc"
|
||||
'';
|
||||
|
||||
cargo = null;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{ stdenv, callPackage, rustcStable }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
shortVersion = "beta-1.10.0";
|
||||
forceBundledLLVM = false;
|
||||
configureFlags = [ "--release-channel=beta" ];
|
||||
srcRev = "39f3c16cca889ef3f1719d9177e3315258222a65";
|
||||
srcSha = "01bx6616lslp2mbj4h8bb6m042fs0y1z8g0jgpxvbk3fbhzwafrx";
|
||||
patches = [ ./patches/disable-lockfile-check.patch ] ++
|
||||
stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
rustc = rustcStable;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
# Please make sure to check if rustfmt still builds when updating nightly
|
||||
{ stdenv, callPackage, rustcStable }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
shortVersion = "master-1.11.0";
|
||||
forceBundledLLVM = false;
|
||||
srcRev = "298730e7032cd55809423773da397cd5c7d827d4";
|
||||
srcSha = "0hyz5j1z75sjkgsifzgxviv3b1lhgaz8wqwvmq80xx5vd78yd0c1";
|
||||
patches = [ ./patches/disable-lockfile-check.patch
|
||||
./patches/use-rustc-1.9.0.patch ] ++
|
||||
stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
rustc = rustcStable;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{ stdenv, callPackage }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
shortVersion = "1.9.0";
|
||||
isRelease = true;
|
||||
forceBundledLLVM = false;
|
||||
configureFlags = [ "--release-channel=stable" ];
|
||||
srcRev = "e4e8b666850a763fdf1c3c2c142856ab51e32779";
|
||||
srcSha = "1pz4qx70mqv78fxm4w1mq7csk5pssq4qmr2vwwb5v8hyx03caff8";
|
||||
patches = [ ./patches/remove-uneeded-git.patch ]
|
||||
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
rustc = callPackage ./bootstrap.nix {};
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
{stdenv, version, rustc}:
|
||||
|
||||
{
|
||||
inherit version;
|
||||
|
||||
name = "cargo-${version}";
|
||||
|
||||
postInstall = ''
|
||||
rm "$out/lib/rustlib/components" \
|
||||
"$out/lib/rustlib/install.log" \
|
||||
"$out/lib/rustlib/rust-installer-version" \
|
||||
"$out/lib/rustlib/uninstall.sh" \
|
||||
"$out/lib/rustlib/manifest-cargo"
|
||||
|
||||
wrapProgram "$out/bin/cargo" --suffix PATH : "${rustc}/bin" \
|
||||
${stdenv.lib.optionalString stdenv.isDarwin ''--suffix DYLD_LIBRARY_PATH : "${rustc}/lib"''}
|
||||
'';
|
||||
|
||||
platform = if stdenv.system == "i686-linux"
|
||||
then "i686-unknown-linux-gnu"
|
||||
else if stdenv.system == "x86_64-linux"
|
||||
then "x86_64-unknown-linux-gnu"
|
||||
else if stdenv.system == "i686-darwin"
|
||||
then "i686-apple-darwin"
|
||||
else if stdenv.system == "x86_64-darwin"
|
||||
then "x86_64-apple-darwin"
|
||||
else throw "no snapshot to bootstrap for this platform (missing platform url suffix)";
|
||||
|
||||
passthru.rustc = rustc;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://crates.io;
|
||||
description = "Downloads your Rust project's dependencies and builds your project";
|
||||
maintainers = with maintainers; [ wizeman retrry ];
|
||||
license = [ licenses.mit licenses.asl20 ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
{ stdenv, lib, cacert, fetchgit, rustPlatform, file, curl, python, pkgconfig, openssl
|
||||
, cmake, zlib, makeWrapper
|
||||
# Darwin dependencies
|
||||
, libiconv }:
|
||||
|
||||
with rustPlatform;
|
||||
|
||||
with ((import ./common.nix) {
|
||||
inherit stdenv rustc;
|
||||
version = "0.10.0";
|
||||
});
|
||||
|
||||
buildRustPackage rec {
|
||||
inherit name version meta passthru;
|
||||
|
||||
# Needs to use fetchgit instead of fetchFromGitHub to fetch submodules
|
||||
src = fetchgit {
|
||||
url = "git://github.com/rust-lang/cargo";
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "06scvx5qh60mgvlpvri9ig4np2fsnicsfd452fi9w983dkxnz4l2";
|
||||
};
|
||||
|
||||
depsSha256 = "0js4697n7v93wnqnpvamhp446w58llj66za5hkd6wannmc0gsy3b";
|
||||
|
||||
buildInputs = [ file curl pkgconfig python openssl cmake zlib makeWrapper ]
|
||||
++ lib.optional stdenv.isDarwin libiconv;
|
||||
|
||||
configurePhase = ''
|
||||
./configure --enable-optimize --prefix=$out --local-cargo=${cargo}/bin/cargo
|
||||
'';
|
||||
|
||||
buildPhase = "make";
|
||||
|
||||
checkPhase = ''
|
||||
# Export SSL_CERT_FILE as without it one test fails with SSL verification error
|
||||
export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
|
||||
# Disable cross compilation tests
|
||||
export CFG_DISABLE_CROSS_TESTS=1
|
||||
cargo test
|
||||
'';
|
||||
|
||||
# Disable check phase as there are failures (author_prefers_cargo test fails)
|
||||
doCheck = false;
|
||||
|
||||
installPhase = ''
|
||||
make install
|
||||
${postInstall}
|
||||
'';
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
{ stdenv, fetchgit, rustPlatform, file, curl, python, pkgconfig, openssl
|
||||
, cmake, zlib, makeWrapper }:
|
||||
|
||||
with rustPlatform;
|
||||
|
||||
with ((import ./common.nix) {
|
||||
inherit stdenv rustc;
|
||||
version = "2016-03-20";
|
||||
});
|
||||
|
||||
buildRustPackage rec {
|
||||
inherit name version meta passthru;
|
||||
|
||||
# Needs to use fetchgit instead of fetchFromGitHub to fetch submodules
|
||||
src = fetchgit {
|
||||
url = "git://github.com/rust-lang/cargo";
|
||||
rev = "7d79da08238e3d47e0bc4406155bdcc45ccb8c82";
|
||||
sha256 = "190qdii53s4vk940yzs2iizhfs22y2v8bzw051bl6bk9bs3y4fdd";
|
||||
};
|
||||
|
||||
depsSha256 = "1xbb33aqnf5yyws6gjys9w8kznbh9rh6hw8mpg1hhq1ahipc2j1f";
|
||||
|
||||
buildInputs = [ file curl pkgconfig python openssl cmake zlib makeWrapper ];
|
||||
|
||||
configurePhase = ''
|
||||
./configure --enable-optimize --prefix=$out --local-cargo=${cargo}/bin/cargo
|
||||
'';
|
||||
|
||||
buildPhase = "make";
|
||||
|
||||
# Disable check phase as there are lots of failures (some probably due to
|
||||
# trying to access the network).
|
||||
doCheck = false;
|
||||
|
||||
installPhase = ''
|
||||
make install
|
||||
${postInstall}
|
||||
'';
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
{ stdenv, fetchurl, zlib, makeWrapper, rustc }:
|
||||
|
||||
/* Cargo binary snapshot */
|
||||
|
||||
let snapshotDate = "2016-01-31";
|
||||
in
|
||||
|
||||
with ((import ./common.nix) {
|
||||
inherit stdenv rustc;
|
||||
version = "snapshot-${snapshotDate}";
|
||||
});
|
||||
|
||||
let snapshotHash = if stdenv.system == "i686-linux"
|
||||
then "7e2f9c82e1af5aa43ef3ee2692b985a5f2398f0a"
|
||||
else if stdenv.system == "x86_64-linux"
|
||||
then "4c03a3fd2474133c7ad6d8bb5f6af9915ca5292a"
|
||||
else if stdenv.system == "i686-darwin"
|
||||
then "4d84d31449a5926f9e7ceb344540d6e5ea530b88"
|
||||
else if stdenv.system == "x86_64-darwin"
|
||||
then "f8baef5b0b3e6f9825be1f1709594695ac0f0abc"
|
||||
else throw "no snapshot for platform ${stdenv.system}";
|
||||
snapshotName = "cargo-nightly-${platform}.tar.gz";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit name version meta passthru;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${snapshotDate}/${snapshotName}";
|
||||
sha1 = snapshotHash;
|
||||
};
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
__propagatedImpureHostDeps = [
|
||||
"/usr/lib/libiconv.2.dylib"
|
||||
"/usr/lib/libssl.0.9.8.dylib"
|
||||
"/usr/lib/libcurl.4.dylib"
|
||||
"/System/Library/Frameworks/GSS.framework/GSS"
|
||||
"/System/Library/Frameworks/GSS.framework/Versions/Current"
|
||||
"/System/Library/PrivateFrameworks/Heimdal.framework/Heimdal"
|
||||
"/System/Library/PrivateFrameworks/Heimdal.framework/Versions/Current"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
./install.sh "--prefix=$out"
|
||||
'' + (if stdenv.isLinux then ''
|
||||
patchelf --interpreter "${stdenv.glibc.out}/lib/${stdenv.cc.dynamicLinker}" \
|
||||
--set-rpath "${stdenv.cc.cc.lib}/lib/:${stdenv.cc.cc.lib}/lib64/:${zlib.out}/lib" \
|
||||
"$out/bin/cargo"
|
||||
'' else "") + postInstall;
|
||||
}
|
|
@ -17,13 +17,13 @@ buildRustPackage rec {
|
|||
buildInputs = [ makeWrapper ];
|
||||
|
||||
preCheck = ''
|
||||
export RUST_SRC;_PATH="${rustc.src}/src"
|
||||
export RUST_SRC;_PATH="${rustPlatform.rust.rustc.src}/src"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -p target/release/racer $out/bin/
|
||||
wrapProgram $out/bin/racer --set RUST_SRC_PATH "${rustc.src}/src"
|
||||
wrapProgram $out/bin/racer --set RUST_SRC_PATH "${rustPlatform.rust.rustc.src}/src"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
|
|
@ -17,7 +17,7 @@ buildRustPackage rec {
|
|||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
RUST_SRC_PATH = ''${rustc.src}/src'';
|
||||
RUST_SRC_PATH = ''${rustPlatform.rust.rustc.src}/src'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# TODO check that no license information gets lost
|
||||
{ fetchurl, bash, stdenv, python, go, cmake, vim, vimUtils, perl, ruby, unzip
|
||||
, which, fetchgit, fetchFromGitHub, fetchhg, fetchzip, llvmPackages, zip
|
||||
, vim_configurable, vimPlugins, xkb_switch, git, racerdRust, fzf
|
||||
, vim_configurable, vimPlugins, xkb_switch, git, rustracerd, fzf
|
||||
, Cocoa ? null
|
||||
}:
|
||||
|
||||
|
@ -1116,7 +1116,7 @@ rec {
|
|||
] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
|
||||
|
||||
propogatedBuildInputs = [
|
||||
racerdRust
|
||||
rustracerd
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
|
||||
|
||||
propogatedBuildInputs = [
|
||||
racerdRust
|
||||
rustracerd
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
|
|
|
@ -6,7 +6,7 @@ buildRustPackage rec {
|
|||
name = "exa-${version}";
|
||||
version = "2016-04-20";
|
||||
|
||||
depsSha256 = "1rpynsni2r3gim10xc1qkj51wpbzafwsr99y61zh41v4vh047g1k";
|
||||
depsSha256 = "0dm8zaxy29pfbq68ysssab9i06sj4azgi3vib9617rklg7w3hdmk";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ogham";
|
||||
|
|
|
@ -2531,7 +2531,7 @@ in
|
|||
netatalk = callPackage ../tools/filesystems/netatalk { };
|
||||
|
||||
netcdf = callPackage ../development/libraries/netcdf { };
|
||||
|
||||
|
||||
netcdf-mpi = appendToName "mpi" (netcdf.override {
|
||||
hdf5 = hdf5-mpi;
|
||||
});
|
||||
|
@ -4495,7 +4495,7 @@ in
|
|||
inherit (self.haskellPackages) ghc;
|
||||
|
||||
cabal-install = haskell.lib.disableSharedExecutables haskellPackages.cabal-install;
|
||||
|
||||
|
||||
stack = haskell.lib.overrideCabal haskellPackages.stack (drv: {
|
||||
enableSharedExecutables = false;
|
||||
isLibrary = false;
|
||||
|
@ -5267,36 +5267,31 @@ in
|
|||
|
||||
rtags = callPackage ../development/tools/rtags/default.nix {};
|
||||
|
||||
rustc = rustcStable;
|
||||
rustcStable = callPackage ../development/compilers/rustc/stable.nix {};
|
||||
rustcBeta = lowPrio (callPackage ../development/compilers/rustc/beta.nix {});
|
||||
rustcUnstable = lowPrio (callPackage ../development/compilers/rustc/head.nix {});
|
||||
rust = rustStable;
|
||||
rustStable = callPackage ../development/compilers/rust {};
|
||||
rustBeta = lowPrio (callPackage ../development/compilers/rust/beta.nix {});
|
||||
rustUnstable = lowPrio (callPackage ../development/compilers/rust/head.nix {});
|
||||
|
||||
rustPlatform = rustStable;
|
||||
rustStable = recurseIntoAttrs (makeRustPlatform cargo rustStable);
|
||||
rustBeta = lowPrio (recurseIntoAttrs (makeRustPlatform cargoUnstable rustBeta));
|
||||
rustUnstable = lowPrio (recurseIntoAttrs (makeRustPlatform cargoUnstable rustUnstable));
|
||||
cargo = rust.cargo;
|
||||
rustc = rust.rustc;
|
||||
rustPlatform = recurseIntoAttrs (makeRustPlatform rust rustPlatform);
|
||||
|
||||
# rust platform to build cargo itself (with cargoSnapshot)
|
||||
rustCargoPlatform = makeRustPlatform (cargoSnapshot rustcStable) rustCargoPlatform;
|
||||
rustUnstableCargoPlatform = makeRustPlatform (cargoSnapshot rustcUnstable) rustUnstableCargoPlatform;
|
||||
|
||||
makeRustPlatform = cargo: self:
|
||||
makeRustPlatform = rust: self:
|
||||
let
|
||||
callPackage = newScope self;
|
||||
in {
|
||||
inherit cargo;
|
||||
|
||||
rustc = cargo.rustc;
|
||||
inherit rust;
|
||||
|
||||
rustRegistry = callPackage ./rust-packages.nix { };
|
||||
|
||||
buildRustPackage = callPackage ../build-support/rust {
|
||||
inherit cargo;
|
||||
inherit rust;
|
||||
};
|
||||
};
|
||||
|
||||
rustfmt = callPackage ../development/tools/rust/rustfmt { };
|
||||
rustracer = callPackage ../development/tools/rust/racer { };
|
||||
rustracerd = callPackage ../development/tools/rust/racerd { };
|
||||
|
||||
sbclBootstrap = callPackage ../development/compilers/sbcl/bootstrap.nix {};
|
||||
sbcl = callPackage ../development/compilers/sbcl {};
|
||||
|
@ -5961,20 +5956,6 @@ in
|
|||
|
||||
byacc = callPackage ../development/tools/parsing/byacc { };
|
||||
|
||||
cargo = callPackage ../development/tools/build-managers/cargo {
|
||||
# cargo needs to be built with rustCargoPlatform, which uses cargoSnapshot
|
||||
rustPlatform = rustCargoPlatform;
|
||||
};
|
||||
|
||||
cargoUnstable = lowPrio (callPackage ../development/tools/build-managers/cargo/head.nix {
|
||||
rustPlatform = rustUnstableCargoPlatform;
|
||||
});
|
||||
|
||||
cargoSnapshot = rustc:
|
||||
callPackage ../development/tools/build-managers/cargo/snapshot.nix {
|
||||
inherit rustc;
|
||||
};
|
||||
|
||||
casperjs = callPackage ../development/tools/casperjs {
|
||||
inherit (texFunctions) fontsConf;
|
||||
};
|
||||
|
@ -6387,10 +6368,6 @@ in
|
|||
withDocumentation = false; # 'true' is currently broken with qt>=5.5
|
||||
};
|
||||
|
||||
racerRust = callPackage ../development/tools/rust/racer { };
|
||||
|
||||
racerdRust = callPackage ../development/tools/rust/racerd { };
|
||||
|
||||
radare = callPackage ../development/tools/analysis/radare {
|
||||
inherit (gnome) vte;
|
||||
lua = lua5;
|
||||
|
@ -7520,7 +7497,7 @@ in
|
|||
};
|
||||
libkrb5 = self.krb5Full.override { type = "lib"; };
|
||||
|
||||
lasso = callPackage ../development/libraries/lasso { };
|
||||
lasso = callPackage ../development/libraries/lasso { };
|
||||
|
||||
LASzip = callPackage ../development/libraries/LASzip { };
|
||||
|
||||
|
@ -10852,7 +10829,7 @@ in
|
|||
batman_adv = callPackage ../os-specific/linux/batman-adv {};
|
||||
|
||||
bcc = callPackage ../os-specific/linux/bcc { };
|
||||
|
||||
|
||||
bbswitch = callPackage ../os-specific/linux/bbswitch {};
|
||||
|
||||
ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { };
|
||||
|
@ -16029,7 +16006,7 @@ in
|
|||
|
||||
openspecfun = callPackage ../development/libraries/science/math/openspecfun {};
|
||||
|
||||
magma = callPackage ../development/libraries/science/math/magma { };
|
||||
magma = callPackage ../development/libraries/science/math/magma { };
|
||||
|
||||
mathematica = callPackage ../applications/science/math/mathematica { };
|
||||
mathematica9 = callPackage ../applications/science/math/mathematica/9.nix { };
|
||||
|
|
Loading…
Reference in a new issue