forked from M-Labs/nix-scripts
partial rust cleanup (#13)
This commit is contained in:
parent
68bddf00fb
commit
044332d178
|
@ -3,11 +3,6 @@ with pkgs;
|
||||||
let
|
let
|
||||||
pythonDeps = callPackage ./pkgs/python-deps.nix {};
|
pythonDeps = callPackage ./pkgs/python-deps.nix {};
|
||||||
|
|
||||||
# this code was copied from nipxkgs rev. ffafe9 (nixcloud team) and slightly modified
|
|
||||||
rust = callPackage ./pkgs/rust
|
|
||||||
(stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
|
|
||||||
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
|
|
||||||
});
|
|
||||||
llvm-src = callPackage ./fetch-llvm-clang.nix {};
|
llvm-src = callPackage ./fetch-llvm-clang.nix {};
|
||||||
|
|
||||||
boards = [
|
boards = [
|
||||||
|
@ -36,10 +31,14 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
inherit (rust) rustc;
|
|
||||||
inherit (pythonDeps) asyncserial levenshtein pythonparser quamash pyqtgraph-qt5 misoc migen microscope jesd204b lit outputcheck sphinx-argparse wavedrom sphinxcontrib-wavedrom;
|
inherit (pythonDeps) asyncserial levenshtein pythonparser quamash pyqtgraph-qt5 misoc migen microscope jesd204b lit outputcheck sphinx-argparse wavedrom sphinxcontrib-wavedrom;
|
||||||
binutils-or1k = callPackage ./pkgs/binutils-or1k.nix {};
|
binutils-or1k = callPackage ./pkgs/binutils-or1k.nix {};
|
||||||
llvm-or1k = callPackage ./pkgs/llvm-or1k.nix { inherit llvm-src; };
|
llvm-or1k = callPackage ./pkgs/llvm-or1k.nix { inherit llvm-src; };
|
||||||
|
rustc = callPackage ./pkgs/rust
|
||||||
|
((stdenv.lib.optionalAttrs (stdenv.cc.isGNU && stdenv.hostPlatform.isi686) {
|
||||||
|
stdenv = overrideCC stdenv gcc6; # with gcc-7: undefined reference to `__divmoddi4'
|
||||||
|
}) //
|
||||||
|
{ inherit llvm-or1k; });
|
||||||
llvmlite-artiq = callPackage ./pkgs/llvmlite-artiq.nix { inherit llvm-or1k; };
|
llvmlite-artiq = callPackage ./pkgs/llvmlite-artiq.nix { inherit llvm-or1k; };
|
||||||
libartiq-support = callPackage ./pkgs/libartiq-support.nix { inherit rustc; };
|
libartiq-support = callPackage ./pkgs/libartiq-support.nix { inherit rustc; };
|
||||||
artiq = callPackage ./pkgs/artiq.nix { inherit binutils-or1k llvm-or1k llvmlite-artiq libartiq-support lit outputcheck; };
|
artiq = callPackage ./pkgs/artiq.nix { inherit binutils-or1k llvm-or1k llvmlite-artiq libartiq-support lit outputcheck; };
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform, llvm, fetchurl
|
{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform, llvm-or1k, fetchurl
|
||||||
, targets ? []
|
, targets ? []
|
||||||
, targetToolchains ? []
|
, targetToolchains ? []
|
||||||
, targetPatches ? []
|
, targetPatches ? []
|
||||||
|
@ -15,8 +15,32 @@ let
|
||||||
rev = "f305fb024318e96997fbe6e4a105b0cc1052aad4"; # artiq-1.28.0 branch
|
rev = "f305fb024318e96997fbe6e4a105b0cc1052aad4"; # artiq-1.28.0 branch
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
in rec {
|
rustc_internal = callPackage ./rustc.nix {
|
||||||
# nixcloud team code
|
inherit stdenv llvm-or1k targets targetPatches targetToolchains rustPlatform version src;
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./patches/net-tcp-disable-tests.patch
|
||||||
|
|
||||||
|
# Re-evaluate if this we need to disable this one
|
||||||
|
#./patches/stdsimd-disable-doctest.patch
|
||||||
|
|
||||||
|
# Fails on hydra - not locally; the exact reason is unknown.
|
||||||
|
# Comments in the test suggest that some non-reproducible environment
|
||||||
|
# variables such $RANDOM can make it fail.
|
||||||
|
./patches/disable-test-inherit-env.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
#configureFlags = [ "--release-channel=stable" ];
|
||||||
|
|
||||||
|
# 1. Upstream is not running tests on aarch64:
|
||||||
|
# see https://github.com/rust-lang/rust/issues/49807#issuecomment-380860567
|
||||||
|
# So we do the same.
|
||||||
|
# 2. Tests run out of memory for i686
|
||||||
|
#doCheck = !stdenv.isAarch64 && !stdenv.isi686;
|
||||||
|
|
||||||
|
# Disabled for now; see https://github.com/NixOS/nixpkgs/pull/42348#issuecomment-402115598.
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
or1k-crates = stdenv.mkDerivation {
|
or1k-crates = stdenv.mkDerivation {
|
||||||
name = "or1k-crates";
|
name = "or1k-crates";
|
||||||
inherit src;
|
inherit src;
|
||||||
|
@ -36,9 +60,8 @@ in rec {
|
||||||
''${rustc} -Cpanic=unwind --crate-name panic_unwind src/libpanic_unwind/lib.rs --cfg llvm_libunwind
|
''${rustc} -Cpanic=unwind --crate-name panic_unwind src/libpanic_unwind/lib.rs --cfg llvm_libunwind
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
# nixcloud team code
|
in
|
||||||
# this is basically a wrapper, which uses rustc_internal and inserts or1k-crates into it
|
stdenv.mkDerivation {
|
||||||
rustc = stdenv.mkDerivation {
|
|
||||||
name = "rustc";
|
name = "rustc";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -54,35 +77,4 @@ in rec {
|
||||||
license = [ licenses.mit licenses.asl20 ];
|
license = [ licenses.mit licenses.asl20 ];
|
||||||
platforms = platforms.linux ++ platforms.darwin;
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
# nixcloud team code
|
|
||||||
# originally rustc but now renamed to rustc_internal
|
|
||||||
rustc_internal = callPackage ./rustc.nix {
|
|
||||||
inherit stdenv llvm targets targetPatches targetToolchains rustPlatform version src;
|
|
||||||
|
|
||||||
patches = [
|
|
||||||
./patches/net-tcp-disable-tests.patch
|
|
||||||
|
|
||||||
# Re-evaluate if this we need to disable this one
|
|
||||||
#./patches/stdsimd-disable-doctest.patch
|
|
||||||
|
|
||||||
# Fails on hydra - not locally; the exact reason is unknown.
|
|
||||||
# Comments in the test suggest that some non-reproducible environment
|
|
||||||
# variables such $RANDOM can make it fail.
|
|
||||||
./patches/disable-test-inherit-env.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
forceBundledLLVM = true;
|
|
||||||
|
|
||||||
#configureFlags = [ "--release-channel=stable" ];
|
|
||||||
|
|
||||||
# 1. Upstream is not running tests on aarch64:
|
|
||||||
# see https://github.com/rust-lang/rust/issues/49807#issuecomment-380860567
|
|
||||||
# So we do the same.
|
|
||||||
# 2. Tests run out of memory for i686
|
|
||||||
#doCheck = !stdenv.isAarch64 && !stdenv.isi686;
|
|
||||||
|
|
||||||
# Disabled for now; see https://github.com/NixOS/nixpkgs/pull/42348#issuecomment-402115598.
|
|
||||||
doCheck = false;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
{ stdenv, targetPackages
|
{ stdenv, targetPackages
|
||||||
, fetchurl, fetchgit, fetchzip, file, python2, tzdata, ps
|
, fetchurl, fetchgit, fetchzip, file, python2, tzdata, ps
|
||||||
, llvm, jemalloc, ncurses, darwin, rustPlatform, git, cmake, curl
|
, llvm-or1k, ncurses, zlib, darwin, rustPlatform, git, cmake, curl
|
||||||
, which, libffi, gdb
|
, which, libffi, gdb
|
||||||
, version
|
, version
|
||||||
, forceBundledLLVM ? false
|
|
||||||
, src
|
, src
|
||||||
, configureFlags ? []
|
, configureFlags ? []
|
||||||
, patches
|
, patches
|
||||||
|
@ -12,16 +11,12 @@
|
||||||
, targetToolchains
|
, targetToolchains
|
||||||
, doCheck ? true
|
, doCheck ? true
|
||||||
, broken ? false
|
, broken ? false
|
||||||
, pkgs
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (stdenv.lib) optional optionalString;
|
inherit (stdenv.lib) optional optionalString;
|
||||||
inherit (darwin.apple_sdk.frameworks) Security;
|
inherit (darwin.apple_sdk.frameworks) Security;
|
||||||
|
|
||||||
llvmShared = llvm.override { enableSharedLibraries = true; };
|
|
||||||
llvmOR1k = (import ../../default.nix {}).llvm-or1k;
|
|
||||||
|
|
||||||
target = builtins.replaceStrings [" "] [","] (builtins.toString targets);
|
target = builtins.replaceStrings [" "] [","] (builtins.toString targets);
|
||||||
src_rustc = fetchurl {
|
src_rustc = fetchurl {
|
||||||
url = "https://static.rust-lang.org/dist/rustc-1.28.0-src.tar.gz";
|
url = "https://static.rust-lang.org/dist/rustc-1.28.0-src.tar.gz";
|
||||||
|
@ -47,7 +42,7 @@ stdenv.mkDerivation {
|
||||||
# See https://github.com/NixOS/nixpkgs/pull/34227
|
# See https://github.com/NixOS/nixpkgs/pull/34227
|
||||||
stripDebugList = if stdenv.isDarwin then [ "bin" ] else null;
|
stripDebugList = if stdenv.isDarwin then [ "bin" ] else null;
|
||||||
|
|
||||||
NIX_LDFLAGS = optionalString stdenv.isDarwin "-rpath ${llvmShared}/lib";
|
NIX_LDFLAGS = optionalString stdenv.isDarwin "-rpath ${llvm-or1k}/lib";
|
||||||
|
|
||||||
# Enable nightly features in stable compiles (used for
|
# Enable nightly features in stable compiles (used for
|
||||||
# bootstrapping, see https://github.com/rust-lang/rust/pull/37265).
|
# bootstrapping, see https://github.com/rust-lang/rust/pull/37265).
|
||||||
|
@ -63,12 +58,10 @@ stdenv.mkDerivation {
|
||||||
configureFlags = configureFlags
|
configureFlags = configureFlags
|
||||||
++ [ "--enable-local-rust" "--local-rust-root=${rustPlatform.rust.rustc}" "--enable-rpath" ]
|
++ [ "--enable-local-rust" "--local-rust-root=${rustPlatform.rust.rustc}" "--enable-rpath" ]
|
||||||
++ [ "--enable-vendor" ]
|
++ [ "--enable-vendor" ]
|
||||||
# ++ [ "--jemalloc-root=${jemalloc}/lib"
|
|
||||||
++ [ "--default-linker=${targetPackages.stdenv.cc}/bin/cc" ]
|
++ [ "--default-linker=${targetPackages.stdenv.cc}/bin/cc" ]
|
||||||
++ optional (!forceBundledLLVM) [ "--enable-llvm-link-shared" ]
|
++ [ "--enable-llvm-link-shared" ]
|
||||||
++ optional (targets != []) "--target=${target}"
|
++ optional (targets != []) "--target=${target}"
|
||||||
#++ optional (!forceBundledLLVM) "--llvm-root=${llvmShared}"
|
++ [ "--llvm-root=${llvm-or1k}" ] ;
|
||||||
++ [ "--llvm-root=${llvmOR1k}" ] ;
|
|
||||||
|
|
||||||
# The bootstrap.py will generated a Makefile that then executes the build.
|
# The bootstrap.py will generated a Makefile that then executes the build.
|
||||||
# The BOOTSTRAP_ARGS used by this Makefile must include all flags to pass
|
# The BOOTSTRAP_ARGS used by this Makefile must include all flags to pass
|
||||||
|
@ -83,7 +76,6 @@ stdenv.mkDerivation {
|
||||||
# HACK: we add the vendor folder from rustc 1.28 to make the compiling work
|
# HACK: we add the vendor folder from rustc 1.28 to make the compiling work
|
||||||
tar xf ${src_rustc}
|
tar xf ${src_rustc}
|
||||||
mv rustc-1.28.0-src/src/vendor/ src/vendor
|
mv rustc-1.28.0-src/src/vendor/ src/vendor
|
||||||
cp -R ${llvmOR1k} src/llvm
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
patches = patches ++ targetPatches;
|
patches = patches ++ targetPatches;
|
||||||
|
@ -96,18 +88,10 @@ stdenv.mkDerivation {
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs src/etc
|
patchShebangs src/etc
|
||||||
|
|
||||||
# Fix dynamic linking against llvm
|
|
||||||
#${optionalString (!forceBundledLLVM) ''sed -i 's/, kind = \\"static\\"//g' src/etc/mklldeps.py''}
|
|
||||||
|
|
||||||
# Fix the configure script to not require curl as we won't use it
|
# Fix the configure script to not require curl as we won't use it
|
||||||
sed -i configure \
|
sed -i configure \
|
||||||
-e '/probe_need CFG_CURL curl/d'
|
-e '/probe_need CFG_CURL curl/d'
|
||||||
|
|
||||||
# Fix the use of jemalloc prefixes which our jemalloc doesn't have
|
|
||||||
# TODO: reenable if we can figure out how to get our jemalloc to work
|
|
||||||
#[ -f src/liballoc_jemalloc/lib.rs ] && sed -i 's,je_,,g' src/liballoc_jemalloc/lib.rs
|
|
||||||
#[ -f src/liballoc/heap.rs ] && sed -i 's,je_,,g' src/liballoc/heap.rs # Remove for 1.4.0+
|
|
||||||
|
|
||||||
# Disable fragile tests.
|
# Disable fragile tests.
|
||||||
rm -vr src/test/run-make/linker-output-non-utf8 || true
|
rm -vr src/test/run-make/linker-output-non-utf8 || true
|
||||||
rm -vr src/test/run-make/issue-26092 || true
|
rm -vr src/test/run-make/issue-26092 || true
|
||||||
|
@ -159,9 +143,8 @@ stdenv.mkDerivation {
|
||||||
# Only needed for the debuginfo tests
|
# Only needed for the debuginfo tests
|
||||||
++ optional (!stdenv.isDarwin) gdb;
|
++ optional (!stdenv.isDarwin) gdb;
|
||||||
|
|
||||||
buildInputs = [ ncurses pkgs.zlib ] ++ targetToolchains
|
buildInputs = [ ncurses zlib llvm-or1k ] ++ targetToolchains
|
||||||
++ optional stdenv.isDarwin Security
|
++ optional stdenv.isDarwin Security;
|
||||||
++ optional (!forceBundledLLVM) llvmShared;
|
|
||||||
|
|
||||||
outputs = [ "out" "man" "doc" ];
|
outputs = [ "out" "man" "doc" ];
|
||||||
setOutputFlags = false;
|
setOutputFlags = false;
|
||||||
|
|
Loading…
Reference in New Issue