mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
Auto merge of #7829 - Mark-Simulacrum:fix-progress-panics, r=ehuss
Store maximum queue length Previously, the queue length was constantly decreasing as we built crates, which meant that we were incorrectly displaying the progress bar. In debug builds, this even led to panics (due to underflow on subtraction). Not sure if we can add a test case for this. I have made the panic unconditional on release/debug though by explicitly checking that current is less than the maximum for the progress bar. Fixes https://github.com/rust-lang/cargo/pull/7731#issuecomment-578358824.
This commit is contained in:
commit
2a0f0c8f38
@ -95,6 +95,9 @@ pub struct JobQueue<'a, 'cfg> {
|
||||
/// It is created from JobQueue when we have fully assembled the crate graph
|
||||
/// (i.e., all package dependencies are known).
|
||||
struct DrainState<'a, 'cfg> {
|
||||
// This is the length of the DependencyQueue when starting out
|
||||
total_units: usize,
|
||||
|
||||
queue: DependencyQueue<Unit<'a>, Artifact, Job>,
|
||||
tx: Sender<Message>,
|
||||
rx: Receiver<Message>,
|
||||
@ -341,6 +344,7 @@ impl<'a, 'cfg> JobQueue<'a, 'cfg> {
|
||||
let (tx, rx) = channel();
|
||||
let progress = Progress::with_style("Building", ProgressStyle::Ratio, cx.bcx.config);
|
||||
let state = DrainState {
|
||||
total_units: self.queue.len(),
|
||||
queue: self.queue,
|
||||
tx,
|
||||
rx,
|
||||
@ -713,7 +717,7 @@ impl<'a, 'cfg> DrainState<'a, 'cfg> {
|
||||
.collect::<Vec<_>>();
|
||||
drop(self.progress.tick_now(
|
||||
self.finished,
|
||||
self.queue.len(),
|
||||
self.total_units,
|
||||
&format!(": {}", active_names.join(", ")),
|
||||
));
|
||||
}
|
||||
|
@ -224,6 +224,7 @@ impl<'cfg> State<'cfg> {
|
||||
|
||||
impl Format {
|
||||
fn progress(&self, cur: usize, max: usize) -> Option<String> {
|
||||
assert!(cur <= max);
|
||||
// Render the percentage at the far right and then figure how long the
|
||||
// progress bar is
|
||||
let pct = (cur as f64) / (max as f64);
|
||||
|
Loading…
x
Reference in New Issue
Block a user