From a7ee3a23645a915454df4db8d382406bb1423b99 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:28:12 +0100 Subject: [PATCH 1/2] Update to toml 1.0 --- Cargo.lock | 61 +++++++++++++++------------------ drivers/amlserde/Cargo.toml | 2 +- drivers/pcid-spawner/Cargo.toml | 2 +- drivers/usb/xhcid/Cargo.toml | 2 +- 4 files changed, 30 insertions(+), 37 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c84fc7c087..fc341f992d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,7 +86,7 @@ version = "0.0.1" dependencies = [ "acpi", "serde", - "toml 0.7.8", + "toml", ] [[package]] @@ -1526,7 +1526,7 @@ dependencies = [ "pico-args", "redox_syscall 0.7.1", "serde", - "toml 0.5.11", + "toml", ] [[package]] @@ -2162,11 +2162,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2387,47 +2387,43 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.11" +version = "1.0.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", + "indexmap", + "serde_core", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "1.0.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" dependencies = [ - "serde", + "serde_core", ] [[package]] -name = "toml_edit" -version = "0.19.15" +name = "toml_parser" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", "winnow", ] +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + [[package]] name = "twox-hash" version = "1.6.3" @@ -2873,12 +2869,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr 2.8.0", -] +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" [[package]] name = "wit-bindgen" @@ -2991,7 +2984,7 @@ dependencies = [ "serde_json", "smallvec 1.15.1", "thiserror 1.0.69", - "toml 0.5.11", + "toml", ] [[package]] diff --git a/drivers/amlserde/Cargo.toml b/drivers/amlserde/Cargo.toml index 28d1b56834..ecf129a38b 100644 --- a/drivers/amlserde/Cargo.toml +++ b/drivers/amlserde/Cargo.toml @@ -11,4 +11,4 @@ edition = "2021" [dependencies] acpi = { git = "https://github.com/jackpot51/acpi.git" } serde = { version = "1.0", features = ["derive"] } -toml = "0.7.3" +toml = "1" diff --git a/drivers/pcid-spawner/Cargo.toml b/drivers/pcid-spawner/Cargo.toml index ff7858e91d..e650592592 100644 --- a/drivers/pcid-spawner/Cargo.toml +++ b/drivers/pcid-spawner/Cargo.toml @@ -11,7 +11,7 @@ log.workspace = true pico-args = "0.5" redox_syscall.workspace = true serde = { version = "1", features = ["derive"] } -toml = "0.5" +toml = "1" config = { path = "../../config" } common = { path = "../common" } diff --git a/drivers/usb/xhcid/Cargo.toml b/drivers/usb/xhcid/Cargo.toml index 2b1969380a..033898b7fa 100644 --- a/drivers/usb/xhcid/Cargo.toml +++ b/drivers/usb/xhcid/Cargo.toml @@ -26,7 +26,7 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" smallvec = { version = "1", features = ["serde"] } thiserror = "1" -toml = "0.5" +toml = "1" common = { path = "../../common" } daemon = { path = "../../../daemon" } From 124f11bde1cbaea7ce8c71a84268b41dba7a2dd1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:41:39 +0100 Subject: [PATCH 2/2] init: Convert all service definitions to toml --- Cargo.lock | 1 + init.d/00_logging_ramfs.service | 21 ++++++++------------ init.d/00_nulld.service | 19 +++++++----------- init.d/00_randd.service | 23 ++++++++-------------- init.d/00_rtcd.service | 17 +++++++--------- init.d/00_runtime.target | 23 ++++++++++------------ init.d/00_zerod.service | 19 +++++++----------- init.d/10_inputd.service | 17 ++++++---------- init.d/10_lived.service | 17 +++++++--------- init.d/20_fbbootlogd.service | 19 +++++++----------- init.d/20_fbcond.service | 21 ++++++++------------ init.d/20_graphics.target | 19 ++++++++---------- init.d/20_vesad.service | 33 ++++++++++++++------------------ init.d/90_exit_initfs.switchroot | 15 ++++++--------- init/Cargo.toml | 1 + init/src/unit.rs | 9 ++++++--- 16 files changed, 111 insertions(+), 163 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fc341f992d..5a7ac88c98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1133,6 +1133,7 @@ dependencies = [ "libredox", "serde", "serde_json", + "toml", ] [[package]] diff --git a/init.d/00_logging_ramfs.service b/init.d/00_logging_ramfs.service index d46cea9f8f..6971bc984e 100644 --- a/init.d/00_logging_ramfs.service +++ b/init.d/00_logging_ramfs.service @@ -1,13 +1,8 @@ -{ - "unit": { - "default_dependencies": false, - "requires_weak": ["00_randd.service"] - }, - "service": { - "cmd": "ramfs", - "args": ["logging"], - "type": { - "scheme": "logging" - } - } -} +[unit] +default_dependencies = false +requires_weak = ["00_randd.service"] + +[service] +cmd = "ramfs" +args = ["logging"] +type = { scheme = "logging" } diff --git a/init.d/00_nulld.service b/init.d/00_nulld.service index 6775040ba9..3ec760faa5 100644 --- a/init.d/00_nulld.service +++ b/init.d/00_nulld.service @@ -1,12 +1,7 @@ -{ - "unit": { - "description": "/dev/null", - "default_dependencies": false - }, - "service": { - "cmd": "nulld", - "type": { - "scheme": "null" - } - } -} +[unit] +description = "/dev/null" +default_dependencies = false + +[service] +cmd = "nulld" +type = { scheme = "null" } diff --git a/init.d/00_randd.service b/init.d/00_randd.service index 2155c4cb52..d0bb7d0e43 100644 --- a/init.d/00_randd.service +++ b/init.d/00_randd.service @@ -1,15 +1,8 @@ -{ - "unit": { - "description": "/dev/rand", - "default_dependencies": false - }, - "service": { - "cmd": "randd", - "args": [ - "rand" - ], - "type": { - "scheme": "rand" - } - } -} +[unit] +description = "/dev/random" +default_dependencies = false + +[service] +cmd = "randd" +args = ["rand"] +type = { scheme = "rand" } diff --git a/init.d/00_rtcd.service b/init.d/00_rtcd.service index 6c3157d44b..ffe8ea2e56 100644 --- a/init.d/00_rtcd.service +++ b/init.d/00_rtcd.service @@ -1,10 +1,7 @@ -{ - "unit": { - "description": "Set time from realtime clock", - "default_dependencies": false - }, - "service": { - "cmd": "rtcd", - "type": "oneshot" - } -} +[unit] +description = "Set time from realtime clock" +default_dependencies = false + +[service] +cmd = "rtcd" +type = "oneshot" diff --git a/init.d/00_runtime.target b/init.d/00_runtime.target index 2acf50168b..801821fb3e 100644 --- a/init.d/00_runtime.target +++ b/init.d/00_runtime.target @@ -1,13 +1,10 @@ -{ - "unit": { - "description": "Services that relibc needs to function", - "default_dependencies": false, - "requires_weak": [ - "00_nulld.service", - "00_randd.service", - "00_rtcd.service", - "00_zerod.service", - "00_logging_ramfs.service" - ] - } -} +[unit] +description = "Services that relibc needs to function" +default_dependencies = false +requires_weak = [ + "00_nulld.service", + "00_randd.service", + "00_rtcd.service", + "00_zerod.service", + "00_logging_ramfs.service", +] diff --git a/init.d/00_zerod.service b/init.d/00_zerod.service index 576b095fd5..25673b89e6 100644 --- a/init.d/00_zerod.service +++ b/init.d/00_zerod.service @@ -1,12 +1,7 @@ -{ - "unit": { - "description": "/dev/zero", - "default_dependencies": false - }, - "service": { - "cmd": "zerod", - "type": { - "scheme": "zero" - } - } -} +[unit] +description = "/dev/zero" +default_dependencies = false + +[service] +cmd = "zerod" +type = { scheme = "zero" } diff --git a/init.d/10_inputd.service b/init.d/10_inputd.service index 96e7f1e0a6..ba291046ab 100644 --- a/init.d/10_inputd.service +++ b/init.d/10_inputd.service @@ -1,11 +1,6 @@ -{ - "unit": { - "description": "VT input and graphics multiplexer" - }, - "service": { - "cmd": "inputd", - "type": { - "scheme": "input" - } - } -} +[unit] +description = "VT input and graphics multiplexer" + +[service] +cmd = "inputd" +type = { scheme = "input" } diff --git a/init.d/10_lived.service b/init.d/10_lived.service index baec5da7c0..7745f4b761 100644 --- a/init.d/10_lived.service +++ b/init.d/10_lived.service @@ -1,10 +1,7 @@ -{ - "_comment": "Needs to start before drivers to ensure it gets priority when redoxfs searches for disks", - "unit": { - "description": "Live disk" - }, - "service": { - "cmd": "lived", - "type": "notify" - } -} +# Needs to start before drivers to ensure it gets priority when redoxfs searches for disks +[unit] +description = "Live disk" + +[service] +cmd = "lived" +type = "notify" diff --git a/init.d/20_fbbootlogd.service b/init.d/20_fbbootlogd.service index 72d90b9abb..5a8bf3c820 100644 --- a/init.d/20_fbbootlogd.service +++ b/init.d/20_fbbootlogd.service @@ -1,12 +1,7 @@ -{ - "unit": { - "description": "Graphical bootlog", - "requires_weak": ["10_inputd.service", "20_vesad.service"] - }, - "service": { - "cmd": "fbbootlogd", - "type": { - "scheme": "fbbootlog" - } - } -} +[unit] +description = "Graphical bootlog" +requires_weak = ["10_inputd.service", "20_vesad.service"] + +[service] +cmd = "fbbootlogd" +type = { scheme = "fbbootlog" } diff --git a/init.d/20_fbcond.service b/init.d/20_fbcond.service index f11d4d5aa8..8db3dfdbeb 100644 --- a/init.d/20_fbcond.service +++ b/init.d/20_fbcond.service @@ -1,13 +1,8 @@ -{ - "unit": { - "description": "Framebuffer text console", - "requires_weak": ["10_inputd.service", "20_vesad.service"] - }, - "service": { - "cmd": "fbcond", - "args": ["2"], - "type": { - "scheme": "fbcon" - } - } -} +[unit] +description = "Framebuffer text console" +requires_weak = ["10_inputd.service", "20_vesad.service"] + +[service] +cmd = "fbcond" +args = ["2"] +type = { scheme = "fbcon" } diff --git a/init.d/20_graphics.target b/init.d/20_graphics.target index f8230dfe5d..f4aa91fcc6 100644 --- a/init.d/20_graphics.target +++ b/init.d/20_graphics.target @@ -1,11 +1,8 @@ -{ - "unit": { - "description": "Graphics subsystem", - "requires_weak": [ - "10_inputd.service", - "20_vesad.service", - "20_fbbootlogd.service", - "20_fbcond.service" - ] - } -} +[unit] +description = "Graphics subsystem" +requires_weak = [ + "10_inputd.service", + "20_vesad.service", + "20_fbbootlogd.service", + "20_fbcond.service", +] diff --git a/init.d/20_vesad.service b/init.d/20_vesad.service index 5feea711ec..70fbfb35f1 100644 --- a/init.d/20_vesad.service +++ b/init.d/20_vesad.service @@ -1,19 +1,14 @@ -{ - "unit": { - "description": "Bootloader framebuffer handler", - "requires_weak": [ - "10_inputd.service" - ] - }, - "service": { - "cmd": "vesad", - "inherit_envs": [ - "FRAMEBUFFER_ADDR", - "FRAMEBUFFER_VIRT", - "FRAMEBUFFER_WIDTH", - "FRAMEBUFFER_HEIGHT", - "FRAMEBUFFER_STRIDE" - ], - "type": "notify" - } -} +[unit] +description = "Bootloader framebuffer handler" +requires_weak = ["10_inputd.service"] + +[service] +cmd = "vesad" +inherit_envs = [ + "FRAMEBUFFER_ADDR", + "FRAMEBUFFER_VIRT", + "FRAMEBUFFER_WIDTH", + "FRAMEBUFFER_HEIGHT", + "FRAMEBUFFER_STRIDE", +] +type = "notify" diff --git a/init.d/90_exit_initfs.switchroot b/init.d/90_exit_initfs.switchroot index 054b414d60..f91243b3c5 100644 --- a/init.d/90_exit_initfs.switchroot +++ b/init.d/90_exit_initfs.switchroot @@ -1,9 +1,6 @@ -{ - "unit": { - "requires_weak": ["50_rootfs"] - }, - "switchroot": { - "prefix": "/usr", - "etcdir": "/etc" - } -} +[unit] +requires_weak = ["50_rootfs"] + +[switchroot] +prefix = "/usr" +etcdir = "/etc" diff --git a/init/Cargo.toml b/init/Cargo.toml index 5320f3807b..dcd57db3bd 100644 --- a/init/Cargo.toml +++ b/init/Cargo.toml @@ -8,6 +8,7 @@ license = "MIT" libredox.workspace = true serde = { version = "1", features = ["derive"] } serde_json = "1" +toml = "1" config = { path = "../config" } daemon = { path = "../daemon" } diff --git a/init/src/unit.rs b/init/src/unit.rs index a03a66bc40..42fac48070 100644 --- a/init/src/unit.rs +++ b/init/src/unit.rs @@ -149,7 +149,8 @@ impl Unit { ) } Some("service") => { - let service: SerializedService = serde_json::from_str(&config)?; + let service: SerializedService = toml::from_str(&config) + .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; ( service.unit, UnitKind::Service { @@ -159,11 +160,13 @@ impl Unit { ) } Some("target") => { - let target: SerializedTarget = serde_json::from_str(&config)?; + let target: SerializedTarget = toml::from_str(&config) + .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; (target.unit, UnitKind::Target {}, vec![]) } Some("switchroot") => { - let switchroot: SerializedSwitchRoot = serde_json::from_str(&config)?; + let switchroot: SerializedSwitchRoot = toml::from_str(&config) + .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; ( switchroot.unit, UnitKind::SwitchRoot {