* [PATCH v2 0/2] Add crosvm recipe to meta-virtualization
@ 2026-06-13 6:07 Keerthivasan Raghavan
2026-06-13 6:07 ` [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) Keerthivasan Raghavan
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-13 6:07 UTC (permalink / raw)
To: vkraleti, anujmitt, sbanerje, bruce.ashfield, meta-virtualization
Cc: Keerthivasan Raghavan
This patch series introduces support for crosvm, the ChromeOS Virtual
Machine Monitor, into the meta-virtualization layer. The goal is to
provide a modern, security-oriented alternative to QEMU for
virtualization workloads.
QEMU continues to be the industry-standard VMM, offering extensive device
models, multi-architecture emulation, and a highly flexible subsystem
architecture. However, QEMU's strength and breadth contributes to a
large and complex monolithic codebase. As documented in QEMU's own
security guidance, the system architecture places numerous components
within a single process. This increases the trusted computing base and
expands the range of possible exploit surfaces. Maintaining device models
and legacy emulation paths further adds to complexity and potential
vulnerability exposure.
crosvm approaches virtualization from a different perspective. Its design
principles center on minimalism, isolation, and security. Instead of
supporting full-system emulation, crosvm relies exclusively on KVM for
hardware-assisted virtualization. It is implemented in Rust, enabling
strong memory safety guarantees and eliminating many classes of bugs that
commonly arise in large C codebases.
A key architectural distinction is crosvm's process separation model.
Each device backend is offloaded into its own tightly sandboxed process
using seccomp filters and Linux namespaces. This “process-per-device”
layout shrinks the trusted computing base and prevents a compromise in one
device model from affecting the rest of the system. These isolation
boundaries align closely with secure-by-design principles and provide a
more predictable attack surface.
For embedded, edge, and containerized environments—where minimalism,
stability, and strict isolation are essential—crosvm offers a compelling
VMM alternative. By integrating crosvm into meta-virtualization, we allow
Yocto users to choose between a feature-rich, broad-emulation platform
(QEMU) and a streamlined, security-hardened VMM (crosvm) best suited for
KVM-first workloads.
Patches follow.
Keerthivasan Raghavan (2):
crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
crosvm-image-minimal: add a reference image for crosvm demo
recipes-extended/crosvm/crosvm-crates.inc | 966 ++++++++++++++++++
recipes-extended/crosvm/crosvm_0.1.0.bb | 62 ++
recipes-extended/images/README-crosvm.md | 68 ++
.../images/crosvm-image-minimal.bb | 82 ++
4 files changed, 1178 insertions(+)
create mode 100644 recipes-extended/crosvm/crosvm-crates.inc
create mode 100644 recipes-extended/crosvm/crosvm_0.1.0.bb
create mode 100644 recipes-extended/images/README-crosvm.md
create mode 100644 recipes-extended/images/crosvm-image-minimal.bb
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
2026-06-13 6:07 [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Keerthivasan Raghavan
@ 2026-06-13 6:07 ` Keerthivasan Raghavan
2026-06-20 3:42 ` Bruce Ashfield
2026-06-13 6:07 ` [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo Keerthivasan Raghavan
2026-06-20 3:42 ` [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Bruce Ashfield
2 siblings, 1 reply; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-13 6:07 UTC (permalink / raw)
To: vkraleti, anujmitt, sbanerje, bruce.ashfield, meta-virtualization
Cc: Keerthivasan Raghavan
crosvm is a lightweight, Rust-based virtual
machine monitor originally developed for ChromeOS,
and provides an alternative to traditional VMMs such
as QEMU.
Signed-off-by: Keerthivasan Raghavan <kraghava@qti.qualcomm.com>
---
recipes-extended/crosvm/crosvm-crates.inc | 966 ++++++++++++++++++++++
recipes-extended/crosvm/crosvm_0.1.0.bb | 62 ++
2 files changed, 1028 insertions(+)
create mode 100644 recipes-extended/crosvm/crosvm-crates.inc
create mode 100644 recipes-extended/crosvm/crosvm_0.1.0.bb
diff --git a/recipes-extended/crosvm/crosvm-crates.inc b/recipes-extended/crosvm/crosvm-crates.inc
new file mode 100644
index 00000000..5cc3fa9e
--- /dev/null
+++ b/recipes-extended/crosvm/crosvm-crates.inc
@@ -0,0 +1,966 @@
+# Autogenerated with 'bitbake -c update_crates crosvm'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/addr2line/0.21.0 \
+ crate://crates.io/adler/1.0.2 \
+ crate://crates.io/ahash/0.8.6 \
+ crate://crates.io/aho-corasick/0.7.18 \
+ crate://crates.io/android_log-sys/0.3.1 \
+ crate://crates.io/anyhow/1.0.58 \
+ crate://crates.io/arbitrary/1.1.6 \
+ crate://crates.io/argh/0.1.10 \
+ crate://crates.io/argh_derive/0.1.10 \
+ crate://crates.io/argh_shared/0.1.10 \
+ crate://crates.io/ash/0.37.3+1.3.251 \
+ crate://crates.io/async-task/4.3.0 \
+ crate://crates.io/async-trait/0.1.85 \
+ crate://crates.io/atty/0.2.14 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/backtrace/0.3.69 \
+ crate://crates.io/bindgen/0.63.0 \
+ crate://crates.io/bindgen/0.68.1 \
+ crate://crates.io/bindgen/0.70.1 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.4.0 \
+ crate://crates.io/bitreader/0.3.6 \
+ crate://crates.io/bytemuck/1.14.0 \
+ crate://crates.io/bytemuck_derive/1.5.0 \
+ crate://crates.io/byteorder/1.4.3 \
+ crate://crates.io/bytes/1.2.0 \
+ crate://crates.io/cbindgen/0.24.3 \
+ crate://crates.io/cc/1.0.90 \
+ crate://crates.io/cexpr/0.6.0 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/cfg_aliases/0.1.1 \
+ crate://crates.io/chrono/0.4.35 \
+ crate://crates.io/ciborium/0.2.2 \
+ crate://crates.io/ciborium-io/0.2.2 \
+ crate://crates.io/ciborium-ll/0.2.2 \
+ crate://crates.io/clang-sys/1.4.0 \
+ crate://crates.io/clap/3.2.23 \
+ crate://crates.io/clap/4.1.8 \
+ crate://crates.io/clap_derive/4.1.8 \
+ crate://crates.io/clap_lex/0.2.4 \
+ crate://crates.io/clap_lex/0.3.2 \
+ crate://crates.io/core-foundation/0.9.4 \
+ crate://crates.io/core-foundation-sys/0.8.6 \
+ crate://crates.io/core-graphics-types/0.1.3 \
+ crate://crates.io/crc32fast/1.3.2 \
+ crate://crates.io/cros-codecs/0.0.4 \
+ crate://crates.io/cros-libva/0.0.4 \
+ crate://crates.io/crossbeam-channel/0.5.8 \
+ crate://crates.io/crossbeam-deque/0.8.3 \
+ crate://crates.io/crossbeam-epoch/0.9.14 \
+ crate://crates.io/crossbeam-queue/0.3.11 \
+ crate://crates.io/crossbeam-utils/0.8.19 \
+ crate://crates.io/crunchy/0.2.2 \
+ crate://crates.io/ctrlc/3.2.5 \
+ crate://crates.io/dbus/0.9.7 \
+ crate://crates.io/derive-into-owned/0.1.0 \
+ crate://crates.io/document-features/0.2.6 \
+ crate://crates.io/downcast-rs/1.2.1 \
+ crate://crates.io/either/1.7.0 \
+ crate://crates.io/enumn/0.1.13 \
+ crate://crates.io/env_logger/0.9.0 \
+ crate://crates.io/equivalent/1.0.1 \
+ crate://crates.io/errno/0.2.8 \
+ crate://crates.io/errno/0.3.12 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/euclid/0.22.7 \
+ crate://crates.io/fastrand/1.8.0 \
+ crate://crates.io/fnv/1.0.7 \
+ crate://crates.io/foreign-types/0.3.2 \
+ crate://crates.io/foreign-types-shared/0.1.1 \
+ crate://crates.io/form_urlencoded/1.1.0 \
+ crate://crates.io/futures/0.3.21 \
+ crate://crates.io/futures-channel/0.3.21 \
+ crate://crates.io/futures-core/0.3.21 \
+ crate://crates.io/futures-executor/0.3.21 \
+ crate://crates.io/futures-io/0.3.21 \
+ crate://crates.io/futures-macro/0.3.21 \
+ crate://crates.io/futures-sink/0.3.21 \
+ crate://crates.io/futures-task/0.3.21 \
+ crate://crates.io/futures-util/0.3.21 \
+ crate://crates.io/gdbstub/0.7.0 \
+ crate://crates.io/gdbstub_arch/0.3.0 \
+ crate://crates.io/getrandom/0.2.7 \
+ crate://crates.io/gimli/0.28.1 \
+ crate://crates.io/glob/0.3.0 \
+ crate://crates.io/half/2.4.1 \
+ crate://crates.io/hashbrown/0.12.3 \
+ crate://crates.io/hashbrown/0.15.0 \
+ crate://crates.io/heck/0.4.0 \
+ crate://crates.io/hermit-abi/0.1.19 \
+ crate://crates.io/hermit-abi/0.3.1 \
+ crate://crates.io/idna/0.3.0 \
+ crate://crates.io/indexmap/1.9.1 \
+ crate://crates.io/indexmap/2.6.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/intrusive-collections/0.9.6 \
+ crate://crates.io/io-lifetimes/1.0.5 \
+ crate://crates.io/is-terminal/0.4.4 \
+ crate://crates.io/itertools/0.12.1 \
+ crate://crates.io/itoa/1.0.2 \
+ crate://crates.io/jobserver/0.1.24 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/lazycell/1.3.0 \
+ crate://crates.io/libc/0.2.174 \
+ crate://crates.io/libdbus-sys/0.2.5 \
+ crate://crates.io/libfuzzer-sys/0.4.4 \
+ crate://crates.io/libloading/0.7.3 \
+ crate://crates.io/libslirp-sys/4.2.1 \
+ crate://crates.io/libtest-mimic/0.6.0 \
+ crate://crates.io/linux-raw-sys/0.1.4 \
+ crate://crates.io/linux-raw-sys/0.9.4 \
+ crate://crates.io/litrs/0.2.3 \
+ crate://crates.io/lock_api/0.4.9 \
+ crate://crates.io/log/0.4.21 \
+ crate://crates.io/lz4_flex/0.11.1 \
+ crate://crates.io/malloc_buf/0.0.6 \
+ crate://crates.io/managed/0.8.0 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/memoffset/0.8.0 \
+ crate://crates.io/memoffset/0.9.0 \
+ crate://crates.io/mesa3d_util/0.1.75 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/miniz_oxide/0.7.2 \
+ crate://crates.io/mio/0.8.11 \
+ crate://crates.io/named-lock/0.3.0 \
+ crate://crates.io/nix/0.26.2 \
+ crate://crates.io/nix/0.27.1 \
+ crate://crates.io/nix/0.28.0 \
+ crate://crates.io/nom/7.1.1 \
+ crate://crates.io/num-traits/0.2.15 \
+ crate://crates.io/num_cpus/1.13.1 \
+ crate://crates.io/objc/0.2.7 \
+ crate://crates.io/object/0.32.2 \
+ crate://crates.io/once_cell/1.17.0 \
+ crate://crates.io/openssl/0.10.51 \
+ crate://crates.io/openssl-macros/0.1.0 \
+ crate://crates.io/openssl-sys/0.9.86 \
+ crate://crates.io/os_str_bytes/6.4.1 \
+ crate://crates.io/p9/0.3.2 \
+ crate://crates.io/p9_wire_format_derive/0.3.0 \
+ crate://crates.io/parking_lot/0.12.1 \
+ crate://crates.io/parking_lot_core/0.9.6 \
+ crate://crates.io/paste/1.0.7 \
+ crate://crates.io/pcap-file/1.1.1 \
+ crate://crates.io/peeking_take_while/0.1.2 \
+ crate://crates.io/percent-encoding/2.2.0 \
+ crate://crates.io/pin-project-lite/0.2.13 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/pkg-config/0.3.31 \
+ crate://crates.io/ppv-lite86/0.2.16 \
+ crate://crates.io/prettyplease/0.2.22 \
+ crate://crates.io/proc-macro-crate/1.3.1 \
+ crate://crates.io/proc-macro-error/1.0.4 \
+ crate://crates.io/proc-macro-error-attr/1.0.4 \
+ crate://crates.io/proc-macro2/1.0.85 \
+ crate://crates.io/protobuf/3.7.2 \
+ crate://crates.io/protobuf-codegen/3.7.2 \
+ crate://crates.io/protobuf-parse/3.7.2 \
+ crate://crates.io/protobuf-support/3.7.2 \
+ crate://crates.io/quote/0.3.15 \
+ crate://crates.io/quote/1.0.36 \
+ crate://crates.io/rand/0.8.5 \
+ crate://crates.io/rand_chacha/0.3.1 \
+ crate://crates.io/rand_core/0.6.3 \
+ crate://crates.io/rayon/1.7.0 \
+ crate://crates.io/rayon-core/1.11.0 \
+ crate://crates.io/redox_syscall/0.2.15 \
+ crate://crates.io/regex/1.6.0 \
+ crate://crates.io/regex-syntax/0.6.27 \
+ crate://crates.io/remain/0.2.6 \
+ crate://crates.io/remove_dir_all/0.5.3 \
+ crate://crates.io/rustc-demangle/0.1.23 \
+ crate://crates.io/rustc-hash/1.1.0 \
+ crate://crates.io/rustix/0.36.8 \
+ crate://crates.io/rustix/1.0.7 \
+ crate://crates.io/rutabaga_gfx/0.1.76-chromeos \
+ crate://crates.io/ryu/1.0.10 \
+ crate://crates.io/same-file/1.0.6 \
+ crate://crates.io/scopeguard/1.1.0 \
+ crate://crates.io/scudo/0.1.3 \
+ crate://crates.io/scudo-proc-macros/0.1.0 \
+ crate://crates.io/scudo-sys/0.2.2 \
+ crate://crates.io/serde/1.0.140 \
+ crate://crates.io/serde_derive/1.0.140 \
+ crate://crates.io/serde_json/1.0.82 \
+ crate://crates.io/shlex/1.3.0 \
+ crate://crates.io/slab/0.4.7 \
+ crate://crates.io/smallvec/1.9.0 \
+ crate://crates.io/socket2/0.4.10 \
+ crate://crates.io/static_assertions/1.1.0 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/0.11.11 \
+ crate://crates.io/syn/1.0.103 \
+ crate://crates.io/syn/2.0.77 \
+ crate://crates.io/synom/0.11.3 \
+ crate://crates.io/tempfile/3.3.0 \
+ crate://crates.io/termcolor/1.1.3 \
+ crate://crates.io/textwrap/0.16.0 \
+ crate://crates.io/thiserror/1.0.38 \
+ crate://crates.io/thiserror-impl/1.0.38 \
+ crate://crates.io/thread_local/1.1.8 \
+ crate://crates.io/threadpool/1.8.1 \
+ crate://crates.io/tinyvec/1.6.0 \
+ crate://crates.io/tinyvec_macros/0.1.0 \
+ crate://crates.io/tokio/1.29.1 \
+ crate://crates.io/tokio-macros/2.1.0 \
+ crate://crates.io/toml/0.5.9 \
+ crate://crates.io/toml_datetime/0.6.8 \
+ crate://crates.io/toml_edit/0.19.15 \
+ crate://crates.io/twox-hash/1.6.3 \
+ crate://crates.io/unicode-bidi/0.3.8 \
+ crate://crates.io/unicode-ident/1.0.2 \
+ crate://crates.io/unicode-normalization/0.1.22 \
+ crate://crates.io/unicode-xid/0.0.4 \
+ crate://crates.io/url/2.3.1 \
+ crate://crates.io/userfaultfd/0.8.1 \
+ crate://crates.io/userfaultfd-sys/0.5.0 \
+ crate://crates.io/uuid/1.8.0 \
+ crate://crates.io/v4l2r/0.0.6 \
+ crate://crates.io/vcpkg/0.2.15 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/virtio-media/0.0.7 \
+ crate://crates.io/vk-parse/0.8.0 \
+ crate://crates.io/vulkano/0.31.1 \
+ crate://crates.io/vulkano/0.33.0 \
+ crate://crates.io/vulkano-macros/0.33.0 \
+ crate://crates.io/walkdir/2.5.0 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/which/4.2.5 \
+ crate://crates.io/widestring/1.0.2 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows/0.61.1 \
+ crate://crates.io/windows-collections/0.2.0 \
+ crate://crates.io/windows-core/0.61.2 \
+ crate://crates.io/windows-future/0.2.1 \
+ crate://crates.io/windows-implement/0.60.0 \
+ crate://crates.io/windows-interface/0.59.1 \
+ crate://crates.io/windows-link/0.1.1 \
+ crate://crates.io/windows-numerics/0.2.0 \
+ crate://crates.io/windows-result/0.3.4 \
+ crate://crates.io/windows-strings/0.4.2 \
+ crate://crates.io/windows-sys/0.42.0 \
+ crate://crates.io/windows-sys/0.45.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-sys/0.59.0 \
+ crate://crates.io/windows-targets/0.42.1 \
+ crate://crates.io/windows-targets/0.48.5 \
+ crate://crates.io/windows-targets/0.52.6 \
+ crate://crates.io/windows-threading/0.1.0 \
+ crate://crates.io/windows_aarch64_gnullvm/0.42.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
+ crate://crates.io/windows_aarch64_msvc/0.42.1 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.52.6 \
+ crate://crates.io/windows_i686_gnu/0.42.1 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.52.6 \
+ crate://crates.io/windows_i686_gnullvm/0.52.6 \
+ crate://crates.io/windows_i686_msvc/0.42.1 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.52.6 \
+ crate://crates.io/windows_x86_64_gnu/0.42.1 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.52.6 \
+ crate://crates.io/windows_x86_64_gnullvm/0.42.1 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
+ crate://crates.io/windows_x86_64_msvc/0.42.1 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.52.6 \
+ crate://crates.io/winnow/0.5.40 \
+ crate://crates.io/wio/0.2.2 \
+ crate://crates.io/xml-rs/0.8.19 \
+ crate://crates.io/zerocopy/0.7.32 \
+ crate://crates.io/zerocopy/0.8.14 \
+ crate://crates.io/zerocopy-derive/0.7.32 \
+ crate://crates.io/zerocopy-derive/0.8.14 \
+ crate://crates.io/zeroize/1.5.7 \
+ crate://crates.io/zstd/0.13.2 \
+ crate://crates.io/zstd-safe/7.2.1 \
+ crate://crates.io/zstd-sys/2.0.13+zstd.1.5.6 \
+"
+
+SRC_URI[addr2line-0.21.0.sha256sum] = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[ahash-0.8.6.sha256sum] = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
+SRC_URI[aho-corasick-0.7.18.sha256sum] = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+SRC_URI[android_log-sys-0.3.1.sha256sum] = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"
+SRC_URI[anyhow-1.0.58.sha256sum] = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
+SRC_URI[arbitrary-1.1.6.sha256sum] = "f44124848854b941eafdb34f05b3bcf59472f643c7e151eba7c2b69daa469ed5"
+SRC_URI[argh-0.1.10.sha256sum] = "ab257697eb9496bf75526f0217b5ed64636a9cfafa78b8365c71bd283fcef93e"
+SRC_URI[argh_derive-0.1.10.sha256sum] = "b382dbd3288e053331f03399e1db106c9fb0d8562ad62cb04859ae926f324fa6"
+SRC_URI[argh_shared-0.1.10.sha256sum] = "64cb94155d965e3d37ffbbe7cc5b82c3dd79dd33bd48e536f73d2cfb8d85506f"
+SRC_URI[ash-0.37.3+1.3.251.sha256sum] = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a"
+SRC_URI[async-task-4.3.0.sha256sum] = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"
+SRC_URI[async-trait-0.1.85.sha256sum] = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[backtrace-0.3.69.sha256sum] = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
+SRC_URI[bindgen-0.68.1.sha256sum] = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078"
+SRC_URI[bindgen-0.70.1.sha256sum] = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.4.0.sha256sum] = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+SRC_URI[bitreader-0.3.6.sha256sum] = "d84ea71c85d1fe98fe67a9b9988b1695bc24c0b0d3bfb18d4c510f44b4b09941"
+SRC_URI[bytemuck-1.14.0.sha256sum] = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+SRC_URI[bytemuck_derive-1.5.0.sha256sum] = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[bytes-1.2.0.sha256sum] = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e"
+SRC_URI[cbindgen-0.24.3.sha256sum] = "a6358dedf60f4d9b8db43ad187391afe959746101346fe51bb978126bec61dfb"
+SRC_URI[cc-1.0.90.sha256sum] = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[cfg_aliases-0.1.1.sha256sum] = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+SRC_URI[chrono-0.4.35.sha256sum] = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+SRC_URI[ciborium-0.2.2.sha256sum] = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+SRC_URI[ciborium-io-0.2.2.sha256sum] = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+SRC_URI[ciborium-ll-0.2.2.sha256sum] = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+SRC_URI[clang-sys-1.4.0.sha256sum] = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
+SRC_URI[clap-3.2.23.sha256sum] = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+SRC_URI[clap-4.1.8.sha256sum] = "c3d7ae14b20b94cb02149ed21a86c423859cbe18dc7ed69845cace50e52b40a5"
+SRC_URI[clap_derive-4.1.8.sha256sum] = "44bec8e5c9d09e439c4335b1af0abaab56dcf3b94999a936e1bb47b9134288f0"
+SRC_URI[clap_lex-0.2.4.sha256sum] = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+SRC_URI[clap_lex-0.3.2.sha256sum] = "350b9cf31731f9957399229e9b2adc51eeabdfbe9d71d9a0552275fd12710d09"
+SRC_URI[core-foundation-0.9.4.sha256sum] = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+SRC_URI[core-foundation-sys-0.8.6.sha256sum] = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+SRC_URI[core-graphics-types-0.1.3.sha256sum] = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
+SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[cros-codecs-0.0.4.sha256sum] = "277a30a0ddadfa014380ee30cc60330d260369855417c492fa94421d7c7e9229"
+SRC_URI[cros-libva-0.0.4.sha256sum] = "dc78ee9952d72572d126ef28338857d12c08a013ba39b77fd8e20201837def3e"
+SRC_URI[crossbeam-channel-0.5.8.sha256sum] = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+SRC_URI[crossbeam-epoch-0.9.14.sha256sum] = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
+SRC_URI[crossbeam-queue-0.3.11.sha256sum] = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+SRC_URI[crossbeam-utils-0.8.19.sha256sum] = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+SRC_URI[crunchy-0.2.2.sha256sum] = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+SRC_URI[ctrlc-3.2.5.sha256sum] = "bbcf33c2a618cbe41ee43ae6e9f2e48368cd9f9db2896f10167d8d762679f639"
+SRC_URI[dbus-0.9.7.sha256sum] = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+SRC_URI[derive-into-owned-0.1.0.sha256sum] = "576fce04d31d592013a5887ba8d9c3830adff329e5096d7e1eb5e8e61262ca62"
+SRC_URI[document-features-0.2.6.sha256sum] = "c3267e1ade4f1f6ddd35fed44a04b6514e244ffeda90c6a14a9ee30f9c9fd7a1"
+SRC_URI[downcast-rs-1.2.1.sha256sum] = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+SRC_URI[either-1.7.0.sha256sum] = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
+SRC_URI[enumn-0.1.13.sha256sum] = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
+SRC_URI[env_logger-0.9.0.sha256sum] = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
+SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+SRC_URI[errno-0.2.8.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+SRC_URI[errno-0.3.12.sha256sum] = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[euclid-0.22.7.sha256sum] = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade"
+SRC_URI[fastrand-1.8.0.sha256sum] = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+SRC_URI[form_urlencoded-1.1.0.sha256sum] = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+SRC_URI[futures-0.3.21.sha256sum] = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
+SRC_URI[futures-channel-0.3.21.sha256sum] = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
+SRC_URI[futures-core-0.3.21.sha256sum] = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
+SRC_URI[futures-executor-0.3.21.sha256sum] = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
+SRC_URI[futures-io-0.3.21.sha256sum] = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
+SRC_URI[futures-macro-0.3.21.sha256sum] = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
+SRC_URI[futures-sink-0.3.21.sha256sum] = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
+SRC_URI[futures-task-0.3.21.sha256sum] = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
+SRC_URI[futures-util-0.3.21.sha256sum] = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
+SRC_URI[gdbstub-0.7.0.sha256sum] = "09a8b954f9d02b74fe8e89a1c77bd9a6b8206713ebf1b272bfad9573b4a86f88"
+SRC_URI[gdbstub_arch-0.3.0.sha256sum] = "4e3b1357bd3203fc09a6601327ae0ab38865d14231d0b65d3143f5762cc7977d"
+SRC_URI[getrandom-0.2.7.sha256sum] = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+SRC_URI[gimli-0.28.1.sha256sum] = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+SRC_URI[glob-0.3.0.sha256sum] = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+SRC_URI[half-2.4.1.sha256sum] = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hashbrown-0.15.0.sha256sum] = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+SRC_URI[heck-0.4.0.sha256sum] = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hermit-abi-0.3.1.sha256sum] = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+SRC_URI[idna-0.3.0.sha256sum] = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+SRC_URI[indexmap-1.9.1.sha256sum] = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[intrusive-collections-0.9.6.sha256sum] = "b694dc9f70c3bda874626d2aed13b780f137aab435f4e9814121955cf706122e"
+SRC_URI[io-lifetimes-1.0.5.sha256sum] = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3"
+SRC_URI[is-terminal-0.4.4.sha256sum] = "21b6b32576413a8e69b90e952e4a026476040d81017b80445deda5f2d3921857"
+SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+SRC_URI[itoa-1.0.2.sha256sum] = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+SRC_URI[jobserver-0.1.24.sha256sum] = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.174.sha256sum] = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
+SRC_URI[libdbus-sys-0.2.5.sha256sum] = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
+SRC_URI[libfuzzer-sys-0.4.4.sha256sum] = "ae185684fe19814afd066da15a7cc41e126886c21282934225d9fc847582da58"
+SRC_URI[libloading-0.7.3.sha256sum] = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
+SRC_URI[libslirp-sys-4.2.1.sha256sum] = "2772370ce9b7fa05c7eae0bd033005e139a64d52cee498a7905b3eb5d243c5f4"
+SRC_URI[libtest-mimic-0.6.0.sha256sum] = "d7b603516767d1ab23d0de09d023e62966c3322f7148297c35cf3d97aa8b37fa"
+SRC_URI[linux-raw-sys-0.1.4.sha256sum] = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+SRC_URI[linux-raw-sys-0.9.4.sha256sum] = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
+SRC_URI[litrs-0.2.3.sha256sum] = "f9275e0933cf8bb20f008924c0cb07a0692fe54d8064996520bf998de9eb79aa"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[log-0.4.21.sha256sum] = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+SRC_URI[lz4_flex-0.11.1.sha256sum] = "3ea9b256699eda7b0387ffbc776dd625e28bde3918446381781245b7a50349d8"
+SRC_URI[malloc_buf-0.0.6.sha256sum] = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+SRC_URI[managed-0.8.0.sha256sum] = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[memoffset-0.8.0.sha256sum] = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
+SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+SRC_URI[mesa3d_util-0.1.75.sha256sum] = "61c76e90ba0bde4c5eb7c1b23d9b0b87333ce3e3db9a3f5fd44b2caae3c99358"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.7.2.sha256sum] = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+SRC_URI[mio-0.8.11.sha256sum] = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+SRC_URI[named-lock-0.3.0.sha256sum] = "0b4a84f3731e71a5792fca72324356bf700c8959d31a2ac34134b25989f254c3"
+SRC_URI[nix-0.26.2.sha256sum] = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+SRC_URI[nix-0.27.1.sha256sum] = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+SRC_URI[nix-0.28.0.sha256sum] = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+SRC_URI[nom-7.1.1.sha256sum] = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.13.1.sha256sum] = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+SRC_URI[objc-0.2.7.sha256sum] = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+SRC_URI[object-0.32.2.sha256sum] = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+SRC_URI[once_cell-1.17.0.sha256sum] = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+SRC_URI[openssl-0.10.51.sha256sum] = "97ea2d98598bf9ada7ea6ee8a30fb74f9156b63bbe495d64ec2b87c269d2dda3"
+SRC_URI[openssl-macros-0.1.0.sha256sum] = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+SRC_URI[openssl-sys-0.9.86.sha256sum] = "992bac49bdbab4423199c654a5515bd2a6c6a23bf03f2dd3bdb7e5ae6259bc69"
+SRC_URI[os_str_bytes-6.4.1.sha256sum] = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+SRC_URI[p9-0.3.2.sha256sum] = "0dc5b2b13cb6a9a5fcf7c668ebf2aef67e0d83d4451c1db95feb9fb0775874f0"
+SRC_URI[p9_wire_format_derive-0.3.0.sha256sum] = "9317f09e751274d3cb2a2678a785c456133a3d1f956f9f79bd460aec84acb600"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.6.sha256sum] = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
+SRC_URI[paste-1.0.7.sha256sum] = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc"
+SRC_URI[pcap-file-1.1.1.sha256sum] = "6ad13fed1a83120159aea81b265074f21d753d157dd16b10cc3790ecba40a341"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[percent-encoding-2.2.0.sha256sum] = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkg-config-0.3.31.sha256sum] = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
+SRC_URI[ppv-lite86-0.2.16.sha256sum] = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+SRC_URI[prettyplease-0.2.22.sha256sum] = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+SRC_URI[proc-macro-crate-1.3.1.sha256sum] = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.85.sha256sum] = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
+SRC_URI[protobuf-3.7.2.sha256sum] = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4"
+SRC_URI[protobuf-codegen-3.7.2.sha256sum] = "5d3976825c0014bbd2f3b34f0001876604fe87e0c86cd8fa54251530f1544ace"
+SRC_URI[protobuf-parse-3.7.2.sha256sum] = "b4aeaa1f2460f1d348eeaeed86aea999ce98c1bded6f089ff8514c9d9dbdc973"
+SRC_URI[protobuf-support-3.7.2.sha256sum] = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6"
+SRC_URI[quote-0.3.15.sha256sum] = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
+SRC_URI[quote-1.0.36.sha256sum] = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.3.sha256sum] = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+SRC_URI[rayon-1.7.0.sha256sum] = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+SRC_URI[rayon-core-1.11.0.sha256sum] = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+SRC_URI[redox_syscall-0.2.15.sha256sum] = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a"
+SRC_URI[regex-1.6.0.sha256sum] = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+SRC_URI[regex-syntax-0.6.27.sha256sum] = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+SRC_URI[remain-0.2.6.sha256sum] = "5704e2cda92fd54202f05430725317ba0ea7d0c96b246ca0a92e45177127ba3b"
+SRC_URI[remove_dir_all-0.5.3.sha256sum] = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+SRC_URI[rustc-demangle-0.1.23.sha256sum] = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rustix-0.36.8.sha256sum] = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644"
+SRC_URI[rustix-1.0.7.sha256sum] = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
+SRC_URI[rutabaga_gfx-0.1.76-chromeos.sha256sum] = "5a806736e3d23fb7c430b67f8a3162233d98a9a34790a3f533278bcc140041af"
+SRC_URI[ryu-1.0.10.sha256sum] = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[scudo-0.1.3.sha256sum] = "12bfcb1ca07a487406afea13bdb7a2f3cf88e67b39c20dfd64e1801909b5c688"
+SRC_URI[scudo-proc-macros-0.1.0.sha256sum] = "b3267c900aee8fbc8451235b70c5e2dae96bb19110eabc325be5d5dfed8e7461"
+SRC_URI[scudo-sys-0.2.2.sha256sum] = "bcdbdfb28236bf083b47d0babb07e486bb003ed85011072b023ea4ed27760ddb"
+SRC_URI[serde-1.0.140.sha256sum] = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"
+SRC_URI[serde_derive-1.0.140.sha256sum] = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da"
+SRC_URI[serde_json-1.0.82.sha256sum] = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+SRC_URI[slab-0.4.7.sha256sum] = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+SRC_URI[smallvec-1.9.0.sha256sum] = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
+SRC_URI[socket2-0.4.10.sha256sum] = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-0.11.11.sha256sum] = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
+SRC_URI[syn-1.0.103.sha256sum] = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+SRC_URI[syn-2.0.77.sha256sum] = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+SRC_URI[synom-0.11.3.sha256sum] = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
+SRC_URI[tempfile-3.3.0.sha256sum] = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[thiserror-1.0.38.sha256sum] = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
+SRC_URI[thiserror-impl-1.0.38.sha256sum] = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
+SRC_URI[thread_local-1.1.8.sha256sum] = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+SRC_URI[threadpool-1.8.1.sha256sum] = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.0.sha256sum] = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+SRC_URI[tokio-1.29.1.sha256sum] = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
+SRC_URI[tokio-macros-2.1.0.sha256sum] = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
+SRC_URI[toml-0.5.9.sha256sum] = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+SRC_URI[toml_datetime-0.6.8.sha256sum] = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+SRC_URI[toml_edit-0.19.15.sha256sum] = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+SRC_URI[twox-hash-1.6.3.sha256sum] = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+SRC_URI[unicode-bidi-0.3.8.sha256sum] = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+SRC_URI[unicode-ident-1.0.2.sha256sum] = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unicode-xid-0.0.4.sha256sum] = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
+SRC_URI[url-2.3.1.sha256sum] = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+SRC_URI[userfaultfd-0.8.1.sha256sum] = "18d8b176d4d3e420685e964f87c25df5fdd5b26d7eb0d0e7c892d771f5b81035"
+SRC_URI[userfaultfd-sys-0.5.0.sha256sum] = "d75595d2a62b7db16bd47f5a1ce14e1fe05ccbe27d6c96721a958e0a027cad41"
+SRC_URI[uuid-1.8.0.sha256sum] = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
+SRC_URI[v4l2r-0.0.6.sha256sum] = "b4f8945ec08a0f9c9b3596c3437bfc8ed1e5c4feefcc230ecf5641aa9b44392b"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[virtio-media-0.0.7.sha256sum] = "a6fe4fe1401316867eda765926fe6742849ca33dd4ea4f887036661c3cd15625"
+SRC_URI[vk-parse-0.8.0.sha256sum] = "4c6a0bda9bbe6b9e50e6456c80aa8fe4cca3b21e4311a1130c41e4915ec2e32a"
+SRC_URI[vulkano-0.31.1.sha256sum] = "49e6f6f908670b33ec1fcb1e9c25677cb4d6783893f89bc11d49d2eb5061ccb5"
+SRC_URI[vulkano-0.33.0.sha256sum] = "1e1f15eeb9d93a05eb3c237332a10806eac1eb82444e54485bfcc1859c483c23"
+SRC_URI[vulkano-macros-0.33.0.sha256sum] = "895b8a2cac1e7650d2d0552f2392da0970a358515ac11a34adaf19bfdc771b98"
+SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[which-4.2.5.sha256sum] = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
+SRC_URI[widestring-1.0.2.sha256sum] = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-0.61.1.sha256sum] = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419"
+SRC_URI[windows-collections-0.2.0.sha256sum] = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
+SRC_URI[windows-core-0.61.2.sha256sum] = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+SRC_URI[windows-future-0.2.1.sha256sum] = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
+SRC_URI[windows-implement-0.60.0.sha256sum] = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
+SRC_URI[windows-interface-0.59.1.sha256sum] = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
+SRC_URI[windows-link-0.1.1.sha256sum] = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+SRC_URI[windows-numerics-0.2.0.sha256sum] = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
+SRC_URI[windows-result-0.3.4.sha256sum] = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+SRC_URI[windows-strings-0.4.2.sha256sum] = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+SRC_URI[windows-sys-0.42.0.sha256sum] = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+SRC_URI[windows-targets-0.42.1.sha256sum] = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+SRC_URI[windows-threading-0.1.0.sha256sum] = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
+SRC_URI[windows_aarch64_gnullvm-0.42.1.sha256sum] = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+SRC_URI[windows_aarch64_msvc-0.42.1.sha256sum] = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+SRC_URI[windows_i686_gnu-0.42.1.sha256sum] = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+SRC_URI[windows_i686_msvc-0.42.1.sha256sum] = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+SRC_URI[windows_x86_64_gnu-0.42.1.sha256sum] = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+SRC_URI[windows_x86_64_gnullvm-0.42.1.sha256sum] = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+SRC_URI[windows_x86_64_msvc-0.42.1.sha256sum] = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+SRC_URI[winnow-0.5.40.sha256sum] = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+SRC_URI[wio-0.2.2.sha256sum] = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
+SRC_URI[xml-rs-0.8.19.sha256sum] = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+SRC_URI[zerocopy-0.7.32.sha256sum] = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+SRC_URI[zerocopy-0.8.14.sha256sum] = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468"
+SRC_URI[zerocopy-derive-0.7.32.sha256sum] = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+SRC_URI[zerocopy-derive-0.8.14.sha256sum] = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1"
+SRC_URI[zeroize-1.5.7.sha256sum] = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
+SRC_URI[zstd-0.13.2.sha256sum] = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
+SRC_URI[zstd-safe-7.2.1.sha256sum] = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
+SRC_URI[zstd-sys-2.0.13+zstd.1.5.6.sha256sum] = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
+# from tools/contrib/crosvmdump/Cargo.lock
+SRC_URI += " \
+ crate://crates.io/anyhow/1.0.75 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/crossbeam-channel/0.5.8 \
+ crate://crates.io/crossbeam-deque/0.8.3 \
+ crate://crates.io/crossbeam-epoch/0.9.15 \
+ crate://crates.io/crossbeam-utils/0.8.16 \
+ crate://crates.io/either/1.8.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/memoffset/0.9.0 \
+ crate://crates.io/num_cpus/1.16.0 \
+ crate://crates.io/rayon/1.7.0 \
+ crate://crates.io/rayon-core/1.11.0 \
+ crate://crates.io/scopeguard/1.2.0 \
+"
+
+SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[crossbeam-channel-0.5.8.sha256sum] = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+SRC_URI[crossbeam-epoch-0.9.15.sha256sum] = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
+SRC_URI[either-1.8.1.sha256sum] = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+SRC_URI[rayon-1.7.0.sha256sum] = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+SRC_URI[rayon-core-1.11.0.sha256sum] = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+# from tools/contrib/memstats_chart/Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anyhow/1.0.72 \
+ crate://crates.io/argh/0.1.10 \
+ crate://crates.io/argh_derive/0.1.10 \
+ crate://crates.io/argh_shared/0.1.10 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/ctrlc/3.4.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/itoa/1.0.9 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/nix/0.26.2 \
+ crate://crates.io/proc-macro2/1.0.66 \
+ crate://crates.io/quote/1.0.31 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.3 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/rustix/0.38.4 \
+ crate://crates.io/ryu/1.0.15 \
+ crate://crates.io/serde/1.0.171 \
+ crate://crates.io/serde_derive/1.0.171 \
+ crate://crates.io/serde_json/1.0.103 \
+ crate://crates.io/static_assertions/1.1.0 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.26 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+"
+
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anyhow-1.0.72.sha256sum] = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
+SRC_URI[argh-0.1.10.sha256sum] = "ab257697eb9496bf75526f0217b5ed64636a9cfafa78b8365c71bd283fcef93e"
+SRC_URI[argh_derive-0.1.10.sha256sum] = "b382dbd3288e053331f03399e1db106c9fb0d8562ad62cb04859ae926f324fa6"
+SRC_URI[argh_shared-0.1.10.sha256sum] = "64cb94155d965e3d37ffbbe7cc5b82c3dd79dd33bd48e536f73d2cfb8d85506f"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[ctrlc-3.4.0.sha256sum] = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[nix-0.26.2.sha256sum] = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+SRC_URI[proc-macro2-1.0.66.sha256sum] = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+SRC_URI[quote-1.0.31.sha256sum] = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.3.sha256sum] = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[rustix-0.38.4.sha256sum] = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5"
+SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[serde-1.0.171.sha256sum] = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
+SRC_URI[serde_derive-1.0.171.sha256sum] = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
+SRC_URI[serde_json-1.0.103.sha256sum] = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.26.sha256sum] = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+# from tools/contrib/cros_tracing_analyser/Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.1.2 \
+ crate://crates.io/anyhow/1.0.75 \
+ crate://crates.io/argh/0.1.12 \
+ crate://crates.io/argh_derive/0.1.12 \
+ crate://crates.io/argh_shared/0.1.12 \
+ crate://crates.io/bindgen/0.65.1 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.4.1 \
+ crate://crates.io/cexpr/0.6.0 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clang-sys/1.6.1 \
+ crate://crates.io/either/1.9.0 \
+ crate://crates.io/errno/0.3.5 \
+ crate://crates.io/glob/0.3.1 \
+ crate://crates.io/home/0.5.5 \
+ crate://crates.io/itoa/1.0.9 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/lazycell/1.3.0 \
+ crate://crates.io/libc/0.2.149 \
+ crate://crates.io/libloading/0.7.4 \
+ crate://crates.io/libtracecmd/0.2.1 \
+ crate://crates.io/linux-raw-sys/0.4.10 \
+ crate://crates.io/log/0.4.20 \
+ crate://crates.io/memchr/2.6.4 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/nom/7.1.3 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/peeking_take_while/0.1.2 \
+ crate://crates.io/pkg-config/0.3.27 \
+ crate://crates.io/prettyplease/0.2.15 \
+ crate://crates.io/proc-macro2/1.0.69 \
+ crate://crates.io/quote/1.0.33 \
+ crate://crates.io/regex/1.10.2 \
+ crate://crates.io/regex-automata/0.4.3 \
+ crate://crates.io/regex-syntax/0.8.2 \
+ crate://crates.io/rustc-hash/1.1.0 \
+ crate://crates.io/rustix/0.38.21 \
+ crate://crates.io/ryu/1.0.15 \
+ crate://crates.io/serde/1.0.190 \
+ crate://crates.io/serde_derive/1.0.190 \
+ crate://crates.io/serde_json/1.0.108 \
+ crate://crates.io/shlex/1.3.0 \
+ crate://crates.io/syn/2.0.38 \
+ crate://crates.io/thiserror/1.0.50 \
+ crate://crates.io/thiserror-impl/1.0.50 \
+ crate://crates.io/unicode-ident/1.0.12 \
+ crate://crates.io/which/4.4.2 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+"
+
+SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[argh-0.1.12.sha256sum] = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219"
+SRC_URI[argh_derive-0.1.12.sha256sum] = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a"
+SRC_URI[argh_shared-0.1.12.sha256sum] = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531"
+SRC_URI[bindgen-0.65.1.sha256sum] = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clang-sys-1.6.1.sha256sum] = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+SRC_URI[errno-0.3.5.sha256sum] = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.149.sha256sum] = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
+SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+SRC_URI[libtracecmd-0.2.1.sha256sum] = "607a526f92ff1c8a64cef68c8d4b87ec3c58dbe0edab5f0f80b7f2f64c4910fb"
+SRC_URI[linux-raw-sys-0.4.10.sha256sum] = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+SRC_URI[prettyplease-0.2.15.sha256sum] = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
+SRC_URI[proc-macro2-1.0.69.sha256sum] = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rustix-0.38.21.sha256sum] = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
+SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[serde-1.0.190.sha256sum] = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"
+SRC_URI[serde_derive-1.0.190.sha256sum] = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"
+SRC_URI[serde_json-1.0.108.sha256sum] = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+SRC_URI[syn-2.0.38.sha256sum] = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+SRC_URI[which-4.4.2.sha256sum] = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+# from tools/contrib/vcpu_blocker_analyzer/Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.1.2 \
+ crate://crates.io/anyhow/1.0.79 \
+ crate://crates.io/argh/0.1.12 \
+ crate://crates.io/argh_derive/0.1.12 \
+ crate://crates.io/argh_shared/0.1.12 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/bitflags/2.4.2 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/env_logger/0.10.2 \
+ crate://crates.io/errno/0.3.8 \
+ crate://crates.io/futures/0.3.30 \
+ crate://crates.io/futures-channel/0.3.30 \
+ crate://crates.io/futures-core/0.3.30 \
+ crate://crates.io/futures-executor/0.3.30 \
+ crate://crates.io/futures-io/0.3.30 \
+ crate://crates.io/futures-macro/0.3.30 \
+ crate://crates.io/futures-sink/0.3.30 \
+ crate://crates.io/futures-task/0.3.30 \
+ crate://crates.io/futures-timer/3.0.2 \
+ crate://crates.io/futures-util/0.3.30 \
+ crate://crates.io/glob/0.3.1 \
+ crate://crates.io/hermit-abi/0.3.4 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/is-terminal/0.4.10 \
+ crate://crates.io/itoa/1.0.10 \
+ crate://crates.io/libc/0.2.152 \
+ crate://crates.io/linux-raw-sys/0.4.13 \
+ crate://crates.io/log/0.4.20 \
+ crate://crates.io/memchr/2.7.1 \
+ crate://crates.io/pin-project-lite/0.2.13 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/proc-macro2/1.0.78 \
+ crate://crates.io/quote/1.0.35 \
+ crate://crates.io/regex/1.10.3 \
+ crate://crates.io/regex-automata/0.4.4 \
+ crate://crates.io/regex-syntax/0.8.2 \
+ crate://crates.io/relative-path/1.9.2 \
+ crate://crates.io/rstest/0.19.0 \
+ crate://crates.io/rstest_macros/0.19.0 \
+ crate://crates.io/rustc_version/0.4.0 \
+ crate://crates.io/rustix/0.38.30 \
+ crate://crates.io/ryu/1.0.16 \
+ crate://crates.io/semver/1.0.21 \
+ crate://crates.io/serde/1.0.195 \
+ crate://crates.io/serde_derive/1.0.195 \
+ crate://crates.io/serde_json/1.0.111 \
+ crate://crates.io/slab/0.4.9 \
+ crate://crates.io/syn/2.0.48 \
+ crate://crates.io/termcolor/1.4.1 \
+ crate://crates.io/unicode-ident/1.0.12 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.6 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.52.0 \
+ crate://crates.io/windows-targets/0.52.0 \
+ crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
+ crate://crates.io/windows_aarch64_msvc/0.52.0 \
+ crate://crates.io/windows_i686_gnu/0.52.0 \
+ crate://crates.io/windows_i686_msvc/0.52.0 \
+ crate://crates.io/windows_x86_64_gnu/0.52.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
+ crate://crates.io/windows_x86_64_msvc/0.52.0 \
+"
+
+SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+SRC_URI[anyhow-1.0.79.sha256sum] = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+SRC_URI[argh-0.1.12.sha256sum] = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219"
+SRC_URI[argh_derive-0.1.12.sha256sum] = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a"
+SRC_URI[argh_shared-0.1.12.sha256sum] = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[env_logger-0.10.2.sha256sum] = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+SRC_URI[futures-0.3.30.sha256sum] = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+SRC_URI[futures-channel-0.3.30.sha256sum] = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+SRC_URI[futures-core-0.3.30.sha256sum] = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+SRC_URI[futures-executor-0.3.30.sha256sum] = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+SRC_URI[futures-io-0.3.30.sha256sum] = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+SRC_URI[futures-macro-0.3.30.sha256sum] = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+SRC_URI[futures-sink-0.3.30.sha256sum] = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+SRC_URI[futures-task-0.3.30.sha256sum] = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+SRC_URI[futures-timer-3.0.2.sha256sum] = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
+SRC_URI[futures-util-0.3.30.sha256sum] = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[hermit-abi-0.3.4.sha256sum] = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[is-terminal-0.4.10.sha256sum] = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455"
+SRC_URI[itoa-1.0.10.sha256sum] = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+SRC_URI[libc-0.2.152.sha256sum] = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+SRC_URI[linux-raw-sys-0.4.13.sha256sum] = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[memchr-2.7.1.sha256sum] = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[proc-macro2-1.0.78.sha256sum] = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+SRC_URI[regex-1.10.3.sha256sum] = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+SRC_URI[regex-automata-0.4.4.sha256sum] = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
+SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+SRC_URI[relative-path-1.9.2.sha256sum] = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc"
+SRC_URI[rstest-0.19.0.sha256sum] = "9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330"
+SRC_URI[rstest_macros-0.19.0.sha256sum] = "04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25"
+SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+SRC_URI[rustix-0.38.30.sha256sum] = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+SRC_URI[ryu-1.0.16.sha256sum] = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+SRC_URI[semver-1.0.21.sha256sum] = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+SRC_URI[serde-1.0.195.sha256sum] = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
+SRC_URI[serde_derive-1.0.195.sha256sum] = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
+SRC_URI[serde_json-1.0.111.sha256sum] = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
+SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+SRC_URI[syn-2.0.48.sha256sum] = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
diff --git a/recipes-extended/crosvm/crosvm_0.1.0.bb b/recipes-extended/crosvm/crosvm_0.1.0.bb
new file mode 100644
index 00000000..ab629c69
--- /dev/null
+++ b/recipes-extended/crosvm/crosvm_0.1.0.bb
@@ -0,0 +1,62 @@
+SUMMARY = "crosvm is a secure, lightweight, and performant Virtual Machine Monitor (VMM) written in Rust."
+
+DESCRIPTION = "\
+crosvm is a Rust-based virtual machine monitor (VMM) originally developed \
+for ChromeOS. It uses KVM acceleration and process-level isolation to run guest VMs \
+with sandboxed device emulation.\
+"
+
+HOMEPAGE = "https://github.com/google/crosvm"
+
+LICENSE = "BSD-3-Clause-Clear"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause-Clear;md5=7a434440b651f4a472ca93716d01033a"
+
+inherit cargo pkgconfig cargo-update-recipe-crates features_check
+
+SRC_URI = " \
+ git://github.com/google/crosvm.git;branch=main;protocol=https;name=crosvm \
+ git://github.com/google/minijail.git;branch=main;protocol=https;name=minijail;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/minijail \
+"
+
+SRCREV_crosvm = "b04c13a65b93034010b20612e3566d4f9d83c4f0"
+SRCREV_minijail = "bfd22f25fd2302fe4ae5121d80c836e0f124e742"
+
+SRCREV_FORMAT = "crosvm_minijail"
+
+# crosvm does not publish upstream release tags.
+# PV = "0.1.0" is an intentionally cosmetic/local version for layer
+# consistency, not an upstream project release.
+PV = "0.1.0+git"
+
+DEPENDS += "libcap wayland wayland-native protobuf-native wayland-protocols"
+
+REQUIRED_DISTRO_FEATURES = "kvm"
+
+COMPATIBLE_HOST = "(aarch64|x86_64).*-linux.*"
+
+BBCLASSEXTEND = "native"
+
+# cargo_common_do_patch_paths() auto-generates Cargo [patch] entries for
+# git SRC_URI items that set both "name" and "destsuffix".
+# When "subdir" is also used, cargo_common builds the path as
+# ${UNPACKDIR}/${destsuffix}/${subdir}, but BitBake unpacks as
+# ${UNPACKDIR}/${subdir}/${destsuffix}. For crosvm's minijail source, that
+# mismatch can point Cargo at a directory without Cargo.toml.
+# Remove the generated entry from ${CARGO_HOME}/config.toml; crosvm's
+# Cargo.toml already provides the correct patch path.
+do_filter_minijail_cargo_config() {
+
+ cfg="${CARGO_HOME}/config.toml"
+
+ if [ ! -f "$cfg" ]; then
+ bbwarn "Skipping missing Cargo config: $cfg"
+ exit 0
+ fi
+
+ bbnote "Processing Cargo config: $cfg"
+ sed -i '/minijail/d' "$cfg"
+}
+
+addtask filter_minijail_cargo_config after do_configure before do_compile
+
+require crosvm-crates.inc
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo
2026-06-13 6:07 [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Keerthivasan Raghavan
2026-06-13 6:07 ` [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) Keerthivasan Raghavan
@ 2026-06-13 6:07 ` Keerthivasan Raghavan
2026-06-20 3:42 ` Bruce Ashfield
2026-06-20 3:42 ` [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Bruce Ashfield
2 siblings, 1 reply; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-13 6:07 UTC (permalink / raw)
To: vkraleti, anujmitt, sbanerje, bruce.ashfield, meta-virtualization
Cc: Keerthivasan Raghavan
A reference image called `crosvm-image-minimal` is provided
for testing/validation on supported machines(arm64 and x86-64).
Instructions are provided to test on QEMU(x86-64 only).
Testing was done on x86-64 by achieving boot to shell on a crosvm vm
instance running inside a vm instance on QEMU, i.e nested virtualization
with machine as qemux86-64.
Testing was done on arm64 by achieving boot to shell on a crosvm vm
instance running directly on meta-qcom machine qcs9100-ride-sx.
Signed-off-by: Keerthivasan Raghavan <kraghava@qti.qualcomm.com>
---
recipes-extended/images/README-crosvm.md | 68 +++++++++++++++
.../images/crosvm-image-minimal.bb | 82 +++++++++++++++++++
2 files changed, 150 insertions(+)
create mode 100644 recipes-extended/images/README-crosvm.md
create mode 100644 recipes-extended/images/crosvm-image-minimal.bb
diff --git a/recipes-extended/images/README-crosvm.md b/recipes-extended/images/README-crosvm.md
new file mode 100644
index 00000000..2c36da7d
--- /dev/null
+++ b/recipes-extended/images/README-crosvm.md
@@ -0,0 +1,68 @@
+# crosvm-image-minimal: build and test
+
+Steps to test/validate crosvm are given below.
+A reference image `crosvm-image-minimal` is provided
+for this purpose.
+
+## local.conf example
+
+```conf
+# virtualization
+MACHINE ??= "qemux86-64"
+DISTRO ??= "nodistro"
+BBMULTICONFIG ?= ""
+
+DISTRO_FEATURES += " kvm virtualization"
+IMAGE_FEATURES += " empty-root-password allow-empty-password allow-root-login"
+IMAGE_FSTYPES = "ext4"
+IMAGE_FSTYPES:remove = "ext4.zst"
+```
+
+## Build
+
+```bash
+bitbake crosvm-image-minimal
+```
+
+## Boot in QEMU
+
+When the target `MACHINE` is `qemux86-64`, the host running QEMU must support:
+- nested virtualization
+- Intel VT-x or AMD SVM
+- exposed `/dev/kvm`
+
+Run from `tmp/deploy/images/qemux86-64/` (or adjust paths):
+
+```bash
+qemu-system-x86_64 \
+ -enable-kvm \
+ -machine q35 \
+ -cpu host \
+ -smp 4 \
+ -m 4096 \
+ -kernel bzImage \
+ -drive file=crosvm-image-minimal-qemux86-64.rootfs.ext4,format=raw,if=virtio \
+ -append "root=/dev/vda rw console=ttyS0 earlyprintk=serial nokaslr" \
+ -nographic
+```
+
+## Run crosvm inside the guest
+
+The image bundles:
+
+- `/var/lib/crosvm/images/guest-kernel`
+- `/var/lib/crosvm/images/guest.ext4`
+
+```bash
+crosvm --log-level "debug,disk=off" run \
+ --disable-sandbox /var/lib/crosvm/images/guest-kernel \
+ --block /var/lib/crosvm/images/guest.ext4,root \
+ -p "root=/dev/vda rw console=ttyS0 earlyprintk=serial nokaslr"
+```
+
+## Quick sanity checks
+
+```bash
+test -e /dev/kvm && echo "/dev/kvm present"
+ls -l /var/lib/crosvm/images/
+```
diff --git a/recipes-extended/images/crosvm-image-minimal.bb b/recipes-extended/images/crosvm-image-minimal.bb
new file mode 100644
index 00000000..59ba7c9b
--- /dev/null
+++ b/recipes-extended/images/crosvm-image-minimal.bb
@@ -0,0 +1,82 @@
+SUMMARY = "A minimal image containing crosvm to demo its uage."
+
+KVM_MODULES = ""
+
+# arm64 linux kernels have kvm inbuilt
+KVM_MODULES:aarch64 = ""
+
+KVM_MODULES:x86-64 = " \
+ kernel-module-kvm \
+ kernel-module-kvm-intel \
+ kernel-module-kvm-amd \
+"
+
+IMAGE_INSTALL = "packagegroup-core-boot crosvm"
+IMAGE_INSTALL:append = " ${KVM_MODULES}"
+
+IMAGE_LINGUAS = " "
+
+LICENSE = "MIT"
+
+inherit core-image
+
+# Guest artifact source settings.
+# This is intentionally a normal variable
+# assignment so it can be overridden in local.conf. The do_rootfs[depends]
+# is added at parse time, so any local.conf override is picked up correctly.
+CROSVM_GUEST_IMAGE_RECIPE ?= "core-image-minimal"
+CROSVM_GUEST_IMAGE_FSTYPE ?= "ext4"
+CROSVM_GUEST_ROOTFS ?= "${CROSVM_GUEST_IMAGE_RECIPE}-${MACHINE}.rootfs.${CROSVM_GUEST_IMAGE_FSTYPE}"
+CROSVM_GUEST_KERNEL ?= "${KERNEL_IMAGETYPE}"
+
+# Final location inside the host/root image.
+CROSVM_GUEST_TARGET_DIR ?= "/var/lib/crosvm/images"
+CROSVM_GUEST_TARGET_ROOTFS_NAME ?= "guest.${CROSVM_GUEST_IMAGE_FSTYPE}"
+CROSVM_GUEST_TARGET_KERNEL_NAME ?= "guest-kernel"
+
+# Ensure guest image and kernel are available before rootfs postprocess runs.
+# The image also depends on guest rootfs to avoid stale consumption
+# of deployed guest image artifact.
+# The same kernel is used for both the host and guest.
+do_rootfs[depends] += "\
+ ${CROSVM_GUEST_IMAGE_RECIPE}:do_image_complete \
+ ${CROSVM_GUEST_IMAGE_RECIPE}:do_rootfs \
+ virtual/kernel:do_deploy \
+"
+
+# Copy guest rootfs+kernel into the host rootfs for crosvm demo runtime.
+bundle_crosvm_guest() {
+ set -e
+
+ local deploy_dir="${DEPLOY_DIR_IMAGE}"
+ local rootfs_src="${deploy_dir}/${CROSVM_GUEST_ROOTFS}"
+ local kernel_src="${deploy_dir}/${CROSVM_GUEST_KERNEL}"
+ local target_dir="${IMAGE_ROOTFS}${CROSVM_GUEST_TARGET_DIR}"
+
+ if [ ! -e "$rootfs_src" ]; then
+ bbfatal "Cannot find guest rootfs. Tried: \
+ ${deploy_dir}/${CROSVM_GUEST_ROOTFS} and \
+ ${deploy_dir}/${CROSVM_GUEST_IMAGE_RECIPE}-${MACHINE}.rootfs.${CROSVM_GUEST_IMAGE_FSTYPE}"
+ fi
+
+ if [ ! -e "$kernel_src" ]; then
+ bbfatal "Cannot find guest kernel. Tried: \
+ ${deploy_dir}/${CROSVM_GUEST_KERNEL}"
+ fi
+
+ install -d "$target_dir"
+
+ install -m 0644 "$(readlink -f "$rootfs_src")" \
+ "$target_dir/${CROSVM_GUEST_TARGET_ROOTFS_NAME}"
+
+ install -m 0644 "$(readlink -f "$kernel_src")" \
+ "$target_dir/${CROSVM_GUEST_TARGET_KERNEL_NAME}"
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "bundle_crosvm_guest;"
+
+IMAGE_ROOTFS_SIZE = "0"
+
+KERNEL_MODULE_AUTOLOAD:append:x86-64 = " kvm kvm_amd kvm_intel"
+
+
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/2] Add crosvm recipe to meta-virtualization
2026-06-13 6:07 [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Keerthivasan Raghavan
2026-06-13 6:07 ` [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) Keerthivasan Raghavan
2026-06-13 6:07 ` [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo Keerthivasan Raghavan
@ 2026-06-20 3:42 ` Bruce Ashfield
2 siblings, 0 replies; 11+ messages in thread
From: Bruce Ashfield @ 2026-06-20 3:42 UTC (permalink / raw)
To: kraghava, meta-virtualization; +Cc: vkraleti, anujmitt, sbanerje
Thanks for the v2! Most of my v4 feedback is addressed — gitsm dropped in
favour of explicit clones, PV/PKGV cleaned up, SUMMARY expanded, README +
test instructions added, and the qemux86-64 nested-KVM path gives me
something I can actually reproduce here. Appreciated.
But for a v3, make sure to summarize the changes from the previous
version. I had to look up the old comments and that gets a bit tedious
when doing a lot of reviews.
Per-patch comments are on the individual messages. The main one is on
1/2 — a one-character SRC_URI change that lets the whole
do_filter_minijail_cargo_config task go away. 2/2 just has a typo and
a small nit.
With those addressed, and a reply on the three v4 items I still don't
see resolved (BBCLASSEXTEND, wayland, crate-licence variation — replies
on-list are fine for the latter two, no need to be code changes), I
think we're close to a mergeable v3.
Bruce
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
2026-06-13 6:07 ` [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) Keerthivasan Raghavan
@ 2026-06-20 3:42 ` Bruce Ashfield
2026-06-22 15:50 ` Keerthivasan Raghavan
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Bruce Ashfield @ 2026-06-20 3:42 UTC (permalink / raw)
To: kraghava, meta-virtualization; +Cc: vkraleti, anujmitt, sbanerje
The big one is do_filter_minijail_cargo_config. The problem is real but
the workaround feels heavier than it needs to be — and I think we can
delete the task entirely with a one-character change to SRC_URI.
What's happening today: cargo_common_do_patch_paths() walks SRC_URI for
git entries with name= set, and for each one appends a [patch.crates-io]
entry to ${CARGO_HOME}/config.toml keyed on the name= value. So name=
minijail produces
[patch.crates-io]
minijail = { path = "${UNPACKDIR}/git/third_party/minijail" }
But crosvm's own upstream Cargo.toml already has
[patch.crates-io]
minijail = { path = "./third_party/minijail" }
Two entries, same key. Cargo doesn't allow duplicate [patch.crates-io]
keys regardless of whether the paths resolve to the same directory —
so the build breaks and the sed task exists to delete the auto-injected
line.
If we rename the SRC_URI name= to anything that isn't "minijail", the
collision disappears:
SRC_URI = " \
git://github.com/google/crosvm.git;branch=main;protocol=https;name=crosvm \
git://github.com/google/minijail.git;branch=main;protocol=https;name=minijail_src;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/minijail \
"
SRCREV_crosvm = "..."
SRCREV_minijail_src = "..."
SRCREV_FORMAT = "crosvm_minijail_src"
The unpacked source still lands at the same place on disk (destsuffix
is what controls that), so crosvm's own Cargo.toml relative-path
patch still finds it and the build consumes the source as before.
The only change is that cargo_common now writes
minijail_src = { path = "..." }
into config.toml — an entry keyed on a crate name nothing in the
dep graph references. Cargo will emit a non-fatal warning along the
lines of
warning: Patch `minijail_src v...` was not used in the crate graph
That warning is expected and fine — please don't try to suppress it.
It's the price of having two patch tables (upstream's and OE-core's)
both pointing at the same on-disk source from different angles, and
making them silently co-exist is better than fighting either one.
With that, the entire do_filter_minijail_cargo_config task and its
addtask line can go away. A one-line comment above the SRC_URI noting
"name= is deliberately not 'minijail' so cargo_common's auto-injected
[patch.crates-io] entry doesn't collide with crosvm's own Cargo.toml,
which already patches minijail at ./third_party/minijail" would help
the next person who looks at this.
Smaller items:
- LIC_FILES_CHKSUM points at ${COMMON_LICENSE_DIR}/BSD-3-Clause-Clear
rather than the LICENSE file in the cloned source. The Yocto-shipped
template is a generic copy; an edit to upstream's LICENSE (year
bump, contributor line) won't trip do_populate_lic the way it
should. Better as file://LICENSE;md5=<sum-from-actual-source>.
- Three things I asked about on v4 that I don't see addressed:
* BBCLASSEXTEND = "native" — I'd prefer we not have it in this
first version. Do a runqemu alternative as a separate series
and do it then.
* DEPENDS includes wayland/wayland-native/wayland-protocols
unconditionally. Is crosvm always built with the GPU/display
feature on here? If those feature-bits can be disabled, please
consider a PACKAGECONFIG so wayland is only pulled in when the
display path is actually wanted. Acceptable to defer for now,
but please call it out as a follow-up.
* 966 pinned crates and a single BSD-3-Clause-Clear LICENSE
declaration — there is almost certainly licence variation in
that set. This isn't unique to crosvm (other recipes in the
layer are guilty too and I'm working through them), so it
isn't blocking, but please file/track it as a follow-up.
Bruce
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo
2026-06-13 6:07 ` [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo Keerthivasan Raghavan
@ 2026-06-20 3:42 ` Bruce Ashfield
2026-06-22 16:12 ` Keerthivasan Raghavan
0 siblings, 1 reply; 11+ messages in thread
From: Bruce Ashfield @ 2026-06-20 3:42 UTC (permalink / raw)
To: kraghava, meta-virtualization; +Cc: vkraleti, anujmitt, sbanerje
Mostly looks good. The "host kernel is the guest kernel" pattern is
honest for a demo, the dependency wiring (do_rootfs[depends] on guest
image + kernel deploy) is correct, and bundle_crosvm_guest is
defensive (readlink -f, install -m 0644, bbfatal on missing inputs).
README is concrete and reproducible.
Two minor things:
- SUMMARY typo: "demo its uage." → "demo its usage."
- KVM_MODULES:aarch64 = "" is identical to the unconditional
KVM_MODULES = "" default. Either drop the override, or keep it
only if you want the explicit per-arch line as documentation
of the "kvm is built-in on arm64" fact.
Bruce
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
2026-06-20 3:42 ` Bruce Ashfield
@ 2026-06-22 15:50 ` Keerthivasan Raghavan
[not found] ` <18BB72009F835ED2.943537@lists.yoctoproject.org>
2026-06-22 20:49 ` Bruce Ashfield
2 siblings, 0 replies; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-22 15:50 UTC (permalink / raw)
To: Bruce Ashfield, meta-virtualization@lists.yoctoproject.org
Cc: Viswanath Kraleti, Anuj Mittal, Sourabh Banerjee
Hi Bruce,
Thank you for the comments. Here follows responses:
> The big one is do_filter_minijail_cargo_config. The problem is real but
> the workaround feels heavier than it needs to be — and I think we can
> delete the task entirely with a one-character change to SRC_URI.
>
> What's happening today: cargo_common_do_patch_paths() walks SRC_URI for
> git entries with name= set, and for each one appends a [patch.crates-io]
> entry to ${CARGO_HOME}/config.toml keyed on the name= value. So name=
> minijail produces
>
> [patch.crates-io]
> minijail = { path = "${UNPACKDIR}/git/third_party/minijail" }
>
> But crosvm's own upstream Cargo.toml already has
>
> [patch.crates-io]
> minijail = { path = "./third_party/minijail" }
>
> Two entries, same key. Cargo doesn't allow duplicate [patch.crates-io]
> keys regardless of whether the paths resolve to the same directory —
> so the build breaks and the sed task exists to delete the auto-injected
> line.
>
> If we rename the SRC_URI name= to anything that isn't "minijail", the
> collision disappears:
>
> SRC_URI = " \
> git://github.com/google/crosvm.git;branch=main;protocol=https;name=crosvm \
> git://github.com/google/minijail.git;branch=main;protocol=https;name=minijail_src;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/minijail \
> "
>
> SRCREV_crosvm = "..."
> SRCREV_minijail_src = "..."
> SRCREV_FORMAT = "crosvm_minijail_src"
>
> The unpacked source still lands at the same place on disk (destsuffix
> is what controls that), so crosvm's own Cargo.toml relative-path
> patch still finds it and the build consumes the source as before.
> The only change is that cargo_common now writes
>
> minijail_src = { path = "..." }
>
> into config.toml — an entry keyed on a crate name nothing in the
> dep graph references. Cargo will emit a non-fatal warning along the
> lines of
>
> warning: Patch `minijail_src v...` was not used in the crate graph
>
> That warning is expected and fine — please don't try to suppress it.
> It's the price of having two patch tables (upstream's and OE-core's)
> both pointing at the same on-disk source from different angles, and
> making them silently co-exist is better than fighting either one.
>
> With that, the entire do_filter_minijail_cargo_config task and its
> addtask line can go away. A one-line comment above the SRC_URI noting
> "name= is deliberately not 'minijail' so cargo_common's auto-injected
> [patch.crates-io] entry doesn't collide with crosvm's own Cargo.toml,
> which already patches minijail at ./third_party/minijail" would help
> the next person who looks at this.
How did you get it to compile ? Is some information/steps/code missing ?
I tried the change and it errored out: The lack of config.toml causes cargo to error out.
The destination has been specified so that the relative path entry for the patch
mentioned inside crosvm cargo.toml can take effect. The one inside is as follows:
>> [patch.crates-io]
>> audio_streams = { path = "common/audio_streams" }
>> libcras = { path = "libcras_stub" } # ignored by ebuild
>> minijail = { path = "third_party/minijail/rust/minijail" } # ignored by ebuild
Reference: https://github.com/google/crosvm/blob/b04c13a65b93034010b20612e3566d4f9d83c4f0/Cargo.toml#L647-L650
However the entry produced by my build is:
[patch."https://github.com/google/minijail.git"]
minijail_src = { path = "/local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/sources/crosvm-0.1.0+git/third_party/minijail" }
The src path terminates at "${UNPACKDIR}/git/third_party/minijail" without nesting into
"rust/minijail" which contains the Cargo.toml for the minijail. This cases cargo error.
Did you use a combination of "destsuffix" (and),(or) "subdir" ?
"subdir" causes bitbake to put the repo in a different dir that does not satisy the
relative need of the crosvm Cargo.toml.
> - LIC_FILES_CHKSUM points at ${COMMON_LICENSE_DIR}/BSD-3-Clause-Clear
> rather than the LICENSE file in the cloned source. The Yocto-shipped
> template is a generic copy; an edit to upstream's LICENSE (year
> bump, contributor line) won't trip do_populate_lic the way it
> should. Better as file://LICENSE;md5=<sum-from-actual-source>.
Ack. It will be addresed.
> * BBCLASSEXTEND = "native" — I'd prefer we not have it in this
> first version. Do a runqemu alternative as a separate series
> and do it then.
>
Ack. It will be addresed.
> * DEPENDS includes wayland/wayland-native/wayland-protocols
> unconditionally. Is crosvm always built with the GPU/display
> feature on here? If those feature-bits can be disabled, please
> consider a PACKAGECONFIG so wayland is only pulled in when the
> display path is actually wanted. Acceptable to defer for now,
> but please call it out as a follow-up.
It will be done as a follow up. I will add an explicit TODO
comment to map cargo feature flags to pkgconfig flags.
It is defered for now in this patch series.
> * 966 pinned crates and a single BSD-3-Clause-Clear LICENSE
> declaration — there is almost certainly licence variation in
> that set. This isn't unique to crosvm (other recipes in the
> layer are guilty too and I'm working through them), so it
> isn't blocking, but please file/track it as a follow-up.
I will add an explicit TODO comment for this.
Thank you,
Keerthivasan Raghavan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [meta-virtualization] [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
[not found] ` <18BB72009F835ED2.943537@lists.yoctoproject.org>
@ 2026-06-22 16:01 ` Keerthivasan Raghavan
[not found] ` <18BB729F07DE7EAA.1048178@lists.yoctoproject.org>
1 sibling, 0 replies; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-22 16:01 UTC (permalink / raw)
To: Bruce Ashfield, meta-virtualization@lists.yoctoproject.org,
Keerthivasan Raghavan
Cc: Viswanath Kraleti, Anuj Mittal, Sourabh Banerjee
> How did you get it to compile ? Is some information/steps/code missing ?
> I tried the change and it errored out: The lack of config.toml causes cargo to error out.
Sorry, I meant "Cargo.toml" not "config.toml".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo
2026-06-20 3:42 ` Bruce Ashfield
@ 2026-06-22 16:12 ` Keerthivasan Raghavan
0 siblings, 0 replies; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-22 16:12 UTC (permalink / raw)
To: Bruce Ashfield, meta-virtualization@lists.yoctoproject.org
Cc: Viswanath Kraleti, Anuj Mittal, Sourabh Banerjee
Hi Bruce,
> - SUMMARY typo: "demo its uage." → "demo its usage."
Ack. It will be addressed.
> - KVM_MODULES:aarch64 = "" is identical to the unconditional
> KVM_MODULES = "" default. Either drop the override, or keep it
> only if you want the explicit per-arch line as documentation
> of the "kvm is built-in on arm64" fact.
Prefer to keep it with the suggested comment with explicit per-arch
documentation. 3 arch are supported by crosvm: x86-64, arm64 and
riskV. The set is minimal.
Thank you,
Keerthivasan Raghavan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [meta-virtualization] [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
[not found] ` <18BB729F07DE7EAA.1048178@lists.yoctoproject.org>
@ 2026-06-22 16:35 ` Keerthivasan Raghavan
0 siblings, 0 replies; 11+ messages in thread
From: Keerthivasan Raghavan @ 2026-06-22 16:35 UTC (permalink / raw)
To: Bruce Ashfield, meta-virtualization@lists.yoctoproject.org,
Keerthivasan Raghavan
Cc: Viswanath Kraleti, Anuj Mittal, Sourabh Banerjee
> The src path terminates at "${UNPACKDIR}/git/third_party/minijail" without nesting into
> "rust/minijail" which contains the Cargo.toml for the minijail. This cases cargo error.
Sorry typo. I meant "This causes cargo error." . I have attached the error logs for reference:
> ERROR: crosvm-0.1.0+git-r0 do_compile: Execution of '/local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/wor[235/1994]
> 7-oe-linux/crosvm/0.1.0+git/temp/run.do_compile.3018651' failed with exit code 101
> ERROR: Logfile of failure stored in: /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosv
> m/0.1.0+git/temp/log.do_compile.3018651
> Log data follows:
> | DEBUG: Executing shell function do_compile
> | NOTE: Using rust targets from /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1
> .0+git/rust-targets/
> | NOTE: cargo = /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/recipe-sy
> sroot-native/usr/bin/cargo
> | NOTE: cargo build -v --frozen --target aarch64-oe-linux-gnu --release --manifest-path=/local/mnt/workspace/kraghava/upstream-crossv
> m/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/sources/crosvm-0.1.0+git//Cargo.toml
> | error: failed to load source for dependency `minijail_src`
> |
> | Caused by:
> | unable to update /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/sour
> ces/crosvm-0.1.0+git/third_party/minijail
> |
> | Caused by:
> | failed to read `/local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/sourc
> es/crosvm-0.1.0+git/third_party/minijail/Cargo.toml`
> |
> | Caused by:
> | No such file or directory (os error 2)
> | WARNING: /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/temp/run.do_co
> mpile.3018651:184 exit 101 from '"cargo" build -v --frozen --target aarch64-oe-linux-gnu --release --manifest-path=/local/mnt/workspa
> ce/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/sources/crosvm-0.1.0+git//Cargo.toml "$@"'
> | WARNING: Backtrace (BB generated script):
> | #1: oe_cargo_build, /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+g
> it/temp/run.do_compile.3018651, line 184
> | #2: cargo_do_compile, /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0
> +git/temp/run.do_compile.3018651, line 156
> | #3: do_compile, /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/t
> emp/run.do_compile.3018651, line 151
> | #4: main, /local/mnt/workspace/kraghava/upstream-crossvm/build-qemuarm64/tmp/work/cortexa57-oe-linux/crosvm/0.1.0+git/temp/ru
> n.do_compile.3018651, line 197
Thank you,
Keerthivasan Raghavan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM)
2026-06-20 3:42 ` Bruce Ashfield
2026-06-22 15:50 ` Keerthivasan Raghavan
[not found] ` <18BB72009F835ED2.943537@lists.yoctoproject.org>
@ 2026-06-22 20:49 ` Bruce Ashfield
2 siblings, 0 replies; 11+ messages in thread
From: Bruce Ashfield @ 2026-06-22 20:49 UTC (permalink / raw)
To: kraghava, meta-virtualization; +Cc: vkraleti, anujmitt, sbanerje
Thanks for the update — the specific config.toml output and the
pointer to the rust/minijail subdir path made it easy to reproduce.
My earlier read was against an old, stale build state that masked the
real failure; once I cleansstate'd and went through a full do_compile
from scratch, the actual picture matched what you reported and I could
see what's going on.
Two things are happening:
1. cargo_common's auto-injection is the wrong tool for this case.
cargo_common_do_patch_paths() (OE-core cargo_common.bbclass, walked
from do_configure[postfuncs]) sees every git SRC_URI with both name=
and destsuffix= set, and appends:
[patch."https://github.com/google/minijail.git"]
minijail = { path = "${UNPACKDIR}/git/third_party/minijail" }
The path is the minijail repo root — but minijail has no top-level
Cargo.toml; the Rust crate lives at rust/minijail/Cargo.toml. Cargo
eagerly validates every [patch."<url>"] entry by opening the path's
Cargo.toml to learn which crate is there, so a missing file is a
hard error that fires before "unused patch" warnings ever get a
chance.
crosvm's own upstream Cargo.toml already does the right redirect:
[patch.crates-io]
minijail = { path = "third_party/minijail/rust/minijail" }
bitbake's destsuffix already places the minijail repo at exactly the
location that relative path expects, so this entry resolves to a
real Cargo.toml and is sufficient on its own. Cleaner than rewriting
generated state after the fact is to drop cargo_common's auto-
injection before it ever runs — a four-line python anonymous block
removes cargo_common_do_patch_paths from do_configure[postfuncs],
config.toml stays clean, no sed needed.
2. minijail-sys bindgen wiring is missing from the recipe.
On the way to validating (1), do_compile failed at:
../../libminijail.h:18:10: fatal error: 'stdbool.h' file not found
thread 'main' panicked at ... third_party/minijail/
rust/minijail-sys/build.rs:120:39:
failed to generate bindings: ClangDiagnostic(...)
minijail-sys' build.rs uses the bindgen crate (in-process libclang)
to generate Rust FFI bindings for libminijail.h. Without clang-native
in DEPENDS and the corresponding LIBCLANG_PATH /
BINDGEN_EXTRA_CLANG_ARGS exports, libclang can't find its own
resource dir, the C header parse blows up at stdbool.h, and bindings
generation panics.
v2 presumably builds for you because your environment provides
clang-native and the right include paths via another route (meta-
clang in bblayers, or a transitive dep). Adding the wiring to the
recipe directly makes it work in a stock poky + meta-virt tree as
well, which is what we need for the layer.
Patch below is a single diff against v2 1/2 — full `bitbake crosvm`
from cleansstate, 1448 tasks, all succeeded, 12 MB aarch64 ELF
produced on cortexa57. Feel free to fold into v3 or just take it
verbatim.
----- 8< -----
>From e244155f1a869994928ea4ec35c4b869027ee379 Mon Sep 17 00:00:00 2001
From: Bruce Ashfield <bruce.ashfield@gmail.com>
Date: Mon, 22 Jun 2026 20:41:44 +0000
Subject: [PATCH] crosvm: replace cargo patch-table sed with postfunc-remove
+ add bindgen wiring
Two fixes to make the v2 recipe build on a stock OE-core + meta-virt
master tree.
1. do_filter_minijail_cargo_config / sed -> postfunc-remove
cargo_common_do_patch_paths() (in OE-core's cargo_common.bbclass) walks
SRC_URI for git entries with both name= and destsuffix= set and appends
to ${CARGO_HOME}/config.toml:
[patch."https://github.com/google/minijail.git"]
minijail = { path = "${UNPACKDIR}/git/third_party/minijail" }
The path is the minijail repo root — but minijail has no top-level
Cargo.toml. The Rust crate lives at rust/minijail/Cargo.toml. cargo
eagerly validates every [patch."<url>"] entry by reading the path's
Cargo.toml to learn what crate is at that path; a missing file is a
hard error before the "unused patch" diagnostic would ever fire.
crosvm's own upstream Cargo.toml already supplies the correct redirect:
[patch.crates-io]
minijail = { path = "third_party/minijail/rust/minijail" }
pointing at the rust/minijail subdirectory where the Cargo.toml lives.
bitbake's destsuffix places the minijail repo at exactly the location
that relative path expects, so this entry resolves to a real Cargo.toml
and is sufficient on its own.
The v2 recipe worked around this by sed'ing the cargo_common-injected
line out of config.toml after the fact. Replace that with a python
anonymous block that drops cargo_common_do_patch_paths from
do_configure[postfuncs] before it ever runs — config.toml stays clean
and there's no rewrite of generated state.
2. minijail-sys bindgen wiring
minijail-sys's build.rs uses the bindgen crate (in-process libclang)
to generate Rust FFI bindings for libminijail.h. Without DEPENDS on
clang-native and the corresponding LIBCLANG_PATH /
BINDGEN_EXTRA_CLANG_ARGS exports, bindgen fails at do_compile:
../../libminijail.h:18:10: fatal error: 'stdbool.h' file not found
thread 'main' panicked at ... third_party/minijail/rust/
minijail-sys/build.rs:120:39:
failed to generate bindings: ClangDiagnostic(...)
v2 builds for environments that already provide clang-native and the
right include paths via another route (e.g. meta-clang in bblayers),
but the recipe should pull in its own wiring so it works in a stock
tree.
Verified by a full `bitbake crosvm` from cleansstate on cortexa57 against
poky/meta-virtualization master: 1448 tasks, all succeeded, 12 MB
crosvm aarch64 ELF produced, do_package_qa clean.
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
recipes-extended/crosvm/crosvm_0.1.0.bb | 43 ++++++++++++-------------
1 file changed, 21 insertions(+), 22 deletions(-)
diff --git a/recipes-extended/crosvm/crosvm_0.1.0.bb b/recipes-extended/crosvm/crosvm_0.1.0.bb
index ab629c69..471d825c 100644
--- a/recipes-extended/crosvm/crosvm_0.1.0.bb
+++ b/recipes-extended/crosvm/crosvm_0.1.0.bb
@@ -28,7 +28,14 @@ SRCREV_FORMAT = "crosvm_minijail"
# consistency, not an upstream project release.
PV = "0.1.0+git"
-DEPENDS += "libcap wayland wayland-native protobuf-native wayland-protocols"
+DEPENDS += "libcap wayland wayland-native protobuf-native wayland-protocols clang-native"
+
+# minijail-sys' build.rs uses the bindgen crate (in-process libclang) to
+# generate Rust FFI bindings for libminijail.h. Point bindgen at the
+# clang-native libclang and pass the target sysroot so cross-compiled
+# header parsing resolves correctly.
+export LIBCLANG_PATH = "${STAGING_LIBDIR_NATIVE}"
+export BINDGEN_EXTRA_CLANG_ARGS = "--sysroot=${STAGING_DIR_HOST}"
REQUIRED_DISTRO_FEATURES = "kvm"
@@ -36,27 +43,19 @@ COMPATIBLE_HOST = "(aarch64|x86_64).*-linux.*"
BBCLASSEXTEND = "native"
-# cargo_common_do_patch_paths() auto-generates Cargo [patch] entries for
-# git SRC_URI items that set both "name" and "destsuffix".
-# When "subdir" is also used, cargo_common builds the path as
-# ${UNPACKDIR}/${destsuffix}/${subdir}, but BitBake unpacks as
-# ${UNPACKDIR}/${subdir}/${destsuffix}. For crosvm's minijail source, that
-# mismatch can point Cargo at a directory without Cargo.toml.
-# Remove the generated entry from ${CARGO_HOME}/config.toml; crosvm's
-# Cargo.toml already provides the correct patch path.
-do_filter_minijail_cargo_config() {
-
- cfg="${CARGO_HOME}/config.toml"
-
- if [ ! -f "$cfg" ]; then
- bbwarn "Skipping missing Cargo config: $cfg"
- exit 0
- fi
-
- bbnote "Processing Cargo config: $cfg"
- sed -i '/minijail/d' "$cfg"
+# crosvm's own Cargo.toml already supplies [patch.crates-io] minijail =
+# { path = "third_party/minijail/rust/minijail" }
+# pointing at the rust/minijail subdirectory where minijail's Cargo.toml
+# actually lives. cargo_common_do_patch_paths() would inject a competing
+# [patch."<minijail git URL>"] minijail = { path = "<unpackdir>/git/third_party/minijail" }
+# pointing at the minijail repo root, where there is no Cargo.toml — cargo
+# eagerly validates patch entries and errors out before it would even reach
+# the "unused patch" path. Disable the auto-injection; crosvm's upstream
+# table is the authoritative one.
+python () {
+ pf = (d.getVarFlag("do_configure", "postfuncs") or "").split()
+ pf = [f for f in pf if f != "cargo_common_do_patch_paths"]
+ d.setVarFlag("do_configure", "postfuncs", " ".join(pf))
}
-addtask filter_minijail_cargo_config after do_configure before do_compile
-
require crosvm-crates.inc
--
2.34.1
Bruce
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-06-22 20:49 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-13 6:07 [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Keerthivasan Raghavan
2026-06-13 6:07 ` [PATCH v2 1/2] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) Keerthivasan Raghavan
2026-06-20 3:42 ` Bruce Ashfield
2026-06-22 15:50 ` Keerthivasan Raghavan
[not found] ` <18BB72009F835ED2.943537@lists.yoctoproject.org>
2026-06-22 16:01 ` [meta-virtualization] " Keerthivasan Raghavan
[not found] ` <18BB729F07DE7EAA.1048178@lists.yoctoproject.org>
2026-06-22 16:35 ` Keerthivasan Raghavan
2026-06-22 20:49 ` Bruce Ashfield
2026-06-13 6:07 ` [PATCH v2 2/2] crosvm-image-minimal: add a reference image for crosvm demo Keerthivasan Raghavan
2026-06-20 3:42 ` Bruce Ashfield
2026-06-22 16:12 ` Keerthivasan Raghavan
2026-06-20 3:42 ` [PATCH v2 0/2] Add crosvm recipe to meta-virtualization Bruce Ashfield
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.