diff --git a/src/building/suggested.md b/src/building/suggested.md index 397a2e94b..b0883b1b6 100644 --- a/src/building/suggested.md +++ b/src/building/suggested.md @@ -270,67 +270,34 @@ If you're using nix, you can use the following nix-shell to work on Rust: ```nix { pkgs ? import {} }: - -# 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 { name = "rustc"; 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 + ]; + buildInputs = with pkgs; [ + openssl glibc.out glibc.static ]; - RIPGREP_CONFIG_PATH = ripgrepConfig; + # 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; } ```