@@ -276,67 +276,34 @@ If you're using nix, you can use the following nix-shell to work on Rust:
276276
277277``` nix
278278{ pkgs ? import <nixpkgs> {} }:
279-
280- # This file contains a development shell for working on rustc.
281- let
282- # Build configuration for rust-lang/rust. Based on `config.example.toml` (then called
283- # `config.toml.example`) from `1bd30ce2aac40c7698aa4a1b9520aa649ff2d1c5`
284- config = pkgs.writeText "rustc-config" ''
285- profile = "compiler" # you may want to choose a different profile, like `library` or `tools`
286-
287- [build]
288- patch-binaries-for-nix = true
289- # The path to (or name of) the GDB executable to use. This is only used for
290- # executing the debuginfo test suite.
291- gdb = "${pkgs.gdb}/bin/gdb"
292- python = "${pkgs.python3Full}/bin/python"
293-
294- [rust]
295- debug = true
296- incremental = true
297- deny-warnings = false
298-
299- # Indicates whether some LLVM tools, like llvm-objdump, will be made available in the
300- # sysroot.
301- llvm-tools = true
302-
303- # Print backtrace on internal compiler errors during bootstrap
304- backtrace-on-ice = true
305- '';
306-
307- ripgrepConfig =
308- let
309- # Files that are ignored by ripgrep when searching.
310- ignoreFile = pkgs.writeText "rustc-rgignore" ''
311- configure
312- config.example.toml
313- x.py
314- LICENSE-MIT
315- LICENSE-APACHE
316- COPYRIGHT
317- **/*.txt
318- **/*.toml
319- **/*.yml
320- **/*.nix
321- *.md
322- src/ci
323- src/etc/
324- src/llvm-emscripten/
325- src/llvm-project/
326- src/rtstartup/
327- src/rustllvm/
328- src/stdsimd/
329- src/tools/rls/rls-analysis/test_data/
330- '';
331- in
332- pkgs.writeText "rustc-ripgreprc" "--ignore-file=${ignoreFile}";
333- in
334279pkgs.mkShell {
335280 name = "rustc";
336281 nativeBuildInputs = with pkgs; [
337- gcc_multi binutils cmake ninja openssl pkgconfig python39 git curl cacert patchelf nix psutils
282+ binutils cmake ninja pkg-config python3 git curl cacert patchelf nix
283+ ];
284+ buildInputs = with pkgs; [
285+ openssl glibc.out glibc.static
338286 ];
339- RIPGREP_CONFIG_PATH = ripgrepConfig;
287+ # Avoid creating text files for ICEs.
288+ RUSTC_ICE = "0";
289+ }
290+ ```
291+
292+ Note that when using nix on a not-NixOS distribution, it may be necessary to set
293+ ** ` patch-binaries-for-nix = true ` in ` config.toml ` ** .
294+ Bootstrap tries to detect whether it's running in nix and enable patching automatically,
295+ but this detection can have false negatives.
296+
297+ You can also use your nix shell to manage ` config.toml ` :
298+
299+ ``` nix
300+ let
301+ config = pkgs.writeText "rustc-config" ''
302+ # Your config.toml content goes here
303+ ''
304+ pkgs.mkShell {
305+ /* ... */
306+ # This environment varaible tells bootstrap where our config.toml is.
340307 RUST_BOOTSTRAP_CONFIG = config;
341308}
342309```
0 commit comments