Stop using old version of syn in rustc-workspace-hack

None of the tools seem to need syn 0.15.35, so we can just build syn
1.0.

This was causing an issue with clippy's `compile-test` program: since
multiple versions of `syn` would exist in the build directory, we would
non-deterministically pick one based on filesystem iteration order. If
the pre-1.0 version of `syn` was picked, a strange build error would
occur (see
https://github.com/rust-lang/rust/pull/73594#issuecomment-647671463)

To prevent this kind of issue from happening again, we now panic if we
find multiple versions of a crate in the build directly, instead of
silently picking the first version we find.
This commit is contained in:
Aaron Hill 2020-06-22 13:29:04 -04:00
parent d3feb8baaf
commit e2ab98df08
No known key found for this signature in database
GPG Key ID: B4087E510E98B164
3 changed files with 4 additions and 4 deletions

View File

@ -3532,7 +3532,6 @@ dependencies = [
"serde_json", "serde_json",
"smallvec 0.6.10", "smallvec 0.6.10",
"smallvec 1.4.0", "smallvec 1.4.0",
"syn 0.15.35",
"syn 1.0.11", "syn 1.0.11",
"url 2.1.0", "url 2.1.0",
"winapi 0.3.8", "winapi 0.3.8",

View File

@ -49,7 +49,9 @@ fn third_party_crates() -> String {
if let Some(name) = path.file_name().and_then(OsStr::to_str) { if let Some(name) = path.file_name().and_then(OsStr::to_str) {
for dep in CRATES { for dep in CRATES {
if name.starts_with(&format!("lib{}-", dep)) && name.ends_with(".rlib") { if name.starts_with(&format!("lib{}-", dep)) && name.ends_with(".rlib") {
crates.entry(dep).or_insert(path); if let Some(old) = crates.insert(dep, path.clone()) {
panic!("Found multiple rlibs for crate `{}`: `{:?}` and `{:?}", dep, old, path);
}
break; break;
} }
} }

View File

@ -69,8 +69,7 @@ serde = { version = "1.0.82", features = ['derive'] }
serde_json = { version = "1.0.31", features = ["raw_value"] } serde_json = { version = "1.0.31", features = ["raw_value"] }
smallvec-0_6 = { package = "smallvec", version = "0.6", features = ['union', 'may_dangle'] } smallvec-0_6 = { package = "smallvec", version = "0.6", features = ['union', 'may_dangle'] }
smallvec = { version = "1.0", features = ['union', 'may_dangle'] } smallvec = { version = "1.0", features = ['union', 'may_dangle'] }
syn = { version = "0.15", features = ['full', 'extra-traits'] } syn = { version = "1", features = ['fold', 'full', 'extra-traits', 'visit'] }
syn-1 = { package = "syn", version = "1", features = ['fold', 'full', 'extra-traits', 'visit'] }
url = { version = "2.0", features = ['serde'] } url = { version = "2.0", features = ['serde'] }
[target.'cfg(not(windows))'.dependencies] [target.'cfg(not(windows))'.dependencies]