diff --git a/impl/src/planning/subplanners.rs b/impl/src/planning/subplanners.rs index 81f166de2..9cb387500 100644 --- a/impl/src/planning/subplanners.rs +++ b/impl/src/planning/subplanners.rs @@ -307,7 +307,10 @@ impl<'planner> CrateSubplanner<'planner> { dev_dependencies: dep_set.dependencies.dev_deps.clone(), aliased_dependencies: dep_set.dependencies.aliased_deps.clone(), }, - conditions: generate_bazel_conditions(&target_triples)?, + conditions: generate_bazel_conditions( + &self.settings.rust_rules_workspace_name, + &target_triples, + )?, }); } diff --git a/impl/src/settings.rs b/impl/src/settings.rs index 8191c8278..6c54c7417 100644 --- a/impl/src/settings.rs +++ b/impl/src/settings.rs @@ -141,6 +141,13 @@ pub struct RazeSettings { */ #[serde(default = "default_raze_settings_index_url")] pub index_url: String, + + /** + * The name of the [rules_rust](https://github.com/bazelbuild/rules_rust) repository + * used in the generated workspace. + */ + #[serde(default = "default_raze_settings_rust_rules_workspace_name")] + pub rust_rules_workspace_name: String, } /** Override settings for individual crates (as part of `RazeSettings`). */ @@ -333,6 +340,10 @@ fn default_raze_settings_index_url() -> String { DEFAULT_CRATE_INDEX_URL.to_string() } +fn default_raze_settings_rust_rules_workspace_name() -> String { + "io_bazel_rules_rust".to_owned() +} + fn default_crate_settings_field_gen_buildrs() -> Option { None } @@ -484,6 +495,7 @@ pub mod tests { binary_deps: HashMap::new(), registry: default_raze_settings_registry(), index_url: default_raze_settings_index_url(), + rust_rules_workspace_name: default_raze_settings_rust_rules_workspace_name(), } } diff --git a/impl/src/util.rs b/impl/src/util.rs index dd47ff3d8..c56024a7b 100644 --- a/impl/src/util.rs +++ b/impl/src/util.rs @@ -165,7 +165,10 @@ pub fn filter_bazel_triples(triples: &mut Vec, triples_whitelist: &Vec) -> Result> { +pub fn generate_bazel_conditions( + rust_rules_workspace_name: &str, + triples: &Vec, +) -> Result> { // Sanity check ensuring all strings represent real triples for triple in triples.iter() { match get_builtin_target_by_triple(triple) { @@ -178,7 +181,7 @@ pub fn generate_bazel_conditions(triples: &Vec) -> Result> { let mut bazel_triples: Vec = triples .iter() - .map(|triple| format!("@io_bazel_rules_rust//rust/platform:{}", triple)) + .map(|triple| format!("@{}//rust/platform:{}", rust_rules_workspace_name, triple)) .collect(); bazel_triples.sort(); @@ -434,35 +437,44 @@ mod tests { #[test] fn generate_condition_strings() { assert_eq!( - generate_bazel_conditions(&vec![ - "aarch64-unknown-linux-gnu".to_string(), - "aarch64-apple-ios".to_string(), - ]) + generate_bazel_conditions( + "rules_rust", + &vec![ + "aarch64-unknown-linux-gnu".to_string(), + "aarch64-apple-ios".to_string(), + ] + ) .unwrap(), vec![ - "@io_bazel_rules_rust//rust/platform:aarch64-apple-ios", - "@io_bazel_rules_rust//rust/platform:aarch64-unknown-linux-gnu", + "@rules_rust//rust/platform:aarch64-apple-ios", + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", ] ); assert_eq!( - generate_bazel_conditions(&vec!["aarch64-unknown-linux-gnu".to_string()]).unwrap(), - vec!["@io_bazel_rules_rust//rust/platform:aarch64-unknown-linux-gnu"] + generate_bazel_conditions("rules_rust", &vec!["aarch64-unknown-linux-gnu".to_string()]) + .unwrap(), + vec!["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"] ); - assert!(generate_bazel_conditions(&vec![ - "aarch64-unknown-linux-gnu".to_string(), - "unknown-unknown-unknown".to_string(), - ]) + assert!(generate_bazel_conditions( + "rules_rust", + &vec![ + "aarch64-unknown-linux-gnu".to_string(), + "unknown-unknown-unknown".to_string(), + ] + ) .is_err()); - assert!(generate_bazel_conditions(&vec!["unknown-unknown-unknown".to_string()]).is_err()); + assert!( + generate_bazel_conditions("rules_rust", &vec!["unknown-unknown-unknown".to_string()]) + .is_err() + ); - assert!(generate_bazel_conditions(&vec![ - "foo".to_string(), - "bar".to_string(), - "baz".to_string() - ]) + assert!(generate_bazel_conditions( + "rules_rust", + &vec!["foo".to_string(), "bar".to_string(), "baz".to_string()] + ) .is_err()); } }