Skip to content

Commit 65abe1d

Browse files
committed
Merge branch 'main' into optional-rustc-src
2 parents 1e3c7a8 + 8a35f35 commit 65abe1d

File tree

6 files changed

+115
-12
lines changed

6 files changed

+115
-12
lines changed

crate_universe/Cargo.lock

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crate_universe/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,7 @@ maplit = "1"
4242
predicates = "1"
4343
spectral = "0.6"
4444
tempfile = "3.2.0"
45+
46+
[patch.crates-io]
47+
# Until https://github.com/steveklabnik/semver-parser/pull/60 merges.
48+
semver-parser = { git = "https://github.com/illicitonion/semver-parser.git", rev = "ad6589269eab8851f3d5ad362a6b1cd89a1b6693" }

crate_universe/defs.bzl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,10 @@ def _crate_universe_resolve_impl(repository_ctx):
139139
"RUSTC": str(rustc_path),
140140
"RUST_LOG": "info",
141141
},
142+
quiet = False,
142143
)
143-
if result.stderr:
144-
print("Output from resolver: " + result.stderr) # buildifier: disable=print
145144
if result.return_code != 0:
146-
fail("Error resolving deps:\n" + result.stdout + "\n" + result.stderr)
145+
fail("Error resolving crate_universe deps - see above output for more information")
147146

148147
repository_ctx.file("BUILD.bazel")
149148

crate_universe/src/renderer.rs

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,7 @@ impl Renderer {
366366
crate_data.crate_context.pkg_name, crate_data.crate_context.pkg_version
367367
));
368368
let mut build_file = File::create(&build_file_path).with_context(|| {
369-
format!(
370-
"Could not create BUILD file: {}",
371-
build_file_path.display()
372-
)
369+
format!("Could not create BUILD file: {}", build_file_path.display())
373370
})?;
374371
write!(build_file, "{}\n", &build_file_content)?;
375372
}
@@ -604,6 +601,56 @@ mod tests {
604601
assert_eq!(output, expected_repository_rule);
605602
}
606603

604+
#[test]
605+
fn render_http_and_git() {
606+
let renderer = {
607+
let mut renderer = mock_renderer(true);
608+
renderer
609+
.context
610+
.transitive_renderable_packages
611+
.push(RenderablePackage {
612+
crate_context: testing::maplit_crate_context(false),
613+
per_triple_metadata: BTreeMap::new(),
614+
is_proc_macro: false,
615+
});
616+
renderer
617+
};
618+
619+
let mut output = Vec::new();
620+
621+
renderer
622+
.render_workspaces(&mut output)
623+
.expect("Error rendering");
624+
625+
let output = String::from_utf8(output).expect("Non-UTF8 output");
626+
627+
let expected_repository_rule = indoc! { r#"
628+
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
629+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
630+
631+
def pinned_rust_install():
632+
new_git_repository(
633+
name = "rule_prefix__lazy_static__1_4_0",
634+
strip_prefix = "",
635+
build_file = Label("//:BUILD.lazy_static-1.4.0.bazel"),
636+
remote = "https://github.com/rust-lang-nursery/lazy-static.rs.git",
637+
commit = "421669662b35fcb455f2902daed2e20bbbba79b6",
638+
)
639+
640+
http_archive(
641+
name = "rule_prefix__maplit__1_0_2",
642+
build_file = Label("//:BUILD.maplit-1.0.2.bazel"),
643+
sha256 = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d",
644+
strip_prefix = "maplit-1.0.2",
645+
type = "tar.gz",
646+
url = "https://crates.io/api/v1/crates/maplit/1.0.2/download",
647+
)
648+
649+
"# };
650+
651+
assert_eq!(output, expected_repository_rule);
652+
}
653+
607654
#[test]
608655
fn render_no_crates() {
609656
let renderer = Renderer::new(

crate_universe/src/templates/defs.bzl.template

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
{%- for crate_data in crates -%}
22
{%- if crate_data.crate_context.source_details.git_data -%}
33
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
4-
{%- break %}
4+
{% break %}
55
{%- endif %}
66
{%- endfor %}
77
{%- for crate_data in crates -%}
88
{%- if not crate_data.crate_context.source_details.git_data -%}
99
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
10-
{%- break %}
10+
{% break %}
1111
{%- endif %}
1212
{%- endfor %}
1313
{%- if crates %}
14-
1514
{% endif -%}
1615
def pinned_rust_install():
1716
{%- if not crates %}

crate_universe/src/testing.rs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,58 @@ pub(crate) fn lazy_static_crate_context(git: bool) -> CrateContext {
5757
is_proc_macro: false,
5858
}
5959
}
60+
61+
pub(crate) fn maplit_crate_context(git: bool) -> CrateContext {
62+
let git_data = if git {
63+
Some(GitRepo {
64+
remote: String::from("https://github.com/bluss/maplit.git"),
65+
commit: String::from("04936f703da907bc4ffdaced121e4cfd5ecbaec6"),
66+
path_to_crate_root: None,
67+
})
68+
} else {
69+
None
70+
};
71+
72+
CrateContext {
73+
pkg_name: String::from("maplit"),
74+
pkg_version: Version::parse("1.0.2").unwrap(),
75+
edition: String::from("2015"),
76+
raze_settings: Default::default(),
77+
canonical_additional_build_file: None,
78+
default_deps: CrateDependencyContext {
79+
dependencies: vec![],
80+
proc_macro_dependencies: vec![],
81+
data_dependencies: vec![],
82+
build_dependencies: vec![],
83+
build_proc_macro_dependencies: vec![],
84+
build_data_dependencies: vec![],
85+
dev_dependencies: vec![],
86+
aliased_dependencies: vec![],
87+
},
88+
source_details: SourceDetails { git_data },
89+
sha256: Some(String::from(
90+
"3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d",
91+
)),
92+
registry_url: String::from("https://registry.url/"),
93+
expected_build_path: String::from("UNUSED"),
94+
lib_target_name: Some(String::from("UNUSED")),
95+
license: LicenseData::default(),
96+
features: vec![],
97+
workspace_path_to_crate: String::from("UNUSED"),
98+
workspace_member_dependents: vec![],
99+
workspace_member_dev_dependents: vec![],
100+
workspace_member_build_dependents: vec![],
101+
is_workspace_member_dependency: false,
102+
is_binary_dependency: false,
103+
targets: vec![BuildableTarget {
104+
kind: String::from("lib"),
105+
name: String::from("maplit"),
106+
path: String::from("src/lib.rs"),
107+
edition: String::from("2015"),
108+
}],
109+
build_script_target: None,
110+
targeted_deps: vec![],
111+
links: None,
112+
is_proc_macro: false,
113+
}
114+
}

0 commit comments

Comments
 (0)