diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2021-10-04 23:56:21 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-04 23:56:21 -0700 |
| commit | 94b72f4dd0beb5d2b7f7910c81c28e8101ab2c44 (patch) | |
| tree | c2e8f3bf827f9ff23b2aefc2dd230080ee2f4f1b | |
| parent | 87f782ede653c0f0472cfa879d7be163af072417 (diff) | |
| parent | e552c0d86baebdf594b9cacebbcf5207e57207d5 (diff) | |
| download | rust-94b72f4dd0beb5d2b7f7910c81c28e8101ab2c44.tar.gz rust-94b72f4dd0beb5d2b7f7910c81c28e8101ab2c44.zip | |
Rollup merge of #89426 - davidtwco:bootstrap-nix-toolchain-env-var, r=Mark-Simulacrum
bootstrap: add config option for nix patching On NixOS systems, bootstrap will patch rustc used in bootstrapping after checking `/etc/os-release` (to confirm the current distribution is NixOS). However, when using Nix on a non-NixOS system, it can be desirable for bootstrap to patch rustc. In this commit, a `patch-binaries-for-nix` option is added to `config.toml`, which allows for user opt-in to bootstrap's Nix patching. r? ``@Mark-Simulacrum``
| -rw-r--r-- | config.toml.example | 6 | ||||
| -rw-r--r-- | src/bootstrap/bootstrap.py | 28 | ||||
| -rw-r--r-- | src/bootstrap/config.rs | 1 |
3 files changed, 23 insertions, 12 deletions
diff --git a/config.toml.example b/config.toml.example index aff4e8fa82a..d811b914d20 100644 --- a/config.toml.example +++ b/config.toml.example @@ -313,6 +313,12 @@ changelog-seen = 2 # this setting's very existence, are all subject to change.) #print-step-rusage = false +# Always patch binaries for usage with Nix toolchains. If `true` then binaries +# will be patched unconditionally. If `false` or unset, binaries will be patched +# only if the current distribution is NixOS. This option is useful when using +# a Nix toolchain on non-NixOS distributions. +#patch-binaries-for-nix = false + # ============================================================================= # General install configuration options # ============================================================================= diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 57ade88f733..05d7b0f611f 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -594,19 +594,23 @@ class RustBuild(object): if ostype != "Linux": return - # Use `/etc/os-release` instead of `/etc/NIXOS`. - # The latter one does not exist on NixOS when using tmpfs as root. - try: - with open("/etc/os-release", "r") as f: - if not any(line.strip() == "ID=nixos" for line in f): - return - except FileNotFoundError: - return - if os.path.exists("/lib"): - return + # If the user has asked binaries to be patched for Nix, then + # don't check for NixOS or `/lib`, just continue to the patching. + if self.get_toml('patch-binaries-for-nix', 'build') != 'true': + # Use `/etc/os-release` instead of `/etc/NIXOS`. + # The latter one does not exist on NixOS when using tmpfs as root. + try: + with open("/etc/os-release", "r") as f: + if not any(line.strip() == "ID=nixos" for line in f): + return + except FileNotFoundError: + return + if os.path.exists("/lib"): + return - # At this point we're pretty sure the user is running NixOS - nix_os_msg = "info: you seem to be running NixOS. Attempting to patch" + # At this point we're pretty sure the user is running NixOS or + # using Nix + nix_os_msg = "info: you seem to be using Nix. Attempting to patch" print(nix_os_msg, fname) # Only build `.nix-deps` once. diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 5706b8f9e7c..062820040dc 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -397,6 +397,7 @@ struct Build { install_stage: Option<u32>, dist_stage: Option<u32>, bench_stage: Option<u32>, + patch_binaries_for_nix: Option<bool>, } /// TOML representation of various global install decisions. |
