diff options
author | Kornel <kornel@geekhood.net> | 2019-09-04 23:01:41 +0100 |
---|---|---|
committer | Kornel <kornel@geekhood.net> | 2019-09-04 23:02:02 +0100 |
commit | b3fe5f737f58b6bde586c8968af83caf4bb4a2e0 (patch) | |
tree | aeecc18a4d54a301c9e534e333f411ae1d4f974d /builder | |
parent | 41bbaad4fc685e1bb9221702e18feffb93f8b1d8 (diff) |
Collect broken pre-1.0 versions sparately
Diffstat (limited to 'builder')
-rw-r--r-- | builder/src/bin/export.rs | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/builder/src/bin/export.rs b/builder/src/bin/export.rs index 02fd6c7..c406c41 100644 --- a/builder/src/bin/export.rs +++ b/builder/src/bin/export.rs @@ -20,28 +20,30 @@ fn main() { println!("9.9.9 rand <=0.3.8"); println!("9.9.9 pkg-config <=0.3.2"); - for (origin, rows) in db.get_all_compat().unwrap() { - if !origin.is_crates_io() { + for c in db.get_all_compat().unwrap() { + if !c.origin.is_crates_io() || c.origin.short_crate_name() != "getopts" { continue; } - let mut combined = HashMap::with_capacity(rows.len()); - if rows.iter().all(|(_, compat)| compat.newest_ok.is_none()) { + let mut combined = HashMap::with_capacity(c.rustc_versions.len()); + if c.rustc_versions.iter().all(|(_, compat)| compat.crate_newest_ok.is_none()) { // Can't build it at all, so it's probably our env that's broken, not the crate continue; } - for (rust_ver, compat) in rows { - if let Some(bork) = compat.oldest_bad { - if compat.newest_ok.map_or(false, |n| n > bork) { - // invalid data (old version didn't build, but a newer does build) - continue; + for (rust_ver, compat) in c.rustc_versions { + if let Some(bork) = compat.crate_oldest_bad { + if let Some(n) = compat.crate_newest_ok { + if n > bork { + // invalid data (old version didn't build, but a newer does build) + continue; + } } - match combined.entry(bork) { + match combined.entry(bork.clone()) { Entry::Vacant(e) => { e.insert(rust_ver); }, Entry::Occupied(mut e) => { - if e.get() > &rust_ver { + if e.get() < &rust_ver { e.insert(rust_ver); } }, @@ -49,10 +51,13 @@ fn main() { } } // sort - let name: Arc<str> = origin.short_crate_name().into(); + let name: Arc<str> = c.origin.short_crate_name().into(); for (bork, rust_ver) in combined { outputs.insert((rust_ver, name.clone(), bork)); } + if let Some(oldbork) = c.old_crates_broken_up_to { + println!("9.9.9 {} <={}", name, oldbork); + } } for (rust_ver, name, bork) in outputs { println!("{} {} >={}", rust_ver, name, bork); |