Skip to content

Commit

Permalink
Added the ability to customize the rules_rust workspace name. (goog…
Browse files Browse the repository at this point in the history
  • Loading branch information
UebelAndre committed Nov 25, 2020
1 parent 9c81414 commit 3359c69
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 21 deletions.
5 changes: 4 additions & 1 deletion impl/src/planning/subplanners.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)?,
});
}

Expand Down
12 changes: 12 additions & 0 deletions impl/src/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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`). */
Expand Down Expand Up @@ -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<bool> {
None
}
Expand Down Expand Up @@ -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(),
}
}

Expand Down
52 changes: 32 additions & 20 deletions impl/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,10 @@ pub fn filter_bazel_triples(triples: &mut Vec<String>, triples_whitelist: &Vec<S
/** Returns a list of Bazel targets for use in `select` statements based on a
* given list of triples.
*/
pub fn generate_bazel_conditions(triples: &Vec<String>) -> Result<Vec<String>> {
pub fn generate_bazel_conditions(
rust_rules_workspace_name: &str,
triples: &Vec<String>,
) -> Result<Vec<String>> {
// Sanity check ensuring all strings represent real triples
for triple in triples.iter() {
match get_builtin_target_by_triple(triple) {
Expand All @@ -178,7 +181,7 @@ pub fn generate_bazel_conditions(triples: &Vec<String>) -> Result<Vec<String>> {

let mut bazel_triples: Vec<String> = 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();
Expand Down Expand Up @@ -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());
}
}

0 comments on commit 3359c69

Please sign in to comment.