From b6706f691471529d9b8b6ba4eefe686beebeee30 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 14:26:36 +0800 Subject: [PATCH 01/18] Upgrade Rust: 1.68.2 -> 1.75.0 Released December 2023. Present in Ubuntu 24.04: https://packages.ubuntu.com/noble/cargo At least 1.79 already in Fedora 40: https://packages.fedoraproject.org/pkgs/rust/cargo/ At least 1.79 alrady in FreeBSD 13 and later: https://www.freshports.org/lang/rust Signed-off-by: Daniel Schaefer --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 1a0b7fd6..c6d0ca13 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] profile = "default" -channel = "1.68.2" +channel = "1.75.0" components = ["rust-src", "clippy", "rustfmt"] targets = ["x86_64-unknown-uefi"] From d55a5b3c559e7ca4d826a332752d3302dc5ddde0 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 14:48:32 +0800 Subject: [PATCH 02/18] Update packages - sha2: 0.10.6 -> 0.10.8 Signed-off-by: Daniel Schaefer --- Cargo.lock | 8 ++++---- framework_lib/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 454ee100..6e1de3e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -267,9 +267,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -1067,9 +1067,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index e6458363..af55c8c7 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -44,7 +44,7 @@ built = { version = "0.5", features = ["chrono", "git2"] } [dependencies] lazy_static = "1.4.0" -sha2 = { version = "0.10.6", default-features = false, features = [ "force-soft" ] } +sha2 = { version = "0.10.8", default-features = false, features = [ "force-soft" ] } regex = { version = "1.10.0", default-features = false } redox_hwio = { git = "https://github.com/FrameworkComputer/rust-hwio", branch = "freebsd", default-features = false } libc = { version = "0.2.155", optional = true } From 3417584e52021f869c16e237d5fd845af2d61d58 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 14:49:21 +0800 Subject: [PATCH 03/18] Update packages - sha2: 0.10.6 -> 0.10.8 - regex: 1.10.4 -> 1.10.6 Signed-off-by: Daniel Schaefer --- Cargo.lock | 4 ++-- framework_lib/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e1de3e4..9fa29975 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -947,9 +947,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index af55c8c7..8f09ce71 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -45,7 +45,7 @@ built = { version = "0.5", features = ["chrono", "git2"] } [dependencies] lazy_static = "1.4.0" sha2 = { version = "0.10.8", default-features = false, features = [ "force-soft" ] } -regex = { version = "1.10.0", default-features = false } +regex = { version = "1.10.6", default-features = false } redox_hwio = { git = "https://github.com/FrameworkComputer/rust-hwio", branch = "freebsd", default-features = false } libc = { version = "0.2.155", optional = true } clap = { version = "4.0", features = ["derive"], optional = true } From 9d6eca3bd698f46f6bae35d5c281c5c4baa77dcc Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 14:50:54 +0800 Subject: [PATCH 04/18] Update packages - sha2: 0.10.6 -> 0.10.8 - regex: 1.10.4 -> 1.10.6 - libc: No update - clap: 4.0 -> 4.5 - clap-verbosity-flag: 2.0.1 -> 2.2.1 Signed-off-by: Daniel Schaefer --- Cargo.lock | 161 +++++++++++++++++++++++++-------------- framework_lib/Cargo.toml | 4 +- 2 files changed, 107 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fa29975..d27e9b68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,6 +20,55 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -106,50 +155,53 @@ dependencies = [ [[package]] name = "clap" -version = "4.0.32" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ - "bitflags", + "clap_builder", "clap_derive", - "clap_lex", - "is-terminal", - "once_cell", - "strsim", - "termcolor", ] [[package]] name = "clap-verbosity-flag" -version = "2.0.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eef05769009513df2eb1c3b4613e7fad873a14c600ff025b08f250f59fee7de" +checksum = "63d19864d6b68464c59f7162c9914a0b569ddc2926b4a2d71afe62a9738eff53" dependencies = [ "clap", "log", ] +[[package]] +name = "clap_builder" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + [[package]] name = "clap_derive" -version = "4.0.21" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.13", ] [[package]] name = "clap_lex" -version = "0.3.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" -dependencies = [ - "os_str_bytes", -] +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "codespan-reporting" @@ -161,6 +213,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + [[package]] name = "convert_case" version = "0.4.0" @@ -499,9 +557,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -581,7 +639,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] @@ -593,9 +651,15 @@ dependencies = [ "hermit-abi", "io-lifetimes", "rustix", - "windows-sys", + "windows-sys 0.42.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" version = "1.0.5" @@ -838,12 +902,6 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" -[[package]] -name = "os_str_bytes" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" - [[package]] name = "percent-encoding" version = "2.2.0" @@ -874,30 +932,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.107", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.86" @@ -1004,7 +1038,7 @@ dependencies = [ "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] @@ -1124,9 +1158,9 @@ checksum = "954e3e877803def9dc46075bf4060147c55cd70db97873077232eae0269dc89b" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1290,6 +1324,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "vcpkg" version = "0.2.15" @@ -1469,6 +1509,15 @@ dependencies = [ "windows_x86_64_msvc 0.42.0", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.0" diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index 8f09ce71..2eac5673 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -48,8 +48,8 @@ sha2 = { version = "0.10.8", default-features = false, features = [ "force-soft" regex = { version = "1.10.6", default-features = false } redox_hwio = { git = "https://github.com/FrameworkComputer/rust-hwio", branch = "freebsd", default-features = false } libc = { version = "0.2.155", optional = true } -clap = { version = "4.0", features = ["derive"], optional = true } -clap-verbosity-flag = { version = "2.0.1", optional = true } +clap = { version = "4.5", features = ["derive"], optional = true } +clap-verbosity-flag = { version = "2.2.1", optional = true } nix = { version = "0.25.0", optional = true } num = { version = "0.4", default-features = false } num-derive = { version = "0.4", default-features = false } From 24b03f97094f625a9f31625879c86a96249264ca Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 14:55:25 +0800 Subject: [PATCH 05/18] Update packages - sha2: 0.10.6 -> 0.10.8 - regex: 1.10.4 -> 1.10.6 - libc: No update - clap: 4.0 -> 4.5 - clap-verbosity-flag: 2.0.1 -> 2.2.1 - nix: 0.25.0 -> 0.29.0 Signed-off-by: Daniel Schaefer --- Cargo.lock | 36 ++++++++++++++++++++++++++++++------ framework_lib/Cargo.toml | 2 +- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d27e9b68..ad976632 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,6 +87,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "block-buffer" version = "0.10.3" @@ -140,6 +146,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.24" @@ -389,7 +401,7 @@ dependencies = [ "lazy_static", "libc", "log", - "nix", + "nix 0.29.0", "no-std-compat", "num", "num-derive", @@ -539,7 +551,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" dependencies = [ - "bitflags", + "bitflags 1.3.2", "libc", "libgit2-sys", "log", @@ -809,13 +821,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset", "pin-utils", ] +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "no-std-compat" version = "0.4.1" @@ -976,7 +1000,7 @@ version = "0.1.6" source = "git+https://github.com/FrameworkComputer/rust-hwio?branch=freebsd#9bcff4277d8f3d7dce2b12c6ad81d092ae35c4ba" dependencies = [ "lazy_static", - "nix", + "nix 0.25.1", ] [[package]] @@ -1033,7 +1057,7 @@ version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", @@ -1257,7 +1281,7 @@ name = "uefi" version = "0.20.0" source = "git+https://github.com/FrameworkComputer/uefi-rs?branch=merged#76130a0f1c1585012e598b8c514526bac09c68e0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "derive_more", "log", "ptr_meta", diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index 2eac5673..bc53b825 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -50,7 +50,7 @@ redox_hwio = { git = "https://github.com/FrameworkComputer/rust-hwio", branch = libc = { version = "0.2.155", optional = true } clap = { version = "4.5", features = ["derive"], optional = true } clap-verbosity-flag = { version = "2.2.1", optional = true } -nix = { version = "0.25.0", optional = true } +nix = { version = "0.29.0", features = ["ioctl", "user"], optional = true } num = { version = "0.4", default-features = false } num-derive = { version = "0.4", default-features = false } num-traits = { version = "0.2", default-features = false } From 77a9bfca3cc6e0ac1a8515166792f846a0012617 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 15:09:07 +0800 Subject: [PATCH 06/18] Update packages - sha2: 0.10.6 -> 0.10.8 - regex: 1.10.4 -> 1.10.6 - libc: No update - clap: 4.0 -> 4.5 - clap-verbosity-flag: 2.0.1 -> 2.2.1 - nix: 0.25.0 -> 0.29.0 - num-derive: 0.3 -> 0.4 - env_logger: 0.10 -> 0.11 - spin: 0.9.4 -> 0.9.8 - hidapi:2.1.0 -> 2.6.1 - rusb: 0.9.1 -> 0.9.4 Signed-off-by: Daniel Schaefer --- Cargo.lock | 124 +++++++++------------------------------ framework_lib/Cargo.toml | 10 ++-- 2 files changed, 33 insertions(+), 101 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad976632..37972f6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -346,37 +346,26 @@ dependencies = [ ] [[package]] -name = "env_logger" -version = "0.10.0" +name = "env_filter" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ - "humantime", - "is-terminal", "log", "regex", - "termcolor", ] [[package]] -name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "env_logger" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ - "cc", - "libc", + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", ] [[package]] @@ -412,7 +401,7 @@ dependencies = [ "rusb", "sha2", "smbios-lib", - "spin 0.9.4", + "spin 0.9.8", "uefi", "uefi-services", "windows 0.42.0", @@ -573,25 +562,17 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - [[package]] name = "hidapi" -version = "2.1.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a090a12b53564bcb2f6053b8be08d5f9e7b91f26953d6e8e08c9affd8aeb4ec9" +checksum = "9e58251020fe88fe0dae5ebcc1be92b4995214af84725b375d08354d0311c23c" dependencies = [ "cc", + "cfg-if", "libc", "pkg-config", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -644,28 +625,6 @@ dependencies = [ "mach 0.2.3", ] -[[package]] -name = "io-lifetimes" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" -dependencies = [ - "libc", - "windows-sys 0.42.0", -] - -[[package]] -name = "is-terminal" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" -dependencies = [ - "hermit-abi", - "io-lifetimes", - "rustix", - "windows-sys 0.42.0", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -725,9 +684,9 @@ dependencies = [ [[package]] name = "libusb1-sys" -version = "0.6.4" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d0e2afce4245f2c9a418511e5af8718bcaf2fa408aefb259504d1a9cb25f27" +checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" dependencies = [ "cc", "libc", @@ -756,12 +715,6 @@ dependencies = [ "cc", ] -[[package]] -name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - [[package]] name = "lock_api" version = "0.4.9" @@ -774,12 +727,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mach" @@ -1034,9 +984,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "rusb" -version = "0.9.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703aa035c21c589b34fb5136b12e68fc8dcf7ea46486861381361dd8ebf5cee0" +checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" dependencies = [ "libc", "libusb1-sys", @@ -1051,20 +1001,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.42.0", -] - [[package]] name = "ryu" version = "1.0.12" @@ -1167,9 +1103,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.4" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -1520,17 +1456,11 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows_aarch64_gnullvm 0.42.0", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", - "windows_x86_64_gnullvm 0.42.0", - "windows_x86_64_msvc 0.42.0", + "windows-targets 0.48.0", ] [[package]] diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index bc53b825..d6cbf3a3 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -54,14 +54,16 @@ nix = { version = "0.29.0", features = ["ioctl", "user"], optional = true } num = { version = "0.4", default-features = false } num-derive = { version = "0.4", default-features = false } num-traits = { version = "0.2", default-features = false } -env_logger = { version = "0.10.0", optional = true } +env_logger = { version = "0.11", optional = true } log = { version = "0.4", default-features = true } uefi = { version = "0.20", features = ["alloc"], optional = true } uefi-services = { version = "0.17", optional = true } plain = { version = "0.2.3", optional = true } -spin = { version = "0.9.4", optional = false } -hidapi = { version = "2.1.0", optional = true } -rusb = { version = "0.9.1", optional = true } +spin = { version = "0.9.8", optional = false } +# hidapi 2.6.2 needs nightly +# See: https://github.com/ruabmbua/hidapi-rs/pull/158 +hidapi = { version = "=2.6.1", optional = true } +rusb = { version = "0.9.4", optional = true } no-std-compat = { version = "0.4.1", features = [ "alloc" ] } guid_macros = { path = "../guid_macros" } wmi = { version = "0.13.3", optional = true } From 52e2c8bdf9e5f9ee9250148dd0b165cd86076fe4 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 15:11:22 +0800 Subject: [PATCH 07/18] Update windows 0.42 -> 0.58 Signed-off-by: Daniel Schaefer --- Cargo.lock | 127 +++++++++++++++++++++------------------ framework_lib/Cargo.toml | 2 +- 2 files changed, 68 insertions(+), 61 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37972f6a..c9f5a319 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,7 +404,7 @@ dependencies = [ "spin 0.9.8", "uefi", "uefi-services", - "windows 0.42.0", + "windows 0.58.0", "wmi", ] @@ -1389,37 +1389,32 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0286ba339aa753e70765d521bb0242cc48e1194562bfa2a2ad7ac8a6de28f5d5" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows_aarch64_gnullvm 0.42.0", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", - "windows_x86_64_gnullvm 0.42.0", - "windows_x86_64_msvc 0.42.0", + "windows-targets 0.48.0", ] [[package]] name = "windows" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-targets 0.48.0", + "windows-core 0.52.0", + "windows-implement 0.52.0", + "windows-interface 0.52.0", + "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core", - "windows-implement", - "windows-interface", + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -1432,6 +1427,19 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + [[package]] name = "windows-implement" version = "0.52.0" @@ -1443,6 +1451,17 @@ dependencies = [ "syn 2.0.13", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + [[package]] name = "windows-interface" version = "0.52.0" @@ -1454,6 +1473,36 @@ dependencies = [ "syn 2.0.13", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -1503,12 +1552,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" @@ -1521,12 +1564,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" - [[package]] name = "windows_aarch64_msvc" version = "0.48.0" @@ -1539,12 +1576,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" - [[package]] name = "windows_i686_gnu" version = "0.48.0" @@ -1563,12 +1594,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" - [[package]] name = "windows_i686_msvc" version = "0.48.0" @@ -1581,12 +1606,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" - [[package]] name = "windows_x86_64_gnu" version = "0.48.0" @@ -1599,12 +1618,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" @@ -1617,12 +1630,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" - [[package]] name = "windows_x86_64_msvc" version = "0.48.0" diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index d6cbf3a3..743f439c 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -80,7 +80,7 @@ default-features = false [dependencies.windows] optional = true -version = "0.42.0" +version = "0.58.0" features = [ "Win32_Foundation", "Win32_Storage_FileSystem", From 5d684e7ff7fb9bd5228edb95499f130424c76195 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 7 Aug 2024 15:41:19 +0800 Subject: [PATCH 08/18] Cargo.toml: Make sure MSRV is at least 1.68 Signed-off-by: Daniel Schaefer --- framework_lib/Cargo.toml | 3 ++- framework_uefi/Cargo.toml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index 743f439c..ebb94897 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -2,7 +2,8 @@ name = "framework_lib" version = "0.1.0" edition = "2021" -rust-version = "1.61" +# Minimum Supported Rust Version +rust-version = "1.68" build = "build.rs" [features] diff --git a/framework_uefi/Cargo.toml b/framework_uefi/Cargo.toml index 2d0b672a..f424339d 100644 --- a/framework_uefi/Cargo.toml +++ b/framework_uefi/Cargo.toml @@ -2,6 +2,7 @@ name = "framework_uefi" version = "0.1.0" edition = "2021" +# Minimum Supported Rust Version rust-version = "1.68" [[bin]] From ff01db64af076971cac1451e3d04f285e674267f Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Tue, 13 Aug 2024 16:44:27 +0800 Subject: [PATCH 09/18] audio: Fix clippy Seems with newer hid version, mutable is not required anymore. Signed-off-by: Daniel Schaefer --- framework_lib/src/audio_card.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework_lib/src/audio_card.rs b/framework_lib/src/audio_card.rs index 2990e9da..8647791d 100644 --- a/framework_lib/src/audio_card.rs +++ b/framework_lib/src/audio_card.rs @@ -46,7 +46,7 @@ pub fn check_synaptics_fw_version() { { continue; } - let mut handle = dev.open().unwrap(); + let handle = dev.open().unwrap(); let interface_number = if let Some(num) = find_hid_interface(&handle) { num From 22c05a4c68684576e0b7333d3b07b6b249848ecf Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 17:58:16 +0800 Subject: [PATCH 10/18] Update MSRV to 1.74 As determined by cargo-msrv. Should be fine, e.g. Ubuntu 24.04 LTS ships with Rust 1.75. Signed-off-by: Daniel Schaefer --- framework_lib/Cargo.toml | 3 ++- framework_uefi/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index ebb94897..baa573d7 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -3,7 +3,8 @@ name = "framework_lib" version = "0.1.0" edition = "2021" # Minimum Supported Rust Version -rust-version = "1.68" +# Ubuntu 24.04 LTS ships 1.75 +rust-version = "1.74" build = "build.rs" [features] diff --git a/framework_uefi/Cargo.toml b/framework_uefi/Cargo.toml index f424339d..56b113a2 100644 --- a/framework_uefi/Cargo.toml +++ b/framework_uefi/Cargo.toml @@ -3,7 +3,7 @@ name = "framework_uefi" version = "0.1.0" edition = "2021" # Minimum Supported Rust Version -rust-version = "1.68" +rust-version = "1.74" [[bin]] name = "uefitool" From e65909d56107d6bd016e2fd781a2c37c223866aa Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 17:58:47 +0800 Subject: [PATCH 11/18] Switch to Rust stable Don't pin an old release, let's let people use the latest stable. Signed-off-by: Daniel Schaefer --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c6d0ca13..0e7e68fc 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] profile = "default" -channel = "1.75.0" +channel = "stable" components = ["rust-src", "clippy", "rustfmt"] targets = ["x86_64-unknown-uefi"] From 7633da158acd67e20699bb8984ec0d8e833c3b8c Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 18:12:19 +0800 Subject: [PATCH 12/18] cros_ec: Use ArcMutex to make it safe Signed-off-by: Daniel Schaefer --- framework_lib/src/chromium_ec/cros_ec.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/framework_lib/src/chromium_ec/cros_ec.rs b/framework_lib/src/chromium_ec/cros_ec.rs index 7be7c723..a3b4928a 100644 --- a/framework_lib/src/chromium_ec/cros_ec.rs +++ b/framework_lib/src/chromium_ec/cros_ec.rs @@ -1,6 +1,7 @@ use nix::ioctl_readwrite; use num_traits::FromPrimitive; use std::os::unix::io::AsRawFd; +use std::sync::{Arc, Mutex}; use crate::chromium_ec::command::EcCommands; use crate::chromium_ec::{EcError, EcResponseStatus, EcResult, EC_MEMMAP_SIZE}; @@ -56,9 +57,9 @@ struct CrosEcCommandV2 { const DEV_PATH: &str = "/dev/cros_ec"; -// TODO: Make sure this is thread-safe! -// Are file descriptors threadsafe? Or do I need to open one per thread? -static mut CROS_EC_FD: Option = None; +lazy_static! { + static ref CROS_EC_FD: Arc>> = Arc::new(Mutex::new(None)); +} const CROS_EC_IOC_MAGIC: u8 = 0xEC; ioctl_readwrite!(cros_ec_cmd, CROS_EC_IOC_MAGIC, 0, _CrosEcCommandV2); @@ -67,14 +68,19 @@ ioctl_readwrite!(cros_ec_mem, CROS_EC_IOC_MAGIC, 1, CrosEcReadMem); //ioctl_none!(cros_ec_eventmask, CROS_EC_IOC_MAGIC, 2); fn get_fildes() -> i32 { - unsafe { CROS_EC_FD.as_ref().unwrap().as_raw_fd() } + let fd = CROS_EC_FD.lock().unwrap(); + fd.as_ref().unwrap().as_raw_fd() } // TODO: Also de-init fn init() { + let mut device = CROS_EC_FD.lock().unwrap(); + if (*device).is_some() { + return; + } match std::fs::File::open(DEV_PATH) { Err(why) => println!("Failed to open {}. Because: {:?}", DEV_PATH, why), - Ok(file) => unsafe { CROS_EC_FD = Some(file) }, + Ok(file) => *device = Some(file), }; // 2. Read max 80 bytes and check if equal to "1.0.0" // 3. Make sure it's v2 From cce4544a2aa6d7ae225e858869fc3b5f32a82e0e Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 18:12:55 +0800 Subject: [PATCH 13/18] util: Ignore unused variable warning Signed-off-by: Daniel Schaefer --- framework_lib/src/util.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/framework_lib/src/util.rs b/framework_lib/src/util.rs index e00d6de5..18a5a577 100644 --- a/framework_lib/src/util.rs +++ b/framework_lib/src/util.rs @@ -36,7 +36,8 @@ pub enum Platform { #[derive(Debug)] pub struct Config { - pub verbose: bool, + // TODO: Actually set and read this + pub _verbose: bool, pub platform: Platform, } @@ -49,7 +50,7 @@ impl Config { if (*config).is_none() { *config = Some(Config { - verbose: false, + _verbose: false, platform, }); } @@ -76,7 +77,7 @@ impl Config { // get_platform will call Config::get() recursively, // can't hold the lock when calling it smbios::get_platform().map(|platform| Config { - verbose: false, + _verbose: false, platform, }) } else { From 01f55a8c9e6f5f47dd082fe968447419c838c006 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 18:56:09 +0800 Subject: [PATCH 14/18] framework_lib: Update windows 0.58->0.59 Signed-off-by: Daniel Schaefer --- Cargo.lock | 107 +++++++++++++++++++++++++++++++-------- framework_lib/Cargo.toml | 2 +- 2 files changed, 86 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c9f5a319..fddf3009 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,7 +404,7 @@ dependencies = [ "spin 0.9.8", "uefi", "uefi-services", - "windows 0.58.0", + "windows 0.59.0", "wmi", ] @@ -1410,12 +1410,12 @@ dependencies = [ [[package]] name = "windows" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-core 0.59.0", + "windows-targets 0.53.0", ] [[package]] @@ -1429,15 +1429,15 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", + "windows-implement 0.59.0", + "windows-interface 0.59.0", "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] @@ -1453,9 +1453,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", @@ -1475,9 +1475,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", @@ -1486,21 +1486,20 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] @@ -1545,13 +1544,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" @@ -1564,6 +1579,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.0" @@ -1576,6 +1597,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.0" @@ -1588,12 +1615,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.0" @@ -1606,6 +1645,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.0" @@ -1618,6 +1663,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" @@ -1630,6 +1681,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.0" @@ -1642,6 +1699,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "wmi" version = "0.13.3" diff --git a/framework_lib/Cargo.toml b/framework_lib/Cargo.toml index baa573d7..5db42d89 100644 --- a/framework_lib/Cargo.toml +++ b/framework_lib/Cargo.toml @@ -82,7 +82,7 @@ default-features = false [dependencies.windows] optional = true -version = "0.58.0" +version = "0.59.0" features = [ "Win32_Foundation", "Win32_Storage_FileSystem", From 7a474930c8bf78d184c42ec3ddc91dda3bafbd33 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 18:56:40 +0800 Subject: [PATCH 15/18] framework_lib: Update to new windows-rs APIs Signed-off-by: Daniel Schaefer --- framework_lib/src/chromium_ec/windows.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework_lib/src/chromium_ec/windows.rs b/framework_lib/src/chromium_ec/windows.rs index b1fc90d4..82f46b24 100644 --- a/framework_lib/src/chromium_ec/windows.rs +++ b/framework_lib/src/chromium_ec/windows.rs @@ -4,7 +4,6 @@ use std::sync::{Arc, Mutex}; #[allow(unused_imports)] use windows::{ core::*, - w, Win32::Foundation::*, Win32::{ Storage::FileSystem::*, @@ -30,7 +29,7 @@ fn init() { *device = Some( CreateFileW( path, - FILE_GENERIC_READ | FILE_GENERIC_WRITE, + FILE_GENERIC_READ.0 | FILE_GENERIC_WRITE.0, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, From 02873558d5fe84939e46107e7eca13959ed43432 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 18:57:06 +0800 Subject: [PATCH 16/18] windows: Check if device is set before using Now an error because DeviceIoControl doesn't accept an option anymore Signed-off-by: Daniel Schaefer --- framework_lib/src/chromium_ec/windows.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/framework_lib/src/chromium_ec/windows.rs b/framework_lib/src/chromium_ec/windows.rs index 82f46b24..cd00d07e 100644 --- a/framework_lib/src/chromium_ec/windows.rs +++ b/framework_lib/src/chromium_ec/windows.rs @@ -55,8 +55,13 @@ pub fn read_memory(offset: u16, length: u16) -> EcResult> { let retb: u32 = 0; unsafe { let device = DEVICE.lock().unwrap(); + let device = if let Some(device) = *device { + device + } else { + return EcResult::Err(EcError::DeviceError("No EC device".to_string())); + }; DeviceIoControl( - *device, + device, IOCTL_CROSEC_RDMEM, Some(const_ptr), ptr_size, @@ -93,8 +98,13 @@ pub fn send_command(command: u16, command_version: u8, data: &[u8]) -> EcResult< unsafe { let device = DEVICE.lock().unwrap(); + let device = if let Some(device) = *device { + device + } else { + return EcResult::Err(EcError::DeviceError("No EC device".to_string())); + }; DeviceIoControl( - *device, + device, IOCTL_CROSEC_XCMD, Some(const_ptr), size.try_into().unwrap(), From 0cd2edab43cd4b0a45dbb6e5c61234c84c42986b Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 19:13:56 +0800 Subject: [PATCH 17/18] windows: Wrap HANDLE to windows 0.58 changed HANDLE from int to void pointer, now it wouldn't compile anymore because we need it to implement Send. So just implement a wrapper around it. Signed-off-by: Daniel Schaefer --- framework_lib/src/chromium_ec/windows.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/framework_lib/src/chromium_ec/windows.rs b/framework_lib/src/chromium_ec/windows.rs index cd00d07e..e16d5002 100644 --- a/framework_lib/src/chromium_ec/windows.rs +++ b/framework_lib/src/chromium_ec/windows.rs @@ -14,8 +14,14 @@ use windows::{ use crate::chromium_ec::EC_MEMMAP_SIZE; use crate::chromium_ec::{EcError, EcResponseStatus, EcResult}; +// Create a wrapper around HANDLE to mark it as Send. +// I'm not sure, but I think it's safe to do that for this type of HANDL. +#[derive(Copy, Clone)] +struct DevHandle(HANDLE); +unsafe impl Send for DevHandle {} + lazy_static! { - static ref DEVICE: Arc>> = Arc::new(Mutex::new(None)); + static ref DEVICE: Arc>> = Arc::new(Mutex::new(None)); } fn init() { @@ -26,7 +32,7 @@ fn init() { let path = w!(r"\\.\GLOBALROOT\Device\CrosEC"); unsafe { - *device = Some( + *device = Some(DevHandle( CreateFileW( path, FILE_GENERIC_READ.0 | FILE_GENERIC_WRITE.0, @@ -37,7 +43,7 @@ fn init() { None, ) .unwrap(), - ); + )); } } @@ -61,7 +67,7 @@ pub fn read_memory(offset: u16, length: u16) -> EcResult> { return EcResult::Err(EcError::DeviceError("No EC device".to_string())); }; DeviceIoControl( - device, + device.0, IOCTL_CROSEC_RDMEM, Some(const_ptr), ptr_size, @@ -104,7 +110,7 @@ pub fn send_command(command: u16, command_version: u8, data: &[u8]) -> EcResult< return EcResult::Err(EcError::DeviceError("No EC device".to_string())); }; DeviceIoControl( - device, + device.0, IOCTL_CROSEC_XCMD, Some(const_ptr), size.try_into().unwrap(), @@ -112,7 +118,8 @@ pub fn send_command(command: u16, command_version: u8, data: &[u8]) -> EcResult< size.try_into().unwrap(), Some(&mut returned as *mut u32), None, - ); + ) + .unwrap(); } match FromPrimitive::from_u32(cmd.result) { From ec3b5777194f4510e76a4c4cbc4e40cba5d9e0ab Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Wed, 29 Jan 2025 23:25:17 +0800 Subject: [PATCH 18/18] framework_uefi: Don't use -Csoft-float Fixes: #63 Signed-off-by: Daniel Schaefer --- framework_uefi/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/framework_uefi/Makefile b/framework_uefi/Makefile index eb40a022..6963d8f2 100644 --- a/framework_uefi/Makefile +++ b/framework_uefi/Makefile @@ -45,5 +45,4 @@ $(BUILD)/boot.efi: ../Cargo.lock $(SRC_DIR)/Cargo.toml $(SRC_DIR)/src/* --target $(TARGET) \ --release \ -- \ - -C soft-float \ --emit link=framework_uefi/$@