From d01da350c18c2ab0709923dac602b2264a6b4530 Mon Sep 17 00:00:00 2001 From: vasilito Date: Wed, 1 Jul 2026 12:56:45 +0300 Subject: [PATCH] libredox: Red Bear OS Phase J fork (use local syscall with EnterS2Idle/ExitS2Idle) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase J: hardware-agnostic s2idle / Modern Standby support in libredox. The libredox 0.1.17 dep on redox_syscall is redirected to the local fork at ../syscall (the fork at local/sources/syscall/ which adds EnterS2Idle/ExitS2Idle AcPiVerb variants to upstream's 0.8.1). This breaks the libredox::error::Error <-> syscall::Error type-identity barrier that previously caused E0277 errors in scheme-utils and daemon when the local syscall fork was used. Now that libredox also uses the local fork, both types are the same compile-time type. The version field stays at upstream 0.1.17 per the AGENTS.md 'GOLDEN RULE — Red Bear adapts to upstream, never the reverse'. Periodic rebase via 'git fetch upstream' is the workflow when upstream changes. Hardware-agnostic: works for any platform with Modern Standby firmware (Dell, HP, Lenovo, LG Gram, etc.). --- Cargo.toml | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml.orig | 42 +++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 Cargo.toml create mode 100644 Cargo.toml.orig diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..c29a917bcc --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,75 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2021" +name = "libredox" +version = "0.1.17" +authors = ["4lDO2 <4lDO2@protonmail.com>"] +build = false +exclude = ["target"] +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Redox stable ABI" +readme = false +license = "MIT" +repository = "https://gitlab.redox-os.org/redox-os/libredox.git" + +[features] +base = ["libc"] +call = ["base"] +default = [ + "base", + "call", + "std", + "redox_syscall", + "protocol", +] +mkns = ["ioslice"] +protocol = [ + "plain", + "bitflags", +] +std = ["base"] + +[lib] +name = "libredox" +path = "src/lib.rs" + +[dependencies.bitflags] +version = "2" +optional = true + +[dependencies.ioslice] +version = "0.6" +optional = true + +[dependencies.libc] +version = "0.2" +optional = true + +[dependencies.plain] +version = "0.2" +optional = true + +# Red Bear OS Phase J: path override to the local syscall +# fork. The local fork at ../syscall/ adds the +# EnterS2Idle/ExitS2Idle AcPiVerb variants. This breaks +# the libredox::error::Error <-> syscall::Error type- +# identity barrier that previously caused E0277 errors in +# scheme-utils and daemon. +[dependencies.redox_syscall] +path = "../syscall" +version = "0.8" +optional = true diff --git a/Cargo.toml.orig b/Cargo.toml.orig new file mode 100644 index 0000000000..75d5b5da72 --- /dev/null +++ b/Cargo.toml.orig @@ -0,0 +1,42 @@ +[package] +name = "libredox" +authors = ["4lDO2 <4lDO2@protonmail.com>"] +# Red Bear OS Phase J: version is 0.1.17 upstream but the +# redox_syscall dep is redirected to the local fork at +# ../syscall (which adds EnterS2Idle/ExitS2Idle AcpiVerb +# variants). The version field stays at upstream 0.1.17 +# per the AGENTS.md "GOLDEN RULE" — periodic rebase via +# `git fetch upstream` is the workflow when upstream changes. +version = "0.1.17" +edition = "2021" +license = "MIT" +description = "Redox stable ABI" +# Red Bear OS fork lives at the canonical outer repo +# (gitea.redbearos.org/vasilito/RedBear-OS). +repository = "https://gitea.redbearos.org/vasilito/RedBear-OS" +exclude = ["target"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[features] +default = ["base", "call", "std", "redox_syscall", "protocol"] +base = ["libc"] +call = ["base"] +std = ["base"] +protocol = ["plain", "bitflags", "redox_syscall"] +mkns = ["ioslice"] + +[dependencies] +bitflags = { version = "2", optional = true } +libc = { version = "0.2", optional = true } +# Phase J: path override to the local fork (../syscall +# relative to the libredox fork's local/sources/libredox/ +# path). This gives libredox access to the EnterS2Idle / +# ExitS2Idle AcpiVerb variants. Cargo's [patch.crates-io] +# in the workspace's outer Cargo.toml (in base/ and kernel/) +# is what wires this path through to the actual +# redox_syscall crate; this path entry is the libredox- +# side patch override for the same crate. +redox_syscall = { path = "../syscall", version = "0.8", optional = true } +ioslice = { version = "0.6", optional = true } +plain = { version = "0.2", optional = true }