From 84868099e7c89e5abf36758568120faaa48b2b81 Mon Sep 17 00:00:00 2001 From: Tom Dohrmann Date: Sun, 10 May 2026 09:07:25 +0200 Subject: [PATCH 1/3] update to tempfile 3.27.0 Previously, tempfile depended on an old rustix version that no longer builds on the latest nightly compiler. Bumping the tempfile crate also bumps rustix. --- Cargo.lock | 380 +++++++++++++++++++++++----------- Cargo.toml | 2 +- tests/test_kernels/Cargo.lock | 2 +- 3 files changed, 265 insertions(+), 119 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa1c0028..bcb31226 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arrayvec" @@ -52,9 +52,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" [[package]] name = "bitvec" @@ -195,12 +195,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - [[package]] name = "cfg-if" version = "1.0.0" @@ -244,34 +238,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ - "cc", "libc", + "windows-sys", ] [[package]] name = "fastrand" -version = "1.9.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fatfs" @@ -284,6 +270,12 @@ dependencies = [ "log", ] +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "funty" version = "2.0.0" @@ -301,13 +293,26 @@ dependencies = [ "wasi", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", + "wasip3", +] + [[package]] name = "gpt" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.11.1", "crc", "log", "uuid", @@ -322,6 +327,21 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "heapless" version = "0.7.16" @@ -336,29 +356,27 @@ dependencies = [ ] [[package]] -name = "hermit-abi" -version = "0.3.2" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "instant" -version = "0.1.12" +name = "id-arena" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "indexmap" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ - "hermit-abi", - "libc", - "windows-sys", + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -367,17 +385,23 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.147" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "llvm-tools" @@ -435,6 +459,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a27daf9557165efe1d09b52f97393bf6283cadb0a76fbe64a1061e15553a994a" +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + [[package]] name = "ovmf-prebuilt" version = "0.1.0-alpha.1" @@ -447,11 +477,21 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -478,13 +518,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.29" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -518,7 +564,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.10", ] [[package]] @@ -539,15 +585,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "rsdp" version = "2.0.0" @@ -568,13 +605,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.26" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f3f8f960ed3b5a59055428714943298bf3fa2d4a1d53135084e0544829d995" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.1", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys", @@ -606,10 +642,11 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.166" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -633,15 +670,24 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.166" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.117", ] [[package]] @@ -701,9 +747,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.23" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -718,14 +764,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "autocfg", - "cfg-if", "fastrand", - "redox_syscall", + "getrandom 0.4.2", + "once_cell", "rustix", "windows-sys", ] @@ -846,7 +891,7 @@ checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.117", ] [[package]] @@ -866,7 +911,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e492212ac378a5e00da953718dafb1340d9fbaf4f27d6f3c5cab03d931d1c049" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.11.1", "rustversion", "x86", ] @@ -910,6 +955,12 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "usize_conversions" version = "0.2.0" @@ -928,7 +979,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" dependencies = [ - "getrandom", + "getrandom 0.2.10", ] [[package]] @@ -965,70 +1016,165 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "windows-sys" -version = "0.48.0" +name = "wasip2" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" dependencies = [ - "windows-targets", + "wit-bindgen 0.57.1", ] [[package]] -name = "windows-targets" -version = "0.48.1" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "wit-bindgen 0.51.0", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" +name = "wasm-metadata" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] [[package]] -name = "windows_i686_gnu" -version = "0.48.0" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] [[package]] -name = "windows_i686_msvc" -version = "0.48.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] [[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" +name = "wit-bindgen" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" +name = "wit-bindgen-core" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" +name = "wit-bindgen-rust" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "wyz" @@ -1057,7 +1203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c101112411baafbb4bf8d33e4c4a80ab5b02d74d2612331c61e8192fc9710491" dependencies = [ "bit_field", - "bitflags 2.3.3", + "bitflags 2.11.1", "rustversion", "volatile", ] @@ -1069,7 +1215,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f042214de98141e9c8706e8192b73f56494087cc55ebec28ce10f26c5c364ae" dependencies = [ "bit_field", - "bitflags 2.3.3", + "bitflags 2.11.1", "rustversion", "volatile", ] diff --git a/Cargo.toml b/Cargo.toml index d9f3af13..35a6c87a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ fatfs = { version = "0.3.4", default-features = false, features = [ "std", "alloc", ] } -tempfile = "3.3.0" +tempfile = "3.27.0" mbrman = { version = "0.5.1", optional = true } gpt = { version = "3.0.0", optional = true } bootloader-boot-config = { workspace = true } diff --git a/tests/test_kernels/Cargo.lock b/tests/test_kernels/Cargo.lock index 1670fd69..06e534c4 100644 --- a/tests/test_kernels/Cargo.lock +++ b/tests/test_kernels/Cargo.lock @@ -22,7 +22,7 @@ checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "bootloader_api" -version = "0.11.13" +version = "0.11.15" [[package]] name = "rustversion" From 678e3659f4bbb04f2e588dee5e01ebfc42dc596b Mon Sep 17 00:00:00 2001 From: Tom Dohrmann Date: Sun, 10 May 2026 09:26:58 +0200 Subject: [PATCH 2/3] exclude test kernels when linting workspace Something in cargo changed and now cargo clippy also seems to lint binary dependencies. While that's reasonable, it also cause features to be unified across the bootloader and test kernel crates and that's causing issues. Fix this by excluding the test kernels. The test kernels were already linted seperatedly anyway. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4c447b1f..7040ffb4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: - uses: Swatinem/rust-cache@v2 - uses: r7kamura/rust-problem-matchers@v1.1.0 - name: "Run `cargo check`" - run: cargo check --all-targets --all + run: cargo check --all-targets --all --exclude 'test_kernel*' - name: "Check test kernels" run: cargo check --all working-directory: tests/test_kernels @@ -123,7 +123,7 @@ jobs: - run: cargo --version --verbose - uses: Swatinem/rust-cache@v2 - uses: r7kamura/rust-problem-matchers@v1.1.0 - - run: cargo clippy --all --all-targets + - run: cargo clippy --all --all-targets --exclude 'test_kernel*' - run: cargo clippy --all working-directory: tests/test_kernels From ba5c4d3d048bbaf70b080ca44ae0eb9e1523e9b8 Mon Sep 17 00:00:00 2001 From: Tom Dohrmann Date: Sun, 10 May 2026 09:29:41 +0200 Subject: [PATCH 3/3] fix warnings --- Cargo.toml | 3 +++ bios/stage-2/src/fat.rs | 5 ++--- bios/stage-4/src/main.rs | 2 +- common/config/src/lib.rs | 11 ++++------ common/src/entropy.rs | 18 ++++++++--------- common/src/legacy_memory_region.rs | 9 +++------ common/src/level_4_entries.rs | 10 +++++----- common/src/lib.rs | 6 ++---- common/src/load_kernel.rs | 12 +++++------ src/fat.rs | 20 +++++++++---------- .../ramdisk/src/bin/memory_map.rs | 5 +++++ uefi/src/main.rs | 4 ++-- 12 files changed, 52 insertions(+), 53 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 35a6c87a..d51c3938 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,3 +106,6 @@ llvm-tools = "0.1.1" [package.metadata.docs.rs] rustc-args = ["--cfg", "docsrs_dummy_build"] + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(docsrs_dummy_build)'] } diff --git a/bios/stage-2/src/fat.rs b/bios/stage-2/src/fat.rs index 0f24e0b4..b60f8072 100644 --- a/bios/stage-2/src/fat.rs +++ b/bios/stage-2/src/fat.rs @@ -82,9 +82,8 @@ impl Bpb { } fn count_of_clusters(&self) -> u32 { - let root_dir_sectors = ((self.root_entry_count as u32 * 32) - + (self.bytes_per_sector as u32 - 1)) - / self.bytes_per_sector as u32; + let root_dir_sectors = + (self.root_entry_count as u32 * 32).div_ceil(self.bytes_per_sector as u32); let total_sectors = if self.total_sectors_16 != 0 { self.total_sectors_16 as u32 } else { diff --git a/bios/stage-4/src/main.rs b/bios/stage-4/src/main.rs index 6dc017b2..6e193319 100644 --- a/bios/stage-4/src/main.rs +++ b/bios/stage-4/src/main.rs @@ -28,7 +28,7 @@ pub extern "C" fn _start(info: &mut BiosInfo) -> ! { let memory_map: &mut [E820MemoryRegion] = unsafe { core::slice::from_raw_parts_mut( info.memory_map_addr as *mut _, - info.memory_map_len.try_into().unwrap(), + usize::from(info.memory_map_len), ) }; diff --git a/common/config/src/lib.rs b/common/config/src/lib.rs index 1b294331..2f0da026 100644 --- a/common/config/src/lib.rs +++ b/common/config/src/lib.rs @@ -59,7 +59,9 @@ pub struct FrameBuffer { /// /// Based on /// -#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive( + Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default, +)] pub enum LevelFilter { /// A level lower than all log levels. Off, @@ -72,11 +74,6 @@ pub enum LevelFilter { /// Corresponds to the `Debug` log level. Debug, /// Corresponds to the `Trace` log level. + #[default] Trace, } - -impl Default for LevelFilter { - fn default() -> Self { - Self::Trace - } -} diff --git a/common/src/entropy.rs b/common/src/entropy.rs index 93bf2b65..4a492d88 100644 --- a/common/src/entropy.rs +++ b/common/src/entropy.rs @@ -60,15 +60,15 @@ fn tsc_entropy() -> [u8; 32] { // Check if the CPU supports `RDTSC`. let cpu_id = CpuId::new(); - if let Some(feature_info) = cpu_id.get_feature_info() { - if !feature_info.has_tsc() { - for i in 0..4 { - let value = unsafe { - // SAFETY: We checked that the cpu supports `RDTSC` and we run in ring 0. - core::arch::x86_64::_rdtsc() - }; - entropy[i * 8..(i + 1) * 8].copy_from_slice(&value.to_ne_bytes()); - } + if let Some(feature_info) = cpu_id.get_feature_info() + && !feature_info.has_tsc() + { + for i in 0..4 { + let value = unsafe { + // SAFETY: We checked that the cpu supports `RDTSC` and we run in ring 0. + core::arch::x86_64::_rdtsc() + }; + entropy[i * 8..(i + 1) * 8].copy_from_slice(&value.to_ne_bytes()); } } diff --git a/common/src/legacy_memory_region.rs b/common/src/legacy_memory_region.rs index c6c9d179..9243b260 100644 --- a/common/src/legacy_memory_region.rs +++ b/common/src/legacy_memory_region.rs @@ -214,7 +214,7 @@ where } } - fn split_and_add_region<'a, U>( + fn split_and_add_region( mut region: MemoryRegion, regions: &mut [MaybeUninit], next_index: &mut usize, @@ -339,7 +339,7 @@ mod tests { } fn len(&self) -> u64 { - assert!(self.len % 4096 == 0); + assert!(self.len.is_multiple_of(4096)); self.len } @@ -348,10 +348,7 @@ mod tests { } fn usable_after_bootloader_exit(&self) -> bool { - match self.kind { - MemoryRegionKind::Usable => true, - _ => false, - } + matches!(self.kind, MemoryRegionKind::Usable) } } diff --git a/common/src/level_4_entries.rs b/common/src/level_4_entries.rs index 217cf087..916215fa 100644 --- a/common/src/level_4_entries.rs +++ b/common/src/level_4_entries.rs @@ -103,10 +103,10 @@ impl UsedLevel4Entries { used.mark_range_as_used(boot_info_address, combined.size() as u64); } - if let config::Mapping::FixedAddress(framebuffer_address) = config.mappings.framebuffer { - if let Some(framebuffer) = framebuffer { - used.mark_range_as_used(framebuffer_address, framebuffer.info.byte_len as u64); - } + if let config::Mapping::FixedAddress(framebuffer_address) = config.mappings.framebuffer + && let Some(framebuffer) = framebuffer + { + used.mark_range_as_used(framebuffer_address, framebuffer.info.byte_len as u64); } // Mark everything before the dynamic range as unusable. @@ -208,7 +208,7 @@ impl UsedLevel4Entries { const LEVEL_4_SIZE: u64 = 4096 * 512 * 512 * 512; - let level_4_entries = (size + (LEVEL_4_SIZE - 1)) / LEVEL_4_SIZE; + let level_4_entries = size.div_ceil(LEVEL_4_SIZE); let base = Page::from_page_table_indices_1gib( self.get_free_entries(level_4_entries), PageTableIndex::new(0), diff --git a/common/src/lib.rs b/common/src/lib.rs index e2a188b0..2e36c742 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -552,7 +552,7 @@ where log::info!("Create bootinfo"); // create boot info - let boot_info = boot_info.write({ + boot_info.write({ let mut info = BootInfo::new(memory_regions.into()); info.framebuffer = mappings .framebuffer @@ -585,9 +585,7 @@ where info.kernel_stack_len = config.kernel_stack_size; info._test_sentinel = boot_config._test_sentinel; info - }); - - boot_info + }) } /// Switches to the kernel address space and jumps to the kernel entry point. diff --git a/common/src/load_kernel.rs b/common/src/load_kernel.rs index 082aba56..000c029f 100644 --- a/common/src/load_kernel.rs +++ b/common/src/load_kernel.rs @@ -722,12 +722,12 @@ where /// Check that the virtual offset belongs to a load segment. fn check_is_in_load(elf_file: &ElfFile, virt_offset: u64) -> Result<(), &'static str> { for program_header in elf_file.program_iter() { - if let Type::Load = program_header.get_type()? { - if program_header.virtual_addr() <= virt_offset { - let offset_in_segment = virt_offset - program_header.virtual_addr(); - if offset_in_segment < program_header.mem_size() { - return Ok(()); - } + if let Type::Load = program_header.get_type()? + && program_header.virtual_addr() <= virt_offset + { + let offset_in_segment = virt_offset - program_header.virtual_addr(); + if offset_in_segment < program_header.mem_size() { + return Ok(()); } } } diff --git a/src/fat.rs b/src/fat.rs index c81033b5..d9015854 100644 --- a/src/fat.rs +++ b/src/fat.rs @@ -33,16 +33,16 @@ pub fn create_fat_filesystem( let mut label = *b"MY_RUST_OS!"; // This __should__ always be a file, but maybe not. Should we allow the caller to set the volume label instead? - if let Some(FileDataSource::File(path)) = files.get(KERNEL_FILE_NAME) { - if let Some(name) = path.file_stem() { - let converted = name.to_string_lossy(); - let name = converted.as_bytes(); - let mut new_label = [0u8; 11]; - let name = &name[..usize::min(new_label.len(), name.len())]; - let slice = &mut new_label[..name.len()]; - slice.copy_from_slice(name); - label = new_label; - } + if let Some(FileDataSource::File(path)) = files.get(KERNEL_FILE_NAME) + && let Some(name) = path.file_stem() + { + let converted = name.to_string_lossy(); + let name = converted.as_bytes(); + let mut new_label = [0u8; 11]; + let name = &name[..usize::min(new_label.len(), name.len())]; + let slice = &mut new_label[..name.len()]; + slice.copy_from_slice(name); + label = new_label; } // format the file system and open it diff --git a/tests/test_kernels/ramdisk/src/bin/memory_map.rs b/tests/test_kernels/ramdisk/src/bin/memory_map.rs index ce148cdf..826433fa 100644 --- a/tests/test_kernels/ramdisk/src/bin/memory_map.rs +++ b/tests/test_kernels/ramdisk/src/bin/memory_map.rs @@ -75,6 +75,11 @@ fn panic(info: &core::panic::PanicInfo) -> ! { exit_qemu(QemuExitCode::Failed); } +/// Returns a reference to the level 4 page table. +/// +/// # Safety +/// +/// The caller has to ensure that `physical_memory_offset` is correct. pub unsafe fn active_level_4_table(physical_memory_offset: VirtAddr) -> &'static mut PageTable { use x86_64::registers::control::Cr3; diff --git a/uefi/src/main.rs b/uefi/src/main.rs index b3b9f0df..564c374c 100644 --- a/uefi/src/main.rs +++ b/uefi/src/main.rs @@ -224,7 +224,7 @@ fn load_file_from_boot_method( fn open_device_path_protocol( image: Handle, st: &SystemTable, -) -> Option> { +) -> Option> { let this = st.boot_services(); let loaded_image = unsafe { this.open_protocol::( @@ -266,7 +266,7 @@ fn open_device_path_protocol( fn locate_and_open_protocol( image: Handle, st: &SystemTable, -) -> Option> { +) -> Option> { let this = st.boot_services(); let device_path = open_device_path_protocol(image, st)?; let mut device_path = device_path.deref();