make shell.nix better (#1858)
* make shell.nix better * Mention using RUST_BOOTSTRAP_CONFIG * Move things to `buildInputs` and add `glibc.out glibc.static` This fixes the nofile-limit.rs UI test. * short lines for the short line fans * Fix pkgs
This commit is contained in:
parent
231c30fcfa
commit
9ef55c55db
|
|
@ -276,67 +276,34 @@ If you're using nix, you can use the following nix-shell to work on Rust:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
# This file contains a development shell for working on rustc.
|
|
||||||
let
|
|
||||||
# Build configuration for rust-lang/rust. Based on `config.example.toml` (then called
|
|
||||||
# `config.toml.example`) from `1bd30ce2aac40c7698aa4a1b9520aa649ff2d1c5`
|
|
||||||
config = pkgs.writeText "rustc-config" ''
|
|
||||||
profile = "compiler" # you may want to choose a different profile, like `library` or `tools`
|
|
||||||
|
|
||||||
[build]
|
|
||||||
patch-binaries-for-nix = true
|
|
||||||
# The path to (or name of) the GDB executable to use. This is only used for
|
|
||||||
# executing the debuginfo test suite.
|
|
||||||
gdb = "${pkgs.gdb}/bin/gdb"
|
|
||||||
python = "${pkgs.python3Full}/bin/python"
|
|
||||||
|
|
||||||
[rust]
|
|
||||||
debug = true
|
|
||||||
incremental = true
|
|
||||||
deny-warnings = false
|
|
||||||
|
|
||||||
# Indicates whether some LLVM tools, like llvm-objdump, will be made available in the
|
|
||||||
# sysroot.
|
|
||||||
llvm-tools = true
|
|
||||||
|
|
||||||
# Print backtrace on internal compiler errors during bootstrap
|
|
||||||
backtrace-on-ice = true
|
|
||||||
'';
|
|
||||||
|
|
||||||
ripgrepConfig =
|
|
||||||
let
|
|
||||||
# Files that are ignored by ripgrep when searching.
|
|
||||||
ignoreFile = pkgs.writeText "rustc-rgignore" ''
|
|
||||||
configure
|
|
||||||
config.example.toml
|
|
||||||
x.py
|
|
||||||
LICENSE-MIT
|
|
||||||
LICENSE-APACHE
|
|
||||||
COPYRIGHT
|
|
||||||
**/*.txt
|
|
||||||
**/*.toml
|
|
||||||
**/*.yml
|
|
||||||
**/*.nix
|
|
||||||
*.md
|
|
||||||
src/ci
|
|
||||||
src/etc/
|
|
||||||
src/llvm-emscripten/
|
|
||||||
src/llvm-project/
|
|
||||||
src/rtstartup/
|
|
||||||
src/rustllvm/
|
|
||||||
src/stdsimd/
|
|
||||||
src/tools/rls/rls-analysis/test_data/
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
pkgs.writeText "rustc-ripgreprc" "--ignore-file=${ignoreFile}";
|
|
||||||
in
|
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
name = "rustc";
|
name = "rustc";
|
||||||
nativeBuildInputs = with pkgs; [
|
nativeBuildInputs = with pkgs; [
|
||||||
gcc_multi binutils cmake ninja openssl pkgconfig python39 git curl cacert patchelf nix psutils
|
binutils cmake ninja pkg-config python3 git curl cacert patchelf nix
|
||||||
];
|
];
|
||||||
RIPGREP_CONFIG_PATH = ripgrepConfig;
|
buildInputs = with pkgs; [
|
||||||
|
openssl glibc.out glibc.static
|
||||||
|
];
|
||||||
|
# Avoid creating text files for ICEs.
|
||||||
|
RUSTC_ICE = "0";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that when using nix on a not-NixOS distribution, it may be necessary to set
|
||||||
|
**`patch-binaries-for-nix = true` in `config.toml`**.
|
||||||
|
Bootstrap tries to detect whether it's running in nix and enable patching automatically,
|
||||||
|
but this detection can have false negatives.
|
||||||
|
|
||||||
|
You can also use your nix shell to manage `config.toml`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
let
|
||||||
|
config = pkgs.writeText "rustc-config" ''
|
||||||
|
# Your config.toml content goes here
|
||||||
|
''
|
||||||
|
pkgs.mkShell {
|
||||||
|
/* ... */
|
||||||
|
# This environment varaible tells bootstrap where our config.toml is.
|
||||||
RUST_BOOTSTRAP_CONFIG = config;
|
RUST_BOOTSTRAP_CONFIG = config;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue