From ea8c3afe96d8aeb79d9f8bba5adae08ca1224bdc Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 14:20:37 -0700 Subject: [PATCH 01/21] Remove unecessary dependencies on fallible-iterator Signed-off-by: Nick Spinale --- Cargo.lock | 3 --- crates/sel4-capdl-initializer/add-spec/Cargo.nix | 1 - crates/sel4-capdl-initializer/add-spec/Cargo.toml | 1 - crates/sel4-kernel-loader/add-payload/Cargo.nix | 1 - crates/sel4-kernel-loader/add-payload/Cargo.toml | 1 - crates/sel4-reset/cli/Cargo.nix | 1 - crates/sel4-reset/cli/Cargo.toml | 1 - 7 files changed, 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74a9ecd86..2dae8095b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2165,7 +2165,6 @@ version = "0.1.0" dependencies = [ "anyhow", "clap", - "fallible-iterator 0.2.0", "num", "object", "postcard", @@ -2412,7 +2411,6 @@ version = "0.1.0" dependencies = [ "anyhow", "clap", - "fallible-iterator 0.2.0", "heapless", "num", "object", @@ -2635,7 +2633,6 @@ version = "0.1.0" dependencies = [ "anyhow", "clap", - "fallible-iterator 0.2.0", "num", "sel4-synthetic-elf", ] diff --git a/crates/sel4-capdl-initializer/add-spec/Cargo.nix b/crates/sel4-capdl-initializer/add-spec/Cargo.nix index e8143390a..521de8462 100644 --- a/crates/sel4-capdl-initializer/add-spec/Cargo.nix +++ b/crates/sel4-capdl-initializer/add-spec/Cargo.nix @@ -11,7 +11,6 @@ mk { dependencies = { inherit (versions) anyhow - fallible-iterator serde_json num clap diff --git a/crates/sel4-capdl-initializer/add-spec/Cargo.toml b/crates/sel4-capdl-initializer/add-spec/Cargo.toml index fee643cad..c09ff0c83 100644 --- a/crates/sel4-capdl-initializer/add-spec/Cargo.toml +++ b/crates/sel4-capdl-initializer/add-spec/Cargo.toml @@ -19,7 +19,6 @@ license = "BSD-2-Clause" [dependencies] anyhow = "1.0.66" clap = "4.4.6" -fallible-iterator = "0.2.0" num = "0.4.1" object = { version = "0.36.5", features = ["all"] } postcard = { version = "1.0.2", default-features = false, features = ["alloc"] } diff --git a/crates/sel4-kernel-loader/add-payload/Cargo.nix b/crates/sel4-kernel-loader/add-payload/Cargo.nix index 0b32fd51c..374ef033c 100644 --- a/crates/sel4-kernel-loader/add-payload/Cargo.nix +++ b/crates/sel4-kernel-loader/add-payload/Cargo.nix @@ -11,7 +11,6 @@ mk { dependencies = { inherit (versions) anyhow - fallible-iterator serde_json serde_yaml heapless diff --git a/crates/sel4-kernel-loader/add-payload/Cargo.toml b/crates/sel4-kernel-loader/add-payload/Cargo.toml index e26deab98..62161d85c 100644 --- a/crates/sel4-kernel-loader/add-payload/Cargo.toml +++ b/crates/sel4-kernel-loader/add-payload/Cargo.toml @@ -19,7 +19,6 @@ license = "BSD-2-Clause" [dependencies] anyhow = "1.0.66" clap = "4.4.6" -fallible-iterator = "0.2.0" heapless = "0.7.16" num = "0.4.1" object = { version = "0.36.5", features = ["all"] } diff --git a/crates/sel4-reset/cli/Cargo.nix b/crates/sel4-reset/cli/Cargo.nix index 1bf6dedf0..3615c914a 100644 --- a/crates/sel4-reset/cli/Cargo.nix +++ b/crates/sel4-reset/cli/Cargo.nix @@ -11,7 +11,6 @@ mk { dependencies = { inherit (versions) anyhow - fallible-iterator num clap ; diff --git a/crates/sel4-reset/cli/Cargo.toml b/crates/sel4-reset/cli/Cargo.toml index 91a9bfcbb..446763093 100644 --- a/crates/sel4-reset/cli/Cargo.toml +++ b/crates/sel4-reset/cli/Cargo.toml @@ -19,6 +19,5 @@ license = "BSD-2-Clause" [dependencies] anyhow = "1.0.66" clap = "4.4.6" -fallible-iterator = "0.2.0" num = "0.4.1" sel4-synthetic-elf = { path = "../../sel4-synthetic-elf" } From 67b7ca3da59d36cb50a21180d8df0cbe7893cde5 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 14:25:10 -0700 Subject: [PATCH 02/21] cmm: Add all direct third-party dependencies to manifest scope Signed-off-by: Nick Spinale --- .../microkit/banscii/pds/artist/Cargo.nix | 6 ++--- .../microkit/banscii/pds/assistant/Cargo.nix | 2 +- .../banscii/pds/assistant/core/Cargo.nix | 2 +- .../microkit/http-server/pds/server/Cargo.nix | 2 +- .../http-server/pds/server/core/Cargo.nix | 4 ++-- crates/private/tests/root-task/c/Cargo.nix | 5 ++-- .../tests/root-task/dafny/core/Cargo.nix | 4 ++-- .../tests/root-task/dafny/core/Cargo.toml | 2 +- crates/sel4-async/block-io/Cargo.nix | 6 ++--- crates/sel4-async/block-io/fat/Cargo.nix | 5 ++-- .../addr2line-context-helper/Cargo.nix | 2 +- crates/sel4-backtrace/cli/Cargo.nix | 3 +-- .../embed-spec/Cargo.nix | 2 +- crates/sel4-capdl-initializer/types/Cargo.nix | 2 +- crates/sel4-kernel-loader/Cargo.nix | 12 ++++------ .../embed-page-tables/Cargo.nix | 3 +-- crates/sel4-newlib/Cargo.nix | 2 +- crates/sel4-newlib/Cargo.toml | 2 +- crates/sel4/bitfield-parser/Cargo.nix | 5 ++-- crates/sel4/config/data/Cargo.nix | 3 +-- crates/sel4/sys/Cargo.nix | 8 +++---- .../manifest-scope.nix | 24 +++++++++++++++++++ 22 files changed, 61 insertions(+), 45 deletions(-) diff --git a/crates/examples/microkit/banscii/pds/artist/Cargo.nix b/crates/examples/microkit/banscii/pds/artist/Cargo.nix index e772ed6d3..59cc57feb 100644 --- a/crates/examples/microkit/banscii/pds/artist/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/artist/Cargo.nix @@ -4,12 +4,12 @@ # SPDX-License-Identifier: BSD-2-Clause # -{ mk, localCrates }: +{ mk, versions, localCrates }: mk { package.name = "banscii-artist"; dependencies = { - rsa = { version = "0.8.1"; default-features = false; features = [ "pem" "sha2" ]; }; + rsa = { version = versions.rsa; default-features = false; features = [ "pem" "sha2" ]; }; inherit (localCrates) sel4-microkit-message banscii-artist-interface-types @@ -18,6 +18,6 @@ mk { sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; }; build-dependencies = { - rsa = "0.8.1"; + inherit (versions) rsa; }; } diff --git a/crates/examples/microkit/banscii/pds/assistant/Cargo.nix b/crates/examples/microkit/banscii/pds/assistant/Cargo.nix index b7e33d49b..7378a99dd 100644 --- a/crates/examples/microkit/banscii/pds/assistant/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/assistant/Cargo.nix @@ -10,7 +10,7 @@ mk { package.name = "banscii-assistant"; dependencies = { inherit (versions) embedded-hal-nb; - hex = { version = "0.4.3"; default-features = false; features = [ "alloc" ]; }; + hex = { version = versions.hex; default-features = false; features = [ "alloc" ]; }; inherit (localCrates) sel4-microkit-message sel4-microkit-driver-adapters diff --git a/crates/examples/microkit/banscii/pds/assistant/core/Cargo.nix b/crates/examples/microkit/banscii/pds/assistant/core/Cargo.nix index 4e7cb5a57..46f6b6dcf 100644 --- a/crates/examples/microkit/banscii/pds/assistant/core/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/assistant/core/Cargo.nix @@ -10,7 +10,7 @@ mk { package.name = "banscii-assistant-core"; dependencies = { inherit (versions) log; - ab_glyph = { version = "0.2.22"; default-features = false; features = [ "libm" ]; }; + ab_glyph = { version = versions.ab_glyph; default-features = false; features = [ "libm" ]; }; num-traits = { version = versions.num-traits; default-features = false; features = [ "libm" ]; }; }; } diff --git a/crates/examples/microkit/http-server/pds/server/Cargo.nix b/crates/examples/microkit/http-server/pds/server/Cargo.nix index 82b93b499..e929b4fcd 100644 --- a/crates/examples/microkit/http-server/pds/server/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/server/Cargo.nix @@ -66,6 +66,6 @@ mk { }; build-dependencies = { - rcgen = "0.11.1"; + inherit (versions) rcgen; }; } diff --git a/crates/examples/microkit/http-server/pds/server/core/Cargo.nix b/crates/examples/microkit/http-server/pds/server/core/Cargo.nix index ff9f6ad08..f7b00e1fc 100644 --- a/crates/examples/microkit/http-server/pds/server/core/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/server/core/Cargo.nix @@ -20,13 +20,13 @@ mk { ]; }; - httparse = { version = "1.8.0"; default-features = false; }; + httparse = { version = versions.httparse; default-features = false; }; smoltcp = smoltcpWith []; rustls = rustlsWith [] // (localCrates.rustls or {}); - rustls-pemfile = { version = "2.0.0"; default-features = false; }; + rustls-pemfile = { version = versions.rustls-pemfile; default-features = false; }; inherit (localCrates) sel4-async-single-threaded-executor diff --git a/crates/private/tests/root-task/c/Cargo.nix b/crates/private/tests/root-task/c/Cargo.nix index 8db26c289..fed3cf207 100644 --- a/crates/private/tests/root-task/c/Cargo.nix +++ b/crates/private/tests/root-task/c/Cargo.nix @@ -4,7 +4,7 @@ # SPDX-License-Identifier: BSD-2-Clause # -{ mk, localCrates }: +{ mk, versions, localCrates }: mk { package.name = "tests-root-task-c"; @@ -16,7 +16,6 @@ mk { ; }; build-dependencies = { - cc = "1.0.76"; - glob = "0.3.0"; + inherit (versions) cc glob; }; } diff --git a/crates/private/tests/root-task/dafny/core/Cargo.nix b/crates/private/tests/root-task/dafny/core/Cargo.nix index b4c765c25..71b7df83f 100644 --- a/crates/private/tests/root-task/dafny/core/Cargo.nix +++ b/crates/private/tests/root-task/dafny/core/Cargo.nix @@ -4,7 +4,7 @@ # SPDX-License-Identifier: BSD-2-Clause # -{ mk, localCrates, dafnySource }: +{ mk, versions, localCrates, dafnySource }: mk { package.name = "tests-root-task-dafny-core"; @@ -14,6 +14,6 @@ mk { # dafny_runtime ; dafny_runtime = dafnySource; - num = { version = "0.4"; default-features = false; features = ["alloc"]; }; + num = { version = versions.num; default-features = false; features = ["alloc"]; }; }; } diff --git a/crates/private/tests/root-task/dafny/core/Cargo.toml b/crates/private/tests/root-task/dafny/core/Cargo.toml index ee6a9c07b..306a0b346 100644 --- a/crates/private/tests/root-task/dafny/core/Cargo.toml +++ b/crates/private/tests/root-task/dafny/core/Cargo.toml @@ -17,7 +17,7 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -num = { version = "0.4", default-features = false, features = ["alloc"] } +num = { version = "0.4.1", default-features = false, features = ["alloc"] } sel4-mod-in-out-dir = { path = "../../../../../sel4-mod-in-out-dir" } [dependencies.dafny_runtime] diff --git a/crates/sel4-async/block-io/Cargo.nix b/crates/sel4-async/block-io/Cargo.nix index aac6c6086..c35060bf3 100644 --- a/crates/sel4-async/block-io/Cargo.nix +++ b/crates/sel4-async/block-io/Cargo.nix @@ -15,9 +15,9 @@ mk { version = versions.futures; default-features = false; }; - bytemuck = { version = "1.4.0"; default-features = false; }; - gpt_disk_types = { version = "0.15.0"; features = [ "bytemuck" ]; }; - lru = { version = "0.10.0"; optional = true; }; + bytemuck = { version = versions.bytemuck; default-features = false; }; + gpt_disk_types = { version = versions.gpt_disk_types; features = [ "bytemuck" ]; }; + lru = { version = versions.lru; optional = true; }; }; features = { alloc = [ "futures/alloc" "lru" ]; diff --git a/crates/sel4-async/block-io/fat/Cargo.nix b/crates/sel4-async/block-io/fat/Cargo.nix index b1ecdc6a9..5a659f835 100644 --- a/crates/sel4-async/block-io/fat/Cargo.nix +++ b/crates/sel4-async/block-io/fat/Cargo.nix @@ -9,9 +9,8 @@ mk { package.name = "sel4-async-block-io-fat"; dependencies = { - inherit (versions) log heapless; - hex = { version = "0.4.3"; default-features = false; }; - lru = "0.10.0"; + inherit (versions) log heapless lru; + hex = { version = versions.hex; default-features = false; }; futures = { version = versions.futures; default-features = false; diff --git a/crates/sel4-backtrace/addr2line-context-helper/Cargo.nix b/crates/sel4-backtrace/addr2line-context-helper/Cargo.nix index 17d9fc876..e8d4ebb8c 100644 --- a/crates/sel4-backtrace/addr2line-context-helper/Cargo.nix +++ b/crates/sel4-backtrace/addr2line-context-helper/Cargo.nix @@ -12,6 +12,6 @@ mk { addr2line = { version = versions.addr2line; default-features = false; features = [ "rustc-demangle" "cpp_demangle" "fallible-iterator" "smallvec" ]; }; gimli = { version = versions.gimli; default-features = false; features = [ "endian-reader" ]; }; object = { version = versions.object; default-features = false; features = [ "read" ]; }; - stable_deref_trait = { version = "1.1.0"; default-features = false; features = [ "alloc" ]; }; + stable_deref_trait = { version = versions.stable_deref_trait; default-features = false; features = [ "alloc" ]; }; }; } diff --git a/crates/sel4-backtrace/cli/Cargo.nix b/crates/sel4-backtrace/cli/Cargo.nix index 05516cd59..931ee8d76 100644 --- a/crates/sel4-backtrace/cli/Cargo.nix +++ b/crates/sel4-backtrace/cli/Cargo.nix @@ -9,8 +9,7 @@ mk { package.name = "sel4-backtrace-cli"; dependencies = { - inherit (versions) object clap; - hex = "0.4.3"; + inherit (versions) object clap hex; inherit (localCrates) sel4-backtrace-addr2line-context-helper; sel4-backtrace-types = localCrates.sel4-backtrace-types // { features = [ "full" ]; }; }; diff --git a/crates/sel4-capdl-initializer/embed-spec/Cargo.nix b/crates/sel4-capdl-initializer/embed-spec/Cargo.nix index 07bbeb3e8..85ad2128b 100644 --- a/crates/sel4-capdl-initializer/embed-spec/Cargo.nix +++ b/crates/sel4-capdl-initializer/embed-spec/Cargo.nix @@ -15,8 +15,8 @@ mk { syn serde serde_json + hex ; - hex = "0.4.3"; sel4-capdl-initializer-types = localCrates.sel4-capdl-initializer-types // { features = [ "serde" "std" "deflate" ]; }; }; } diff --git a/crates/sel4-capdl-initializer/types/Cargo.nix b/crates/sel4-capdl-initializer/types/Cargo.nix index 9c4c6f9e3..55acc6cb8 100644 --- a/crates/sel4-capdl-initializer/types/Cargo.nix +++ b/crates/sel4-capdl-initializer/types/Cargo.nix @@ -10,7 +10,7 @@ mk { package.name = "sel4-capdl-initializer-types"; dependencies = { inherit (versions) cfg-if log; - miniz_oxide = { version = "0.6.2"; default-features = false; optional = true; }; + miniz_oxide = { version = versions.miniz_oxide; default-features = false; optional = true; }; serde = serdeWith [ "derive" "alloc" ] // { optional = true; }; serde_json = { version = versions.serde_json; optional = true; }; inherit (localCrates) diff --git a/crates/sel4-kernel-loader/Cargo.nix b/crates/sel4-kernel-loader/Cargo.nix index 8b0766949..3ced79535 100644 --- a/crates/sel4-kernel-loader/Cargo.nix +++ b/crates/sel4-kernel-loader/Cargo.nix @@ -13,7 +13,7 @@ mk { inherit (versions) cfg-if log embedded-hal-nb; postcard = postcardWith []; heapless = { version = versions.heapless; features = [ "serde" ]; }; - spin = { version = "0.9.4"; features = [ "lock_api" ]; }; + spin = { version = versions.spin; features = [ "lock_api" ]; }; inherit (localCrates) sel4-platform-info sel4-logging @@ -25,15 +25,13 @@ mk { sel4-kernel-loader-payload-types = localCrates.sel4-kernel-loader-payload-types // { features = [ "serde" ]; }; }; target."cfg(any(target_arch = \"riscv32\", target_arch = \"riscv64\"))".dependencies = { - sbi = "0.2.0"; - riscv = "0.10.0"; + inherit (versions) sbi riscv; }; target."cfg(any(target_arch = \"arm\", target_arch = \"aarch64\"))".dependencies = { inherit (localCrates) sel4-pl011-driver sel4-bcm2835-aux-uart-driver; }; target."cfg(target_arch = \"aarch64\")".dependencies = { - smccc = "0.1.1"; - aarch64-cpu = "9.4.0"; + inherit (versions) smccc aarch64-cpu; }; build-dependencies = { inherit (versions) @@ -42,10 +40,10 @@ mk { object serde prettyplease + cc + glob ; postcard = postcardWith [ "alloc" ]; - cc = "1.0.76"; - glob = "0.3.0"; syn = { version = versions.syn; features = [ "parsing" ]; }; inherit (localCrates) sel4-platform-info diff --git a/crates/sel4-kernel-loader/embed-page-tables/Cargo.nix b/crates/sel4-kernel-loader/embed-page-tables/Cargo.nix index 42c49ebcd..d4a0cb60e 100644 --- a/crates/sel4-kernel-loader/embed-page-tables/Cargo.nix +++ b/crates/sel4-kernel-loader/embed-page-tables/Cargo.nix @@ -9,7 +9,6 @@ mk { package.name = "sel4-kernel-loader-embed-page-tables"; dependencies = { - inherit (versions) proc-macro2 quote; - bitfield = "0.14"; + inherit (versions) proc-macro2 quote bitfield; }; } diff --git a/crates/sel4-newlib/Cargo.nix b/crates/sel4-newlib/Cargo.nix index 03bf93e88..3a74d6cbd 100644 --- a/crates/sel4-newlib/Cargo.nix +++ b/crates/sel4-newlib/Cargo.nix @@ -26,6 +26,6 @@ mk { log = { version = versions.log; optional = true; }; }; build-dependencies = { - cc = { version = "1.0.82"; optional = true; }; + cc = { version = versions.cc; optional = true; }; }; } diff --git a/crates/sel4-newlib/Cargo.toml b/crates/sel4-newlib/Cargo.toml index 2157c2bf8..ab768b170 100644 --- a/crates/sel4-newlib/Cargo.toml +++ b/crates/sel4-newlib/Cargo.toml @@ -30,4 +30,4 @@ log = { version = "0.4.17", optional = true } sel4-panicking-env = { path = "../sel4-panicking/env" } [build-dependencies] -cc = { version = "1.0.82", optional = true } +cc = { version = "1.0.76", optional = true } diff --git a/crates/sel4/bitfield-parser/Cargo.nix b/crates/sel4/bitfield-parser/Cargo.nix index 76a57b1eb..45c02da0e 100644 --- a/crates/sel4/bitfield-parser/Cargo.nix +++ b/crates/sel4/bitfield-parser/Cargo.nix @@ -4,13 +4,12 @@ # SPDX-License-Identifier: BSD-2-Clause # -{ mk }: +{ mk, versions }: mk { package.name = "sel4-bitfield-parser"; dependencies = rec { - regex = "1.7.0"; - pest = "2.4.1"; + inherit (versions) regex pest; pest_derive = pest; }; } diff --git a/crates/sel4/config/data/Cargo.nix b/crates/sel4/config/data/Cargo.nix index d8aeb2a28..57f4dbd48 100644 --- a/crates/sel4/config/data/Cargo.nix +++ b/crates/sel4/config/data/Cargo.nix @@ -9,8 +9,7 @@ mk { package.name = "sel4-config-data"; dependencies = { - inherit (versions) serde_json; - lazy_static = "1.4.0"; + inherit (versions) serde_json lazy_static; sel4-config-generic-types = localCrates.sel4-config-generic-types // { features = [ "serde" ]; }; }; build-dependencies = { diff --git a/crates/sel4/sys/Cargo.nix b/crates/sel4/sys/Cargo.nix index 91dd3375b..a84f02805 100644 --- a/crates/sel4/sys/Cargo.nix +++ b/crates/sel4/sys/Cargo.nix @@ -17,10 +17,10 @@ mk { ; }; build-dependencies = { - inherit (versions) proc-macro2 quote prettyplease; - bindgen = "0.68.1"; - xmltree = "0.10.3"; - glob = "0.3.0"; + inherit (versions) + proc-macro2 quote prettyplease + bindgen xmltree glob + ; syn = { version = versions.syn; features = [ "parsing" ]; }; inherit (localCrates) sel4-build-env diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index 4338fc582..0737843bf 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -88,9 +88,15 @@ in rec { }; versions = { + aarch64-cpu = "9.4.0"; + ab_glyph = "0.2.22"; addr2line = "0.24.2"; anyhow = "1.0.66"; async-unsync = "0.2.2"; + bindgen = "0.68.1"; + bitfield = "0.14"; + bytemuck = "1.4.0"; + cc = "1.0.76"; cfg-if = "1.0.0"; chrono = "0.4.35"; clap = "4.4.6"; @@ -102,32 +108,50 @@ in rec { futures = "0.3.28"; getrandom = "0.2.10"; gimli = "0.31.1"; + glob = "0.3.0"; + gpt_disk_types = "0.15.0"; heapless = "0.7.16"; + hex = "0.4.3"; + httparse = "1.8.0"; + lazy_static = "1.4.0"; # TODO remove lock_api = "0.4.12"; log = "0.4.17"; + lru = "0.10.0"; + miniz_oxide = "0.6.2"; num = "0.4.1"; num_enum = "0.5.9"; num-traits = "0.2.16"; object = "0.36.5"; + pest = "2.4.1"; pin-project = "1.1.3"; postcard = "1.0.2"; prettyplease = "0.2.25"; proc-macro2 = "1.0.89"; quote = "1.0.37"; rand = "0.8.5"; + rcgen = "0.11.1"; + regex = "1.7.0"; + riscv = "0.10.0"; + rsa = "0.8.1"; rtcc = "0.3.2"; rustc_version = "0.4.0"; rustls = "0.23.5"; + rustls-pemfile = "2.0.0"; + sbi = "0.2.0"; serde = "1.0.147"; serde_json = "1.0.87"; serde_yaml = "0.9.14"; + smccc = "0.1.1"; smoltcp = "0.10.0"; + spin = "0.9.4"; + stable_deref_trait = "1.1.0"; # for gimli dep of sel4-backtrace-addr2line-context-helper syn = "2.0.85"; thiserror = "1.0"; tock-registers = "0.8.1"; unwinding = "0.2.3"; virtio-drivers = "0.7.2"; webpki-roots = "0.26"; + xmltree = "0.10.3"; zerocopy = "0.7.32"; }; From d0c33d92b6f09daec3a789b51504d719f8b86f8a Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 15:25:31 -0700 Subject: [PATCH 03/21] cmm: Add third-party-dependency-versions.toml Signed-off-by: Nick Spinale --- .../manifest-scope.nix | 68 +------------------ .../third-party-dependency-versions.toml | 66 ++++++++++++++++++ 2 files changed, 67 insertions(+), 67 deletions(-) create mode 100644 hacking/cargo-manifest-management/third-party-dependency-versions.toml diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index 0737843bf..e02916053 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -87,73 +87,7 @@ in rec { coliasgroup = "Copyright 2023, Colias Group, LLC"; }; - versions = { - aarch64-cpu = "9.4.0"; - ab_glyph = "0.2.22"; - addr2line = "0.24.2"; - anyhow = "1.0.66"; - async-unsync = "0.2.2"; - bindgen = "0.68.1"; - bitfield = "0.14"; - bytemuck = "1.4.0"; - cc = "1.0.76"; - cfg-if = "1.0.0"; - chrono = "0.4.35"; - clap = "4.4.6"; - dlmalloc = "0.2.3"; - embedded-hal-nb = "1.0"; - embedded-io-async = "0.6.1"; - fallible-iterator = "0.2.0"; - fdt = "0.1.5"; - futures = "0.3.28"; - getrandom = "0.2.10"; - gimli = "0.31.1"; - glob = "0.3.0"; - gpt_disk_types = "0.15.0"; - heapless = "0.7.16"; - hex = "0.4.3"; - httparse = "1.8.0"; - lazy_static = "1.4.0"; # TODO remove - lock_api = "0.4.12"; - log = "0.4.17"; - lru = "0.10.0"; - miniz_oxide = "0.6.2"; - num = "0.4.1"; - num_enum = "0.5.9"; - num-traits = "0.2.16"; - object = "0.36.5"; - pest = "2.4.1"; - pin-project = "1.1.3"; - postcard = "1.0.2"; - prettyplease = "0.2.25"; - proc-macro2 = "1.0.89"; - quote = "1.0.37"; - rand = "0.8.5"; - rcgen = "0.11.1"; - regex = "1.7.0"; - riscv = "0.10.0"; - rsa = "0.8.1"; - rtcc = "0.3.2"; - rustc_version = "0.4.0"; - rustls = "0.23.5"; - rustls-pemfile = "2.0.0"; - sbi = "0.2.0"; - serde = "1.0.147"; - serde_json = "1.0.87"; - serde_yaml = "0.9.14"; - smccc = "0.1.1"; - smoltcp = "0.10.0"; - spin = "0.9.4"; - stable_deref_trait = "1.1.0"; # for gimli dep of sel4-backtrace-addr2line-context-helper - syn = "2.0.85"; - thiserror = "1.0"; - tock-registers = "0.8.1"; - unwinding = "0.2.3"; - virtio-drivers = "0.7.2"; - webpki-roots = "0.26"; - xmltree = "0.10.3"; - zerocopy = "0.7.32"; - }; + versions = (builtins.fromTOML (builtins.readFile ./third-party-dependency-versions.toml)).versions; zerocopyWith = features: filterOutEmptyFeatureList { version = versions.zerocopy; diff --git a/hacking/cargo-manifest-management/third-party-dependency-versions.toml b/hacking/cargo-manifest-management/third-party-dependency-versions.toml new file mode 100644 index 000000000..27c1c5966 --- /dev/null +++ b/hacking/cargo-manifest-management/third-party-dependency-versions.toml @@ -0,0 +1,66 @@ +[versions] +aarch64-cpu = "9.4.0" +ab_glyph = "0.2.22" +addr2line = "0.24.2" +anyhow = "1.0.66" +async-unsync = "0.2.2" +bindgen = "0.68.1" +bitfield = "0.14" +bytemuck = "1.4.0" +cc = "1.0.76" +cfg-if = "1.0.0" +chrono = "0.4.35" +clap = "4.4.6" +dlmalloc = "0.2.3" +embedded-hal-nb = "1.0" +embedded-io-async = "0.6.1" +fallible-iterator = "0.2.0" +fdt = "0.1.5" +futures = "0.3.28" +getrandom = "0.2.10" +gimli = "0.31.1" +glob = "0.3.0" +gpt_disk_types = "0.15.0" +heapless = "0.7.16" +hex = "0.4.3" +httparse = "1.8.0" +lazy_static = "1.4.0" # TODO remove +lock_api = "0.4.12" +log = "0.4.17" +lru = "0.10.0" +miniz_oxide = "0.6.2" +num = "0.4.1" +num_enum = "0.5.9" +num-traits = "0.2.16" +object = "0.36.5" +pest = "2.4.1" +pin-project = "1.1.3" +postcard = "1.0.2" +prettyplease = "0.2.25" +proc-macro2 = "1.0.89" +quote = "1.0.37" +rand = "0.8.5" +rcgen = "0.11.1" +regex = "1.7.0" +riscv = "0.10.0" +rsa = "0.8.1" +rtcc = "0.3.2" +rustc_version = "0.4.0" +rustls = "0.23.5" +rustls-pemfile = "2.0.0" +sbi = "0.2.0" +serde = "1.0.147" +serde_json = "1.0.87" +serde_yaml = "0.9.14" +smccc = "0.1.1" +smoltcp = "0.10.0" +spin = "0.9.4" +stable_deref_trait = "1.1.0" # for gimli dep of sel4-backtrace-addr2line-context-helper +syn = "2.0.85" +thiserror = "1.0" +tock-registers = "0.8.1" +unwinding = "0.2.3" +virtio-drivers = "0.7.2" +webpki-roots = "0.26" +xmltree = "0.10.3" +zerocopy = "0.7.32" From a3d280d7310d0888f986275de5295472e3bf5311 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 16:33:40 -0700 Subject: [PATCH 04/21] cmm: Add more symbolic versions Signed-off-by: Nick Spinale --- .../microkit/banscii/pds/assistant/core/test/Cargo.nix | 3 +-- hacking/cargo-manifest-management/manifest-scope.nix | 2 +- .../third-party-dependency-versions.toml | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.nix b/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.nix index 83937eabf..115b55aed 100644 --- a/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.nix @@ -9,8 +9,7 @@ mk { package.name = "banscii-assistant-core-test"; dependencies = { - inherit (versions) log; - env_logger = "0.10.0"; + inherit (versions) log env_logger; inherit (localCrates) banscii-assistant-core; }; } diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index e02916053..dcfb787ca 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -155,7 +155,7 @@ in rec { }; ringWith = features: { - version = "=0.17.8"; + version = versions.ring; features = [ "less-safe-getrandom-custom-or-rdrand" ] ++ features; diff --git a/hacking/cargo-manifest-management/third-party-dependency-versions.toml b/hacking/cargo-manifest-management/third-party-dependency-versions.toml index 27c1c5966..7837baedd 100644 --- a/hacking/cargo-manifest-management/third-party-dependency-versions.toml +++ b/hacking/cargo-manifest-management/third-party-dependency-versions.toml @@ -14,6 +14,7 @@ clap = "4.4.6" dlmalloc = "0.2.3" embedded-hal-nb = "1.0" embedded-io-async = "0.6.1" +env_logger = "0.10.0" fallible-iterator = "0.2.0" fdt = "0.1.5" futures = "0.3.28" @@ -42,6 +43,7 @@ quote = "1.0.37" rand = "0.8.5" rcgen = "0.11.1" regex = "1.7.0" +ring = "=0.17.8" riscv = "0.10.0" rsa = "0.8.1" rtcc = "0.3.2" From 43686c0e9f9e5a646266b6fd9f1f2b18ee33703d Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 16:34:20 -0700 Subject: [PATCH 05/21] cmm: Add check-dependencies target Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 10 ++ .../cargo-manifest-management/tool/Cargo.lock | 50 +++++++++ .../cargo-manifest-management/tool/Cargo.toml | 1 + .../check-dependency-allow-list/Cargo.toml | 17 +++ .../check-dependency-allow-list/src/main.rs | 104 ++++++++++++++++++ 5 files changed, 182 insertions(+) create mode 100644 hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml create mode 100644 hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index e35f3fff3..fc7287bb1 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -8,6 +8,10 @@ blueprint := blueprint.json run := cargo run --manifest-path=tool/Cargo.toml -p manage-cargo-manifests -- +run_check_dependencies := \ + cargo run --manifest-path=tool/Cargo.toml -p check-dependency-allow-list -- \ + --manifest-path=../../Cargo.toml --allowlist third-party-dependency-versions.toml + .PHONY: none none: @@ -22,7 +26,13 @@ $(blueprint): .PHONY: update update: $(blueprint) $(run) --blueprint $< + $(run_check_dependencies) .PHONY: check check: $(blueprint) $(run) --blueprint $< --just-check + $(run_check_dependencies) + +.PHONY: check-dependencies +check-dependencies: + $(run_check_dependencies) diff --git a/hacking/cargo-manifest-management/tool/Cargo.lock b/hacking/cargo-manifest-management/tool/Cargo.lock index 971fe6450..0bf56a9aa 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.lock +++ b/hacking/cargo-manifest-management/tool/Cargo.lock @@ -108,6 +108,38 @@ version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "cc" version = "1.1.31" @@ -123,6 +155,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "check-dependency-allow-list" +version = "0.1.0" +dependencies = [ + "cargo_metadata", + "clap", + "toml", +] + [[package]] name = "chrono" version = "0.4.38" @@ -542,6 +583,15 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + [[package]] name = "serde" version = "1.0.213" diff --git a/hacking/cargo-manifest-management/tool/Cargo.toml b/hacking/cargo-manifest-management/tool/Cargo.toml index 34c610df5..13187cfc6 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/Cargo.toml @@ -7,6 +7,7 @@ [workspace] resolver = "2" members = [ + "crates/check-dependency-allow-list", "crates/toml-path-regex", "crates/toml-normalize", "crates/manage-cargo-manifests", diff --git a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml b/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml new file mode 100644 index 000000000..c8a0c9005 --- /dev/null +++ b/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml @@ -0,0 +1,17 @@ +# +# Copyright 2024, Colias Group, LLC +# +# SPDX-License-Identifier: BSD-2-Clause +# + +[package] +name = "check-dependency-allow-list" +version = "0.1.0" +authors = ["Nick Spinale "] +edition = "2021" +license = "BSD-2-Clause" + +[dependencies] +clap = { version = "4.4.6", features = [ "derive" ] } +cargo_metadata = "0.18.1" +toml = "0.8.19" diff --git a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs new file mode 100644 index 000000000..31f07e0b4 --- /dev/null +++ b/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs @@ -0,0 +1,104 @@ +// +// Copyright 2024, Colias Group, LLC +// +// SPDX-License-Identifier: BSD-2-Clause +// + +use std::collections::{HashMap, HashSet}; +use std::fs; +use std::path::PathBuf; + +use cargo_metadata::{semver::VersionReq, Metadata, MetadataCommand}; +use clap::Parser; +use toml::{Table, Value}; + +#[derive(Debug, Parser)] +struct Args { + #[arg(long)] + manifest_path: PathBuf, + + #[arg(long)] + allowlist: PathBuf, +} + +#[derive(Debug, Clone, Default)] +struct AllowList { + versions: HashMap>, +} + +impl AllowList { + fn deserialize(table: &Table) -> Self { + let mut this = Self::default(); + for (package_name, v) in table["versions"].as_table().unwrap().iter() { + match v { + Value::String(req_str) => { + let req = VersionReq::parse(req_str).unwrap(); + this.insert_version(package_name, req); + } + Value::Table(v) => { + let req = VersionReq::parse(v["version"].as_str().unwrap()).unwrap(); + for package_name in v["applies-to"] + .as_array() + .unwrap() + .iter() + .map(|v| v.as_str().unwrap()) + { + this.insert_version(package_name, req.clone()); + } + } + _ => { + panic!(); + } + } + } + this + } + + fn insert_version(&mut self, package_name: &str, req: VersionReq) { + self.versions + .entry(package_name.to_owned()) + .or_default() + .insert(req); + } + + fn check(&self, metadata: &Metadata) { + for package in &metadata.workspace_packages() { + for dep in &package.dependencies { + if dep + .source + .as_ref() + .map(|source| source.starts_with("registry+")) + .unwrap_or(false) + { + if !self.check_one(&dep.name, &dep.req) { + panic!("{} {} not in allowlist", dep.name, dep.req); + } + } + } + } + } + + fn check_one(&self, dep: &str, req: &VersionReq) -> bool { + if let Some(allowed_reqs) = self.versions.get(dep) { + allowed_reqs.contains(req) + } else { + false + } + } +} + +fn main() { + let args = Args::parse(); + let allowlist = AllowList::deserialize( + &fs::read_to_string(&args.allowlist) + .unwrap() + .parse::() + .unwrap_or_else(|err| panic!("{err}")), + ); + let metadata = MetadataCommand::new() + .manifest_path(&args.manifest_path) + .no_deps() + .exec() + .unwrap(); + allowlist.check(&metadata); +} From 305360a434374c34d15ae1590053a35c15f86ee5 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 16:34:30 -0700 Subject: [PATCH 06/21] cmm: Use applies-to feature Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/manifest-scope.nix | 8 +++++++- .../third-party-dependency-versions.toml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index dcfb787ca..213d1a93a 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -87,7 +87,13 @@ in rec { coliasgroup = "Copyright 2023, Colias Group, LLC"; }; - versions = (builtins.fromTOML (builtins.readFile ./third-party-dependency-versions.toml)).versions; + versions = + let + table = (builtins.fromTOML (builtins.readFile ./third-party-dependency-versions.toml)).versions; + in + lib.flip lib.mapAttrs table (_: v: + if lib.isString v then v else v.version + ); zerocopyWith = features: filterOutEmptyFeatureList { version = versions.zerocopy; diff --git a/hacking/cargo-manifest-management/third-party-dependency-versions.toml b/hacking/cargo-manifest-management/third-party-dependency-versions.toml index 7837baedd..f502157a6 100644 --- a/hacking/cargo-manifest-management/third-party-dependency-versions.toml +++ b/hacking/cargo-manifest-management/third-party-dependency-versions.toml @@ -34,7 +34,7 @@ num = "0.4.1" num_enum = "0.5.9" num-traits = "0.2.16" object = "0.36.5" -pest = "2.4.1" +pest = { version = "2.4.1", applies-to = [ "pest", "pest_derive" ] } pin-project = "1.1.3" postcard = "1.0.2" prettyplease = "0.2.25" From 05ffda4f02cd9edaaf211a24459c62e7264be2a6 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 16:50:48 -0700 Subject: [PATCH 07/21] cmm: Refactor direct dependency checker Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 21 +++--- ...toml => direct-dependency-allow-list.toml} | 2 +- .../manifest-scope.nix | 4 +- .../cargo-manifest-management/tool/Cargo.lock | 18 ++--- .../cargo-manifest-management/tool/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../src/main.rs | 65 ++++++++++++------- 7 files changed, 67 insertions(+), 47 deletions(-) rename hacking/cargo-manifest-management/{third-party-dependency-versions.toml => direct-dependency-allow-list.toml} (99%) rename hacking/cargo-manifest-management/tool/crates/{check-dependency-allow-list => manage-direct-dependency-allow-list}/Cargo.toml (87%) rename hacking/cargo-manifest-management/tool/crates/{check-dependency-allow-list => manage-direct-dependency-allow-list}/src/main.rs (61%) diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index fc7287bb1..38e4946aa 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -6,11 +6,14 @@ blueprint := blueprint.json -run := cargo run --manifest-path=tool/Cargo.toml -p manage-cargo-manifests -- +run := cargo run \ + --manifest-path=tool/Cargo.toml -p manage-cargo-manifests -- -run_check_dependencies := \ - cargo run --manifest-path=tool/Cargo.toml -p check-dependency-allow-list -- \ - --manifest-path=../../Cargo.toml --allowlist third-party-dependency-versions.toml +run_allow := cargo run \ + --manifest-path=tool/Cargo.toml -p manage-direct-dependency-allow-list -- + +run_allow_check_workspace := $(run_allow) check-workspace \ + --manifest-path=../../Cargo.toml --allowlist direct-dependency-allow-list.toml .PHONY: none none: @@ -26,13 +29,13 @@ $(blueprint): .PHONY: update update: $(blueprint) $(run) --blueprint $< - $(run_check_dependencies) + $(run_allow) .PHONY: check check: $(blueprint) $(run) --blueprint $< --just-check - $(run_check_dependencies) + $(run_allow) -.PHONY: check-dependencies -check-dependencies: - $(run_check_dependencies) +.PHONY: check-workspace-direct-dependencies +check-workspace-direct-dependencies: + $(run_allow_check_workspace) diff --git a/hacking/cargo-manifest-management/third-party-dependency-versions.toml b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml similarity index 99% rename from hacking/cargo-manifest-management/third-party-dependency-versions.toml rename to hacking/cargo-manifest-management/direct-dependency-allow-list.toml index f502157a6..d1673aff6 100644 --- a/hacking/cargo-manifest-management/third-party-dependency-versions.toml +++ b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml @@ -1,4 +1,4 @@ -[versions] +[allow] aarch64-cpu = "9.4.0" ab_glyph = "0.2.22" addr2line = "0.24.2" diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index 213d1a93a..a8307f087 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -89,9 +89,9 @@ in rec { versions = let - table = (builtins.fromTOML (builtins.readFile ./third-party-dependency-versions.toml)).versions; + allow = (builtins.fromTOML (builtins.readFile ./direct-dependency-allow-list.toml)).allow; in - lib.flip lib.mapAttrs table (_: v: + lib.flip lib.mapAttrs allow (_: v: if lib.isString v then v else v.version ); diff --git a/hacking/cargo-manifest-management/tool/Cargo.lock b/hacking/cargo-manifest-management/tool/Cargo.lock index 0bf56a9aa..8f900ccc6 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.lock +++ b/hacking/cargo-manifest-management/tool/Cargo.lock @@ -155,15 +155,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "check-dependency-allow-list" -version = "0.1.0" -dependencies = [ - "cargo_metadata", - "clap", - "toml", -] - [[package]] name = "chrono" version = "0.4.38" @@ -446,6 +437,15 @@ dependencies = [ "toml-normalize", ] +[[package]] +name = "manage-direct-dependency-allow-list" +version = "0.1.0" +dependencies = [ + "cargo_metadata", + "clap", + "toml", +] + [[package]] name = "memchr" version = "2.7.4" diff --git a/hacking/cargo-manifest-management/tool/Cargo.toml b/hacking/cargo-manifest-management/tool/Cargo.toml index 13187cfc6..d6fe2162d 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/Cargo.toml @@ -7,8 +7,8 @@ [workspace] resolver = "2" members = [ - "crates/check-dependency-allow-list", "crates/toml-path-regex", "crates/toml-normalize", "crates/manage-cargo-manifests", + "crates/manage-direct-dependency-allow-list", ] diff --git a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml similarity index 87% rename from hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml rename to hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml index c8a0c9005..e714127ef 100644 --- a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml @@ -5,7 +5,7 @@ # [package] -name = "check-dependency-allow-list" +name = "manage-direct-dependency-allow-list" version = "0.1.0" authors = ["Nick Spinale "] edition = "2021" diff --git a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs similarity index 61% rename from hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs rename to hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs index 31f07e0b4..c29076bde 100644 --- a/hacking/cargo-manifest-management/tool/crates/check-dependency-allow-list/src/main.rs +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs @@ -9,11 +9,22 @@ use std::fs; use std::path::PathBuf; use cargo_metadata::{semver::VersionReq, Metadata, MetadataCommand}; -use clap::Parser; +use clap::{Parser, Subcommand}; use toml::{Table, Value}; #[derive(Debug, Parser)] -struct Args { +struct Cli { + #[command(subcommand)] + command: Command, +} + +#[derive(Debug, Subcommand)] +enum Command { + CheckWorkspace(CheckWorkspaceArgs), +} + +#[derive(Debug, Parser)] +struct CheckWorkspaceArgs { #[arg(long)] manifest_path: PathBuf, @@ -23,17 +34,18 @@ struct Args { #[derive(Debug, Clone, Default)] struct AllowList { - versions: HashMap>, + allow: HashMap>>, } impl AllowList { fn deserialize(table: &Table) -> Self { let mut this = Self::default(); - for (package_name, v) in table["versions"].as_table().unwrap().iter() { + for (source_key, v) in table["allow"].as_table().unwrap().iter() { match v { Value::String(req_str) => { + let package_name = source_key; let req = VersionReq::parse(req_str).unwrap(); - this.insert_version(package_name, req); + this.insert_version(package_name, req, source_key); } Value::Table(v) => { let req = VersionReq::parse(v["version"].as_str().unwrap()).unwrap(); @@ -43,7 +55,7 @@ impl AllowList { .iter() .map(|v| v.as_str().unwrap()) { - this.insert_version(package_name, req.clone()); + this.insert_version(package_name, req.clone(), source_key); } } _ => { @@ -54,11 +66,13 @@ impl AllowList { this } - fn insert_version(&mut self, package_name: &str, req: VersionReq) { - self.versions + fn insert_version(&mut self, package_name: &str, req: VersionReq, source_key: &str) { + self.allow .entry(package_name.to_owned()) .or_default() - .insert(req); + .entry(req) + .or_default() + .insert(source_key.to_owned()); } fn check(&self, metadata: &Metadata) { @@ -79,8 +93,8 @@ impl AllowList { } fn check_one(&self, dep: &str, req: &VersionReq) -> bool { - if let Some(allowed_reqs) = self.versions.get(dep) { - allowed_reqs.contains(req) + if let Some(allowed_reqs) = self.allow.get(dep) { + allowed_reqs.contains_key(req) } else { false } @@ -88,17 +102,20 @@ impl AllowList { } fn main() { - let args = Args::parse(); - let allowlist = AllowList::deserialize( - &fs::read_to_string(&args.allowlist) - .unwrap() - .parse::
() - .unwrap_or_else(|err| panic!("{err}")), - ); - let metadata = MetadataCommand::new() - .manifest_path(&args.manifest_path) - .no_deps() - .exec() - .unwrap(); - allowlist.check(&metadata); + match Cli::parse().command { + Command::CheckWorkspace(args) => { + let allowlist = AllowList::deserialize( + &fs::read_to_string(&args.allowlist) + .unwrap() + .parse::
() + .unwrap_or_else(|err| panic!("{err}")), + ); + let metadata = MetadataCommand::new() + .manifest_path(&args.manifest_path) + .no_deps() + .exec() + .unwrap(); + allowlist.check(&metadata); + } + } } From 7bd5df10a405fb12b085f686d0de10bb25131c8c Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 17:29:29 -0700 Subject: [PATCH 08/21] cmm: Add update feature Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 4 + .../cargo-manifest-management/tool/Cargo.lock | 230 +++++++++++++++++- .../Cargo.toml | 4 + .../src/main.rs | 204 ++++++++++++++-- 4 files changed, 425 insertions(+), 17 deletions(-) diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index 38e4946aa..5093991e7 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -39,3 +39,7 @@ check: $(blueprint) .PHONY: check-workspace-direct-dependencies check-workspace-direct-dependencies: $(run_allow_check_workspace) + +.PHONY: x +x: + $(run_allow) update --allowlist direct-dependency-allow-list.toml -o direct-dependency-allow-list.toml diff --git a/hacking/cargo-manifest-management/tool/Cargo.lock b/hacking/cargo-manifest-management/tool/Cargo.lock index 8f900ccc6..d596e488a 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.lock +++ b/hacking/cargo-manifest-management/tool/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aho-corasick" version = "1.1.3" @@ -62,7 +68,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -72,7 +78,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -229,6 +235,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -300,12 +315,31 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "flate2" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -316,6 +350,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -369,6 +414,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -443,7 +498,11 @@ version = "0.1.0" dependencies = [ "cargo_metadata", "clap", + "serde_json", "toml", + "toml-normalize", + "toml-path-regex", + "ureq", ] [[package]] @@ -452,6 +511,15 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -473,6 +541,12 @@ version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + [[package]] name = "pest" version = "2.7.14" @@ -577,6 +651,53 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "ryu" version = "1.0.18" @@ -686,12 +807,24 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "2.0.85" @@ -754,6 +887,21 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "toml" version = "0.8.19" @@ -835,12 +983,60 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +dependencies = [ + "base64", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "url", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + [[package]] name = "utf8parse" version = "0.2.2" @@ -853,6 +1049,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "wasm-bindgen" version = "0.2.95" @@ -908,6 +1110,15 @@ version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +[[package]] +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -917,6 +1128,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.59.0" @@ -1007,3 +1227,9 @@ checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml index e714127ef..789a993d2 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml @@ -12,6 +12,10 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] +toml-normalize = { path = "../toml-normalize" } +toml-path-regex = { path = "../toml-path-regex" } clap = { version = "4.4.6", features = [ "derive" ] } cargo_metadata = "0.18.1" toml = "0.8.19" +ureq = "2.10.1" +serde_json = "1.0.132" diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs index c29076bde..cbb5ecd21 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs @@ -8,10 +8,14 @@ use std::collections::{HashMap, HashSet}; use std::fs; use std::path::PathBuf; -use cargo_metadata::{semver::VersionReq, Metadata, MetadataCommand}; +use cargo_metadata::semver::{Version, VersionReq}; +use cargo_metadata::{Metadata, MetadataCommand}; use clap::{Parser, Subcommand}; use toml::{Table, Value}; +use toml_normalize::{Formatter, KeyOrdering, Policy, TableRule}; +use toml_path_regex::PathRegex; + #[derive(Debug, Parser)] struct Cli { #[command(subcommand)] @@ -21,15 +25,62 @@ struct Cli { #[derive(Debug, Subcommand)] enum Command { CheckWorkspace(CheckWorkspaceArgs), + Update(UpdateArgs), } #[derive(Debug, Parser)] struct CheckWorkspaceArgs { + #[arg(long)] + allowlist: PathBuf, + #[arg(long)] manifest_path: PathBuf, +} +#[derive(Debug, Parser)] +struct UpdateArgs { #[arg(long)] allowlist: PathBuf, + + #[arg(short = 'o')] + out: Option, +} + +fn main() { + match Cli::parse().command { + Command::CheckWorkspace(args) => { + let allowlist = AllowList::new( + &fs::read_to_string(&args.allowlist) + .unwrap() + .parse::
() + .unwrap_or_else(|err| panic!("{err}")), + ); + let metadata = MetadataCommand::new() + .manifest_path(&args.manifest_path) + .no_deps() + .exec() + .unwrap(); + allowlist.check(&metadata); + } + Command::Update(args) => { + let mut table = fs::read_to_string(&args.allowlist) + .unwrap() + .parse::
() + .unwrap_or_else(|err| panic!("{err}")); + let mut view = AllowListUpdateView::new(&mut table); + view.update(); + let formatter = Formatter::new(allowlist_policy()); + let table_str = formatter.format(&table).unwrap().to_string(); + match &args.out { + None => { + println!("{table_str}"); + } + Some(out) => { + fs::write(out, table_str).unwrap(); + } + } + } + } } #[derive(Debug, Clone, Default)] @@ -38,7 +89,7 @@ struct AllowList { } impl AllowList { - fn deserialize(table: &Table) -> Self { + fn new(table: &Table) -> Self { let mut this = Self::default(); for (source_key, v) in table["allow"].as_table().unwrap().iter() { match v { @@ -101,21 +152,144 @@ impl AllowList { } } -fn main() { - match Cli::parse().command { - Command::CheckWorkspace(args) => { - let allowlist = AllowList::deserialize( - &fs::read_to_string(&args.allowlist) +#[derive(Debug, Default)] +struct AllowListUpdateView<'a> { + allow: HashMap>, +} + +#[derive(Debug)] +struct AllowListUpdateViewEntry<'a> { + req: VersionReq, + req_slot: &'a mut String, + applies_to: Vec, +} + +impl<'a> AllowListUpdateViewEntry<'a> { + fn new(key: &String, value: &'a mut Value) -> Self { + match value { + Value::String(req_slot) => Self::new_helper(req_slot, vec![key.to_owned()]), + Value::Table(v) => { + let applies_to = v["applies-to"] + .as_array() .unwrap() - .parse::
() - .unwrap_or_else(|err| panic!("{err}")), + .iter() + .map(|v| v.as_str().unwrap().to_owned()) + .collect(); + let req_slot = match &mut v["version"] { + Value::String(req_slot) => req_slot, + _ => panic!(), + }; + Self::new_helper(req_slot, applies_to) + } + _ => { + panic!(); + } + } + } + + fn new_helper(req_slot: &'a mut String, applies_to: Vec) -> Self { + Self { + req: VersionReq::parse(req_slot).unwrap(), + req_slot, + applies_to, + } + } + + fn fetch_max_stable_version(&self) -> Version { + let mut it = self + .applies_to + .iter() + .map(|crate_name| fetch_max_stable_version(crate_name)); + let v = it.next().unwrap(); + for v_ in it { + assert_eq!(v_, v); + } + v + } + + fn update(&mut self) { + let max_stable_version = self.fetch_max_stable_version(); + if !self.req.matches(&max_stable_version) { + eprintln!( + "{:?}: {} -> {}", + self.applies_to, self.req, max_stable_version ); - let metadata = MetadataCommand::new() - .manifest_path(&args.manifest_path) - .no_deps() - .exec() - .unwrap(); - allowlist.check(&metadata); + *self.req_slot = max_stable_version.to_string(); } } } + +impl<'a> AllowListUpdateView<'a> { + fn new(table: &'a mut Table) -> Self { + let mut this = Self::default(); + for (k, v) in table["allow"].as_table_mut().unwrap().iter_mut() { + this.allow + .insert(k.clone(), AllowListUpdateViewEntry::new(k, v)); + } + this + } + + fn update(&mut self) { + for (_k, v) in self.allow.iter_mut() { + v.update(); + } + } +} + +fn fetch_max_stable_version(crate_name: &str) -> Version { + let resp = ureq::get(&format!("https://crates.io/api/v1/crates/{crate_name}")) + .call() + .unwrap() + .into_string() + .unwrap(); + let val = serde_json::from_str::(&resp).unwrap(); + let ver = val.as_object().unwrap()["crate"].as_object().unwrap()["max_stable_version"] + .as_str() + .unwrap(); + Version::parse(ver).unwrap() +} + +pub fn allowlist_policy() -> Policy { + Policy { + max_width: Some(usize::MAX), + table_rules: vec![ + TableRule { + path_regex: PathRegex::new( + r#" + .* + "#, + ) + .unwrap(), + ..Default::default() + }, + TableRule { + path_regex: PathRegex::new( + r#" + ['allow'] + "#, + ) + .unwrap(), + never_inline: Some(true), + ..Default::default() + }, + TableRule { + path_regex: PathRegex::new( + r#" + ['allow'] . + "#, + ) + .unwrap(), + key_ordering: KeyOrdering { + front: vec![ + "version".to_owned(), + "applies-to".to_owned(), + "old".to_owned(), + ], + ..Default::default() + }, + ..Default::default() + }, + ], + ..Default::default() + } +} From 36f05d6507361e93996b16667e69b5b9b455b354 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:17:06 -0700 Subject: [PATCH 09/21] cmm: Fix Makefile Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index 5093991e7..baf39334e 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -29,12 +29,12 @@ $(blueprint): .PHONY: update update: $(blueprint) $(run) --blueprint $< - $(run_allow) + $(run_allow_check_workspace) .PHONY: check check: $(blueprint) $(run) --blueprint $< --just-check - $(run_allow) + $(run_allow_check_workspace) .PHONY: check-workspace-direct-dependencies check-workspace-direct-dependencies: From 255abfb8362c077e2e5779243ac659ca6d90fd95 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:17:27 -0700 Subject: [PATCH 10/21] Update direct dependencies Signed-off-by: Nick Spinale --- Cargo.lock | 514 +++++------------- crates/drivers/bcm2835-aux-uart/Cargo.toml | 2 +- crates/drivers/pl011/Cargo.toml | 2 +- crates/drivers/pl031/Cargo.toml | 2 +- crates/drivers/sp804/Cargo.toml | 2 +- crates/drivers/virtio/net/Cargo.toml | 2 +- .../microkit/banscii/pds/artist/Cargo.toml | 4 +- .../pds/assistant/core/test/Cargo.toml | 2 +- .../http-server/pds/server/Cargo.toml | 6 +- .../http-server/pds/server/core/Cargo.toml | 2 +- .../root-task/serial-device/Cargo.toml | 2 +- .../runtime/config/types/Cargo.toml | 2 +- crates/sel4-async/block-io/Cargo.toml | 6 +- crates/sel4-async/block-io/fat/Cargo.toml | 4 +- crates/sel4-async/network/Cargo.toml | 2 +- crates/sel4-async/unsync/Cargo.toml | 2 +- .../sel4-capdl-initializer/types/Cargo.toml | 2 +- crates/sel4-driver-interfaces/Cargo.toml | 2 +- crates/sel4-externally-shared/Cargo.toml | 2 +- crates/sel4-kernel-loader/Cargo.toml | 6 +- .../sel4-kernel-loader/add-payload/Cargo.toml | 2 +- .../embed-page-tables/Cargo.toml | 2 +- .../payload-types/Cargo.toml | 2 +- .../sel4-microkit/driver-adapters/Cargo.toml | 4 +- crates/sel4-microkit/message/types/Cargo.toml | 4 +- crates/sel4-shared-ring-buffer/Cargo.toml | 2 +- .../block-io/Cargo.toml | 2 +- .../block-io/types/Cargo.toml | 4 +- .../bookkeeping/Cargo.toml | 2 +- .../smoltcp/Cargo.toml | 2 +- crates/sel4/config/generic/Cargo.toml | 2 +- crates/sel4/sys/Cargo.toml | 4 +- 32 files changed, 193 insertions(+), 407 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2dae8095b..3894d651b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "aarch64-cpu" -version = "9.4.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac42a04a61c19fc8196dd728022a784baecc5d63d7e256c01ad1b3fbfab26287" +checksum = "6a21cd0131c25c438e19cd6a774adf7e3f64f7f4d723022882facc2dee0f8bc9" dependencies = [ "tock-registers", ] @@ -38,18 +38,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "cpp_demangle", - "fallible-iterator 0.3.0", + "fallible-iterator", "gimli", "rustc-demangle", "smallvec", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -65,7 +59,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -146,9 +140,9 @@ checksum = "5b8a30a44e99a1c83ccb2a6298c563c888952a1c9134953db26876528f84c93a" [[package]] name = "async-unsync" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ccc573919db5562a0ce1f04838b43c695067a87882855cad0c50bb2491651c" +checksum = "da39954ed37b9dbb0475df268f10deb609213aefdc6c896adf88417bb2fa7efe" [[package]] name = "atomic-polyfill" @@ -239,17 +233,15 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bindgen" -version = "0.68.1" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "lazy_static", - "lazycell", + "itertools", "log", - "peeking_take_while", "prettyplease", "proc-macro2", "quote", @@ -257,7 +249,6 @@ dependencies = [ "rustc-hash", "shlex", "syn 2.0.85", - "which", ] [[package]] @@ -268,9 +259,9 @@ checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitfield" -version = "0.14.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" +checksum = "f798d2d157e547aa99aab0967df39edd0b70307312b6f8bd2848e6abe40896e0" [[package]] name = "bitflags" @@ -311,12 +302,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - [[package]] name = "bytemuck" version = "1.19.0" @@ -547,9 +532,9 @@ dependencies = [ [[package]] name = "der" -version = "0.6.1" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468", @@ -599,20 +584,10 @@ version = "0.5.0" source = "git+https://github.com/coliasgroup/rust-embedded-fat.git?tag=keep/e1465a43c9f550ef58701a275b313310#e1465a43c9f550ef58701a275b3133105deb9183" dependencies = [ "byteorder", - "heapless", + "heapless 0.7.17", "log", ] -[[package]] -name = "embedded-hal" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" -dependencies = [ - "nb 0.1.3", - "void", -] - [[package]] name = "embedded-hal" version = "1.0.0" @@ -625,8 +600,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fba4268c14288c828995299e59b12babdbe170f6c6d73731af1b4648142e8605" dependencies = [ - "embedded-hal 1.0.0", - "nb 1.1.0", + "embedded-hal", + "nb", ] [[package]] @@ -661,17 +636,27 @@ dependencies = [ "syn 2.0.85", ] +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_logger" -version = "0.10.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ + "anstream", + "anstyle", + "env_filter", "humantime", - "is-terminal", "log", - "regex", - "termcolor", ] [[package]] @@ -680,16 +665,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "example-root-task" version = "0.1.0" @@ -706,12 +681,6 @@ dependencies = [ "sel4", ] -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - [[package]] name = "fallible-iterator" version = "0.3.0" @@ -731,7 +700,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -851,9 +820,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gpt_disk_types" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c9cec52cc9bb7305e0178834c310519a4d602952fb65a31bdf60aed797fbf47" +checksum = "9165f25c3cb4e30437743a410755999f5c753324dfd487d84a30a0858a149021" dependencies = [ "bytemuck", "crc", @@ -871,12 +840,12 @@ dependencies = [ ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "hash32" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ - "ahash", + "byteorder", ] [[package]] @@ -895,6 +864,8 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" dependencies = [ + "allocator-api2", + "equivalent", "foldhash", ] @@ -905,10 +876,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" dependencies = [ "atomic-polyfill", - "hash32", + "hash32 0.2.1", "rustc_version", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32 0.3.1", "serde", - "spin 0.9.8", "stable_deref_trait", ] @@ -920,27 +901,12 @@ dependencies = [ "sel4-root-task", ] -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "httparse" version = "1.9.5" @@ -963,17 +929,6 @@ dependencies = [ "hashbrown 0.15.0", ] -[[package]] -name = "is-terminal" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -995,30 +950,15 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" -[[package]] -name = "js-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" -dependencies = [ - "wasm-bindgen", -] - [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.161" @@ -1041,12 +981,6 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00419de735aac21d53b0de5ce2c03bd3627277cf471300f27ebc89f7d828047" -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - [[package]] name = "lock_api" version = "0.4.12" @@ -1065,11 +999,11 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.10.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.15.0", ] [[package]] @@ -1269,15 +1203,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -1287,15 +1212,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "nb" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" -dependencies = [ - "nb 1.1.0", -] - [[package]] name = "nb" version = "1.1.0" @@ -1411,22 +1327,22 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.85", ] [[package]] @@ -1465,12 +1381,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pem" version = "3.0.4" @@ -1483,9 +1393,9 @@ dependencies = [ [[package]] name = "pem-rfc7468" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ "base64ct", ] @@ -1569,21 +1479,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs1" -version = "0.4.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der", "pkcs8", "spki", - "zeroize", ] [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", @@ -1613,7 +1522,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -1708,12 +1617,13 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" +checksum = "54077e1872c46788540de1ea3d7f4ccb1983d12f9aa909b234468676c1a36779" dependencies = [ "pem", - "ring 0.16.20", + "ring", + "rustls-pki-types", "time", "yasna", ] @@ -1747,21 +1657,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.8" @@ -1771,39 +1666,58 @@ dependencies = [ "cfg-if", "getrandom", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "spin", + "untrusted", "windows-sys 0.52.0", ] [[package]] name = "riscv" -version = "0.10.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa3145d2fae3778b1e31ec2e827b228bdc6abd9b74bb5705ba46dcb82069bc4f" +checksum = "5ea8ff73d3720bdd0a97925f0bf79ad2744b6da8ff36be3840c48ac81191d7a7" dependencies = [ - "bit_field", "critical-section", - "embedded-hal 0.2.7", + "embedded-hal", + "paste", + "riscv-macros", + "riscv-pac", +] + +[[package]] +name = "riscv-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f265be5d634272320a7de94cea15c22a3bfdd4eb42eb43edc528415f066a1f25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", ] +[[package]] +name = "riscv-pac" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8188909339ccc0c68cfb5a04648313f09621e8b87dc03095454f1a11f6c5d436" + [[package]] name = "rsa" -version = "0.8.2" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a77d189da1fee555ad95b7e50e7457d91c0e089ec68ca69ad2989413bbdab4" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" dependencies = [ - "byteorder", + "const-oid", "digest", "num-bigint-dig", "num-integer", - "num-iter", "num-traits", "pkcs1", "pkcs8", "rand_core", "sha2", "signature", + "spki", "subtle", "zeroize", ] @@ -1838,19 +1752,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.38.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - [[package]] name = "rustls" version = "0.23.15" @@ -1859,7 +1760,7 @@ checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ "log", "once_cell", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -1887,9 +1788,9 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -1950,7 +1851,7 @@ version = "0.1.0" dependencies = [ "embedded-fat", "futures", - "heapless", + "heapless 0.8.0", "hex", "log", "lru", @@ -1989,7 +1890,7 @@ version = "0.1.0" dependencies = [ "getrandom", "rand", - "ring 0.17.8", + "ring", "rustls", "sel4-async-time", ] @@ -2201,7 +2102,7 @@ version = "0.1.0" dependencies = [ "cfg-if", "log", - "miniz_oxide 0.6.2", + "miniz_oxide", "sel4", "sel4-capdl-initializer-types-derive", "serde", @@ -2286,7 +2187,7 @@ dependencies = [ name = "sel4-config-generic" version = "0.1.0" dependencies = [ - "fallible-iterator 0.2.0", + "fallible-iterator", "proc-macro2", "quote", "sel4-config-generic-types", @@ -2325,7 +2226,7 @@ name = "sel4-driver-interfaces" version = "0.1.0" dependencies = [ "embedded-hal-nb", - "heapless", + "heapless 0.8.0", "lock_api", "rtcc", "serde", @@ -2342,7 +2243,7 @@ dependencies = [ "cfg-if", "sel4-atomic-ptr", "volatile", - "zerocopy", + "zerocopy 0.8.7", ] [[package]] @@ -2378,7 +2279,7 @@ dependencies = [ "cfg-if", "embedded-hal-nb", "glob", - "heapless", + "heapless 0.8.0", "log", "object", "postcard", @@ -2401,7 +2302,7 @@ dependencies = [ "sel4-stack", "serde", "smccc", - "spin 0.9.8", + "spin", "syn 2.0.85", ] @@ -2411,7 +2312,7 @@ version = "0.1.0" dependencies = [ "anyhow", "clap", - "heapless", + "heapless 0.8.0", "num", "object", "postcard", @@ -2448,7 +2349,7 @@ version = "0.1.0" name = "sel4-kernel-loader-payload-types" version = "0.1.0" dependencies = [ - "heapless", + "heapless 0.8.0", "num-traits", "sel4-platform-info-types", "serde", @@ -2500,7 +2401,7 @@ version = "0.1.0" dependencies = [ "chrono", "embedded-hal-nb", - "heapless", + "heapless 0.8.0", "log", "rtcc", "sel4-bounce-buffer-allocator", @@ -2538,7 +2439,7 @@ dependencies = [ "num_enum", "postcard", "serde", - "zerocopy", + "zerocopy 0.8.7", ] [[package]] @@ -2699,7 +2600,7 @@ version = "0.1.0" dependencies = [ "log", "sel4-externally-shared", - "zerocopy", + "zerocopy 0.8.7", ] [[package]] @@ -2723,7 +2624,7 @@ version = "0.1.0" dependencies = [ "num_enum", "sel4-shared-ring-buffer", - "zerocopy", + "zerocopy 0.8.7", ] [[package]] @@ -2802,7 +2703,7 @@ name = "sel4-simple-task-runtime-config-types" version = "0.1.0" dependencies = [ "serde", - "zerocopy", + "zerocopy 0.8.7", ] [[package]] @@ -3019,15 +2920,15 @@ checksum = "617d17f088ec733e5a6b86da6ce4cce1414e6e856d6061c16dda51cceae6f68c" [[package]] name = "smoltcp" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2e3a36ac8fea7b94e666dfa3871063d6e0a5c9d5d4fec9a1a6b7b6760f0229" +checksum = "5a1a996951e50b5971a2c8c0fa05a381480d70a933064245c4a223ddc87ccc97" dependencies = [ "bitflags 1.3.2", "byteorder", "cfg-if", "defmt", - "heapless", + "heapless 0.8.0", "log", "managed", ] @@ -3067,12 +2968,6 @@ dependencies = [ "sel4-stack", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -3084,9 +2979,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.6.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -3160,15 +3055,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "tests-capdl-threads-components-test" version = "0.1.0" @@ -3382,9 +3268,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "tock-registers" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c" +checksum = "2b9e2fdb3a1e862c0661768b7ed25390811df1947a8acbfbefe09b47078d93c4" [[package]] name = "ttf-parser" @@ -3453,12 +3339,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -3495,15 +3375,9 @@ dependencies = [ "bitflags 2.6.0", "enumn", "log", - "zerocopy", + "zerocopy 0.7.35", ] -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "volatile" version = "0.5.1" @@ -3524,61 +3398,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasm-bindgen" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.85", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" - [[package]] name = "wasmparser" version = "0.218.0" @@ -3588,16 +3407,6 @@ dependencies = [ "bitflags 2.6.0", ] -[[package]] -name = "web-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpki-roots" version = "0.26.6" @@ -3607,49 +3416,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" version = "0.52.0" @@ -3740,9 +3506,9 @@ checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmltree" -version = "0.10.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +checksum = "b619f8c85654798007fb10afa5125590b43b088c225a25fc2fec100a9fad0fc6" dependencies = [ "xml-rs", ] @@ -3763,7 +3529,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb3da5f7220f919a6c7af7c856435a68ee1582fd7a77aa72936257d8335bd6f6" +dependencies = [ + "zerocopy-derive 0.8.7", ] [[package]] @@ -3777,6 +3552,17 @@ dependencies = [ "syn 2.0.85", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5f54f3cc93cd80745404626681b4b9fca9a867bad5a8424b618eb0db1ae6ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "zeroize" version = "1.8.1" diff --git a/crates/drivers/bcm2835-aux-uart/Cargo.toml b/crates/drivers/bcm2835-aux-uart/Cargo.toml index a9e5e6da4..c4096de5d 100644 --- a/crates/drivers/bcm2835-aux-uart/Cargo.toml +++ b/crates/drivers/bcm2835-aux-uart/Cargo.toml @@ -19,4 +19,4 @@ license = "BSD-2-Clause" [dependencies] embedded-hal-nb = "1.0" sel4-driver-interfaces = { path = "../../sel4-driver-interfaces" } -tock-registers = "0.8.1" +tock-registers = "0.9.0" diff --git a/crates/drivers/pl011/Cargo.toml b/crates/drivers/pl011/Cargo.toml index 804a06e2c..0ade37ee1 100644 --- a/crates/drivers/pl011/Cargo.toml +++ b/crates/drivers/pl011/Cargo.toml @@ -19,4 +19,4 @@ license = "BSD-2-Clause" [dependencies] embedded-hal-nb = "1.0" sel4-driver-interfaces = { path = "../../sel4-driver-interfaces" } -tock-registers = "0.8.1" +tock-registers = "0.9.0" diff --git a/crates/drivers/pl031/Cargo.toml b/crates/drivers/pl031/Cargo.toml index eb2a81758..8e2238866 100644 --- a/crates/drivers/pl031/Cargo.toml +++ b/crates/drivers/pl031/Cargo.toml @@ -18,4 +18,4 @@ license = "BSD-2-Clause" [dependencies] rtcc = "0.3.2" -tock-registers = "0.8.1" +tock-registers = "0.9.0" diff --git a/crates/drivers/sp804/Cargo.toml b/crates/drivers/sp804/Cargo.toml index 4471aa3b3..00d5c40db 100644 --- a/crates/drivers/sp804/Cargo.toml +++ b/crates/drivers/sp804/Cargo.toml @@ -18,4 +18,4 @@ license = "BSD-2-Clause" [dependencies] sel4-driver-interfaces = { path = "../../sel4-driver-interfaces" } -tock-registers = "0.8.1" +tock-registers = "0.9.0" diff --git a/crates/drivers/virtio/net/Cargo.toml b/crates/drivers/virtio/net/Cargo.toml index c20b27318..5cfa74dae 100644 --- a/crates/drivers/virtio/net/Cargo.toml +++ b/crates/drivers/virtio/net/Cargo.toml @@ -22,6 +22,6 @@ sel4-driver-interfaces = { path = "../../../sel4-driver-interfaces" } virtio-drivers = { version = "0.7.2", default-features = false, features = ["alloc"] } [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = ["proto-ipv4", "proto-dhcpv4", "proto-dns", "socket-dhcpv4", "socket-dns", "socket-tcp"] diff --git a/crates/examples/microkit/banscii/pds/artist/Cargo.toml b/crates/examples/microkit/banscii/pds/artist/Cargo.toml index 47613c7b8..b8c8a3c62 100644 --- a/crates/examples/microkit/banscii/pds/artist/Cargo.toml +++ b/crates/examples/microkit/banscii/pds/artist/Cargo.toml @@ -18,7 +18,7 @@ license = "BSD-2-Clause" [dependencies] banscii-artist-interface-types = { path = "interface-types" } -rsa = { version = "0.8.1", default-features = false, features = ["pem", "sha2"] } +rsa = { version = "0.9.6", default-features = false, features = ["pem", "sha2"] } sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } @@ -28,4 +28,4 @@ default-features = false features = ["alloc"] [build-dependencies] -rsa = "0.8.1" +rsa = "0.9.6" diff --git a/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.toml b/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.toml index d0203f193..7c378df3e 100644 --- a/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.toml +++ b/crates/examples/microkit/banscii/pds/assistant/core/test/Cargo.toml @@ -18,5 +18,5 @@ license = "BSD-2-Clause" [dependencies] banscii-assistant-core = { path = ".." } -env_logger = "0.10.0" +env_logger = "0.11.5" log = "0.4.17" diff --git a/crates/examples/microkit/http-server/pds/server/Cargo.toml b/crates/examples/microkit/http-server/pds/server/Cargo.toml index ec61c12bf..623df4a20 100644 --- a/crates/examples/microkit/http-server/pds/server/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/server/Cargo.toml @@ -17,7 +17,7 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -async-unsync = { version = "0.2.2", default-features = false } +async-unsync = { version = "0.3.0", default-features = false } futures = { version = "0.3.28", default-features = false, features = ["async-await", "alloc"] } lock_api = "0.4.12" log = "0.4.17" @@ -56,7 +56,7 @@ path = "../../../../../sel4-shared-ring-buffer/block-io/types" path = "../../../../../sel4-shared-ring-buffer/bookkeeping" [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = [ "proto-ipv4", @@ -69,4 +69,4 @@ features = [ ] [build-dependencies] -rcgen = "0.11.1" +rcgen = "0.13.1" diff --git a/crates/examples/microkit/http-server/pds/server/core/Cargo.toml b/crates/examples/microkit/http-server/pds/server/core/Cargo.toml index 591033ea9..5c2777d5e 100644 --- a/crates/examples/microkit/http-server/pds/server/core/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/server/core/Cargo.toml @@ -38,6 +38,6 @@ webpki-roots = "0.26" path = "../../../../../../sel4-async/single-threaded-executor" [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = ["proto-ipv4", "proto-dhcpv4", "proto-dns", "socket-dhcpv4", "socket-dns", "socket-tcp"] diff --git a/crates/examples/root-task/serial-device/Cargo.toml b/crates/examples/root-task/serial-device/Cargo.toml index e3b57c79b..24fbbfec5 100644 --- a/crates/examples/root-task/serial-device/Cargo.toml +++ b/crates/examples/root-task/serial-device/Cargo.toml @@ -19,4 +19,4 @@ license = "BSD-2-Clause" [dependencies] sel4 = { path = "../../../sel4" } sel4-root-task = { path = "../../../sel4-root-task" } -tock-registers = "0.8.1" +tock-registers = "0.9.0" diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/Cargo.toml b/crates/private/support/sel4-simple-task/runtime/config/types/Cargo.toml index 850236099..4d6ec98ad 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/Cargo.toml +++ b/crates/private/support/sel4-simple-task/runtime/config/types/Cargo.toml @@ -22,4 +22,4 @@ serde = ["dep:serde"] [dependencies] serde = { version = "1.0.147", default-features = false, features = ["derive"], optional = true } -zerocopy = { version = "0.7.32", features = ["derive"] } +zerocopy = { version = "0.8.7", features = ["derive"] } diff --git a/crates/sel4-async/block-io/Cargo.toml b/crates/sel4-async/block-io/Cargo.toml index b2ae4ad38..f749e4b36 100644 --- a/crates/sel4-async/block-io/Cargo.toml +++ b/crates/sel4-async/block-io/Cargo.toml @@ -23,7 +23,7 @@ default = ["alloc"] [dependencies] bytemuck = { version = "1.4.0", default-features = false } futures = { version = "0.3.28", default-features = false } -gpt_disk_types = { version = "0.15.0", features = ["bytemuck"] } +gpt_disk_types = { version = "0.16.0", features = ["bytemuck"] } log = "0.4.17" -lru = { version = "0.10.0", optional = true } -num_enum = { version = "0.5.9", default-features = false } +lru = { version = "0.12.5", optional = true } +num_enum = { version = "0.7.3", default-features = false } diff --git a/crates/sel4-async/block-io/fat/Cargo.toml b/crates/sel4-async/block-io/fat/Cargo.toml index b0ba9fcdb..473ddc8d4 100644 --- a/crates/sel4-async/block-io/fat/Cargo.toml +++ b/crates/sel4-async/block-io/fat/Cargo.toml @@ -18,10 +18,10 @@ license = "BSD-2-Clause" [dependencies] futures = { version = "0.3.28", default-features = false, features = ["alloc"] } -heapless = "0.7.16" +heapless = "0.8.0" hex = { version = "0.4.3", default-features = false } log = "0.4.17" -lru = "0.10.0" +lru = "0.12.5" sel4-async-block-io = { path = ".." } [dependencies.embedded-fat] diff --git a/crates/sel4-async/network/Cargo.toml b/crates/sel4-async/network/Cargo.toml index 753536c04..d78bdbd3c 100644 --- a/crates/sel4-async/network/Cargo.toml +++ b/crates/sel4-async/network/Cargo.toml @@ -21,7 +21,7 @@ log = "0.4.17" sel4-async-io = { path = "../io" } [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = [ "proto-ipv4", diff --git a/crates/sel4-async/unsync/Cargo.toml b/crates/sel4-async/unsync/Cargo.toml index 1463b2b52..978f1faa4 100644 --- a/crates/sel4-async/unsync/Cargo.toml +++ b/crates/sel4-async/unsync/Cargo.toml @@ -17,4 +17,4 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -async-unsync = { version = "0.2.2", default-features = false } +async-unsync = { version = "0.3.0", default-features = false } diff --git a/crates/sel4-capdl-initializer/types/Cargo.toml b/crates/sel4-capdl-initializer/types/Cargo.toml index 1acbb9c82..531dbd156 100644 --- a/crates/sel4-capdl-initializer/types/Cargo.toml +++ b/crates/sel4-capdl-initializer/types/Cargo.toml @@ -26,7 +26,7 @@ std = ["alloc", "serde", "serde_json"] [dependencies] cfg-if = "1.0.0" log = "0.4.17" -miniz_oxide = { version = "0.6.2", default-features = false, optional = true } +miniz_oxide = { version = "0.8.0", default-features = false, optional = true } sel4 = { path = "../../sel4", default-features = false, optional = true } sel4-capdl-initializer-types-derive = { path = "derive" } serde_json = { version = "1.0.87", optional = true } diff --git a/crates/sel4-driver-interfaces/Cargo.toml b/crates/sel4-driver-interfaces/Cargo.toml index 4e3013bf5..aede4c6a1 100644 --- a/crates/sel4-driver-interfaces/Cargo.toml +++ b/crates/sel4-driver-interfaces/Cargo.toml @@ -18,7 +18,7 @@ license = "BSD-2-Clause" [dependencies] embedded-hal-nb = "1.0" -heapless = "0.7.16" +heapless = "0.8.0" lock_api = "0.4.12" rtcc = "0.3.2" serde = { version = "1.0.147", default-features = false, features = ["derive"] } diff --git a/crates/sel4-externally-shared/Cargo.toml b/crates/sel4-externally-shared/Cargo.toml index 028efcfa9..4a7e37191 100644 --- a/crates/sel4-externally-shared/Cargo.toml +++ b/crates/sel4-externally-shared/Cargo.toml @@ -23,7 +23,7 @@ very_unstable = ["volatile/very_unstable"] [dependencies] cfg-if = "1.0.0" sel4-atomic-ptr = { path = "../sel4-atomic-ptr" } -zerocopy = "0.7.32" +zerocopy = "0.8.7" [dependencies.volatile] git = "https://github.com/coliasgroup/volatile.git" diff --git a/crates/sel4-kernel-loader/Cargo.toml b/crates/sel4-kernel-loader/Cargo.toml index b7f2bc155..1a1b380d8 100644 --- a/crates/sel4-kernel-loader/Cargo.toml +++ b/crates/sel4-kernel-loader/Cargo.toml @@ -19,7 +19,7 @@ license = "BSD-2-Clause AND GPL-2.0-only" [dependencies] cfg-if = "1.0.0" embedded-hal-nb = "1.0" -heapless = { version = "0.7.16", features = ["serde"] } +heapless = { version = "0.8.0", features = ["serde"] } log = "0.4.17" postcard = { version = "1.0.2", default-features = false } sel4-config = { path = "../sel4/config" } @@ -53,9 +53,9 @@ sel4-bcm2835-aux-uart-driver = { path = "../drivers/bcm2835-aux-uart" } sel4-pl011-driver = { path = "../drivers/pl011" } [target."cfg(any(target_arch = \"riscv32\", target_arch = \"riscv64\"))".dependencies] -riscv = "0.10.0" +riscv = "0.12.1" sbi = "0.2.0" [target."cfg(target_arch = \"aarch64\")".dependencies] -aarch64-cpu = "9.4.0" +aarch64-cpu = "10.0.0" smccc = "0.1.1" diff --git a/crates/sel4-kernel-loader/add-payload/Cargo.toml b/crates/sel4-kernel-loader/add-payload/Cargo.toml index 62161d85c..b19c390f8 100644 --- a/crates/sel4-kernel-loader/add-payload/Cargo.toml +++ b/crates/sel4-kernel-loader/add-payload/Cargo.toml @@ -19,7 +19,7 @@ license = "BSD-2-Clause" [dependencies] anyhow = "1.0.66" clap = "4.4.6" -heapless = "0.7.16" +heapless = "0.8.0" num = "0.4.1" object = { version = "0.36.5", features = ["all"] } postcard = { version = "1.0.2", default-features = false, features = ["alloc"] } diff --git a/crates/sel4-kernel-loader/embed-page-tables/Cargo.toml b/crates/sel4-kernel-loader/embed-page-tables/Cargo.toml index 689e7bdc4..9f654dfc7 100644 --- a/crates/sel4-kernel-loader/embed-page-tables/Cargo.toml +++ b/crates/sel4-kernel-loader/embed-page-tables/Cargo.toml @@ -17,6 +17,6 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -bitfield = "0.14" +bitfield = "0.17.0" proc-macro2 = "1.0.89" quote = "1.0.37" diff --git a/crates/sel4-kernel-loader/payload-types/Cargo.toml b/crates/sel4-kernel-loader/payload-types/Cargo.toml index e46b53d66..01dc2aba4 100644 --- a/crates/sel4-kernel-loader/payload-types/Cargo.toml +++ b/crates/sel4-kernel-loader/payload-types/Cargo.toml @@ -17,7 +17,7 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -heapless = { version = "0.7.16", features = ["serde"] } +heapless = { version = "0.8.0", features = ["serde"] } num-traits = { version = "0.2.16", default-features = false } sel4-platform-info-types = { path = "../../sel4-platform-info/types" } serde = { version = "1.0.147", default-features = false, features = ["derive"], optional = true } diff --git a/crates/sel4-microkit/driver-adapters/Cargo.toml b/crates/sel4-microkit/driver-adapters/Cargo.toml index 76e268c8a..47b5d03da 100644 --- a/crates/sel4-microkit/driver-adapters/Cargo.toml +++ b/crates/sel4-microkit/driver-adapters/Cargo.toml @@ -19,7 +19,7 @@ license = "BSD-2-Clause" [dependencies] chrono = { version = "0.4.35", default-features = false, features = ["serde"] } embedded-hal-nb = "1.0" -heapless = "0.7.16" +heapless = "0.8.0" log = "0.4.17" rtcc = "0.3.2" sel4-bounce-buffer-allocator = { path = "../../sel4-bounce-buffer-allocator" } @@ -31,6 +31,6 @@ sel4-shared-ring-buffer = { path = "../../sel4-shared-ring-buffer" } serde = { version = "1.0.147", default-features = false } [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = ["proto-ipv4", "proto-dhcpv4", "proto-dns", "socket-dhcpv4", "socket-dns", "socket-tcp"] diff --git a/crates/sel4-microkit/message/types/Cargo.toml b/crates/sel4-microkit/message/types/Cargo.toml index aa0df089a..925280b4a 100644 --- a/crates/sel4-microkit/message/types/Cargo.toml +++ b/crates/sel4-microkit/message/types/Cargo.toml @@ -21,7 +21,7 @@ default = ["postcard"] postcard = ["dep:postcard", "dep:serde"] [dependencies] -num_enum = { version = "0.5.9", default-features = false } +num_enum = { version = "0.7.3", default-features = false } postcard = { version = "1.0.2", default-features = false, optional = true } serde = { version = "1.0.147", default-features = false, optional = true } -zerocopy = "0.7.32" +zerocopy = "0.8.7" diff --git a/crates/sel4-shared-ring-buffer/Cargo.toml b/crates/sel4-shared-ring-buffer/Cargo.toml index 0aae3e5c4..9109a64de 100644 --- a/crates/sel4-shared-ring-buffer/Cargo.toml +++ b/crates/sel4-shared-ring-buffer/Cargo.toml @@ -19,4 +19,4 @@ license = "BSD-2-Clause" [dependencies] log = "0.4.17" sel4-externally-shared = { path = "../sel4-externally-shared", features = ["unstable"] } -zerocopy = { version = "0.7.32", features = ["derive"] } +zerocopy = { version = "0.8.7", features = ["derive"] } diff --git a/crates/sel4-shared-ring-buffer/block-io/Cargo.toml b/crates/sel4-shared-ring-buffer/block-io/Cargo.toml index 8a239e289..0a7e7a36f 100644 --- a/crates/sel4-shared-ring-buffer/block-io/Cargo.toml +++ b/crates/sel4-shared-ring-buffer/block-io/Cargo.toml @@ -17,7 +17,7 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -async-unsync = { version = "0.2.2", default-features = false } +async-unsync = { version = "0.3.0", default-features = false } futures = { version = "0.3.28", default-features = false, features = ["async-await", "alloc"] } log = "0.4.17" sel4-async-block-io = { path = "../../sel4-async/block-io" } diff --git a/crates/sel4-shared-ring-buffer/block-io/types/Cargo.toml b/crates/sel4-shared-ring-buffer/block-io/types/Cargo.toml index 4dd6cf139..ce06f72c6 100644 --- a/crates/sel4-shared-ring-buffer/block-io/types/Cargo.toml +++ b/crates/sel4-shared-ring-buffer/block-io/types/Cargo.toml @@ -17,6 +17,6 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -num_enum = { version = "0.5.9", default-features = false } +num_enum = { version = "0.7.3", default-features = false } sel4-shared-ring-buffer = { path = "../.." } -zerocopy = { version = "0.7.32", features = ["derive"] } +zerocopy = { version = "0.8.7", features = ["derive"] } diff --git a/crates/sel4-shared-ring-buffer/bookkeeping/Cargo.toml b/crates/sel4-shared-ring-buffer/bookkeeping/Cargo.toml index a626e42e7..574f4fb2d 100644 --- a/crates/sel4-shared-ring-buffer/bookkeeping/Cargo.toml +++ b/crates/sel4-shared-ring-buffer/bookkeeping/Cargo.toml @@ -17,4 +17,4 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -async-unsync = { version = "0.2.2", default-features = false, optional = true } +async-unsync = { version = "0.3.0", default-features = false, optional = true } diff --git a/crates/sel4-shared-ring-buffer/smoltcp/Cargo.toml b/crates/sel4-shared-ring-buffer/smoltcp/Cargo.toml index 99ab3ebcb..4d9d4c1db 100644 --- a/crates/sel4-shared-ring-buffer/smoltcp/Cargo.toml +++ b/crates/sel4-shared-ring-buffer/smoltcp/Cargo.toml @@ -27,6 +27,6 @@ sel4-shared-ring-buffer-bookkeeping = { path = "../bookkeeping" } sel4-sync-trivial = { path = "../../sel4-sync/trivial" } [dependencies.smoltcp] -version = "0.10.0" +version = "0.11.0" default-features = false features = ["proto-ipv4", "proto-dhcpv4", "proto-dns", "socket-dhcpv4", "socket-dns", "socket-tcp"] diff --git a/crates/sel4/config/generic/Cargo.toml b/crates/sel4/config/generic/Cargo.toml index 49e5f2fce..ca5ad5ff0 100644 --- a/crates/sel4/config/generic/Cargo.toml +++ b/crates/sel4/config/generic/Cargo.toml @@ -17,7 +17,7 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -fallible-iterator = "0.2.0" +fallible-iterator = "0.3.0" proc-macro2 = "1.0.89" quote = "1.0.37" sel4-config-generic-types = { path = "types" } diff --git a/crates/sel4/sys/Cargo.toml b/crates/sel4/sys/Cargo.toml index 05c45babc..f463f0daa 100644 --- a/crates/sel4/sys/Cargo.toml +++ b/crates/sel4/sys/Cargo.toml @@ -23,7 +23,7 @@ sel4-bitfield-ops = { path = "../bitfield-ops" } sel4-config = { path = "../config" } [build-dependencies] -bindgen = "0.68.1" +bindgen = "0.70.1" glob = "0.3.0" prettyplease = "0.2.25" proc-macro2 = "1.0.89" @@ -33,4 +33,4 @@ sel4-build-env = { path = "../build-env" } sel4-config = { path = "../config" } sel4-config-data = { path = "../config/data" } syn = { version = "2.0.85", features = ["parsing"] } -xmltree = "0.10.3" +xmltree = "0.11.0" From 1488305e20e098fa7aeb80e3e243d78c40f9455e Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:16:03 -0700 Subject: [PATCH 11/21] cmm: Update dependency versions in allowlist Signed-off-by: Nick Spinale --- .../direct-dependency-allow-list.toml | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml index d1673aff6..56fb34fc1 100644 --- a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml +++ b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml @@ -1,11 +1,11 @@ [allow] -aarch64-cpu = "9.4.0" +aarch64-cpu = "10.0.0" ab_glyph = "0.2.22" addr2line = "0.24.2" anyhow = "1.0.66" -async-unsync = "0.2.2" -bindgen = "0.68.1" -bitfield = "0.14" +async-unsync = "0.3.0" +bindgen = "0.70.1" +bitfield = "0.17.0" bytemuck = "1.4.0" cc = "1.0.76" cfg-if = "1.0.0" @@ -14,38 +14,38 @@ clap = "4.4.6" dlmalloc = "0.2.3" embedded-hal-nb = "1.0" embedded-io-async = "0.6.1" -env_logger = "0.10.0" -fallible-iterator = "0.2.0" +env_logger = "0.11.5" +fallible-iterator = "0.3.0" fdt = "0.1.5" futures = "0.3.28" getrandom = "0.2.10" gimli = "0.31.1" glob = "0.3.0" -gpt_disk_types = "0.15.0" -heapless = "0.7.16" +gpt_disk_types = "0.16.0" +heapless = "0.8.0" hex = "0.4.3" httparse = "1.8.0" lazy_static = "1.4.0" # TODO remove lock_api = "0.4.12" log = "0.4.17" -lru = "0.10.0" -miniz_oxide = "0.6.2" +lru = "0.12.5" +miniz_oxide = "0.8.0" num = "0.4.1" -num_enum = "0.5.9" num-traits = "0.2.16" +num_enum = "0.7.3" object = "0.36.5" -pest = { version = "2.4.1", applies-to = [ "pest", "pest_derive" ] } +pest = { version = "2.4.1", applies-to = ["pest", "pest_derive"] } pin-project = "1.1.3" postcard = "1.0.2" prettyplease = "0.2.25" proc-macro2 = "1.0.89" quote = "1.0.37" rand = "0.8.5" -rcgen = "0.11.1" +rcgen = "0.13.1" regex = "1.7.0" ring = "=0.17.8" -riscv = "0.10.0" -rsa = "0.8.1" +riscv = "0.12.1" +rsa = "0.9.6" rtcc = "0.3.2" rustc_version = "0.4.0" rustls = "0.23.5" @@ -55,14 +55,14 @@ serde = "1.0.147" serde_json = "1.0.87" serde_yaml = "0.9.14" smccc = "0.1.1" -smoltcp = "0.10.0" +smoltcp = "0.11.0" spin = "0.9.4" stable_deref_trait = "1.1.0" # for gimli dep of sel4-backtrace-addr2line-context-helper syn = "2.0.85" thiserror = "1.0" -tock-registers = "0.8.1" +tock-registers = "0.9.0" unwinding = "0.2.3" virtio-drivers = "0.7.2" webpki-roots = "0.26" -xmltree = "0.10.3" -zerocopy = "0.7.32" +xmltree = "0.11.0" +zerocopy = "0.8.7" From 939aba389f79226f36a301012ccb4694bcc85b1c Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:28:03 -0700 Subject: [PATCH 12/21] Fixes after bumping bindgen Signed-off-by: Nick Spinale --- crates/sel4/sys/build/c.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/sel4/sys/build/c.rs b/crates/sel4/sys/build/c.rs index a6dec8d86..74ff7033a 100644 --- a/crates/sel4/sys/build/c.rs +++ b/crates/sel4/sys/build/c.rs @@ -66,6 +66,7 @@ pub fn generate_rust( .derive_default(true) .generate_comments(false) .use_core() + .rust_target(bindgen::RustTarget::Stable_1_73) // NOTE tracks verus .generate() .unwrap() } From 12f54ca90502a92213d96d16bb9227c4955365e2 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:41:10 -0700 Subject: [PATCH 13/21] Fixes after bumping zerocopy Signed-off-by: Nick Spinale --- .../runtime/config/types/src/lib.rs | 15 +++++++-------- .../runtime/config/types/src/with_alloc.rs | 2 +- .../config/types/src/zerocopy_helpers.rs | 8 ++++---- .../src/ops/bytewise_ops.rs | 8 ++++---- .../src/ops/unordered_atomic_ops.rs | 1 + .../src/ops/zerocopy_ops.rs | 6 +++--- crates/sel4-microkit/message/types/src/lib.rs | 17 +++++++++-------- .../block-io/types/src/lib.rs | 4 ++-- .../sel4-shared-ring-buffer/src/descriptor.rs | 4 ++-- crates/sel4-shared-ring-buffer/src/lib.rs | 6 +++--- 10 files changed, 36 insertions(+), 35 deletions(-) diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs b/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs index bcee0865b..a7a6ac792 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs +++ b/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs @@ -12,7 +12,7 @@ extern crate alloc; use core::ops::Range; use core::str; -use zerocopy::{AsBytes, FromBytes, FromZeroes, Ref}; +use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout}; mod zerocopy_helpers; @@ -31,7 +31,7 @@ pub type Address = NativeWord; pub type CPtrBits = NativeWord; #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] struct Head { static_heap: ZerocopyOptionWordRange, static_heap_mutex_notification: ZerocopyOptionWord, @@ -42,7 +42,7 @@ struct Head { } #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] struct Thread { ipc_buffer_addr: ZerocopyWord, endpoint: ZerocopyOptionWord, @@ -75,9 +75,8 @@ impl<'a> RuntimeConfig<'a> { } pub fn threads(&self) -> &[RuntimeThreadConfig] { - Ref::new_slice(self.index(self.head().threads.try_into_native().unwrap())) + FromBytes::ref_from_bytes(self.index(self.head().threads.try_into_native().unwrap())) .unwrap() - .into_slice() } pub fn image_identifier(&self) -> Option<&str> { @@ -93,8 +92,8 @@ impl<'a> RuntimeConfig<'a> { } fn head(&self) -> &Head { - let (head, _) = Ref::<_, Head>::new_from_prefix(self.bytes).unwrap(); - head.into_ref() + let (head, _) = FromBytes::ref_from_prefix(self.bytes).unwrap(); + head } fn index(&self, range: Range) -> &[u8] { @@ -103,7 +102,7 @@ impl<'a> RuntimeConfig<'a> { } #[repr(transparent)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] pub struct RuntimeThreadConfig { inner: Thread, } diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/src/with_alloc.rs b/crates/private/support/sel4-simple-task/runtime/config/types/src/with_alloc.rs index 3a3bb05e6..9bef8d02a 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/src/with_alloc.rs +++ b/crates/private/support/sel4-simple-task/runtime/config/types/src/with_alloc.rs @@ -12,7 +12,7 @@ use alloc::string::String; use alloc::vec; use alloc::vec::Vec; -use zerocopy::AsBytes; +use zerocopy::IntoBytes; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs b/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs index de5cb0e73..1ae27e6fc 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs +++ b/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs @@ -7,7 +7,7 @@ use core::fmt; use core::ops::Range; -use zerocopy::{AsBytes, BigEndian, FromBytes, FromZeroes, U64}; +use zerocopy::{BigEndian, FromBytes, Immutable, IntoBytes, KnownLayout, U64}; pub type ZerocopyWord = U64; @@ -47,7 +47,7 @@ impl fmt::Display for InvalidZerocopyOptionTagOr { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] pub struct ZerocopyWordRange { start: ZerocopyWord, end: ZerocopyWord, @@ -93,7 +93,7 @@ impl + Copy> TryFrom<&Range> for ZerocopyWordRange { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] pub struct ZerocopyOptionWord { is_present: u8, value: ZerocopyWord, @@ -156,7 +156,7 @@ impl TryFrom<&ZerocopyOptionWord> for Option { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] pub struct ZerocopyOptionWordRange { is_present: u8, value: ZerocopyWordRange, diff --git a/crates/sel4-externally-shared/src/ops/bytewise_ops.rs b/crates/sel4-externally-shared/src/ops/bytewise_ops.rs index 960e57f22..481df3173 100644 --- a/crates/sel4-externally-shared/src/ops/bytewise_ops.rs +++ b/crates/sel4-externally-shared/src/ops/bytewise_ops.rs @@ -8,7 +8,7 @@ use core::marker::PhantomData; use core::mem; use volatile::ops::{BulkOps, Ops, UnitaryOps}; -use zerocopy::{AsBytes, FromBytes}; +use zerocopy::{FromBytes, Immutable, IntoBytes}; #[derive(Default, Copy, Clone)] pub struct BytewiseOps { @@ -17,10 +17,10 @@ pub struct BytewiseOps { impl Ops for BytewiseOps {} -impl, T: FromBytes + AsBytes> UnitaryOps for BytewiseOps { +impl, T: FromBytes + IntoBytes + Immutable> UnitaryOps for BytewiseOps { unsafe fn read(src: *const T) -> T { let mut val = T::new_zeroed(); - let view = val.as_bytes_mut(); + let view = val.as_mut_bytes(); unsafe { O::memcpy(view.as_mut_ptr(), src.cast(), mem::size_of::()) }; val } @@ -31,7 +31,7 @@ impl, T: FromBytes + AsBytes> UnitaryOps for BytewiseOps { } } -impl, T: FromBytes + AsBytes> BulkOps for BytewiseOps { +impl, T: FromBytes + IntoBytes> BulkOps for BytewiseOps { unsafe fn memmove(dst: *mut T, src: *const T, count: usize) { unsafe { O::memmove(dst.cast(), src.cast(), count * mem::size_of::()) } } diff --git a/crates/sel4-externally-shared/src/ops/unordered_atomic_ops.rs b/crates/sel4-externally-shared/src/ops/unordered_atomic_ops.rs index 3d44c6fc2..c78c2a6be 100644 --- a/crates/sel4-externally-shared/src/ops/unordered_atomic_ops.rs +++ b/crates/sel4-externally-shared/src/ops/unordered_atomic_ops.rs @@ -32,6 +32,7 @@ impl UnitaryOps for UnorderedAtomic } #[allow(clippy::missing_safety_doc)] +#[cfg_attr(not(feature = "unstable"), allow(dead_code))] pub unsafe trait UnsignedPrimitiveWithUnorderedAtomics: Copy {} macro_rules! impl_unsigned_primitive_with_unordered_atomics { diff --git a/crates/sel4-externally-shared/src/ops/zerocopy_ops.rs b/crates/sel4-externally-shared/src/ops/zerocopy_ops.rs index b69caf2b5..0c5d622bd 100644 --- a/crates/sel4-externally-shared/src/ops/zerocopy_ops.rs +++ b/crates/sel4-externally-shared/src/ops/zerocopy_ops.rs @@ -7,7 +7,7 @@ use core::marker::PhantomData; use volatile::ops::{BulkOps, Ops, UnitaryOps}; -use zerocopy::{AsBytes, FromBytes}; +use zerocopy::{FromBytes, IntoBytes}; #[derive(Default, Copy, Clone)] pub struct ZerocopyOps { @@ -16,7 +16,7 @@ pub struct ZerocopyOps { impl Ops for ZerocopyOps {} -impl, T: FromBytes + AsBytes> UnitaryOps for ZerocopyOps { +impl, T: FromBytes + IntoBytes> UnitaryOps for ZerocopyOps { unsafe fn read(src: *const T) -> T { unsafe { O::read(src) } } @@ -26,7 +26,7 @@ impl, T: FromBytes + AsBytes> UnitaryOps for ZerocopyOps } } -impl, T: FromBytes + AsBytes> BulkOps for ZerocopyOps { +impl, T: FromBytes + IntoBytes> BulkOps for ZerocopyOps { unsafe fn memmove(dst: *mut T, src: *const T, count: usize) { unsafe { O::memmove(dst, src, count) } } diff --git a/crates/sel4-microkit/message/types/src/lib.rs b/crates/sel4-microkit/message/types/src/lib.rs index 9477f8840..c1eaa5227 100644 --- a/crates/sel4-microkit/message/types/src/lib.rs +++ b/crates/sel4-microkit/message/types/src/lib.rs @@ -11,7 +11,7 @@ use core::fmt; use core::mem; use num_enum::{IntoPrimitive, TryFromPrimitive}; -use zerocopy::{AsBytes, FromBytes, Unalign}; +use zerocopy::{FromBytes, Immutable, IntoBytes, Unalign}; #[cfg(feature = "postcard")] mod when_postcard; @@ -197,12 +197,12 @@ impl MessageRecv for EmptyMessage { // // // -impl MessageValueSend for T { - type Error = SendAsBytesError; +impl MessageValueSend for T { + type Error = SendIntoBytesError; fn write_message_value(self, buf: &mut [u8]) -> Result { self.write_to_prefix(buf) - .ok_or(SendAsBytesError::ValueTooLarge)?; + .map_err(|_| SendIntoBytesError::ValueTooLarge)?; Ok(mem::size_of_val(&self)) } } @@ -211,14 +211,15 @@ impl MessageValueRecv for T { type Error = RecvFromBytesError; fn read_message_value(buf: &[u8]) -> Result { - Unalign::::read_from_prefix(buf) - .ok_or(RecvFromBytesError::MessageTooShort) - .map(|unalign| unalign.get()) + Ok(Unalign::::read_from_prefix(buf) + .map_err(|_| RecvFromBytesError::MessageTooShort)? + .0 + .get()) } } #[derive(Copy, Clone, Debug)] -pub enum SendAsBytesError { +pub enum SendIntoBytesError { ValueTooLarge, } diff --git a/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs b/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs index fceb00161..aca4df6e4 100644 --- a/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs +++ b/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs @@ -7,11 +7,11 @@ #![no_std] use num_enum::{IntoPrimitive, TryFromPrimitive, TryFromPrimitiveError}; -use zerocopy::{AsBytes, FromBytes, FromZeroes}; +use zerocopy::{FromBytes, Immutable, IntoBytes}; use sel4_shared_ring_buffer::Descriptor; -#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] #[repr(C)] pub struct BlockIORequest { status: i32, diff --git a/crates/sel4-shared-ring-buffer/src/descriptor.rs b/crates/sel4-shared-ring-buffer/src/descriptor.rs index 634be8802..82e40a63c 100644 --- a/crates/sel4-shared-ring-buffer/src/descriptor.rs +++ b/crates/sel4-shared-ring-buffer/src/descriptor.rs @@ -6,10 +6,10 @@ use core::ops::Range; -use zerocopy::{AsBytes, FromBytes, FromZeroes}; +use zerocopy::{FromBytes, Immutable, IntoBytes}; #[repr(C)] -#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, AsBytes, FromBytes, FromZeroes)] +#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] pub struct Descriptor { encoded_addr: usize, len: u32, diff --git a/crates/sel4-shared-ring-buffer/src/lib.rs b/crates/sel4-shared-ring-buffer/src/lib.rs index d377892c6..08e088032 100644 --- a/crates/sel4-shared-ring-buffer/src/lib.rs +++ b/crates/sel4-shared-ring-buffer/src/lib.rs @@ -10,7 +10,7 @@ use core::marker::PhantomData; use core::num::Wrapping; use core::sync::atomic::Ordering; -use zerocopy::{AsBytes, FromBytes}; +use zerocopy::{FromBytes, IntoBytes}; use sel4_externally_shared::{ map_field, ExternallySharedPtr, ExternallySharedPtrExt, ExternallySharedRef, @@ -219,7 +219,7 @@ impl<'a, R: RingBufferRole, T: Copy> RingBuffer<'a, R, T> { } } -impl<'a, T: Copy + FromBytes + AsBytes> RingBuffer<'a, Write, T> { +impl<'a, T: Copy + FromBytes + IntoBytes> RingBuffer<'a, Write, T> { pub fn enqueue_and_commit(&mut self, desc: T) -> Result, PeerMisbehaviorError> { self.enqueue(desc, true) } @@ -263,7 +263,7 @@ impl<'a, T: Copy + FromBytes + AsBytes> RingBuffer<'a, Write, T> { } } -impl<'a, T: Copy + FromBytes + AsBytes> RingBuffer<'a, Read, T> { +impl<'a, T: Copy + FromBytes + IntoBytes> RingBuffer<'a, Read, T> { pub fn dequeue(&mut self) -> Result, PeerMisbehaviorError> { if self.is_empty()? { return Ok(None); From 0bf6d8daff886ee7184c74d75b4130b4962ea1d7 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 18:55:49 -0700 Subject: [PATCH 14/21] Fixes after bumping rcgen Signed-off-by: Nick Spinale --- crates/examples/microkit/http-server/pds/server/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/examples/microkit/http-server/pds/server/build.rs b/crates/examples/microkit/http-server/pds/server/build.rs index 9e08bdff2..5f46d7c2d 100644 --- a/crates/examples/microkit/http-server/pds/server/build.rs +++ b/crates/examples/microkit/http-server/pds/server/build.rs @@ -15,7 +15,7 @@ fn main() { let cert = generate_simple_self_signed(subject_alt_names).unwrap(); let out_dir = env::var("OUT_DIR").unwrap(); let cert_path = PathBuf::from(&out_dir).join("cert.pem"); - fs::write(cert_path, cert.serialize_pem().unwrap()).unwrap(); + fs::write(cert_path, cert.cert.pem()).unwrap(); let priv_path = PathBuf::from(&out_dir).join("priv.pem"); - fs::write(priv_path, cert.serialize_private_key_pem()).unwrap(); + fs::write(priv_path, cert.key_pair.serialize_pem()).unwrap(); } From c4ea9a115772c5450e93901db7e974c2e214cc0d Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 20:28:49 -0700 Subject: [PATCH 15/21] Fixes after bumping rsa Signed-off-by: Nick Spinale --- .../banscii/pds/artist/src/cryptographic_secrets.rs | 2 +- crates/examples/microkit/banscii/pds/artist/src/main.rs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/examples/microkit/banscii/pds/artist/src/cryptographic_secrets.rs b/crates/examples/microkit/banscii/pds/artist/src/cryptographic_secrets.rs index 37cb0ba4e..26c629137 100644 --- a/crates/examples/microkit/banscii/pds/artist/src/cryptographic_secrets.rs +++ b/crates/examples/microkit/banscii/pds/artist/src/cryptographic_secrets.rs @@ -17,6 +17,6 @@ fn get_priv_key() -> RsaPrivateKey { } pub(crate) fn sign(data: &[u8]) -> Signature { - let signing_key = SigningKey::::new_with_prefix(get_priv_key()); + let signing_key = SigningKey::::new(get_priv_key()); signing_key.sign(data) } diff --git a/crates/examples/microkit/banscii/pds/artist/src/main.rs b/crates/examples/microkit/banscii/pds/artist/src/main.rs index b10079e14..e58c71e42 100644 --- a/crates/examples/microkit/banscii/pds/artist/src/main.rs +++ b/crates/examples/microkit/banscii/pds/artist/src/main.rs @@ -11,6 +11,8 @@ extern crate alloc; use alloc::vec; +use rsa::signature::SignatureEncoding; + use sel4_externally_shared::{ access::{ReadOnly, ReadWrite}, ExternallySharedRef, ExternallySharedRefExt, @@ -87,8 +89,7 @@ impl Handler for HandlerImpl { .index(masterpiece_start..masterpiece_end) .copy_from_slice(&masterpiece.pixel_data); - let signature = cryptographic_secrets::sign(&masterpiece.pixel_data); - let signature = signature.as_ref(); + let signature = cryptographic_secrets::sign(&masterpiece.pixel_data).to_bytes(); let signature_start = masterpiece_end; let signature_size = signature.len(); @@ -97,7 +98,7 @@ impl Handler for HandlerImpl { self.region_out .as_mut_ptr() .index(signature_start..signature_end) - .copy_from_slice(signature); + .copy_from_slice(&signature); MessageInfo::send_using_postcard(Response { height: masterpiece.height, From 4718fb59b130b36bf110e1d0db275b7de65ab56d Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 20:49:05 -0700 Subject: [PATCH 16/21] Update transitive dependencies Signed-off-by: Nick Spinale --- Cargo.lock | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3894d651b..83ec97623 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -240,7 +240,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -492,7 +492,7 @@ source = "git+https://github.com/coliasgroup/dafny.git?tag=keep/02d0a578fdf594a3 dependencies = [ "as-any", "hashbrown 0.14.5", - "itertools", + "itertools 0.11.0", "num", "once_cell", "paste", @@ -944,6 +944,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -977,9 +986,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00419de735aac21d53b0de5ce2c03bd3627277cf471300f27ebc89f7d828047" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "lock_api" @@ -1754,9 +1763,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" dependencies = [ "log", "once_cell", @@ -2827,18 +2836,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", From d58e3b7d0722f9627659373227a637977a0049ac Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 21:06:24 -0700 Subject: [PATCH 17/21] cmm: Clean up Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 24 ++- .../direct-dependency-allow-list.toml | 2 +- .../manifest-scope.nix | 7 +- .../cargo-manifest-management/tool/Cargo.lock | 1 + .../Cargo.toml | 5 +- .../src/main.rs | 173 ++++++++++-------- 6 files changed, 119 insertions(+), 93 deletions(-) diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index baf39334e..463ee1d64 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -6,14 +6,20 @@ blueprint := blueprint.json +tools_manifest_path_arg := --manifest-path=tool/Cargo.toml + run := cargo run \ - --manifest-path=tool/Cargo.toml -p manage-cargo-manifests -- + $(tools_manifest_path_arg) -p manage-cargo-manifests -- run_allow := cargo run \ - --manifest-path=tool/Cargo.toml -p manage-direct-dependency-allow-list -- + $(tools_manifest_path_arg) -p manage-direct-dependency-allow-list -- + +project_manifest_path_arg := --manifest-path=../../Cargo.toml -run_allow_check_workspace := $(run_allow) check-workspace \ - --manifest-path=../../Cargo.toml --allowlist direct-dependency-allow-list.toml +allowlist := direct-dependency-allow-list.toml + +run_allow_check_workspace := $(run_allow) check-workspace --allowlist $(allowlist) $(project_manifest_path_arg) +run_allow_update := $(run_allow) update --allowlist $(allowlist) -o $(allowlist) .PHONY: none none: @@ -40,6 +46,10 @@ check: $(blueprint) check-workspace-direct-dependencies: $(run_allow_check_workspace) -.PHONY: x -x: - $(run_allow) update --allowlist direct-dependency-allow-list.toml -o direct-dependency-allow-list.toml +.PHONY: update-workspace-direct-dependencies +update-workspace-direct-dependencies: + $(run_allow_update) + +.PHONY: dry-update-workspace-direct-dependencies +dry-update-workspace-direct-dependencies: + $(run_allow_update) --dry-run diff --git a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml index 56fb34fc1..e5fe1a88c 100644 --- a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml +++ b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml @@ -34,7 +34,7 @@ num = "0.4.1" num-traits = "0.2.16" num_enum = "0.7.3" object = "0.36.5" -pest = { version = "2.4.1", applies-to = ["pest", "pest_derive"] } +pest = { version = "2.4.1", applies-to = ["pest", "pest_derive"] } # for gimli dep of sel4-backtrace-addr2line-context-helper pin-project = "1.1.3" postcard = "1.0.2" prettyplease = "0.2.25" diff --git a/hacking/cargo-manifest-management/manifest-scope.nix b/hacking/cargo-manifest-management/manifest-scope.nix index a8307f087..197638a1d 100644 --- a/hacking/cargo-manifest-management/manifest-scope.nix +++ b/hacking/cargo-manifest-management/manifest-scope.nix @@ -89,11 +89,10 @@ in rec { versions = let - allow = (builtins.fromTOML (builtins.readFile ./direct-dependency-allow-list.toml)).allow; + table = builtins.fromTOML (builtins.readFile ./direct-dependency-allow-list.toml); + getVersion = v: if lib.isString v then v else v.version; in - lib.flip lib.mapAttrs allow (_: v: - if lib.isString v then v else v.version - ); + lib.mapAttrs (lib.const getVersion) table.allow; zerocopyWith = features: filterOutEmptyFeatureList { version = versions.zerocopy; diff --git a/hacking/cargo-manifest-management/tool/Cargo.lock b/hacking/cargo-manifest-management/tool/Cargo.lock index d596e488a..b932aa314 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.lock +++ b/hacking/cargo-manifest-management/tool/Cargo.lock @@ -496,6 +496,7 @@ dependencies = [ name = "manage-direct-dependency-allow-list" version = "0.1.0" dependencies = [ + "anyhow", "cargo_metadata", "clap", "serde_json", diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml index 789a993d2..2430a1477 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml @@ -14,8 +14,9 @@ license = "BSD-2-Clause" [dependencies] toml-normalize = { path = "../toml-normalize" } toml-path-regex = { path = "../toml-path-regex" } -clap = { version = "4.4.6", features = [ "derive" ] } +anyhow = "1.0.75" cargo_metadata = "0.18.1" +clap = { version = "4.4.6", features = [ "derive" ] } +serde_json = "1.0.132" toml = "0.8.19" ureq = "2.10.1" -serde_json = "1.0.132" diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs index cbb5ecd21..3c2e1e980 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs @@ -8,6 +8,7 @@ use std::collections::{HashMap, HashSet}; use std::fs; use std::path::PathBuf; +use anyhow::bail; use cargo_metadata::semver::{Version, VersionReq}; use cargo_metadata::{Metadata, MetadataCommand}; use clap::{Parser, Subcommand}; @@ -44,23 +45,25 @@ struct UpdateArgs { #[arg(short = 'o')] out: Option, + + #[arg(long)] + dry_run: bool, } -fn main() { +fn main() -> anyhow::Result<()> { match Cli::parse().command { Command::CheckWorkspace(args) => { - let allowlist = AllowList::new( - &fs::read_to_string(&args.allowlist) - .unwrap() - .parse::
() - .unwrap_or_else(|err| panic!("{err}")), - ); + let table = fs::read_to_string(&args.allowlist) + .unwrap() + .parse::
() + .unwrap_or_else(|err| panic!("{err}")); + let view = AllowListCheckWorkspaceView::new(&table); let metadata = MetadataCommand::new() .manifest_path(&args.manifest_path) .no_deps() .exec() .unwrap(); - allowlist.check(&metadata); + view.check(&metadata); } Command::Update(args) => { let mut table = fs::read_to_string(&args.allowlist) @@ -68,35 +71,41 @@ fn main() { .parse::
() .unwrap_or_else(|err| panic!("{err}")); let mut view = AllowListUpdateView::new(&mut table); - view.update(); - let formatter = Formatter::new(allowlist_policy()); - let table_str = formatter.format(&table).unwrap().to_string(); - match &args.out { - None => { - println!("{table_str}"); - } - Some(out) => { - fs::write(out, table_str).unwrap(); + let out_of_date = view.update(); + if out_of_date { + if args.dry_run { + bail!("out of date"); + } else { + let formatter = Formatter::new(allowlist_policy()); + let table_str = formatter.format(&table).unwrap().to_string(); + match &args.out { + None => { + println!("{table_str}"); + } + Some(path) => { + fs::write(path, table_str).unwrap(); + } + } } } } } + Ok(()) } #[derive(Debug, Clone, Default)] -struct AllowList { +struct AllowListCheckWorkspaceView { allow: HashMap>>, } -impl AllowList { +impl AllowListCheckWorkspaceView { fn new(table: &Table) -> Self { let mut this = Self::default(); for (source_key, v) in table["allow"].as_table().unwrap().iter() { match v { Value::String(req_str) => { - let package_name = source_key; let req = VersionReq::parse(req_str).unwrap(); - this.insert_version(package_name, req, source_key); + this.insert_version(source_key, req, source_key); } Value::Table(v) => { let req = VersionReq::parse(v["version"].as_str().unwrap()).unwrap(); @@ -162,77 +171,83 @@ struct AllowListUpdateViewEntry<'a> { req: VersionReq, req_slot: &'a mut String, applies_to: Vec, + allow_out_of_date: bool, } -impl<'a> AllowListUpdateViewEntry<'a> { - fn new(key: &String, value: &'a mut Value) -> Self { - match value { - Value::String(req_slot) => Self::new_helper(req_slot, vec![key.to_owned()]), - Value::Table(v) => { - let applies_to = v["applies-to"] - .as_array() - .unwrap() - .iter() - .map(|v| v.as_str().unwrap().to_owned()) - .collect(); - let req_slot = match &mut v["version"] { - Value::String(req_slot) => req_slot, - _ => panic!(), - }; - Self::new_helper(req_slot, applies_to) - } - _ => { - panic!(); - } +impl<'a> AllowListUpdateView<'a> { + fn new(table: &'a mut Table) -> Self { + let mut this = Self::default(); + for (key, value) in table["allow"].as_table_mut().unwrap().iter_mut() { + let entry = match value { + Value::String(req_slot) => { + let req = VersionReq::parse(req_slot).unwrap(); + AllowListUpdateViewEntry { + req, + req_slot, + applies_to: vec![key.to_owned()], + allow_out_of_date: false, + } + } + Value::Table(v) => { + let applies_to = v["applies-to"] + .as_array() + .unwrap() + .iter() + .map(|v| v.as_str().unwrap().to_owned()) + .collect(); + let allow_out_of_date = v + .get("allow_out_of_date") + .map(|v| v.as_bool().unwrap()) + .unwrap_or(false); + let req_slot = match &mut v["version"] { + Value::String(req_slot) => req_slot, + _ => panic!(), + }; + let req = VersionReq::parse(req_slot).unwrap(); + AllowListUpdateViewEntry { + req, + req_slot, + applies_to, + allow_out_of_date, + } + } + _ => { + panic!(); + } + }; + this.allow.insert(key.clone(), entry); } + this } - fn new_helper(req_slot: &'a mut String, applies_to: Vec) -> Self { - Self { - req: VersionReq::parse(req_slot).unwrap(), - req_slot, - applies_to, + fn update(&mut self) -> bool { + let mut out_of_date = false; + for (k, v) in self.allow.iter_mut() { + let max_stable_version = v.fetch_max_stable_version(); + if !v.req.matches(&max_stable_version) { + if !v.allow_out_of_date { + out_of_date = true; + eprintln!("{}: {} -> {}", k, v.req, max_stable_version); + *v.req_slot = max_stable_version.to_string(); + } + } } + out_of_date } +} +impl<'a> AllowListUpdateViewEntry<'a> { fn fetch_max_stable_version(&self) -> Version { let mut it = self .applies_to .iter() - .map(|crate_name| fetch_max_stable_version(crate_name)); - let v = it.next().unwrap(); - for v_ in it { - assert_eq!(v_, v); - } - v - } - - fn update(&mut self) { - let max_stable_version = self.fetch_max_stable_version(); - if !self.req.matches(&max_stable_version) { - eprintln!( - "{:?}: {} -> {}", - self.applies_to, self.req, max_stable_version - ); - *self.req_slot = max_stable_version.to_string(); - } - } -} - -impl<'a> AllowListUpdateView<'a> { - fn new(table: &'a mut Table) -> Self { - let mut this = Self::default(); - for (k, v) in table["allow"].as_table_mut().unwrap().iter_mut() { - this.allow - .insert(k.clone(), AllowListUpdateViewEntry::new(k, v)); - } - this - } - - fn update(&mut self) { - for (_k, v) in self.allow.iter_mut() { - v.update(); + .map(AsRef::as_ref) + .map(fetch_max_stable_version); + let v_first = it.next().unwrap(); + for v in it { + assert_eq!(v, v_first); } + v_first } } From ae5da5a5a15ab055a0d02547d1efff0d80c218fd Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 22:27:03 -0700 Subject: [PATCH 18/21] cmm: Improve mddal Signed-off-by: Nick Spinale --- .../cargo-manifest-management/tool/Cargo.lock | 4 +- .../Cargo.toml | 4 +- .../src/main.rs | 147 ++++++------------ 3 files changed, 50 insertions(+), 105 deletions(-) diff --git a/hacking/cargo-manifest-management/tool/Cargo.lock b/hacking/cargo-manifest-management/tool/Cargo.lock index b932aa314..c28048543 100644 --- a/hacking/cargo-manifest-management/tool/Cargo.lock +++ b/hacking/cargo-manifest-management/tool/Cargo.lock @@ -500,9 +500,7 @@ dependencies = [ "cargo_metadata", "clap", "serde_json", - "toml", - "toml-normalize", - "toml-path-regex", + "toml_edit 0.20.7", "ureq", ] diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml index 2430a1477..4c302dcb1 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/Cargo.toml @@ -12,11 +12,9 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -toml-normalize = { path = "../toml-normalize" } -toml-path-regex = { path = "../toml-path-regex" } anyhow = "1.0.75" cargo_metadata = "0.18.1" clap = { version = "4.4.6", features = [ "derive" ] } serde_json = "1.0.132" -toml = "0.8.19" +toml_edit = "0.20.4" ureq = "2.10.1" diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs index 3c2e1e980..8a37a1e08 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs @@ -12,10 +12,7 @@ use anyhow::bail; use cargo_metadata::semver::{Version, VersionReq}; use cargo_metadata::{Metadata, MetadataCommand}; use clap::{Parser, Subcommand}; -use toml::{Table, Value}; - -use toml_normalize::{Formatter, KeyOrdering, Policy, TableRule}; -use toml_path_regex::PathRegex; +use toml_edit::{Document, Formatted, Item, Table, Value}; #[derive(Debug, Parser)] struct Cli { @@ -53,11 +50,11 @@ struct UpdateArgs { fn main() -> anyhow::Result<()> { match Cli::parse().command { Command::CheckWorkspace(args) => { - let table = fs::read_to_string(&args.allowlist) + let doc = fs::read_to_string(&args.allowlist) .unwrap() - .parse::
() + .parse::() .unwrap_or_else(|err| panic!("{err}")); - let view = AllowListCheckWorkspaceView::new(&table); + let view = AllowListCheckWorkspaceView::new(&doc); let metadata = MetadataCommand::new() .manifest_path(&args.manifest_path) .no_deps() @@ -66,24 +63,23 @@ fn main() -> anyhow::Result<()> { view.check(&metadata); } Command::Update(args) => { - let mut table = fs::read_to_string(&args.allowlist) + let mut doc = fs::read_to_string(&args.allowlist) .unwrap() - .parse::
() + .parse::() .unwrap_or_else(|err| panic!("{err}")); - let mut view = AllowListUpdateView::new(&mut table); + let mut view = AllowListUpdateView::new(&mut doc); let out_of_date = view.update(); if out_of_date { if args.dry_run { bail!("out of date"); } else { - let formatter = Formatter::new(allowlist_policy()); - let table_str = formatter.format(&table).unwrap().to_string(); + let doc_str = doc.to_string(); match &args.out { None => { - println!("{table_str}"); + println!("{doc_str}"); } Some(path) => { - fs::write(path, table_str).unwrap(); + fs::write(path, doc_str).unwrap(); } } } @@ -103,11 +99,11 @@ impl AllowListCheckWorkspaceView { let mut this = Self::default(); for (source_key, v) in table["allow"].as_table().unwrap().iter() { match v { - Value::String(req_str) => { - let req = VersionReq::parse(req_str).unwrap(); + Item::Value(Value::String(req_str)) => { + let req = VersionReq::parse(req_str.value()).unwrap(); this.insert_version(source_key, req, source_key); } - Value::Table(v) => { + Item::Table(v) => { let req = VersionReq::parse(v["version"].as_str().unwrap()).unwrap(); for package_name in v["applies-to"] .as_array() @@ -169,7 +165,7 @@ struct AllowListUpdateView<'a> { #[derive(Debug)] struct AllowListUpdateViewEntry<'a> { req: VersionReq, - req_slot: &'a mut String, + req_slot: &'a mut Formatted, applies_to: Vec, allow_out_of_date: bool, } @@ -178,44 +174,42 @@ impl<'a> AllowListUpdateView<'a> { fn new(table: &'a mut Table) -> Self { let mut this = Self::default(); for (key, value) in table["allow"].as_table_mut().unwrap().iter_mut() { - let entry = match value { - Value::String(req_slot) => { - let req = VersionReq::parse(req_slot).unwrap(); - AllowListUpdateViewEntry { - req, - req_slot, - applies_to: vec![key.to_owned()], - allow_out_of_date: false, - } - } - Value::Table(v) => { - let applies_to = v["applies-to"] - .as_array() - .unwrap() - .iter() - .map(|v| v.as_str().unwrap().to_owned()) - .collect(); - let allow_out_of_date = v - .get("allow_out_of_date") - .map(|v| v.as_bool().unwrap()) - .unwrap_or(false); - let req_slot = match &mut v["version"] { - Value::String(req_slot) => req_slot, - _ => panic!(), - }; - let req = VersionReq::parse(req_slot).unwrap(); - AllowListUpdateViewEntry { - req, - req_slot, - applies_to, - allow_out_of_date, - } + let entry = if let Item::Value(Value::String(req_slot)) = value { + let req = VersionReq::parse(req_slot.value()).unwrap(); + AllowListUpdateViewEntry { + req, + req_slot, + applies_to: vec![key.to_owned()], + allow_out_of_date: false, } - _ => { - panic!(); + } else if let Some(v) = value.as_table_like_mut() { + let applies_to = v + .get("applies-to") + .unwrap() + .as_array() + .unwrap() + .iter() + .map(|v| v.as_str().unwrap().to_owned()) + .collect(); + let allow_out_of_date = v + .get("allow_out_of_date") + .map(|v| v.as_bool().unwrap()) + .unwrap_or(false); + let req_slot = match v.get_mut("version").unwrap() { + Item::Value(Value::String(req_slot)) => req_slot, + _ => panic!(), + }; + let req = VersionReq::parse(req_slot.value()).unwrap(); + AllowListUpdateViewEntry { + req, + req_slot, + applies_to, + allow_out_of_date, } + } else { + panic!() }; - this.allow.insert(key.clone(), entry); + this.allow.insert(key.get().to_owned(), entry); } this } @@ -228,7 +222,7 @@ impl<'a> AllowListUpdateView<'a> { if !v.allow_out_of_date { out_of_date = true; eprintln!("{}: {} -> {}", k, v.req, max_stable_version); - *v.req_slot = max_stable_version.to_string(); + *v.req_slot = Formatted::new(max_stable_version.to_string()); } } } @@ -263,48 +257,3 @@ fn fetch_max_stable_version(crate_name: &str) -> Version { .unwrap(); Version::parse(ver).unwrap() } - -pub fn allowlist_policy() -> Policy { - Policy { - max_width: Some(usize::MAX), - table_rules: vec![ - TableRule { - path_regex: PathRegex::new( - r#" - .* - "#, - ) - .unwrap(), - ..Default::default() - }, - TableRule { - path_regex: PathRegex::new( - r#" - ['allow'] - "#, - ) - .unwrap(), - never_inline: Some(true), - ..Default::default() - }, - TableRule { - path_regex: PathRegex::new( - r#" - ['allow'] . - "#, - ) - .unwrap(), - key_ordering: KeyOrdering { - front: vec![ - "version".to_owned(), - "applies-to".to_owned(), - "old".to_owned(), - ], - ..Default::default() - }, - ..Default::default() - }, - ], - ..Default::default() - } -} From e40d2c289345efaec6181bcdfa44886b99e601fd Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 22:36:15 -0700 Subject: [PATCH 19/21] cmm: Clean up Signed-off-by: Nick Spinale --- hacking/cargo-manifest-management/Makefile | 22 +++++----- .../src/main.rs | 40 +++++++++---------- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/hacking/cargo-manifest-management/Makefile b/hacking/cargo-manifest-management/Makefile index 463ee1d64..316b55cb4 100644 --- a/hacking/cargo-manifest-management/Makefile +++ b/hacking/cargo-manifest-management/Makefile @@ -11,15 +11,15 @@ tools_manifest_path_arg := --manifest-path=tool/Cargo.toml run := cargo run \ $(tools_manifest_path_arg) -p manage-cargo-manifests -- -run_allow := cargo run \ +run_allowlist := cargo run \ $(tools_manifest_path_arg) -p manage-direct-dependency-allow-list -- project_manifest_path_arg := --manifest-path=../../Cargo.toml allowlist := direct-dependency-allow-list.toml -run_allow_check_workspace := $(run_allow) check-workspace --allowlist $(allowlist) $(project_manifest_path_arg) -run_allow_update := $(run_allow) update --allowlist $(allowlist) -o $(allowlist) +run_allowlist_check_workspace := $(run_allowlist) check-workspace --allowlist $(allowlist) $(project_manifest_path_arg) +run_allowlist_update := $(run_allowlist) update --allowlist $(allowlist) -o $(allowlist) .PHONY: none none: @@ -35,21 +35,19 @@ $(blueprint): .PHONY: update update: $(blueprint) $(run) --blueprint $< - $(run_allow_check_workspace) .PHONY: check check: $(blueprint) $(run) --blueprint $< --just-check - $(run_allow_check_workspace) .PHONY: check-workspace-direct-dependencies check-workspace-direct-dependencies: - $(run_allow_check_workspace) + $(run_allowlist_check_workspace) -.PHONY: update-workspace-direct-dependencies -update-workspace-direct-dependencies: - $(run_allow_update) +.PHONY: update-direct-dependency-allowlist +update-direct-dependency-allowlist: + $(run_allowlist_update) -.PHONY: dry-update-workspace-direct-dependencies -dry-update-workspace-direct-dependencies: - $(run_allow_update) --dry-run +.PHONY: check-direct-dependency-allow-list +check-direct-dependency-allow-list: + $(run_allowlist_update) --check diff --git a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs index 8a37a1e08..a0fd90037 100644 --- a/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs +++ b/hacking/cargo-manifest-management/tool/crates/manage-direct-dependency-allow-list/src/main.rs @@ -43,8 +43,8 @@ struct UpdateArgs { #[arg(short = 'o')] out: Option, - #[arg(long)] - dry_run: bool, + #[arg(long = "check")] + just_check: bool, } fn main() -> anyhow::Result<()> { @@ -70,7 +70,7 @@ fn main() -> anyhow::Result<()> { let mut view = AllowListUpdateView::new(&mut doc); let out_of_date = view.update(); if out_of_date { - if args.dry_run { + if args.just_check { bail!("out of date"); } else { let doc_str = doc.to_string(); @@ -98,25 +98,23 @@ impl AllowListCheckWorkspaceView { fn new(table: &Table) -> Self { let mut this = Self::default(); for (source_key, v) in table["allow"].as_table().unwrap().iter() { - match v { - Item::Value(Value::String(req_str)) => { - let req = VersionReq::parse(req_str.value()).unwrap(); - this.insert_version(source_key, req, source_key); - } - Item::Table(v) => { - let req = VersionReq::parse(v["version"].as_str().unwrap()).unwrap(); - for package_name in v["applies-to"] - .as_array() - .unwrap() - .iter() - .map(|v| v.as_str().unwrap()) - { - this.insert_version(package_name, req.clone(), source_key); - } - } - _ => { - panic!(); + if let Item::Value(Value::String(req_str)) = v { + let req = VersionReq::parse(req_str.value()).unwrap(); + this.insert_version(source_key, req, source_key); + } else if let Some(v) = v.as_table_like() { + let req = VersionReq::parse(v.get("version").unwrap().as_str().unwrap()).unwrap(); + for package_name in v + .get("applies-to") + .unwrap() + .as_array() + .unwrap() + .iter() + .map(|v| v.as_str().unwrap()) + { + this.insert_version(package_name, req.clone(), source_key); } + } else { + panic!() } } this From 81dc6f978c081db0ba0f44970df699cda94d6110 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 23:02:41 -0700 Subject: [PATCH 20/21] trivial: Fix style Signed-off-by: Nick Spinale --- .../sel4-simple-task/runtime/config/types/src/lib.rs | 6 +++--- .../runtime/config/types/src/zerocopy_helpers.rs | 6 +++--- crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs | 2 +- crates/sel4-shared-ring-buffer/src/descriptor.rs | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs b/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs index a7a6ac792..1cacb6584 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs +++ b/crates/private/support/sel4-simple-task/runtime/config/types/src/lib.rs @@ -31,7 +31,7 @@ pub type Address = NativeWord; pub type CPtrBits = NativeWord; #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable, KnownLayout)] struct Head { static_heap: ZerocopyOptionWordRange, static_heap_mutex_notification: ZerocopyOptionWord, @@ -42,7 +42,7 @@ struct Head { } #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable)] struct Thread { ipc_buffer_addr: ZerocopyWord, endpoint: ZerocopyOptionWord, @@ -102,7 +102,7 @@ impl<'a> RuntimeConfig<'a> { } #[repr(transparent)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable)] pub struct RuntimeThreadConfig { inner: Thread, } diff --git a/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs b/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs index 1ae27e6fc..484946750 100644 --- a/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs +++ b/crates/private/support/sel4-simple-task/runtime/config/types/src/zerocopy_helpers.rs @@ -47,7 +47,7 @@ impl fmt::Display for InvalidZerocopyOptionTagOr { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable, KnownLayout)] pub struct ZerocopyWordRange { start: ZerocopyWord, end: ZerocopyWord, @@ -93,7 +93,7 @@ impl + Copy> TryFrom<&Range> for ZerocopyWordRange { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable, KnownLayout)] pub struct ZerocopyOptionWord { is_present: u8, value: ZerocopyWord, @@ -156,7 +156,7 @@ impl TryFrom<&ZerocopyOptionWord> for Option { // #[repr(C)] -#[derive(Debug, Clone, PartialEq, Eq, IntoBytes, FromBytes, Immutable, KnownLayout)] +#[derive(Debug, Clone, PartialEq, Eq, FromBytes, IntoBytes, Immutable, KnownLayout)] pub struct ZerocopyOptionWordRange { is_present: u8, value: ZerocopyWordRange, diff --git a/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs b/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs index aca4df6e4..654f83d56 100644 --- a/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs +++ b/crates/sel4-shared-ring-buffer/block-io/types/src/lib.rs @@ -11,7 +11,7 @@ use zerocopy::{FromBytes, Immutable, IntoBytes}; use sel4_shared_ring_buffer::Descriptor; -#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] +#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, FromBytes, IntoBytes, Immutable)] #[repr(C)] pub struct BlockIORequest { status: i32, diff --git a/crates/sel4-shared-ring-buffer/src/descriptor.rs b/crates/sel4-shared-ring-buffer/src/descriptor.rs index 82e40a63c..eccad42e3 100644 --- a/crates/sel4-shared-ring-buffer/src/descriptor.rs +++ b/crates/sel4-shared-ring-buffer/src/descriptor.rs @@ -9,7 +9,7 @@ use core::ops::Range; use zerocopy::{FromBytes, Immutable, IntoBytes}; #[repr(C)] -#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, IntoBytes, FromBytes, Immutable)] +#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, FromBytes, IntoBytes, Immutable)] pub struct Descriptor { encoded_addr: usize, len: u32, From 90948d74a6f2f46e1e9beb4345ba33d0bc350b5e Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Mon, 28 Oct 2024 23:09:16 -0700 Subject: [PATCH 21/21] cmm: Add missing copyright header Signed-off-by: Nick Spinale --- .../direct-dependency-allow-list.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml index e5fe1a88c..9d03d2d35 100644 --- a/hacking/cargo-manifest-management/direct-dependency-allow-list.toml +++ b/hacking/cargo-manifest-management/direct-dependency-allow-list.toml @@ -1,3 +1,9 @@ +# +# Copyright 2024, Colias Group, LLC +# +# SPDX-License-Identifier: BSD-2-Clause +# + [allow] aarch64-cpu = "10.0.0" ab_glyph = "0.2.22"