Files
RedBear-OS/local/patches/base/P20-ramfs-requires-randd.patch
T

35 lines
1.7 KiB
Diff

diff --git a/init.initfs.d/ramfs@.service b/init.initfs.d/ramfs@.service
index bb512c60..3c3ed97d 100644
--- a/init.initfs.d/ramfs@.service
+++ b/init.initfs.d/ramfs@.service
@@ -4 +4 @@ default_dependencies = false
-requires_weak = ["00_randd.service"]
+requires = ["00_randd.service"]
diff --git a/init/src/scheduler.rs b/init/src/scheduler.rs
index 1bfc5c48..8db29281 100644
--- a/init/src/scheduler.rs
+++ b/init/src/scheduler.rs
@@ -120,2 +120,20 @@ if !hard_deps_met {
- init_warn(&format!("{}: hard dependency not met, skipping", job.unit.0));
- self.completed.insert(job.unit);
+ let unit = unit_store.unit(&job.unit);
+ let unit_id_str = job.unit.0.clone();
+ let all_deps_missing = unit.info.requires.iter().all(|dep| {
+ self.completed.contains(dep) || !unit_store.has_unit(dep)
+ });
+ if all_deps_missing {
+ init_warn(&format!("{}: hard dependency not met, skipping", unit_id_str));
+ self.completed.insert(job.unit);
+ continue 'a;
+ }
+ defer_count += 1;
+ self.pending.push_back(job);
+ if defer_count > self.pending.len() + self.completed.len() {
+ init_warn(&format!(
+ "{}: hard dependency not met after deferring, skipping",
+ unit_id_str
+ ));
+ self.completed.insert(UnitId(unit_id_str));
+ return;
+ }