--- a/init/src/scheduler.rs 2026-05-04 22:01:55.238384585 +0100 +++ b/init/src/scheduler.rs 2026-05-04 22:37:31.323354810 +0100 @@ -6,6 +6,7 @@ pub struct Scheduler { pending: VecDeque, + completed: VecDeque, } struct Job { @@ -21,6 +22,7 @@ pub fn new() -> Scheduler { Scheduler { pending: VecDeque::new(), + completed: VecDeque::new(), } } @@ -66,6 +68,9 @@ let unit = unit_store.unit_mut(&job.unit); for dep in &unit.info.requires_weak { + if self.completed.contains(dep) { + continue; + } for pending_job in &self.pending { if &pending_job.unit == dep { self.pending.push_back(job); @@ -75,6 +80,7 @@ } run(unit, init_config); + self.completed.push_back(job.unit); } } }