about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-12-31 04:18:15 +0000
committerbors <bors@rust-lang.org>2023-12-31 04:18:15 +0000
commitfcfe05aa7538fbb18fc3baff9aabdf9a1cd14b1e (patch)
tree4451a35c833be35599318a7c577f03a85ca6a1e6 /src
parent64d5515cc3a2a5dfe406d67334c3337991f7ea9b (diff)
parenta236bdd77f958d3974cb241fa6212ef739558942 (diff)
downloadrust-fcfe05aa7538fbb18fc3baff9aabdf9a1cd14b1e.tar.gz
rust-fcfe05aa7538fbb18fc3baff9aabdf9a1cd14b1e.zip
Auto merge of #119441 - Urgau:check-cfg-simplify-bootstrap-args, r=onur-ozkan
Simplify bootstrap `--check-cfg` arguments

This PR simplifies the generated check-cfg arguments generated for the no-values case.

For the `bootstrap` cfg:

```diff
- --check-cfg=cfg(bootstrap,values())
+ --check-cfg=cfg(bootstrap)
```

Those are equivalent, so there isn't any semantic difference; but the invocation is short and less distracting.

`@rustbot` label +F-check-cfg
Diffstat (limited to 'src')
-rw-r--r--src/bootstrap/src/core/builder.rs15
-rw-r--r--src/bootstrap/src/tests/helpers.rs15
-rw-r--r--src/bootstrap/src/utils/helpers.rs19
3 files changed, 35 insertions, 14 deletions
diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs
index e85753a3512..4e20babc55a 100644
--- a/src/bootstrap/src/core/builder.rs
+++ b/src/bootstrap/src/core/builder.rs
@@ -21,7 +21,7 @@ use crate::core::config::{DryRun, SplitDebuginfo, TargetSelection};
 use crate::prepare_behaviour_dump_dir;
 use crate::utils::cache::{Cache, Interned, INTERNER};
 use crate::utils::helpers::{self, add_dylib_path, add_link_lib_path, exe, linker_args};
-use crate::utils::helpers::{libdir, linker_flags, output, t, LldThreads};
+use crate::utils::helpers::{check_cfg_arg, libdir, linker_flags, output, t, LldThreads};
 use crate::EXTRA_CHECK_CFGS;
 use crate::{Build, CLang, Crate, DocTests, GitRepo, Mode};
 
@@ -1467,18 +1467,7 @@ impl<'a> Builder<'a> {
         rustflags.arg("-Zunstable-options");
         for (restricted_mode, name, values) in EXTRA_CHECK_CFGS {
             if *restricted_mode == None || *restricted_mode == Some(mode) {
-                // Creating a string of the values by concatenating each value:
-                // ',"tvos","watchos"' or '' (nothing) when there are no values
-                let values = match values {
-                    Some(values) => values
-                        .iter()
-                        .map(|val| [",", "\"", val, "\""])
-                        .flatten()
-                        .collect::<String>(),
-                    None => String::new(),
-                };
-                let values = values.strip_prefix(",").unwrap_or(&values); // remove the first `,`
-                rustflags.arg(&format!("--check-cfg=cfg({name},values({values}))"));
+                rustflags.arg(&check_cfg_arg(name, *values));
             }
         }
 
diff --git a/src/bootstrap/src/tests/helpers.rs b/src/bootstrap/src/tests/helpers.rs
index afe18aebafa..163594dbb2f 100644
--- a/src/bootstrap/src/tests/helpers.rs
+++ b/src/bootstrap/src/tests/helpers.rs
@@ -1,4 +1,4 @@
-use crate::utils::helpers::{extract_beta_rev, hex_encode, make};
+use crate::utils::helpers::{extract_beta_rev, hex_encode, make, check_cfg_arg};
 use std::path::PathBuf;
 
 #[test]
@@ -57,3 +57,16 @@ fn test_string_to_hex_encode() {
     let hex_string = hex_encode(input_string);
     assert_eq!(hex_string, "48656c6c6f2c20576f726c6421");
 }
+
+#[test]
+fn test_check_cfg_arg() {
+    assert_eq!(check_cfg_arg("bootstrap", None), "--check-cfg=cfg(bootstrap)");
+    assert_eq!(
+        check_cfg_arg("target_arch", Some(&["s360"])),
+        "--check-cfg=cfg(target_arch,values(\"s360\"))"
+    );
+    assert_eq!(
+        check_cfg_arg("target_os", Some(&["nixos", "nix2"])),
+        "--check-cfg=cfg(target_os,values(\"nixos\",\"nix2\"))"
+    );
+}
diff --git a/src/bootstrap/src/utils/helpers.rs b/src/bootstrap/src/utils/helpers.rs
index 0c4297db6cc..0c917c3d579 100644
--- a/src/bootstrap/src/utils/helpers.rs
+++ b/src/bootstrap/src/utils/helpers.rs
@@ -552,3 +552,22 @@ where
 {
     input.as_ref().iter().map(|x| format!("{:02x}", x)).collect()
 }
+
+/// Create a `--check-cfg` argument invocation for a given name
+/// and it's values.
+pub fn check_cfg_arg(name: &str, values: Option<&[&str]>) -> String {
+    // Creating a string of the values by concatenating each value:
+    // ',values("tvos","watchos")' or '' (nothing) when there are no values.
+    let next = match values {
+        Some(values) => {
+            let mut tmp =
+                values.iter().map(|val| [",", "\"", val, "\""]).flatten().collect::<String>();
+
+            tmp.insert_str(1, "values(");
+            tmp.push_str(")");
+            tmp
+        }
+        None => "".to_string(),
+    };
+    format!("--check-cfg=cfg({name}{next})")
+}