All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] uutils-coreutils: move from meta-openembedded
@ 2026-10-10 11:30 ecordonnier
  2026-10-10 18:33 ` Collin Funk
  2026-10-12 13:04 ` Alexander Kanavin
  0 siblings, 2 replies; 11+ messages in thread
From: ecordonnier @ 2026-10-10 11:30 UTC (permalink / raw)
  To: openembedded-core; +Cc: Etienne Cordonnier

From: Etienne Cordonnier <ecordonnier@snap.com>

uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
enough for production use, so move the recipe from meta-oe to oe-core.
It provides and rprovides coreutils, and is excluded from world unless
selected as the coreutils provider.

AI-Generated: Uses Claude Sonnet 5.5
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
---
 .../conf/distro/include/default-providers.inc |    3 +
 meta/conf/distro/include/maintainers.inc      |    1 +
 .../uutils-coreutils-crates.inc               | 1250 +++++++++++++++++
 .../uutils-coreutils_0.12.0.bb                |   86 ++
 4 files changed, 1340 insertions(+)
 create mode 100644 meta/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
 create mode 100644 meta/recipes-core/uutils-coreutils/uutils-coreutils_0.12.0.bb

diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc
index c0a5d1c75e..172ce8a237 100644
--- a/meta/conf/distro/include/default-providers.inc
+++ b/meta/conf/distro/include/default-providers.inc
@@ -38,6 +38,9 @@ VIRTUAL-RUNTIME_libsdl2 ?= "libsdl2"
 #
 # Default recipe providers
 #
+PREFERRED_PROVIDER_coreutils ?= "coreutils"
+PREFERRED_PROVIDER_coreutils-native ?= "coreutils-native"
+PREFERRED_PROVIDER_nativesdk-coreutils ?= "nativesdk-coreutils"
 PREFERRED_PROVIDER_dbus-glib ?= "dbus-glib"
 PREFERRED_PROVIDER_dbus-glib-native ?= "dbus-glib-native"
 PREFERRED_PROVIDER_gdk-pixbuf ?= "gdk-pixbuf"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 94ab0ccace..51ff75f0f6 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -867,6 +867,7 @@ RECIPE_MAINTAINER:pn-utfcpp = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-util-linux = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER:pn-util-linux-libuuid = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER:pn-util-macros = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-uutils-coreutils = "Etienne Cordonnier <ecordonnier@snap.com>"
 RECIPE_MAINTAINER:pn-v86d = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-vala = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-valgrind = "Mingli Yu <mingli.yu@windriver.com>"
diff --git a/meta/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc b/meta/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
new file mode 100644
index 0000000000..17077e7c8f
--- /dev/null
+++ b/meta/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
@@ -0,0 +1,1250 @@
+# Autogenerated with 'bitbake -c update_crates uutils-coreutils'
+
+# from Cargo.lock
+SRC_URI += " \
+    crate://crates.io/adler2/2.0.1 \
+    crate://crates.io/aho-corasick/1.1.5 \
+    crate://crates.io/allocator-api2/0.2.21 \
+    crate://crates.io/android_system_properties/0.1.6 \
+    crate://crates.io/ansi-width/0.1.0 \
+    crate://crates.io/anstream/1.0.0 \
+    crate://crates.io/anstyle/1.0.14 \
+    crate://crates.io/anstyle-parse/1.0.0 \
+    crate://crates.io/anstyle-query/1.1.5 \
+    crate://crates.io/anstyle-wincon/3.0.11 \
+    crate://crates.io/anyhow/1.0.104 \
+    crate://crates.io/approx/0.5.1 \
+    crate://crates.io/ariadne/0.6.0 \
+    crate://crates.io/arrayvec/0.7.8 \
+    crate://crates.io/autocfg/1.5.1 \
+    crate://crates.io/aws-lc-sys/0.41.0 \
+    crate://crates.io/base64-simd/0.8.0 \
+    crate://crates.io/bigdecimal/0.4.10 \
+    crate://crates.io/bindgen/0.72.1 \
+    crate://crates.io/bit-set/0.8.0 \
+    crate://crates.io/bit-vec/0.8.0 \
+    crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bitflags/2.13.1 \
+    crate://crates.io/bitvec/1.1.1 \
+    crate://crates.io/blake2b_simd/1.0.5 \
+    crate://crates.io/blake3/1.8.7 \
+    crate://crates.io/block-buffer/0.12.1 \
+    crate://crates.io/block2/0.6.2 \
+    crate://crates.io/bstr/1.13.1 \
+    crate://crates.io/bumpalo/3.20.3 \
+    crate://crates.io/bytecount/0.6.9 \
+    crate://crates.io/byteorder/1.5.0 \
+    crate://crates.io/calendrical_calculations/0.2.4 \
+    crate://crates.io/cc/1.4.4 \
+    crate://crates.io/cexpr/0.6.0 \
+    crate://crates.io/cfg-if/1.0.4 \
+    crate://crates.io/cfg_aliases/0.2.2 \
+    crate://crates.io/chacha20/0.10.2 \
+    crate://crates.io/chrono/0.4.45 \
+    crate://crates.io/clang-sys/1.9.1 \
+    crate://crates.io/clap/4.6.7 \
+    crate://crates.io/clap_builder/4.6.7 \
+    crate://crates.io/clap_complete/4.6.11 \
+    crate://crates.io/clap_lex/1.1.0 \
+    crate://crates.io/clap_mangen/0.3.3 \
+    crate://crates.io/cmake/0.1.58 \
+    crate://crates.io/codspeed/5.0.1 \
+    crate://crates.io/codspeed-divan-compat/5.0.1 \
+    crate://crates.io/codspeed-divan-compat-macros/5.0.1 \
+    crate://crates.io/codspeed-divan-compat-walltime/5.0.1 \
+    crate://crates.io/colorchoice/1.0.5 \
+    crate://crates.io/colored/3.1.1 \
+    crate://crates.io/condtype/1.3.0 \
+    crate://crates.io/console/0.16.4 \
+    crate://crates.io/const-random/0.1.18 \
+    crate://crates.io/const-random-macro/0.1.16 \
+    crate://crates.io/constant_time_eq/0.4.2 \
+    crate://crates.io/core-foundation-sys/0.8.7 \
+    crate://crates.io/core_maths/0.1.1 \
+    crate://crates.io/cpufeatures/0.3.1 \
+    crate://crates.io/crc/3.3.0 \
+    crate://crates.io/crc-catalog/2.5.0 \
+    crate://crates.io/crc-fast/1.9.0 \
+    crate://crates.io/crc32fast/1.5.1 \
+    crate://crates.io/crossbeam-deque/0.8.7 \
+    crate://crates.io/crossbeam-epoch/0.9.20 \
+    crate://crates.io/crossbeam-utils/0.8.22 \
+    crate://crates.io/crossterm/0.29.0 \
+    crate://crates.io/crossterm_winapi/0.9.1 \
+    crate://crates.io/crunchy/0.2.4 \
+    crate://crates.io/crypto-common/0.1.7 \
+    crate://crates.io/crypto-common/0.2.2 \
+    crate://crates.io/ctor/1.0.13 \
+    crate://crates.io/ctrlc/3.5.2 \
+    crate://crates.io/data-encoding/2.11.1 \
+    crate://crates.io/data-encoding-macro/0.1.21 \
+    crate://crates.io/data-encoding-macro-internal/0.1.19 \
+    crate://crates.io/defmt/1.1.1 \
+    crate://crates.io/defmt-macros/1.1.1 \
+    crate://crates.io/defmt-parser/1.0.0 \
+    crate://crates.io/deranged/0.5.8 \
+    crate://crates.io/diff/0.1.13 \
+    crate://crates.io/digest/0.10.7 \
+    crate://crates.io/digest/0.11.3 \
+    crate://crates.io/dispatch2/0.3.1 \
+    crate://crates.io/displaydoc/0.2.7 \
+    crate://crates.io/divan-macros/0.1.17 \
+    crate://crates.io/dlv-list/0.5.2 \
+    crate://crates.io/dns-lookup/4.0.1 \
+    crate://crates.io/document-features/0.2.12 \
+    crate://crates.io/dunce/1.0.5 \
+    crate://crates.io/either/1.18.0 \
+    crate://crates.io/encode_unicode/1.0.0 \
+    crate://crates.io/equivalent/1.0.2 \
+    crate://crates.io/errno/0.3.14 \
+    crate://crates.io/fancy-regex/0.19.2 \
+    crate://crates.io/fastrand/2.5.0 \
+    crate://crates.io/filedescriptor/0.8.3 \
+    crate://crates.io/filetime/0.2.29 \
+    crate://crates.io/find-msvc-tools/0.1.11 \
+    crate://crates.io/fixed_decimal/0.7.2 \
+    crate://crates.io/flate2/1.1.10 \
+    crate://crates.io/fluent/0.17.0 \
+    crate://crates.io/fluent-bundle/0.16.0 \
+    crate://crates.io/fluent-langneg/0.13.1 \
+    crate://crates.io/fluent-syntax/0.12.0 \
+    crate://crates.io/foldhash/0.2.0 \
+    crate://crates.io/foreign-types/0.3.2 \
+    crate://crates.io/foreign-types-shared/0.1.1 \
+    crate://crates.io/fs_extra/1.3.0 \
+    crate://crates.io/fsevent-sys/4.1.0 \
+    crate://crates.io/funty/2.0.0 \
+    crate://crates.io/futures-core/0.3.34 \
+    crate://crates.io/futures-task/0.3.34 \
+    crate://crates.io/futures-timer/3.0.4 \
+    crate://crates.io/futures-util/0.3.34 \
+    crate://crates.io/gcd/2.3.0 \
+    crate://crates.io/generic-array/0.14.7 \
+    crate://crates.io/getrandom/0.2.17 \
+    crate://crates.io/getrandom/0.4.3 \
+    crate://crates.io/glob/0.3.4 \
+    crate://crates.io/half/2.7.1 \
+    crate://crates.io/hashbrown/0.14.5 \
+    crate://crates.io/hashbrown/0.16.1 \
+    crate://crates.io/hashbrown/0.17.1 \
+    crate://crates.io/hex/0.4.3 \
+    crate://crates.io/hex-literal/1.1.0 \
+    crate://crates.io/hostname/0.4.2 \
+    crate://crates.io/hybrid-array/0.4.14 \
+    crate://crates.io/iana-time-zone/0.1.65 \
+    crate://crates.io/iana-time-zone-haiku/0.1.2 \
+    crate://crates.io/icu_calendar/2.3.0 \
+    crate://crates.io/icu_calendar_data/2.3.0 \
+    crate://crates.io/icu_collator/2.3.1 \
+    crate://crates.io/icu_collator_data/2.3.0 \
+    crate://crates.io/icu_collections/2.3.0 \
+    crate://crates.io/icu_datetime/2.3.0 \
+    crate://crates.io/icu_datetime_data/2.3.0 \
+    crate://crates.io/icu_decimal/2.3.0 \
+    crate://crates.io/icu_decimal_data/2.3.0 \
+    crate://crates.io/icu_locale/2.3.1 \
+    crate://crates.io/icu_locale_core/2.3.0 \
+    crate://crates.io/icu_locale_data/2.3.0 \
+    crate://crates.io/icu_locale_fallback/2.3.0 \
+    crate://crates.io/icu_locale_fallback_data/2.3.0 \
+    crate://crates.io/icu_normalizer/2.3.0 \
+    crate://crates.io/icu_normalizer_data/2.3.0 \
+    crate://crates.io/icu_pattern/0.5.0 \
+    crate://crates.io/icu_plurals/2.3.0 \
+    crate://crates.io/icu_plurals_data/2.3.0 \
+    crate://crates.io/icu_properties/2.3.0 \
+    crate://crates.io/icu_properties_data/2.3.0 \
+    crate://crates.io/icu_provider/2.3.1 \
+    crate://crates.io/icu_segmenter/2.3.0 \
+    crate://crates.io/icu_segmenter_data/2.3.0 \
+    crate://crates.io/icu_time/2.3.0 \
+    crate://crates.io/icu_time_data/2.3.0 \
+    crate://crates.io/indexmap/2.14.1 \
+    crate://crates.io/indicatif/0.18.6 \
+    crate://crates.io/inotify/0.11.5 \
+    crate://crates.io/inotify-sys/0.1.8 \
+    crate://crates.io/intl-memoizer/0.5.3 \
+    crate://crates.io/intl_pluralrules/7.0.2 \
+    crate://crates.io/is_terminal_polyfill/1.70.2 \
+    crate://crates.io/itertools/0.13.0 \
+    crate://crates.io/itertools/0.14.0 \
+    crate://crates.io/itertools/0.15.0 \
+    crate://crates.io/itoa/1.0.18 \
+    crate://crates.io/jiff/0.2.37 \
+    crate://crates.io/jiff-core/0.1.0 \
+    crate://crates.io/jiff-icu/0.2.2 \
+    crate://crates.io/jiff-static/0.2.37 \
+    crate://crates.io/jiff-tzdb/0.1.8 \
+    crate://crates.io/jiff-tzdb-platform/0.1.3 \
+    crate://crates.io/jobserver/0.1.35 \
+    crate://crates.io/js-sys/0.3.104 \
+    crate://crates.io/keccak/0.2.2 \
+    crate://crates.io/kqueue/1.2.1 \
+    crate://crates.io/kqueue-sys/1.1.2 \
+    crate://crates.io/libc/0.2.189 \
+    crate://crates.io/libloading/0.8.9 \
+    crate://crates.io/libm/0.2.16 \
+    crate://crates.io/link-section/0.19.3 \
+    crate://crates.io/linktime-proc-macro/0.2.3 \
+    crate://crates.io/linux-raw-sys/0.12.1 \
+    crate://crates.io/litemap/0.8.3 \
+    crate://crates.io/litrs/1.0.0 \
+    crate://crates.io/lock_api/0.4.14 \
+    crate://crates.io/log/0.4.34 \
+    crate://crates.io/lru/0.16.4 \
+    crate://crates.io/lscolors/0.21.0 \
+    crate://crates.io/md-5/0.11.0 \
+    crate://crates.io/memchr/2.8.3 \
+    crate://crates.io/memmap2/0.9.11 \
+    crate://crates.io/minimal-lexical/0.2.1 \
+    crate://crates.io/miniz_oxide/0.9.1 \
+    crate://crates.io/mio/1.2.2 \
+    crate://crates.io/nix/0.31.3 \
+    crate://crates.io/nom/7.1.3 \
+    crate://crates.io/nom/8.0.0 \
+    crate://crates.io/notify/8.2.0 \
+    crate://crates.io/notify-types/2.1.0 \
+    crate://crates.io/nu-ansi-term/0.50.3 \
+    crate://crates.io/num-bigint/0.4.8 \
+    crate://crates.io/num-conv/0.2.2 \
+    crate://crates.io/num-integer/0.1.47 \
+    crate://crates.io/num-modular/0.6.1 \
+    crate://crates.io/num-prime/0.5.0 \
+    crate://crates.io/num-traits/0.2.19 \
+    crate://crates.io/num_threads/0.1.7 \
+    crate://crates.io/objc2/0.6.4 \
+    crate://crates.io/objc2-encode/4.1.0 \
+    crate://crates.io/once_cell/1.21.4 \
+    crate://crates.io/once_cell_polyfill/1.70.2 \
+    crate://crates.io/openssl/0.10.81 \
+    crate://crates.io/openssl-macros/0.1.1 \
+    crate://crates.io/openssl-src/300.6.1+3.6.3 \
+    crate://crates.io/openssl-sys/0.9.117 \
+    crate://crates.io/ordered-multimap/0.7.3 \
+    crate://crates.io/os_display/0.1.4 \
+    crate://crates.io/outref/0.5.2 \
+    crate://crates.io/parking_lot/0.12.5 \
+    crate://crates.io/parking_lot_core/0.9.12 \
+    crate://crates.io/parse_datetime/0.16.0 \
+    crate://crates.io/phf/0.14.0 \
+    crate://crates.io/phf_codegen/0.14.0 \
+    crate://crates.io/phf_generator/0.14.0 \
+    crate://crates.io/phf_shared/0.14.0 \
+    crate://crates.io/pin-project-lite/0.2.17 \
+    crate://crates.io/pkg-config/0.3.34 \
+    crate://crates.io/platform-info/2.2.0 \
+    crate://crates.io/portable-atomic/1.15.0 \
+    crate://crates.io/portable-atomic-util/0.2.7 \
+    crate://crates.io/potential_utf/0.1.6 \
+    crate://crates.io/powerfmt/0.2.0 \
+    crate://crates.io/ppv-lite86/0.2.21 \
+    crate://crates.io/pretty_assertions/1.4.1 \
+    crate://crates.io/prettyplease/0.2.37 \
+    crate://crates.io/proc-macro-crate/3.5.0 \
+    crate://crates.io/proc-macro2/1.0.107 \
+    crate://crates.io/procfs/0.18.0 \
+    crate://crates.io/procfs-core/0.18.0 \
+    crate://crates.io/quote/1.0.47 \
+    crate://crates.io/r-efi/6.0.0 \
+    crate://crates.io/radium/0.7.0 \
+    crate://crates.io/rand/0.8.8 \
+    crate://crates.io/rand/0.10.2 \
+    crate://crates.io/rand_chacha/0.3.1 \
+    crate://crates.io/rand_chacha/0.10.0 \
+    crate://crates.io/rand_core/0.6.4 \
+    crate://crates.io/rand_core/0.10.1 \
+    crate://crates.io/rayon/1.12.0 \
+    crate://crates.io/rayon-core/1.13.0 \
+    crate://crates.io/redox_syscall/0.5.18 \
+    crate://crates.io/regex/1.13.1 \
+    crate://crates.io/regex-automata/0.4.18 \
+    crate://crates.io/regex-lite/0.1.9 \
+    crate://crates.io/regex-syntax/0.8.11 \
+    crate://crates.io/relative-path/1.9.3 \
+    crate://crates.io/rlimit/0.11.0 \
+    crate://crates.io/roff/1.1.1 \
+    crate://crates.io/rstest/0.27.0 \
+    crate://crates.io/rstest_macros/0.27.0 \
+    crate://crates.io/rstest_reuse/0.7.0 \
+    crate://crates.io/rust-ini/0.21.3 \
+    crate://crates.io/rustc-hash/2.1.3 \
+    crate://crates.io/rustc_version/0.4.1 \
+    crate://crates.io/rustix/1.1.4 \
+    crate://crates.io/rustversion/1.0.23 \
+    crate://crates.io/same-file/1.0.6 \
+    crate://crates.io/scopeguard/1.2.0 \
+    crate://crates.io/self_cell/1.3.0 \
+    crate://crates.io/selinux/0.6.3 \
+    crate://crates.io/selinux-sys/0.7.0 \
+    crate://crates.io/semver/1.0.28 \
+    crate://crates.io/serde/1.0.229 \
+    crate://crates.io/serde_core/1.0.229 \
+    crate://crates.io/serde_derive/1.0.229 \
+    crate://crates.io/serde_json/1.0.151 \
+    crate://crates.io/sha1/0.11.0 \
+    crate://crates.io/sha2/0.11.0 \
+    crate://crates.io/sha3/0.12.0 \
+    crate://crates.io/shake/0.1.0 \
+    crate://crates.io/shlex/1.3.0 \
+    crate://crates.io/shlex/2.0.1 \
+    crate://crates.io/signal-hook/0.3.18 \
+    crate://crates.io/signal-hook-mio/0.2.5 \
+    crate://crates.io/signal-hook-registry/1.4.8 \
+    crate://crates.io/simd-adler32/0.3.10 \
+    crate://crates.io/siphasher/1.0.3 \
+    crate://crates.io/slab/0.4.12 \
+    crate://crates.io/sm3/0.5.0 \
+    crate://crates.io/smallvec/1.15.2 \
+    crate://crates.io/smawk/0.3.3 \
+    crate://crates.io/socket2/0.6.5 \
+    crate://crates.io/spin/0.10.1 \
+    crate://crates.io/sponge-cursor/0.1.0 \
+    crate://crates.io/stable_deref_trait/1.2.1 \
+    crate://crates.io/statrs/0.18.0 \
+    crate://crates.io/strsim/0.11.1 \
+    crate://crates.io/syn/2.0.119 \
+    crate://crates.io/syn/3.0.4 \
+    crate://crates.io/synstructure/0.14.0 \
+    crate://crates.io/tap/1.0.1 \
+    crate://crates.io/tempfile/3.27.0 \
+    crate://crates.io/terminal_size/0.4.4 \
+    crate://crates.io/textwrap/0.16.4 \
+    crate://crates.io/thiserror/1.0.69 \
+    crate://crates.io/thiserror/2.0.20 \
+    crate://crates.io/thiserror-impl/1.0.69 \
+    crate://crates.io/thiserror-impl/2.0.20 \
+    crate://crates.io/time/0.3.55 \
+    crate://crates.io/time-core/0.1.9 \
+    crate://crates.io/time-macros/0.2.32 \
+    crate://crates.io/tiny-keccak/2.0.2 \
+    crate://crates.io/tinystr/0.8.4 \
+    crate://crates.io/toml_datetime/1.1.1+spec-1.1.0 \
+    crate://crates.io/toml_edit/0.25.13+spec-1.1.0 \
+    crate://crates.io/toml_parser/1.1.3+spec-1.1.0 \
+    crate://crates.io/type-map/0.5.1 \
+    crate://crates.io/typed-path/0.12.3 \
+    crate://crates.io/typenum/1.20.1 \
+    crate://crates.io/unic-langid/0.9.6 \
+    crate://crates.io/unic-langid-impl/0.9.6 \
+    crate://crates.io/unicode-ident/1.0.24 \
+    crate://crates.io/unicode-width/0.1.14 \
+    crate://crates.io/unicode-width/0.2.2 \
+    crate://crates.io/unindent/0.2.4 \
+    crate://crates.io/unit-prefix/0.5.2 \
+    crate://crates.io/utf16_iter/1.0.5 \
+    crate://crates.io/utf8_iter/1.0.4 \
+    crate://crates.io/utf8parse/0.2.2 \
+    crate://crates.io/utmp-classic/0.1.6 \
+    crate://crates.io/utmp-classic-raw/0.1.3 \
+    crate://crates.io/uutils_term_grid/0.8.0 \
+    crate://crates.io/vcpkg/0.2.15 \
+    crate://crates.io/version_check/0.9.5 \
+    crate://crates.io/vsimd/0.8.0 \
+    crate://crates.io/walkdir/2.5.0 \
+    crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.127 \
+    crate://crates.io/wasm-bindgen-macro/0.2.127 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.127 \
+    crate://crates.io/wasm-bindgen-shared/0.2.127 \
+    crate://crates.io/web-time/1.1.0 \
+    crate://crates.io/wild/2.2.1 \
+    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.11 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+    crate://crates.io/windows-core/0.62.2 \
+    crate://crates.io/windows-implement/0.60.2 \
+    crate://crates.io/windows-interface/0.59.3 \
+    crate://crates.io/windows-link/0.2.1 \
+    crate://crates.io/windows-result/0.4.1 \
+    crate://crates.io/windows-strings/0.5.1 \
+    crate://crates.io/windows-sys/0.60.2 \
+    crate://crates.io/windows-sys/0.61.2 \
+    crate://crates.io/windows-targets/0.53.5 \
+    crate://crates.io/windows_aarch64_gnullvm/0.53.1 \
+    crate://crates.io/windows_aarch64_msvc/0.53.1 \
+    crate://crates.io/windows_i686_gnu/0.53.1 \
+    crate://crates.io/windows_i686_gnullvm/0.53.1 \
+    crate://crates.io/windows_i686_msvc/0.53.1 \
+    crate://crates.io/windows_x86_64_gnu/0.53.1 \
+    crate://crates.io/windows_x86_64_gnullvm/0.53.1 \
+    crate://crates.io/windows_x86_64_msvc/0.53.1 \
+    crate://crates.io/winnow/1.0.4 \
+    crate://crates.io/write16/1.0.0 \
+    crate://crates.io/writeable/0.6.4 \
+    crate://crates.io/wyz/0.5.1 \
+    crate://crates.io/xattr/1.6.1 \
+    crate://crates.io/yansi/1.0.1 \
+    crate://crates.io/yoke/0.8.3 \
+    crate://crates.io/yoke-derive/0.8.3 \
+    crate://crates.io/z85/3.0.7 \
+    crate://crates.io/zerocopy/0.7.35 \
+    crate://crates.io/zerocopy/0.8.56 \
+    crate://crates.io/zerocopy-derive/0.7.35 \
+    crate://crates.io/zerocopy-derive/0.8.56 \
+    crate://crates.io/zerofrom/0.1.8 \
+    crate://crates.io/zerofrom-derive/0.1.8 \
+    crate://crates.io/zerotrie/0.2.5 \
+    crate://crates.io/zerovec/0.11.8 \
+    crate://crates.io/zerovec-derive/0.11.6 \
+    crate://crates.io/zip/8.6.0 \
+    crate://crates.io/zlib-rs/0.6.7 \
+    crate://crates.io/zmij/1.0.23 \
+    crate://crates.io/zopfli/0.8.3 \
+"
+
+SRC_URI[adler2-2.0.1.sha256sum] = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+SRC_URI[aho-corasick-1.1.5.sha256sum] = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
+SRC_URI[allocator-api2-0.2.21.sha256sum] = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
+SRC_URI[android_system_properties-0.1.6.sha256sum] = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"
+SRC_URI[ansi-width-0.1.0.sha256sum] = "219e3ce6f2611d83b51ec2098a12702112c29e57203a6b0a0929b2cddb486608"
+SRC_URI[anstream-1.0.0.sha256sum] = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
+SRC_URI[anstyle-1.0.14.sha256sum] = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
+SRC_URI[anstyle-parse-1.0.0.sha256sum] = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
+SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
+SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
+SRC_URI[anyhow-1.0.104.sha256sum] = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
+SRC_URI[approx-0.5.1.sha256sum] = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
+SRC_URI[ariadne-0.6.0.sha256sum] = "8454c8a44ce2cb9cc7e7fae67fc6128465b343b92c6631e94beca3c8d1524ea5"
+SRC_URI[arrayvec-0.7.8.sha256sum] = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
+SRC_URI[autocfg-1.5.1.sha256sum] = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
+SRC_URI[aws-lc-sys-0.41.0.sha256sum] = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4"
+SRC_URI[base64-simd-0.8.0.sha256sum] = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
+SRC_URI[bigdecimal-0.4.10.sha256sum] = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
+SRC_URI[bindgen-0.72.1.sha256sum] = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
+SRC_URI[bit-set-0.8.0.sha256sum] = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
+SRC_URI[bit-vec-0.8.0.sha256sum] = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.13.1.sha256sum] = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
+SRC_URI[bitvec-1.1.1.sha256sum] = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837"
+SRC_URI[blake2b_simd-1.0.5.sha256sum] = "3560a7b1951efe814fcd721938313adc56753ca39f4b23847d7e9a2402f5dbff"
+SRC_URI[blake3-1.8.7.sha256sum] = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae"
+SRC_URI[block-buffer-0.12.1.sha256sum] = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
+SRC_URI[block2-0.6.2.sha256sum] = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
+SRC_URI[bstr-1.13.1.sha256sum] = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f"
+SRC_URI[bumpalo-3.20.3.sha256sum] = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
+SRC_URI[bytecount-0.6.9.sha256sum] = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
+SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+SRC_URI[calendrical_calculations-0.2.4.sha256sum] = "5abbd6eeda6885048d357edc66748eea6e0268e3dd11f326fff5bd248d779c26"
+SRC_URI[cc-1.4.4.sha256sum] = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+SRC_URI[cfg_aliases-0.2.2.sha256sum] = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
+SRC_URI[chacha20-0.10.2.sha256sum] = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"
+SRC_URI[chrono-0.4.45.sha256sum] = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
+SRC_URI[clang-sys-1.9.1.sha256sum] = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a"
+SRC_URI[clap-4.6.7.sha256sum] = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946"
+SRC_URI[clap_builder-4.6.7.sha256sum] = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d"
+SRC_URI[clap_complete-4.6.11.sha256sum] = "037e2a1a92236d0aff7e845093f64661d6df4c02c9fcc61a60e9e1d736fa392f"
+SRC_URI[clap_lex-1.1.0.sha256sum] = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
+SRC_URI[clap_mangen-0.3.3.sha256sum] = "211d617eaa4b735c96c9e0228fcbdb5120ef623f2b8cb67ffb84c3e02dbc28a4"
+SRC_URI[cmake-0.1.58.sha256sum] = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
+SRC_URI[codspeed-5.0.1.sha256sum] = "7083f253260bcb4aaa3b4aa4c52973703dabc1a85c2f193997e2689aafa8a919"
+SRC_URI[codspeed-divan-compat-5.0.1.sha256sum] = "bc1065d507e1cbab731a7976db4cef7e47e49b87b4dbc0a925df07d343558420"
+SRC_URI[codspeed-divan-compat-macros-5.0.1.sha256sum] = "2fd05482a95823ffe421e8a9ba24fa22a6a30d594e2c60455cbb43a41bf2d8fa"
+SRC_URI[codspeed-divan-compat-walltime-5.0.1.sha256sum] = "d2f8eae75b8fa85357020a404899c4280d590c9fd1c47640b3ce53106c62d2ee"
+SRC_URI[colorchoice-1.0.5.sha256sum] = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
+SRC_URI[colored-3.1.1.sha256sum] = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34"
+SRC_URI[condtype-1.3.0.sha256sum] = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af"
+SRC_URI[console-0.16.4.sha256sum] = "4fe5f465a4f6fee88fad41b85d990f84c835335e85b5d9e6e63e0d06d28cba7c"
+SRC_URI[const-random-0.1.18.sha256sum] = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+SRC_URI[const-random-macro-0.1.16.sha256sum] = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+SRC_URI[constant_time_eq-0.4.2.sha256sum] = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
+SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+SRC_URI[core_maths-0.1.1.sha256sum] = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
+SRC_URI[cpufeatures-0.3.1.sha256sum] = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"
+SRC_URI[crc-3.3.0.sha256sum] = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
+SRC_URI[crc-catalog-2.5.0.sha256sum] = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853"
+SRC_URI[crc-fast-1.9.0.sha256sum] = "2fd92aca2c6001b1bf5ba0ff84ee74ec8501b52bbef0cac80bf25a6c1d87a83d"
+SRC_URI[crc32fast-1.5.1.sha256sum] = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
+SRC_URI[crossbeam-deque-0.8.7.sha256sum] = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
+SRC_URI[crossbeam-epoch-0.9.20.sha256sum] = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
+SRC_URI[crossbeam-utils-0.8.22.sha256sum] = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
+SRC_URI[crossterm-0.29.0.sha256sum] = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
+SRC_URI[crossterm_winapi-0.9.1.sha256sum] = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+SRC_URI[crunchy-0.2.4.sha256sum] = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
+SRC_URI[crypto-common-0.1.7.sha256sum] = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+SRC_URI[crypto-common-0.2.2.sha256sum] = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
+SRC_URI[ctor-1.0.13.sha256sum] = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d"
+SRC_URI[ctrlc-3.5.2.sha256sum] = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162"
+SRC_URI[data-encoding-2.11.1.sha256sum] = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
+SRC_URI[data-encoding-macro-0.1.21.sha256sum] = "c6a127ecbb3c4632e1525380e04c0c3fcf8dcb44d32a79ea290d8a36906edcd8"
+SRC_URI[data-encoding-macro-internal-0.1.19.sha256sum] = "c54e03a951783e8b327515db3f2a2fd0e3bed362a96b066f341ce66ed49b4ead"
+SRC_URI[defmt-1.1.1.sha256sum] = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
+SRC_URI[defmt-macros-1.1.1.sha256sum] = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
+SRC_URI[defmt-parser-1.0.0.sha256sum] = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
+SRC_URI[deranged-0.5.8.sha256sum] = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
+SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[digest-0.11.3.sha256sum] = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
+SRC_URI[dispatch2-0.3.1.sha256sum] = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
+SRC_URI[displaydoc-0.2.7.sha256sum] = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
+SRC_URI[divan-macros-0.1.17.sha256sum] = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c"
+SRC_URI[dlv-list-0.5.2.sha256sum] = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
+SRC_URI[dns-lookup-4.0.1.sha256sum] = "6120e7e5dcd1c90098e349def389e2797377cdbe6b465ad8fdd115c0c99d5cf2"
+SRC_URI[document-features-0.2.12.sha256sum] = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
+SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
+SRC_URI[either-1.18.0.sha256sum] = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
+SRC_URI[encode_unicode-1.0.0.sha256sum] = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
+SRC_URI[equivalent-1.0.2.sha256sum] = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+SRC_URI[fancy-regex-0.19.2.sha256sum] = "d301f5bf187b3c295fce6468d3875037a0bccc5f6b151c63cac2f85babf21912"
+SRC_URI[fastrand-2.5.0.sha256sum] = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
+SRC_URI[filedescriptor-0.8.3.sha256sum] = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
+SRC_URI[filetime-0.2.29.sha256sum] = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"
+SRC_URI[find-msvc-tools-0.1.11.sha256sum] = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
+SRC_URI[fixed_decimal-0.7.2.sha256sum] = "79c3c892f121fff406e5dd6b28c1b30096b95111c30701a899d4f2b18da6d1bd"
+SRC_URI[flate2-1.1.10.sha256sum] = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
+SRC_URI[fluent-0.17.0.sha256sum] = "8137a6d5a2c50d6b0ebfcb9aaa91a28154e0a70605f112d30cb0cd4a78670477"
+SRC_URI[fluent-bundle-0.16.0.sha256sum] = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4"
+SRC_URI[fluent-langneg-0.13.1.sha256sum] = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0"
+SRC_URI[fluent-syntax-0.12.0.sha256sum] = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198"
+SRC_URI[foldhash-0.2.0.sha256sum] = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+SRC_URI[fs_extra-1.3.0.sha256sum] = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
+SRC_URI[fsevent-sys-4.1.0.sha256sum] = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
+SRC_URI[funty-2.0.0.sha256sum] = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+SRC_URI[futures-core-0.3.34.sha256sum] = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
+SRC_URI[futures-task-0.3.34.sha256sum] = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
+SRC_URI[futures-timer-3.0.4.sha256sum] = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968"
+SRC_URI[futures-util-0.3.34.sha256sum] = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
+SRC_URI[gcd-2.3.0.sha256sum] = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[getrandom-0.2.17.sha256sum] = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+SRC_URI[getrandom-0.4.3.sha256sum] = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
+SRC_URI[glob-0.3.4.sha256sum] = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
+SRC_URI[half-2.7.1.sha256sum] = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
+SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+SRC_URI[hashbrown-0.16.1.sha256sum] = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+SRC_URI[hashbrown-0.17.1.sha256sum] = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[hex-literal-1.1.0.sha256sum] = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1"
+SRC_URI[hostname-0.4.2.sha256sum] = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd"
+SRC_URI[hybrid-array-0.4.14.sha256sum] = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
+SRC_URI[iana-time-zone-0.1.65.sha256sum] = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
+SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+SRC_URI[icu_calendar-2.3.0.sha256sum] = "58655df2f728e46e4eee80bddebefacf52ec3e77cdb925014b47c5a5905eb55c"
+SRC_URI[icu_calendar_data-2.3.0.sha256sum] = "dc00caaa3fb3201ff7a18aa458e8c3ab042b9da154cfdf948bdde3936c31c36e"
+SRC_URI[icu_collator-2.3.1.sha256sum] = "08984ed58ac439ebf3e13d2cf26b0c46a60afcd21721c1d14087c0b240344dda"
+SRC_URI[icu_collator_data-2.3.0.sha256sum] = "f7d7e54efdddeb1208c08dd5d32b53a879ac00d2d3d051b2255fd26821d16368"
+SRC_URI[icu_collections-2.3.0.sha256sum] = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"
+SRC_URI[icu_datetime-2.3.0.sha256sum] = "c44df99c4c5297b05653d1a1629f13bdc9fd4044acfbbaf30b15194a1eed4cd6"
+SRC_URI[icu_datetime_data-2.3.0.sha256sum] = "8bb5555f6e4b42233f58564351ce16d73e9e6ebfce6bdcf29875d0cfc554d6a8"
+SRC_URI[icu_decimal-2.3.0.sha256sum] = "9eb8f655bba2d0c0459e43a5b0e6cd3cd388109898fb3d85d048165e8b0abd08"
+SRC_URI[icu_decimal_data-2.3.0.sha256sum] = "e4c887fc7d4c297cf3f9436864af9e3dba7f8be9415a6c2a7f392f3b1636298c"
+SRC_URI[icu_locale-2.3.1.sha256sum] = "785f595c61ef57169a467eeed7b4b6936a66f6cacbb116a96ee86da983251bf4"
+SRC_URI[icu_locale_core-2.3.0.sha256sum] = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"
+SRC_URI[icu_locale_data-2.3.0.sha256sum] = "d37d91460e362a5cf58907cd7ce871411775ee6294e49a5cc8e6cec16dfa75ea"
+SRC_URI[icu_locale_fallback-2.3.0.sha256sum] = "251af8e57c9400e3eb58242fe5b8b1152b2a64fdf4cf632f923c38ccee6f2fa9"
+SRC_URI[icu_locale_fallback_data-2.3.0.sha256sum] = "decf2a22ec8fa68f1a0c1129a3f8583f8f8bc24e8b9ccbe98ead99f62a4dc3a8"
+SRC_URI[icu_normalizer-2.3.0.sha256sum] = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"
+SRC_URI[icu_normalizer_data-2.3.0.sha256sum] = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"
+SRC_URI[icu_pattern-0.5.0.sha256sum] = "2b3db611446bd92c246b03e4aa0bafa71ddb194af431ddbb42b9d70e4bfce1a0"
+SRC_URI[icu_plurals-2.3.0.sha256sum] = "e475e6766ef87b1d3c1f97be6363995b0bfaeddbc789671615df598a97ff0593"
+SRC_URI[icu_plurals_data-2.3.0.sha256sum] = "1251aa39a95e1333888e499b1263e1c196447a28948acf5bdabd82c046f153bf"
+SRC_URI[icu_properties-2.3.0.sha256sum] = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"
+SRC_URI[icu_properties_data-2.3.0.sha256sum] = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
+SRC_URI[icu_provider-2.3.1.sha256sum] = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"
+SRC_URI[icu_segmenter-2.3.0.sha256sum] = "82d07aafccd67af15d02512a6adf5896fbc5ed00f2e99b471d2efa14016db3db"
+SRC_URI[icu_segmenter_data-2.3.0.sha256sum] = "ae293c039020f9ec10710af98d29ce6aa2051486638b49c9a6409f3b4a9e98ad"
+SRC_URI[icu_time-2.3.0.sha256sum] = "af37e1c3b9f3ab564b619fdf4b22de169f6381eb0f7048e3ca454290c438126b"
+SRC_URI[icu_time_data-2.3.0.sha256sum] = "005ff86fa5851a77fc0a977b72d717f777bd9230415a247219d7898aefb1517a"
+SRC_URI[indexmap-2.14.1.sha256sum] = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb"
+SRC_URI[indicatif-0.18.6.sha256sum] = "9433806cd6b4ec1aba79c021c7e4c58fb4c3b9977c085062e611ac929998fb0c"
+SRC_URI[inotify-0.11.5.sha256sum] = "4cc00ea907cab49550b7da656f80ebb97be1b997d931fbcd28d39734e17ce592"
+SRC_URI[inotify-sys-0.1.8.sha256sum] = "c033f80b2c113cdf91ab7a33faa9cbc014726dcad99880c8609af2a370edf37d"
+SRC_URI[intl-memoizer-0.5.3.sha256sum] = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f"
+SRC_URI[intl_pluralrules-7.0.2.sha256sum] = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
+SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
+SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+SRC_URI[itertools-0.14.0.sha256sum] = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
+SRC_URI[itertools-0.15.0.sha256sum] = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc"
+SRC_URI[itoa-1.0.18.sha256sum] = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
+SRC_URI[jiff-0.2.37.sha256sum] = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb"
+SRC_URI[jiff-core-0.1.0.sha256sum] = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09"
+SRC_URI[jiff-icu-0.2.2.sha256sum] = "0e67c2beaae8b10a82d849b9aabb698a43a682f32b17bcdc035d5ecadb44d646"
+SRC_URI[jiff-static-0.2.37.sha256sum] = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212"
+SRC_URI[jiff-tzdb-0.1.8.sha256sum] = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e"
+SRC_URI[jiff-tzdb-platform-0.1.3.sha256sum] = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
+SRC_URI[jobserver-0.1.35.sha256sum] = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
+SRC_URI[js-sys-0.3.104.sha256sum] = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
+SRC_URI[keccak-0.2.2.sha256sum] = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598"
+SRC_URI[kqueue-1.2.1.sha256sum] = "8d763e5b24120b4ddf50de6c92308156765aabfbbccebf401da7cff2d70a41ea"
+SRC_URI[kqueue-sys-1.1.2.sha256sum] = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087"
+SRC_URI[libc-0.2.189.sha256sum] = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
+SRC_URI[libloading-0.8.9.sha256sum] = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
+SRC_URI[libm-0.2.16.sha256sum] = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
+SRC_URI[link-section-0.19.3.sha256sum] = "39c29a617ce3df32c08497bdc1ab6e2376e0b17948ac166a2fbe5977c5954cd9"
+SRC_URI[linktime-proc-macro-0.2.3.sha256sum] = "7e57c38c1e860fd37c604281cdfb1dd2216977fd76a50f85ba2f388ef3219616"
+SRC_URI[linux-raw-sys-0.12.1.sha256sum] = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
+SRC_URI[litemap-0.8.3.sha256sum] = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
+SRC_URI[litrs-1.0.0.sha256sum] = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
+SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+SRC_URI[log-0.4.34.sha256sum] = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
+SRC_URI[lru-0.16.4.sha256sum] = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39"
+SRC_URI[lscolors-0.21.0.sha256sum] = "d60e266dfb1426eb2d24792602e041131fdc0236bb7007abc0e589acafd60929"
+SRC_URI[md-5-0.11.0.sha256sum] = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
+SRC_URI[memchr-2.8.3.sha256sum] = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
+SRC_URI[memmap2-0.9.11.sha256sum] = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.9.1.sha256sum] = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
+SRC_URI[mio-1.2.2.sha256sum] = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427"
+SRC_URI[nix-0.31.3.sha256sum] = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[nom-8.0.0.sha256sum] = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
+SRC_URI[notify-8.2.0.sha256sum] = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
+SRC_URI[notify-types-2.1.0.sha256sum] = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a"
+SRC_URI[nu-ansi-term-0.50.3.sha256sum] = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
+SRC_URI[num-bigint-0.4.8.sha256sum] = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
+SRC_URI[num-conv-0.2.2.sha256sum] = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
+SRC_URI[num-integer-0.1.47.sha256sum] = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
+SRC_URI[num-modular-0.6.1.sha256sum] = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f"
+SRC_URI[num-prime-0.5.0.sha256sum] = "b285c575532a33ef6fdd3a57640d0b1c70e6ca48644d6df7bbd4b7a0cfbbb12d"
+SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+SRC_URI[num_threads-0.1.7.sha256sum] = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+SRC_URI[objc2-0.6.4.sha256sum] = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
+SRC_URI[objc2-encode-4.1.0.sha256sum] = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
+SRC_URI[once_cell-1.21.4.sha256sum] = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
+SRC_URI[openssl-0.10.81.sha256sum] = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
+SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+SRC_URI[openssl-src-300.6.1+3.6.3.sha256sum] = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846"
+SRC_URI[openssl-sys-0.9.117.sha256sum] = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
+SRC_URI[ordered-multimap-0.7.3.sha256sum] = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
+SRC_URI[os_display-0.1.4.sha256sum] = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f"
+SRC_URI[outref-0.5.2.sha256sum] = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
+SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+SRC_URI[parse_datetime-0.16.0.sha256sum] = "503fd4c8b0685e5eb32a8276533611f63e3b44768e9e8724e73f6852c2542f82"
+SRC_URI[phf-0.14.0.sha256sum] = "010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6"
+SRC_URI[phf_codegen-0.14.0.sha256sum] = "41b585a510fb76fdebead6897982ef2a03a21d8e6cbcca904999742a4afc6ffe"
+SRC_URI[phf_generator-0.14.0.sha256sum] = "aeb62e0959d5a1bebc965f4d15d9e2b7cea002b6b0f5ba8cde6cc26738467100"
+SRC_URI[phf_shared-0.14.0.sha256sum] = "c6fd9027e2d9319be6349febd1db4e8d02aa544921200c9b777720ac34a3aa89"
+SRC_URI[pin-project-lite-0.2.17.sha256sum] = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
+SRC_URI[pkg-config-0.3.34.sha256sum] = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
+SRC_URI[platform-info-2.2.0.sha256sum] = "ba7c3f5af00d3596a148cc80178ac690152b71c283d15a8bcea0cddfea759a36"
+SRC_URI[portable-atomic-1.15.0.sha256sum] = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
+SRC_URI[portable-atomic-util-0.2.7.sha256sum] = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
+SRC_URI[potential_utf-0.1.6.sha256sum] = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"
+SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+SRC_URI[ppv-lite86-0.2.21.sha256sum] = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+SRC_URI[pretty_assertions-1.4.1.sha256sum] = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
+SRC_URI[prettyplease-0.2.37.sha256sum] = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+SRC_URI[proc-macro-crate-3.5.0.sha256sum] = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
+SRC_URI[proc-macro2-1.0.107.sha256sum] = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
+SRC_URI[procfs-0.18.0.sha256sum] = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7"
+SRC_URI[procfs-core-0.18.0.sha256sum] = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
+SRC_URI[quote-1.0.47.sha256sum] = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
+SRC_URI[r-efi-6.0.0.sha256sum] = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
+SRC_URI[radium-0.7.0.sha256sum] = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+SRC_URI[rand-0.8.8.sha256sum] = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c"
+SRC_URI[rand-0.10.2.sha256sum] = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_chacha-0.10.0.sha256sum] = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[rand_core-0.10.1.sha256sum] = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
+SRC_URI[rayon-1.12.0.sha256sum] = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
+SRC_URI[rayon-core-1.13.0.sha256sum] = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
+SRC_URI[redox_syscall-0.5.18.sha256sum] = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+SRC_URI[regex-1.13.1.sha256sum] = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
+SRC_URI[regex-automata-0.4.18.sha256sum] = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
+SRC_URI[regex-lite-0.1.9.sha256sum] = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973"
+SRC_URI[regex-syntax-0.8.11.sha256sum] = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
+SRC_URI[relative-path-1.9.3.sha256sum] = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
+SRC_URI[rlimit-0.11.0.sha256sum] = "f35ee2729c56bb610f6dba436bf78135f728b7373bdffae2ec815b2d3eb98cc3"
+SRC_URI[roff-1.1.1.sha256sum] = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189"
+SRC_URI[rstest-0.27.0.sha256sum] = "948203e6d13b83e51a90d7cf236dd58a0065f23f4b902f00f306e7eb2bd09b9c"
+SRC_URI[rstest_macros-0.27.0.sha256sum] = "a8d92eaf7b6e51e12471d71ddc72608e7151573de44099aacfbb1128177c0da4"
+SRC_URI[rstest_reuse-0.7.0.sha256sum] = "b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14"
+SRC_URI[rust-ini-0.21.3.sha256sum] = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
+SRC_URI[rustc-hash-2.1.3.sha256sum] = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
+SRC_URI[rustc_version-0.4.1.sha256sum] = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+SRC_URI[rustix-1.1.4.sha256sum] = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
+SRC_URI[rustversion-1.0.23.sha256sum] = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+SRC_URI[self_cell-1.3.0.sha256sum] = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813"
+SRC_URI[selinux-0.6.3.sha256sum] = "5e27b533f7b8e124356edfe653a21e5a5072585b4c0a67459519844c039bc4e1"
+SRC_URI[selinux-sys-0.7.0.sha256sum] = "acf9f7ddcfd31f0558b246d6ddc4a34fb4550668f364a09dd51f28409157e754"
+SRC_URI[semver-1.0.28.sha256sum] = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+SRC_URI[serde-1.0.229.sha256sum] = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
+SRC_URI[serde_core-1.0.229.sha256sum] = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
+SRC_URI[serde_derive-1.0.229.sha256sum] = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
+SRC_URI[serde_json-1.0.151.sha256sum] = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
+SRC_URI[sha1-0.11.0.sha256sum] = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214"
+SRC_URI[sha2-0.11.0.sha256sum] = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
+SRC_URI[sha3-0.12.0.sha256sum] = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759"
+SRC_URI[shake-0.1.0.sha256sum] = "09057cb2149ad4cbd2da1e26b351f9a4c354219421229c69c3063e6f61947c4a"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+SRC_URI[shlex-2.0.1.sha256sum] = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
+SRC_URI[signal-hook-0.3.18.sha256sum] = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
+SRC_URI[signal-hook-mio-0.2.5.sha256sum] = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
+SRC_URI[signal-hook-registry-1.4.8.sha256sum] = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+SRC_URI[simd-adler32-0.3.10.sha256sum] = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
+SRC_URI[siphasher-1.0.3.sha256sum] = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
+SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
+SRC_URI[sm3-0.5.0.sha256sum] = "da6a89ba31723d185fd7413b98c576a575f356d9b84729d8ecb6ead60000a5b6"
+SRC_URI[smallvec-1.15.2.sha256sum] = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
+SRC_URI[smawk-0.3.3.sha256sum] = "e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100"
+SRC_URI[socket2-0.6.5.sha256sum] = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
+SRC_URI[spin-0.10.1.sha256sum] = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3"
+SRC_URI[sponge-cursor-0.1.0.sha256sum] = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620"
+SRC_URI[stable_deref_trait-1.2.1.sha256sum] = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+SRC_URI[statrs-0.18.0.sha256sum] = "2a3fe7c28c6512e766b0874335db33c94ad7b8f9054228ae1c2abd47ce7d335e"
+SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+SRC_URI[syn-2.0.119.sha256sum] = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
+SRC_URI[syn-3.0.4.sha256sum] = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
+SRC_URI[synstructure-0.14.0.sha256sum] = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02"
+SRC_URI[tap-1.0.1.sha256sum] = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+SRC_URI[tempfile-3.27.0.sha256sum] = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
+SRC_URI[terminal_size-0.4.4.sha256sum] = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
+SRC_URI[textwrap-0.16.4.sha256sum] = "6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49"
+SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+SRC_URI[thiserror-2.0.20.sha256sum] = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
+SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+SRC_URI[thiserror-impl-2.0.20.sha256sum] = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
+SRC_URI[time-0.3.55.sha256sum] = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
+SRC_URI[time-core-0.1.9.sha256sum] = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
+SRC_URI[time-macros-0.2.32.sha256sum] = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
+SRC_URI[tiny-keccak-2.0.2.sha256sum] = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+SRC_URI[tinystr-0.8.4.sha256sum] = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"
+SRC_URI[toml_datetime-1.1.1+spec-1.1.0.sha256sum] = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
+SRC_URI[toml_edit-0.25.13+spec-1.1.0.sha256sum] = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b"
+SRC_URI[toml_parser-1.1.3+spec-1.1.0.sha256sum] = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
+SRC_URI[type-map-0.5.1.sha256sum] = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90"
+SRC_URI[typed-path-0.12.3.sha256sum] = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
+SRC_URI[typenum-1.20.1.sha256sum] = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
+SRC_URI[unic-langid-0.9.6.sha256sum] = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05"
+SRC_URI[unic-langid-impl-0.9.6.sha256sum] = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658"
+SRC_URI[unicode-ident-1.0.24.sha256sum] = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
+SRC_URI[unicode-width-0.2.2.sha256sum] = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
+SRC_URI[unindent-0.2.4.sha256sum] = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
+SRC_URI[unit-prefix-0.5.2.sha256sum] = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
+SRC_URI[utf16_iter-1.0.5.sha256sum] = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+SRC_URI[utmp-classic-0.1.6.sha256sum] = "e24c654e19afaa6b8f3877ece5d3bed849c2719c56f6752b18ca7da4fcc6e85a"
+SRC_URI[utmp-classic-raw-0.1.3.sha256sum] = "22c226537a3d6e01c440c1926ca0256dbee2d19b2229ede6fc4863a6493dd831"
+SRC_URI[uutils_term_grid-0.8.0.sha256sum] = "382d49b39de4a115f203305057741126b09a615892d773a2d419a2b816e30e39"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+SRC_URI[vsimd-0.8.0.sha256sum] = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+SRC_URI[wasm-bindgen-0.2.127.sha256sum] = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
+SRC_URI[wasm-bindgen-macro-0.2.127.sha256sum] = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
+SRC_URI[wasm-bindgen-macro-support-0.2.127.sha256sum] = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
+SRC_URI[wasm-bindgen-shared-0.2.127.sha256sum] = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
+SRC_URI[web-time-1.1.0.sha256sum] = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+SRC_URI[wild-2.2.1.sha256sum] = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
+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.11.sha256sum] = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-core-0.62.2.sha256sum] = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+SRC_URI[windows-implement-0.60.2.sha256sum] = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+SRC_URI[windows-interface-0.59.3.sha256sum] = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+SRC_URI[windows-result-0.4.1.sha256sum] = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+SRC_URI[windows-strings-0.5.1.sha256sum] = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+SRC_URI[windows-sys-0.60.2.sha256sum] = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+SRC_URI[windows-targets-0.53.5.sha256sum] = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+SRC_URI[windows_aarch64_gnullvm-0.53.1.sha256sum] = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+SRC_URI[windows_aarch64_msvc-0.53.1.sha256sum] = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+SRC_URI[windows_i686_gnu-0.53.1.sha256sum] = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+SRC_URI[windows_i686_gnullvm-0.53.1.sha256sum] = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+SRC_URI[windows_i686_msvc-0.53.1.sha256sum] = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+SRC_URI[windows_x86_64_gnu-0.53.1.sha256sum] = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+SRC_URI[windows_x86_64_gnullvm-0.53.1.sha256sum] = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+SRC_URI[windows_x86_64_msvc-0.53.1.sha256sum] = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+SRC_URI[winnow-1.0.4.sha256sum] = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
+SRC_URI[write16-1.0.0.sha256sum] = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+SRC_URI[writeable-0.6.4.sha256sum] = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
+SRC_URI[wyz-0.5.1.sha256sum] = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+SRC_URI[xattr-1.6.1.sha256sum] = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
+SRC_URI[yansi-1.0.1.sha256sum] = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
+SRC_URI[yoke-0.8.3.sha256sum] = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
+SRC_URI[yoke-derive-0.8.3.sha256sum] = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78"
+SRC_URI[z85-3.0.7.sha256sum] = "c6e61e59a957b7ccee15d2049f86e8bfd6f66968fcd88f018950662d9b86e675"
+SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+SRC_URI[zerocopy-0.8.56.sha256sum] = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
+SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+SRC_URI[zerocopy-derive-0.8.56.sha256sum] = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
+SRC_URI[zerofrom-0.1.8.sha256sum] = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
+SRC_URI[zerofrom-derive-0.1.8.sha256sum] = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a"
+SRC_URI[zerotrie-0.2.5.sha256sum] = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"
+SRC_URI[zerovec-0.11.8.sha256sum] = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"
+SRC_URI[zerovec-derive-0.11.6.sha256sum] = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
+SRC_URI[zip-8.6.0.sha256sum] = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b"
+SRC_URI[zlib-rs-0.6.7.sha256sum] = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12"
+SRC_URI[zmij-1.0.23.sha256sum] = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
+SRC_URI[zopfli-0.8.3.sha256sum] = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
+# from fuzz/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/adler2/2.0.1 \
+    crate://crates.io/aho-corasick/1.1.5 \
+    crate://crates.io/android_system_properties/0.1.6 \
+    crate://crates.io/anstream/1.0.0 \
+    crate://crates.io/anstyle/1.0.14 \
+    crate://crates.io/anstyle-parse/1.0.0 \
+    crate://crates.io/anstyle-query/1.1.5 \
+    crate://crates.io/anstyle-wincon/3.0.11 \
+    crate://crates.io/arbitrary/1.4.2 \
+    crate://crates.io/arrayvec/0.7.8 \
+    crate://crates.io/autocfg/1.5.1 \
+    crate://crates.io/base64-simd/0.8.0 \
+    crate://crates.io/bigdecimal/0.4.10 \
+    crate://crates.io/bit-set/0.8.0 \
+    crate://crates.io/bit-vec/0.8.0 \
+    crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bitflags/2.13.1 \
+    crate://crates.io/blake2b_simd/1.0.5 \
+    crate://crates.io/blake3/1.8.7 \
+    crate://crates.io/block-buffer/0.12.1 \
+    crate://crates.io/block2/0.6.2 \
+    crate://crates.io/bstr/1.13.1 \
+    crate://crates.io/bumpalo/3.20.3 \
+    crate://crates.io/bytecount/0.6.9 \
+    crate://crates.io/calendrical_calculations/0.2.4 \
+    crate://crates.io/cc/1.4.4 \
+    crate://crates.io/cfg-if/1.0.4 \
+    crate://crates.io/cfg_aliases/0.2.2 \
+    crate://crates.io/chacha20/0.10.2 \
+    crate://crates.io/chrono/0.4.45 \
+    crate://crates.io/clap/4.6.6 \
+    crate://crates.io/clap_builder/4.6.6 \
+    crate://crates.io/clap_lex/1.1.0 \
+    crate://crates.io/colorchoice/1.0.5 \
+    crate://crates.io/console/0.16.6 \
+    crate://crates.io/const-random/0.1.18 \
+    crate://crates.io/const-random-macro/0.1.16 \
+    crate://crates.io/constant_time_eq/0.4.2 \
+    crate://crates.io/core-foundation-sys/0.8.7 \
+    crate://crates.io/core_maths/0.1.1 \
+    crate://crates.io/cpufeatures/0.3.1 \
+    crate://crates.io/crc/3.3.0 \
+    crate://crates.io/crc-catalog/2.5.0 \
+    crate://crates.io/crc-fast/1.9.0 \
+    crate://crates.io/crc32fast/1.5.1 \
+    crate://crates.io/crossbeam-deque/0.8.7 \
+    crate://crates.io/crossbeam-epoch/0.9.20 \
+    crate://crates.io/crossbeam-utils/0.8.22 \
+    crate://crates.io/crunchy/0.2.4 \
+    crate://crates.io/crypto-common/0.1.7 \
+    crate://crates.io/crypto-common/0.2.2 \
+    crate://crates.io/ctrlc/3.5.2 \
+    crate://crates.io/data-encoding/2.11.1 \
+    crate://crates.io/data-encoding-macro/0.1.21 \
+    crate://crates.io/data-encoding-macro-internal/0.1.19 \
+    crate://crates.io/defmt/1.1.1 \
+    crate://crates.io/defmt-macros/1.1.1 \
+    crate://crates.io/defmt-parser/1.0.0 \
+    crate://crates.io/digest/0.10.7 \
+    crate://crates.io/digest/0.11.3 \
+    crate://crates.io/dispatch2/0.3.1 \
+    crate://crates.io/displaydoc/0.2.7 \
+    crate://crates.io/dlv-list/0.5.2 \
+    crate://crates.io/dunce/1.0.5 \
+    crate://crates.io/either/1.18.0 \
+    crate://crates.io/encode_unicode/1.0.0 \
+    crate://crates.io/errno/0.3.14 \
+    crate://crates.io/fancy-regex/0.19.2 \
+    crate://crates.io/fastrand/2.5.0 \
+    crate://crates.io/find-msvc-tools/0.1.11 \
+    crate://crates.io/fixed_decimal/0.7.2 \
+    crate://crates.io/flate2/1.1.10 \
+    crate://crates.io/fluent/0.17.0 \
+    crate://crates.io/fluent-bundle/0.16.0 \
+    crate://crates.io/fluent-langneg/0.13.1 \
+    crate://crates.io/fluent-syntax/0.12.0 \
+    crate://crates.io/foldhash/0.2.0 \
+    crate://crates.io/futures-core/0.3.34 \
+    crate://crates.io/futures-task/0.3.34 \
+    crate://crates.io/futures-util/0.3.34 \
+    crate://crates.io/generic-array/0.14.7 \
+    crate://crates.io/getrandom/0.2.17 \
+    crate://crates.io/getrandom/0.4.3 \
+    crate://crates.io/glob/0.3.4 \
+    crate://crates.io/hashbrown/0.14.5 \
+    crate://crates.io/hex/0.4.3 \
+    crate://crates.io/hybrid-array/0.4.14 \
+    crate://crates.io/iana-time-zone/0.1.65 \
+    crate://crates.io/iana-time-zone-haiku/0.1.2 \
+    crate://crates.io/icu_calendar/2.3.0 \
+    crate://crates.io/icu_calendar_data/2.3.0 \
+    crate://crates.io/icu_collator/2.3.1 \
+    crate://crates.io/icu_collator_data/2.3.0 \
+    crate://crates.io/icu_collections/2.3.0 \
+    crate://crates.io/icu_datetime/2.3.0 \
+    crate://crates.io/icu_datetime_data/2.3.0 \
+    crate://crates.io/icu_decimal/2.3.0 \
+    crate://crates.io/icu_decimal_data/2.3.0 \
+    crate://crates.io/icu_locale/2.3.1 \
+    crate://crates.io/icu_locale_core/2.3.0 \
+    crate://crates.io/icu_locale_data/2.3.0 \
+    crate://crates.io/icu_locale_fallback/2.3.0 \
+    crate://crates.io/icu_locale_fallback_data/2.3.0 \
+    crate://crates.io/icu_normalizer/2.3.0 \
+    crate://crates.io/icu_normalizer_data/2.3.0 \
+    crate://crates.io/icu_pattern/0.5.0 \
+    crate://crates.io/icu_plurals/2.3.0 \
+    crate://crates.io/icu_plurals_data/2.3.0 \
+    crate://crates.io/icu_properties/2.3.0 \
+    crate://crates.io/icu_properties_data/2.3.0 \
+    crate://crates.io/icu_provider/2.3.1 \
+    crate://crates.io/icu_time/2.3.0 \
+    crate://crates.io/icu_time_data/2.3.0 \
+    crate://crates.io/intl-memoizer/0.5.3 \
+    crate://crates.io/intl_pluralrules/7.0.2 \
+    crate://crates.io/is_terminal_polyfill/1.70.2 \
+    crate://crates.io/itertools/0.15.0 \
+    crate://crates.io/jiff/0.2.35 \
+    crate://crates.io/jiff-core/0.1.0 \
+    crate://crates.io/jiff-icu/0.2.2 \
+    crate://crates.io/jiff-static/0.2.35 \
+    crate://crates.io/jiff-tzdb/0.1.8 \
+    crate://crates.io/jiff-tzdb-platform/0.1.3 \
+    crate://crates.io/jobserver/0.1.35 \
+    crate://crates.io/js-sys/0.3.104 \
+    crate://crates.io/keccak/0.2.2 \
+    crate://crates.io/libc/0.2.189 \
+    crate://crates.io/libfuzzer-sys/0.4.13 \
+    crate://crates.io/libm/0.2.16 \
+    crate://crates.io/linux-raw-sys/0.12.1 \
+    crate://crates.io/litemap/0.8.3 \
+    crate://crates.io/log/0.4.34 \
+    crate://crates.io/md-5/0.11.0 \
+    crate://crates.io/memchr/2.8.3 \
+    crate://crates.io/miniz_oxide/0.9.1 \
+    crate://crates.io/nix/0.31.3 \
+    crate://crates.io/nom/8.0.0 \
+    crate://crates.io/num-bigint/0.4.8 \
+    crate://crates.io/num-integer/0.1.47 \
+    crate://crates.io/num-traits/0.2.19 \
+    crate://crates.io/objc2/0.6.4 \
+    crate://crates.io/objc2-encode/4.1.0 \
+    crate://crates.io/once_cell/1.21.4 \
+    crate://crates.io/once_cell_polyfill/1.70.2 \
+    crate://crates.io/ordered-multimap/0.7.3 \
+    crate://crates.io/os_display/0.1.4 \
+    crate://crates.io/outref/0.5.2 \
+    crate://crates.io/parse_datetime/0.16.0 \
+    crate://crates.io/pin-project-lite/0.2.17 \
+    crate://crates.io/portable-atomic/1.15.0 \
+    crate://crates.io/portable-atomic-util/0.2.7 \
+    crate://crates.io/potential_utf/0.1.6 \
+    crate://crates.io/proc-macro2/1.0.107 \
+    crate://crates.io/procfs/0.18.0 \
+    crate://crates.io/procfs-core/0.18.0 \
+    crate://crates.io/quote/1.0.47 \
+    crate://crates.io/r-efi/6.0.0 \
+    crate://crates.io/rand/0.10.2 \
+    crate://crates.io/rand_core/0.10.1 \
+    crate://crates.io/rayon/1.12.0 \
+    crate://crates.io/rayon-core/1.13.0 \
+    crate://crates.io/regex-automata/0.4.18 \
+    crate://crates.io/regex-syntax/0.8.11 \
+    crate://crates.io/rust-ini/0.21.3 \
+    crate://crates.io/rustc-hash/2.1.3 \
+    crate://crates.io/rustix/1.1.4 \
+    crate://crates.io/rustversion/1.0.23 \
+    crate://crates.io/self_cell/1.3.0 \
+    crate://crates.io/serde/1.0.229 \
+    crate://crates.io/serde_core/1.0.229 \
+    crate://crates.io/serde_derive/1.0.229 \
+    crate://crates.io/sha1/0.11.0 \
+    crate://crates.io/sha2/0.11.0 \
+    crate://crates.io/sha3/0.12.0 \
+    crate://crates.io/shake/0.1.0 \
+    crate://crates.io/shlex/2.0.1 \
+    crate://crates.io/simd-adler32/0.3.10 \
+    crate://crates.io/similar/3.2.0 \
+    crate://crates.io/slab/0.4.12 \
+    crate://crates.io/sm3/0.5.0 \
+    crate://crates.io/smallvec/1.15.2 \
+    crate://crates.io/spin/0.10.1 \
+    crate://crates.io/sponge-cursor/0.1.0 \
+    crate://crates.io/stable_deref_trait/1.2.1 \
+    crate://crates.io/strsim/0.11.1 \
+    crate://crates.io/syn/2.0.119 \
+    crate://crates.io/syn/3.0.4 \
+    crate://crates.io/synstructure/0.14.0 \
+    crate://crates.io/tempfile/3.27.0 \
+    crate://crates.io/terminal_size/0.4.4 \
+    crate://crates.io/thiserror/2.0.20 \
+    crate://crates.io/thiserror-impl/2.0.20 \
+    crate://crates.io/tiny-keccak/2.0.2 \
+    crate://crates.io/tinystr/0.8.4 \
+    crate://crates.io/type-map/0.5.1 \
+    crate://crates.io/typenum/1.20.1 \
+    crate://crates.io/unic-langid/0.9.6 \
+    crate://crates.io/unic-langid-impl/0.9.6 \
+    crate://crates.io/unicode-ident/1.0.24 \
+    crate://crates.io/unicode-width/0.2.2 \
+    crate://crates.io/unit-prefix/0.5.2 \
+    crate://crates.io/utf16_iter/1.0.5 \
+    crate://crates.io/utf8_iter/1.0.4 \
+    crate://crates.io/utf8parse/0.2.2 \
+    crate://crates.io/version_check/0.9.5 \
+    crate://crates.io/vsimd/0.8.0 \
+    crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.127 \
+    crate://crates.io/wasm-bindgen-macro/0.2.127 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.127 \
+    crate://crates.io/wasm-bindgen-shared/0.2.127 \
+    crate://crates.io/wild/2.2.1 \
+    crate://crates.io/windows-core/0.62.2 \
+    crate://crates.io/windows-implement/0.60.2 \
+    crate://crates.io/windows-interface/0.59.3 \
+    crate://crates.io/windows-link/0.2.1 \
+    crate://crates.io/windows-result/0.4.1 \
+    crate://crates.io/windows-strings/0.5.1 \
+    crate://crates.io/windows-sys/0.61.2 \
+    crate://crates.io/winnow/1.0.4 \
+    crate://crates.io/write16/1.0.0 \
+    crate://crates.io/writeable/0.6.4 \
+    crate://crates.io/yoke/0.8.3 \
+    crate://crates.io/yoke-derive/0.8.3 \
+    crate://crates.io/z85/3.0.7 \
+    crate://crates.io/zerofrom/0.1.8 \
+    crate://crates.io/zerofrom-derive/0.1.8 \
+    crate://crates.io/zerotrie/0.2.5 \
+    crate://crates.io/zerovec/0.11.8 \
+    crate://crates.io/zerovec-derive/0.11.6 \
+    crate://crates.io/zlib-rs/0.6.7 \
+"
+
+SRC_URI[adler2-2.0.1.sha256sum] = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+SRC_URI[aho-corasick-1.1.5.sha256sum] = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
+SRC_URI[android_system_properties-0.1.6.sha256sum] = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"
+SRC_URI[anstream-1.0.0.sha256sum] = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
+SRC_URI[anstyle-1.0.14.sha256sum] = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
+SRC_URI[anstyle-parse-1.0.0.sha256sum] = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
+SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
+SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
+SRC_URI[arbitrary-1.4.2.sha256sum] = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
+SRC_URI[arrayvec-0.7.8.sha256sum] = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
+SRC_URI[autocfg-1.5.1.sha256sum] = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
+SRC_URI[base64-simd-0.8.0.sha256sum] = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
+SRC_URI[bigdecimal-0.4.10.sha256sum] = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
+SRC_URI[bit-set-0.8.0.sha256sum] = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
+SRC_URI[bit-vec-0.8.0.sha256sum] = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.13.1.sha256sum] = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
+SRC_URI[blake2b_simd-1.0.5.sha256sum] = "3560a7b1951efe814fcd721938313adc56753ca39f4b23847d7e9a2402f5dbff"
+SRC_URI[blake3-1.8.7.sha256sum] = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae"
+SRC_URI[block-buffer-0.12.1.sha256sum] = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
+SRC_URI[block2-0.6.2.sha256sum] = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
+SRC_URI[bstr-1.13.1.sha256sum] = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f"
+SRC_URI[bumpalo-3.20.3.sha256sum] = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
+SRC_URI[bytecount-0.6.9.sha256sum] = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
+SRC_URI[calendrical_calculations-0.2.4.sha256sum] = "5abbd6eeda6885048d357edc66748eea6e0268e3dd11f326fff5bd248d779c26"
+SRC_URI[cc-1.4.4.sha256sum] = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273"
+SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+SRC_URI[cfg_aliases-0.2.2.sha256sum] = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
+SRC_URI[chacha20-0.10.2.sha256sum] = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"
+SRC_URI[chrono-0.4.45.sha256sum] = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
+SRC_URI[clap-4.6.6.sha256sum] = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca"
+SRC_URI[clap_builder-4.6.6.sha256sum] = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889"
+SRC_URI[clap_lex-1.1.0.sha256sum] = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
+SRC_URI[colorchoice-1.0.5.sha256sum] = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
+SRC_URI[console-0.16.6.sha256sum] = "e96a4956774c13c126a8b5af4daa79384f4d826534c95a02d76afb39e2ab64e3"
+SRC_URI[const-random-0.1.18.sha256sum] = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+SRC_URI[const-random-macro-0.1.16.sha256sum] = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+SRC_URI[constant_time_eq-0.4.2.sha256sum] = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
+SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+SRC_URI[core_maths-0.1.1.sha256sum] = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
+SRC_URI[cpufeatures-0.3.1.sha256sum] = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"
+SRC_URI[crc-3.3.0.sha256sum] = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
+SRC_URI[crc-catalog-2.5.0.sha256sum] = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853"
+SRC_URI[crc-fast-1.9.0.sha256sum] = "2fd92aca2c6001b1bf5ba0ff84ee74ec8501b52bbef0cac80bf25a6c1d87a83d"
+SRC_URI[crc32fast-1.5.1.sha256sum] = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
+SRC_URI[crossbeam-deque-0.8.7.sha256sum] = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
+SRC_URI[crossbeam-epoch-0.9.20.sha256sum] = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
+SRC_URI[crossbeam-utils-0.8.22.sha256sum] = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
+SRC_URI[crunchy-0.2.4.sha256sum] = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
+SRC_URI[crypto-common-0.1.7.sha256sum] = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+SRC_URI[crypto-common-0.2.2.sha256sum] = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
+SRC_URI[ctrlc-3.5.2.sha256sum] = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162"
+SRC_URI[data-encoding-2.11.1.sha256sum] = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
+SRC_URI[data-encoding-macro-0.1.21.sha256sum] = "c6a127ecbb3c4632e1525380e04c0c3fcf8dcb44d32a79ea290d8a36906edcd8"
+SRC_URI[data-encoding-macro-internal-0.1.19.sha256sum] = "c54e03a951783e8b327515db3f2a2fd0e3bed362a96b066f341ce66ed49b4ead"
+SRC_URI[defmt-1.1.1.sha256sum] = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
+SRC_URI[defmt-macros-1.1.1.sha256sum] = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
+SRC_URI[defmt-parser-1.0.0.sha256sum] = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[digest-0.11.3.sha256sum] = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
+SRC_URI[dispatch2-0.3.1.sha256sum] = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
+SRC_URI[displaydoc-0.2.7.sha256sum] = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
+SRC_URI[dlv-list-0.5.2.sha256sum] = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
+SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
+SRC_URI[either-1.18.0.sha256sum] = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
+SRC_URI[encode_unicode-1.0.0.sha256sum] = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
+SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+SRC_URI[fancy-regex-0.19.2.sha256sum] = "d301f5bf187b3c295fce6468d3875037a0bccc5f6b151c63cac2f85babf21912"
+SRC_URI[fastrand-2.5.0.sha256sum] = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
+SRC_URI[find-msvc-tools-0.1.11.sha256sum] = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
+SRC_URI[fixed_decimal-0.7.2.sha256sum] = "79c3c892f121fff406e5dd6b28c1b30096b95111c30701a899d4f2b18da6d1bd"
+SRC_URI[flate2-1.1.10.sha256sum] = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
+SRC_URI[fluent-0.17.0.sha256sum] = "8137a6d5a2c50d6b0ebfcb9aaa91a28154e0a70605f112d30cb0cd4a78670477"
+SRC_URI[fluent-bundle-0.16.0.sha256sum] = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4"
+SRC_URI[fluent-langneg-0.13.1.sha256sum] = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0"
+SRC_URI[fluent-syntax-0.12.0.sha256sum] = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198"
+SRC_URI[foldhash-0.2.0.sha256sum] = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+SRC_URI[futures-core-0.3.34.sha256sum] = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
+SRC_URI[futures-task-0.3.34.sha256sum] = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
+SRC_URI[futures-util-0.3.34.sha256sum] = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[getrandom-0.2.17.sha256sum] = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+SRC_URI[getrandom-0.4.3.sha256sum] = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
+SRC_URI[glob-0.3.4.sha256sum] = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
+SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[hybrid-array-0.4.14.sha256sum] = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
+SRC_URI[iana-time-zone-0.1.65.sha256sum] = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
+SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+SRC_URI[icu_calendar-2.3.0.sha256sum] = "58655df2f728e46e4eee80bddebefacf52ec3e77cdb925014b47c5a5905eb55c"
+SRC_URI[icu_calendar_data-2.3.0.sha256sum] = "dc00caaa3fb3201ff7a18aa458e8c3ab042b9da154cfdf948bdde3936c31c36e"
+SRC_URI[icu_collator-2.3.1.sha256sum] = "08984ed58ac439ebf3e13d2cf26b0c46a60afcd21721c1d14087c0b240344dda"
+SRC_URI[icu_collator_data-2.3.0.sha256sum] = "f7d7e54efdddeb1208c08dd5d32b53a879ac00d2d3d051b2255fd26821d16368"
+SRC_URI[icu_collections-2.3.0.sha256sum] = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"
+SRC_URI[icu_datetime-2.3.0.sha256sum] = "c44df99c4c5297b05653d1a1629f13bdc9fd4044acfbbaf30b15194a1eed4cd6"
+SRC_URI[icu_datetime_data-2.3.0.sha256sum] = "8bb5555f6e4b42233f58564351ce16d73e9e6ebfce6bdcf29875d0cfc554d6a8"
+SRC_URI[icu_decimal-2.3.0.sha256sum] = "9eb8f655bba2d0c0459e43a5b0e6cd3cd388109898fb3d85d048165e8b0abd08"
+SRC_URI[icu_decimal_data-2.3.0.sha256sum] = "e4c887fc7d4c297cf3f9436864af9e3dba7f8be9415a6c2a7f392f3b1636298c"
+SRC_URI[icu_locale-2.3.1.sha256sum] = "785f595c61ef57169a467eeed7b4b6936a66f6cacbb116a96ee86da983251bf4"
+SRC_URI[icu_locale_core-2.3.0.sha256sum] = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"
+SRC_URI[icu_locale_data-2.3.0.sha256sum] = "d37d91460e362a5cf58907cd7ce871411775ee6294e49a5cc8e6cec16dfa75ea"
+SRC_URI[icu_locale_fallback-2.3.0.sha256sum] = "251af8e57c9400e3eb58242fe5b8b1152b2a64fdf4cf632f923c38ccee6f2fa9"
+SRC_URI[icu_locale_fallback_data-2.3.0.sha256sum] = "decf2a22ec8fa68f1a0c1129a3f8583f8f8bc24e8b9ccbe98ead99f62a4dc3a8"
+SRC_URI[icu_normalizer-2.3.0.sha256sum] = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"
+SRC_URI[icu_normalizer_data-2.3.0.sha256sum] = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"
+SRC_URI[icu_pattern-0.5.0.sha256sum] = "2b3db611446bd92c246b03e4aa0bafa71ddb194af431ddbb42b9d70e4bfce1a0"
+SRC_URI[icu_plurals-2.3.0.sha256sum] = "e475e6766ef87b1d3c1f97be6363995b0bfaeddbc789671615df598a97ff0593"
+SRC_URI[icu_plurals_data-2.3.0.sha256sum] = "1251aa39a95e1333888e499b1263e1c196447a28948acf5bdabd82c046f153bf"
+SRC_URI[icu_properties-2.3.0.sha256sum] = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"
+SRC_URI[icu_properties_data-2.3.0.sha256sum] = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
+SRC_URI[icu_provider-2.3.1.sha256sum] = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"
+SRC_URI[icu_time-2.3.0.sha256sum] = "af37e1c3b9f3ab564b619fdf4b22de169f6381eb0f7048e3ca454290c438126b"
+SRC_URI[icu_time_data-2.3.0.sha256sum] = "005ff86fa5851a77fc0a977b72d717f777bd9230415a247219d7898aefb1517a"
+SRC_URI[intl-memoizer-0.5.3.sha256sum] = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f"
+SRC_URI[intl_pluralrules-7.0.2.sha256sum] = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
+SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
+SRC_URI[itertools-0.15.0.sha256sum] = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc"
+SRC_URI[jiff-0.2.35.sha256sum] = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc"
+SRC_URI[jiff-core-0.1.0.sha256sum] = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09"
+SRC_URI[jiff-icu-0.2.2.sha256sum] = "0e67c2beaae8b10a82d849b9aabb698a43a682f32b17bcdc035d5ecadb44d646"
+SRC_URI[jiff-static-0.2.35.sha256sum] = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204"
+SRC_URI[jiff-tzdb-0.1.8.sha256sum] = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e"
+SRC_URI[jiff-tzdb-platform-0.1.3.sha256sum] = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
+SRC_URI[jobserver-0.1.35.sha256sum] = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
+SRC_URI[js-sys-0.3.104.sha256sum] = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
+SRC_URI[keccak-0.2.2.sha256sum] = "d8f198d1db720e4940b5a493201d199d9f24f568f8f746bd13706243a2f71598"
+SRC_URI[libc-0.2.189.sha256sum] = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
+SRC_URI[libfuzzer-sys-0.4.13.sha256sum] = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2"
+SRC_URI[libm-0.2.16.sha256sum] = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
+SRC_URI[linux-raw-sys-0.12.1.sha256sum] = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
+SRC_URI[litemap-0.8.3.sha256sum] = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
+SRC_URI[log-0.4.34.sha256sum] = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
+SRC_URI[md-5-0.11.0.sha256sum] = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
+SRC_URI[memchr-2.8.3.sha256sum] = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
+SRC_URI[miniz_oxide-0.9.1.sha256sum] = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
+SRC_URI[nix-0.31.3.sha256sum] = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
+SRC_URI[nom-8.0.0.sha256sum] = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
+SRC_URI[num-bigint-0.4.8.sha256sum] = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
+SRC_URI[num-integer-0.1.47.sha256sum] = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
+SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+SRC_URI[objc2-0.6.4.sha256sum] = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
+SRC_URI[objc2-encode-4.1.0.sha256sum] = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
+SRC_URI[once_cell-1.21.4.sha256sum] = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
+SRC_URI[ordered-multimap-0.7.3.sha256sum] = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
+SRC_URI[os_display-0.1.4.sha256sum] = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f"
+SRC_URI[outref-0.5.2.sha256sum] = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
+SRC_URI[parse_datetime-0.16.0.sha256sum] = "503fd4c8b0685e5eb32a8276533611f63e3b44768e9e8724e73f6852c2542f82"
+SRC_URI[pin-project-lite-0.2.17.sha256sum] = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
+SRC_URI[portable-atomic-1.15.0.sha256sum] = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
+SRC_URI[portable-atomic-util-0.2.7.sha256sum] = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
+SRC_URI[potential_utf-0.1.6.sha256sum] = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"
+SRC_URI[proc-macro2-1.0.107.sha256sum] = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
+SRC_URI[procfs-0.18.0.sha256sum] = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7"
+SRC_URI[procfs-core-0.18.0.sha256sum] = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
+SRC_URI[quote-1.0.47.sha256sum] = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
+SRC_URI[r-efi-6.0.0.sha256sum] = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
+SRC_URI[rand-0.10.2.sha256sum] = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
+SRC_URI[rand_core-0.10.1.sha256sum] = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
+SRC_URI[rayon-1.12.0.sha256sum] = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
+SRC_URI[rayon-core-1.13.0.sha256sum] = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
+SRC_URI[regex-automata-0.4.18.sha256sum] = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
+SRC_URI[regex-syntax-0.8.11.sha256sum] = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
+SRC_URI[rust-ini-0.21.3.sha256sum] = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
+SRC_URI[rustc-hash-2.1.3.sha256sum] = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
+SRC_URI[rustix-1.1.4.sha256sum] = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
+SRC_URI[rustversion-1.0.23.sha256sum] = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
+SRC_URI[self_cell-1.3.0.sha256sum] = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813"
+SRC_URI[serde-1.0.229.sha256sum] = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
+SRC_URI[serde_core-1.0.229.sha256sum] = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
+SRC_URI[serde_derive-1.0.229.sha256sum] = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
+SRC_URI[sha1-0.11.0.sha256sum] = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214"
+SRC_URI[sha2-0.11.0.sha256sum] = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
+SRC_URI[sha3-0.12.0.sha256sum] = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759"
+SRC_URI[shake-0.1.0.sha256sum] = "09057cb2149ad4cbd2da1e26b351f9a4c354219421229c69c3063e6f61947c4a"
+SRC_URI[shlex-2.0.1.sha256sum] = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
+SRC_URI[simd-adler32-0.3.10.sha256sum] = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
+SRC_URI[similar-3.2.0.sha256sum] = "4f66ca1f7aca2474dc10c942eb22feffc897735f54cd1db90138c2fddb490987"
+SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
+SRC_URI[sm3-0.5.0.sha256sum] = "da6a89ba31723d185fd7413b98c576a575f356d9b84729d8ecb6ead60000a5b6"
+SRC_URI[smallvec-1.15.2.sha256sum] = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
+SRC_URI[spin-0.10.1.sha256sum] = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3"
+SRC_URI[sponge-cursor-0.1.0.sha256sum] = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620"
+SRC_URI[stable_deref_trait-1.2.1.sha256sum] = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+SRC_URI[syn-2.0.119.sha256sum] = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
+SRC_URI[syn-3.0.4.sha256sum] = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
+SRC_URI[synstructure-0.14.0.sha256sum] = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02"
+SRC_URI[tempfile-3.27.0.sha256sum] = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
+SRC_URI[terminal_size-0.4.4.sha256sum] = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
+SRC_URI[thiserror-2.0.20.sha256sum] = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
+SRC_URI[thiserror-impl-2.0.20.sha256sum] = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
+SRC_URI[tiny-keccak-2.0.2.sha256sum] = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+SRC_URI[tinystr-0.8.4.sha256sum] = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"
+SRC_URI[type-map-0.5.1.sha256sum] = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90"
+SRC_URI[typenum-1.20.1.sha256sum] = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
+SRC_URI[unic-langid-0.9.6.sha256sum] = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05"
+SRC_URI[unic-langid-impl-0.9.6.sha256sum] = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658"
+SRC_URI[unicode-ident-1.0.24.sha256sum] = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+SRC_URI[unicode-width-0.2.2.sha256sum] = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
+SRC_URI[unit-prefix-0.5.2.sha256sum] = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
+SRC_URI[utf16_iter-1.0.5.sha256sum] = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+SRC_URI[vsimd-0.8.0.sha256sum] = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+SRC_URI[wasm-bindgen-0.2.127.sha256sum] = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
+SRC_URI[wasm-bindgen-macro-0.2.127.sha256sum] = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
+SRC_URI[wasm-bindgen-macro-support-0.2.127.sha256sum] = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
+SRC_URI[wasm-bindgen-shared-0.2.127.sha256sum] = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
+SRC_URI[wild-2.2.1.sha256sum] = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
+SRC_URI[windows-core-0.62.2.sha256sum] = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+SRC_URI[windows-implement-0.60.2.sha256sum] = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+SRC_URI[windows-interface-0.59.3.sha256sum] = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+SRC_URI[windows-result-0.4.1.sha256sum] = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+SRC_URI[windows-strings-0.5.1.sha256sum] = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+SRC_URI[winnow-1.0.4.sha256sum] = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
+SRC_URI[write16-1.0.0.sha256sum] = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+SRC_URI[writeable-0.6.4.sha256sum] = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
+SRC_URI[yoke-0.8.3.sha256sum] = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
+SRC_URI[yoke-derive-0.8.3.sha256sum] = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78"
+SRC_URI[z85-3.0.7.sha256sum] = "c6e61e59a957b7ccee15d2049f86e8bfd6f66968fcd88f018950662d9b86e675"
+SRC_URI[zerofrom-0.1.8.sha256sum] = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
+SRC_URI[zerofrom-derive-0.1.8.sha256sum] = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a"
+SRC_URI[zerotrie-0.2.5.sha256sum] = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"
+SRC_URI[zerovec-0.11.8.sha256sum] = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"
+SRC_URI[zerovec-derive-0.11.6.sha256sum] = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
+SRC_URI[zlib-rs-0.6.7.sha256sum] = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12"
diff --git a/meta/recipes-core/uutils-coreutils/uutils-coreutils_0.12.0.bb b/meta/recipes-core/uutils-coreutils/uutils-coreutils_0.12.0.bb
new file mode 100644
index 0000000000..26e494209a
--- /dev/null
+++ b/meta/recipes-core/uutils-coreutils/uutils-coreutils_0.12.0.bb
@@ -0,0 +1,86 @@
+# Copyright (c) 2022, Snap Inc.
+# Released under the MIT license (see COPYING.MIT for the terms)
+SUMMARY = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
+HOMEPAGE = "https://github.com/uutils/coreutils"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e74349878141b240070458d414ab3b64"
+
+inherit cargo cargo-update-recipe-crates
+
+SRC_URI = " \
+    git://github.com/uutils/coreutils.git;protocol=https;branch=main;tag=${PV} \
+"
+
+SRCREV = "dc1efd89948a9ca4c78c3a4b9a6ac891019a8c69"
+
+require ${BPN}-crates.inc
+
+PROVIDES = "coreutils"
+RPROVIDES:${PN} = "coreutils"
+
+# This recipe is a drop-in replacement for coreutils and cannot coexist with it,
+# so only build it in world/universe when it is the selected provider. Otherwise
+# both recipes end up in the same task graph as explicit targets (PREFERRED_PROVIDER
+# only disambiguates dependencies, not targets) and bitbake warns that multiple
+# .bb files provide coreutils.
+EXCLUDE_FROM_WORLD = "${@'0' if d.getVar('PREFERRED_PROVIDER_coreutils') == 'uutils-coreutils' else '1'}"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux systemd', d)}"
+PACKAGECONFIG[selinux] = "--features feat_selinux,,clang-native libselinux-native libselinux"
+PACKAGECONFIG[systemd] = "--features feat_systemd_logind,,systemd"
+
+CARGO_BUILD_FLAGS += "--features unix --features feat_external_libstdbuf"
+
+# The code which follows is strongly inspired from the GNU coreutils bitbake recipe:
+
+# df mktemp nice printenv base32 base64 get a special treatment and are not included in this
+bindir_progs = "[ arch basename cksum comm csplit cut dir dircolors dirname du \
+                env expand expr factor fmt fold groups head hostid id install \
+                join link logname md5sum mkfifo nl nohup nproc od paste pathchk \
+                pinky pr printf ptx readlink realpath seq sha1sum sha224sum sha256sum \
+                sha384sum sha512sum shred shuf sort split stdbuf sum tac tail tee test timeout \
+                tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
+
+bindir_progs += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'chcon runcon', '', d)}"
+
+base_bindir_progs = "cat chgrp chmod chown cp date dd echo false hostname kill ln ls mkdir \
+                     mknod mv pwd rm rmdir sleep stty sync touch true uname stat"
+
+sbindir_progs = "chroot"
+
+FILES:${PN}:append = " ${libdir}/coreutils/libstdbuf.so"
+inherit update-alternatives
+
+# Higher than busybox (which uses 50)
+ALTERNATIVE_PRIORITY = "100"
+
+# Higher than net-tools (which uses 100)
+ALTERNATIVE_PRIORITY[hostname] = "110"
+
+ALTERNATIVE:${PN} = "${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
+
+# Use the multicall binary named "coreutils" for symlinks
+ALTERNATIVE_TARGET = "${bindir}/coreutils"
+
+python __anonymous() {
+    for prog in d.getVar('base_bindir_progs').split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
+
+    for prog in d.getVar('sbindir_progs').split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_configure:prepend() {
+    rm -f ${S}/.cargo/config.toml
+}
+
+do_compile:prepend() {
+    export LIBSTDBUF_DIR="${libdir}/coreutils"
+}
+
+do_install:append() {
+    mkdir -p ${D}${libdir}/coreutils
+    cp ${B}/target/${CARGO_TARGET_SUBDIR}/deps/libstdbuf.so ${D}${libdir}/coreutils/libstdbuf.so
+}
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-10 11:30 [PATCH] uutils-coreutils: move from meta-openembedded ecordonnier
@ 2026-10-10 18:33 ` Collin Funk
  2026-10-11 16:23   ` [OE-core] " Yoann Congal
  2026-10-12 13:04 ` Alexander Kanavin
  1 sibling, 1 reply; 11+ messages in thread
From: Collin Funk @ 2026-10-10 18:33 UTC (permalink / raw)
  To: openembedded-core; +Cc: Etienne Cordonnier

Etienne Cordonnier <ecordonnier@snap.com> wrote:

> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
> enough for production use, so move the recipe from meta-oe to oe-core.
> It provides and rprovides coreutils, and is excluded from world unless
> selected as the coreutils provider.

Total disregard for the requirements imposed by the GPL is helpful to it
being "mature enough for production use", of course. See the downplayed
mention in the 0.12.0 release notes:

    Also, some contributions had carried comments and code over from GNU
    coreutils, against our own rule that uutils is an original
    implementation. We reviewed the tree and rewrote what we found, in
    comments and in the few functions that followed the C too closely;
    no behaviour change. The GNU coreutils maintainers have been
    notified.

> +SUMMARY = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"

This summary reads as if it is trying to claim that uutils is the
official GNU coreutils project.

I'm not familiar enough with openembedded, but a concern raised by other
distributions and me is that supporting two packages as "coreutils"
increases maintainers' workload because the implementations are bound to
diverge, requiring otherwise unnecessary code churn. E.g., for around a
year, Ubuntu 26.04 had the following:

    $ export LC_ALL=en_US.UTF-8
    $ printf 'USA\nU.S.A\nU-S-A\n' | sort -u
    USA
    $ printf 'USA\nU.S.A\nU-S-A\n' | gnusort -u
    U-S-A
    U.S.A
    USA

It still has the following issue [1]:

    $ export LC_ALL=en_US.UTF-8
    $ echo a A b B | tr ' ' '\n' | sort > tst1.txt
    $ echo a A b C | tr ' ' '\n' | sort > tst2.txt
    $ comm -23 tst1.txt tst2.txt
    comm: file 1 is not in sorted order
    comm: file 2 is not in sorted order
    B
    comm: input is not in sorted order
    $ gnucomm -23 tst1.txt tst2.txt
    B

Collin

[1] https://bugs.launchpad.net/ubuntu/+source/rust-coreutils/+bug/2169780


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-10 18:33 ` Collin Funk
@ 2026-10-11 16:23   ` Yoann Congal
  0 siblings, 0 replies; 11+ messages in thread
From: Yoann Congal @ 2026-10-11 16:23 UTC (permalink / raw)
  To: collin.funk1, openembedded-core; +Cc: Etienne Cordonnier

On Sat Oct 10, 2026 at 8:33 PM CEST, Collin Funk via lists.openembedded.org wrote:
> Etienne Cordonnier <ecordonnier@snap.com> wrote:
>
>> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
>> enough for production use, so move the recipe from meta-oe to oe-core.
>> It provides and rprovides coreutils, and is excluded from world unless
>> selected as the coreutils provider.
>
> Total disregard for the requirements imposed by the GPL is helpful to it
> being "mature enough for production use", of course. See the downplayed
> mention in the 0.12.0 release notes:
>
>     Also, some contributions had carried comments and code over from GNU
>     coreutils, against our own rule that uutils is an original
>     implementation. We reviewed the tree and rewrote what we found, in
>     comments and in the few functions that followed the C too closely;
>     no behaviour change. The GNU coreutils maintainers have been
>     notified.
>
>> +SUMMARY = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
>
> This summary reads as if it is trying to claim that uutils is the
> official GNU coreutils project.
>
> I'm not familiar enough with openembedded, but a concern raised by other
> distributions and me is that supporting two packages as "coreutils"
> increases maintainers' workload because the implementations are bound to
> diverge, requiring otherwise unnecessary code churn. E.g., for around a
> year, Ubuntu 26.04 had the following:
>
>     $ export LC_ALL=en_US.UTF-8
>     $ printf 'USA\nU.S.A\nU-S-A\n' | sort -u
>     USA
>     $ printf 'USA\nU.S.A\nU-S-A\n' | gnusort -u
>     U-S-A
>     U.S.A
>     USA
>
> It still has the following issue [1]:
>
>     $ export LC_ALL=en_US.UTF-8
>     $ echo a A b B | tr ' ' '\n' | sort > tst1.txt
>     $ echo a A b C | tr ' ' '\n' | sort > tst2.txt
>     $ comm -23 tst1.txt tst2.txt
>     comm: file 1 is not in sorted order
>     comm: file 2 is not in sorted order
>     B
>     comm: input is not in sorted order
>     $ gnucomm -23 tst1.txt tst2.txt
>     B
>
> Collin
>
> [1] https://bugs.launchpad.net/ubuntu/+source/rust-coreutils/+bug/2169780

For reference we also had issues with uutils-coreutils implementations:
* classes/base: prefer gnu-prefixed HOSTTOOLS - openembedded-core - OpenEmbedded Core layer
  https://git.openembedded.org/openembedded-core/commit/?id=16f2684ebeffa72b5d90525cf9102751b68c298e
* 16028 – Investigate pseudo/uutils incompatibilities
  https://bugzilla.yoctoproject.org/show_bug.cgi?id=16028

Regards,
-- 
Yoann Congal
Smile ECS



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-10 11:30 [PATCH] uutils-coreutils: move from meta-openembedded ecordonnier
  2026-10-10 18:33 ` Collin Funk
@ 2026-10-12 13:04 ` Alexander Kanavin
  2026-10-12 21:13   ` Etienne Cordonnier
  1 sibling, 1 reply; 11+ messages in thread
From: Alexander Kanavin @ 2026-10-12 13:04 UTC (permalink / raw)
  To: ecordonnier; +Cc: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 940 bytes --]

On Sat, 10 Oct 2026 at 13:30, Etienne Cordonnier via lists.openembedded.org
<ecordonnier=snap.com@lists.openembedded.org> wrote:

>
> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
> enough for production use, so move the recipe from meta-oe to oe-core.
> It provides and rprovides coreutils, and is excluded from world unless
> selected as the coreutils provider.
>

This needs a bit more justification. What is achieved by moving it to core?
What specifically makes this component mature enough? What tests were
performed with it? Does it pass the full autobuilder matrix when selected
as coreutiuls provider? Should we add that test to the autobuilder? Should
we make uutils-coreutils the default choice, or maybe the only choice? Does
it work as a provider of coreutils-native, and is it compatible with pseudo?

Adding things to core has a pretty high bar, and the above commit message
does not meet it.

Alex

[-- Attachment #2: Type: text/html, Size: 1379 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-12 13:04 ` Alexander Kanavin
@ 2026-10-12 21:13   ` Etienne Cordonnier
  2026-10-12 22:58     ` Collin Funk
  2026-10-13  7:41     ` Alexander Kanavin
  0 siblings, 2 replies; 11+ messages in thread
From: Etienne Cordonnier @ 2026-10-12 21:13 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 4166 bytes --]

Hi Alex,
- what is achieved by moving it to core is improving no-gplv3.inc for users
who are not using gplv3 and still want full coreutils syntax support. It
will also make it possible to add it to poky-altcfg.conf, and generally
make it easier to consume without needing meta-openembedded.

- what specifically makes this component mature enough is:
  - I've added the recipe to meta-openembedded in July 2022 and it has been
continuously tested and improved since (e.g. I fixed the musl support
upstream, the cross-compilation of stdbuf upstream, some buildpath issue)
  - its adoption in Ubuntu 26.04 as default coreutils implementation and
the resulting large-scale usage and bug-fixing
  - its availability in Windows as "Coreutils for Windows" starting in June
2026 as a package maintained by Microsoft, and the resulting large-scale
usage and bug-fixing
  - its massive adoption in various distros and package-managers (see
https://uutils.org/users/ )
  - its >95% pass-rate of the GNU testing suite in release 0.0.12 (some
tests are still skipped)
  - anecdotally, my own usage in production on embedded devices for several
years without issues (on arm and qemu-arm64)

- "should we make uutils-coreutils the default choice, or maybe the only
choice?"
  -> maybe in several years when uutils-coreutils has matured even more and
has 100% test coverage of the GNU test suite? At the moment I think the
safest choice on critical devices is still GNU coreutils, so I wouldn't
remove or make rust coreutils the default or only choice. Also rust
binaries are bigger than C binaries so there is some tradeoff involved. GNU
coreutils 9.12 main package is 10.3MB big in my test build, compared to
13.6MB for the uutils-coreutils 0.0.12 main package (uutils-coreutils uses
a multi-binary executable to save space, GNU coreutils doesn't).

- "Does it work as a provider of coreutils-native and is it compatible with
pseudo?"
  - the recipe uutils-coreutils-native compiles, but it's not compatible
with pseudo because of differences in syscalls, and it's not suitable as a
replacement for coreutils-native at the moment. I'll try to make it work
with pseudo in the future, but I think almost all users consume it as a
target recipe and that's where it provides most value.

- "Does it pass the full autobuilder matrix when selected as coreutils
provider? Should we add that test to the autobuilder?"
  -> it should, but I've not tested the full matrix of the autobuilder. I
would like to add the recipe to poky-altcfg.conf, and as far as I
understand this would add it to the autobuilder as side-effect.
I am also working on adding ptest support for the recipe and can send this
if necessary for the acceptance to oe-core.

Étienne

On Mon, Oct 12, 2026 at 3:04 PM Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> On Sat, 10 Oct 2026 at 13:30, Etienne Cordonnier via
> lists.openembedded.org
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org&d=DwMFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=Pf9ypvX_MT4dU4cYC3brv9jpglRcRrrz1luHXObxYfW6J0oO8XAW6KnUoiQHzUES&s=QSmPEv1BkubeZVNksJqkHkppRkyy-Bac7QdkZuoYqaA&e=>
> <ecordonnier=snap.com@lists.openembedded.org> wrote:
>
>>
>> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
>> enough for production use, so move the recipe from meta-oe to oe-core.
>> It provides and rprovides coreutils, and is excluded from world unless
>> selected as the coreutils provider.
>>
>
> This needs a bit more justification. What is achieved by moving it to
> core? What specifically makes this component mature enough? What tests were
> performed with it? Does it pass the full autobuilder matrix when selected
> as coreutiuls provider? Should we add that test to the autobuilder? Should
> we make uutils-coreutils the default choice, or maybe the only choice? Does
> it work as a provider of coreutils-native, and is it compatible with pseudo?
>
> Adding things to core has a pretty high bar, and the above commit message
> does not meet it.
>
> Alex
>

[-- Attachment #2: Type: text/html, Size: 4986 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-12 21:13   ` Etienne Cordonnier
@ 2026-10-12 22:58     ` Collin Funk
  2026-10-13  7:41     ` Alexander Kanavin
  1 sibling, 0 replies; 11+ messages in thread
From: Collin Funk @ 2026-10-12 22:58 UTC (permalink / raw)
  To: Etienne Cordonnier; +Cc: Alexander Kanavin, openembedded-core

Etienne Cordonnier <ecordonnier@snap.com> said:

> - what is achieved by moving it to core is improving no-gplv3.inc for users
> who are not using gplv3 and still want full coreutils syntax support. It
> will also make it possible to add it to poky-altcfg.conf, and generally
> make it easier to consume without needing meta-openembedded.

That, of course, assumes none of the code is tainted after the attempted
cleanup in 0.12.0, which only came after multiple warnings from me. It
is difficult, speaking personally, for me to believe that the uutils
project has any respect at all for licensing.

>   - its adoption in Ubuntu 26.04 as default coreutils implementation and
> the resulting large-scale usage and bug-fixing

That is the positive side of things. The negative side is that there
were many FTBFS and multiple breakages of Ubuntu ISOs. E.g., one missing
a setuid bit on sudo. I highly doubt Canonical engineers enjoy dealing
with this. It seems to be a decision made by the company leadership. I
can't say for certain, though, since Canonical didn't reach out to me or
anyone else working on GNU coreutils, who could have warned them about
the easily foreseeable issues they faced.

>   - its >95% pass-rate of the GNU testing suite in release 0.0.12 (some
> tests are still skipped)

Note that the GNU coreutils test suite is good, in my biased opinion,
but it is not really meant to create a new, perfectly compatible
implementation to replace us. I have always found the use of these
percentages dubious, but I understand the need for some comparison.

> Also rust binaries are bigger than C binaries so there is some
> tradeoff involved. GNU coreutils 9.12 main package is 10.3MB big in my
> test build, compared to 13.6MB for the uutils-coreutils 0.0.12 main
> package (uutils-coreutils uses a multi-binary executable to save
> space, GNU coreutils doesn't).

This is a very unfair comparison. GNU coreutils has been able to be
built as a single binary since 2014 [1]. If there were a need for it in
meta-openembedded, I am sure it could be packaged relatively easily. Red
Hat uses it for their container images, for example:

    $ podman run --rm -it redhat/ubi10
    $ du --human-readable /bin/coreutils
    1.4M    /bin/coreutils

Collin

[1] https://github.com/coreutils/coreutils/commit/71e2ea773414b2316bbe6b803b9a52c38d3752e8


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-12 21:13   ` Etienne Cordonnier
  2026-10-12 22:58     ` Collin Funk
@ 2026-10-13  7:41     ` Alexander Kanavin
  2026-10-13  8:13       ` Yoann Congal
  2026-10-13 10:02       ` Etienne Cordonnier
  1 sibling, 2 replies; 11+ messages in thread
From: Alexander Kanavin @ 2026-10-13  7:41 UTC (permalink / raw)
  To: Etienne Cordonnier
  Cc: openembedded-core, Paul Barker, Richard Purdie, collin.funk1

[-- Attachment #1: Type: text/plain, Size: 5677 bytes --]

Alright. Here's a suggested plan for you:

- add ptest support to the recipe. It must have feature parity with the GNU
recipe.

- investigate and propose a plan for pseudo compatibility. It's not easy:
pseudo relies on substituting libc API, and rust binaries issue kernel
syscalls directly.

- address concerns of 'license-washing'. A few of us are deeply
uncomfortable with this recent wave of component rewrites (especially AI
assisted which causes dubious copyrights) where the primary goal is not
technical improvement but simply getting rid of the GPL. The purpose of
open source is not serving commercial interests, it's making computing
better for everyone.

- get the core community distributions (which is, Fedora and Debian) to
have a plan and timeline of adoping uutils as the default. This is the
ultimate test of maturity.

- propose a test plan for Yocto. Merely sticking it into poky-altcfg is
actually a regression in testing, because then sysvinit images will be
tested only with GNU, and systemd images will be tested only with uutils.

- last, but not least. Actually this is the most important one: fix your
relationship with GNU coreutils. It's painful to watch you two bicker, and
I do not want the Yocto project to be dragged into this.

Alex


On Mon, 12 Oct 2026 at 23:13, Etienne Cordonnier <ecordonnier@snap.com>
wrote:

> Hi Alex,
> - what is achieved by moving it to core is improving no-gplv3.inc for
> users who are not using gplv3 and still want full coreutils syntax support.
> It will also make it possible to add it to poky-altcfg.conf, and generally
> make it easier to consume without needing meta-openembedded.
>
> - what specifically makes this component mature enough is:
>   - I've added the recipe to meta-openembedded in July 2022 and it has
> been continuously tested and improved since (e.g. I fixed the musl support
> upstream, the cross-compilation of stdbuf upstream, some buildpath issue)
>   - its adoption in Ubuntu 26.04 as default coreutils implementation and
> the resulting large-scale usage and bug-fixing
>   - its availability in Windows as "Coreutils for Windows" starting in
> June 2026 as a package maintained by Microsoft, and the resulting
> large-scale usage and bug-fixing
>   - its massive adoption in various distros and package-managers (see
> https://uutils.org/users/ )
>   - its >95% pass-rate of the GNU testing suite in release 0.0.12 (some
> tests are still skipped)
>   - anecdotally, my own usage in production on embedded devices for
> several years without issues (on arm and qemu-arm64)
>
> - "should we make uutils-coreutils the default choice, or maybe the only
> choice?"
>   -> maybe in several years when uutils-coreutils has matured even more
> and has 100% test coverage of the GNU test suite? At the moment I think the
> safest choice on critical devices is still GNU coreutils, so I wouldn't
> remove or make rust coreutils the default or only choice. Also rust
> binaries are bigger than C binaries so there is some tradeoff involved. GNU
> coreutils 9.12 main package is 10.3MB big in my test build, compared to
> 13.6MB for the uutils-coreutils 0.0.12 main package (uutils-coreutils uses
> a multi-binary executable to save space, GNU coreutils doesn't).
>
> - "Does it work as a provider of coreutils-native and is it compatible
> with pseudo?"
>   - the recipe uutils-coreutils-native compiles, but it's not compatible
> with pseudo because of differences in syscalls, and it's not suitable as a
> replacement for coreutils-native at the moment. I'll try to make it work
> with pseudo in the future, but I think almost all users consume it as a
> target recipe and that's where it provides most value.
>
> - "Does it pass the full autobuilder matrix when selected as coreutils
> provider? Should we add that test to the autobuilder?"
>   -> it should, but I've not tested the full matrix of the autobuilder. I
> would like to add the recipe to poky-altcfg.conf, and as far as I
> understand this would add it to the autobuilder as side-effect.
> I am also working on adding ptest support for the recipe and can send this
> if necessary for the acceptance to oe-core.
>
> Étienne
>
> On Mon, Oct 12, 2026 at 3:04 PM Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
>
>> On Sat, 10 Oct 2026 at 13:30, Etienne Cordonnier via
>> lists.openembedded.org
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org&d=DwMFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=Pf9ypvX_MT4dU4cYC3brv9jpglRcRrrz1luHXObxYfW6J0oO8XAW6KnUoiQHzUES&s=QSmPEv1BkubeZVNksJqkHkppRkyy-Bac7QdkZuoYqaA&e=>
>> <ecordonnier=snap.com@lists.openembedded.org> wrote:
>>
>>>
>>> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
>>> enough for production use, so move the recipe from meta-oe to oe-core.
>>> It provides and rprovides coreutils, and is excluded from world unless
>>> selected as the coreutils provider.
>>>
>>
>> This needs a bit more justification. What is achieved by moving it to
>> core? What specifically makes this component mature enough? What tests were
>> performed with it? Does it pass the full autobuilder matrix when selected
>> as coreutiuls provider? Should we add that test to the autobuilder? Should
>> we make uutils-coreutils the default choice, or maybe the only choice? Does
>> it work as a provider of coreutils-native, and is it compatible with pseudo?
>>
>> Adding things to core has a pretty high bar, and the above commit message
>> does not meet it.
>>
>> Alex
>>
>

[-- Attachment #2: Type: text/html, Size: 6892 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-13  7:41     ` Alexander Kanavin
@ 2026-10-13  8:13       ` Yoann Congal
  2026-10-13 10:02       ` Etienne Cordonnier
  1 sibling, 0 replies; 11+ messages in thread
From: Yoann Congal @ 2026-10-13  8:13 UTC (permalink / raw)
  To: alex.kanavin, Etienne Cordonnier
  Cc: openembedded-core, Paul Barker, Richard Purdie, collin.funk1

On Tue Oct 13, 2026 at 9:41 AM CEST, Alexander Kanavin via lists.openembedded.org wrote:
> Alright. Here's a suggested plan for you:
>
> - add ptest support to the recipe. It must have feature parity with the GNU
> recipe.

FYI, on adding ptest, we tried last year but got stuck and dropped it.
See:
* tests.rs: statically defined `CARGO_BIN_EXE_coreutils` causes all integration tests to fail on Yocto ptest-cargo · Issue #9246
  https://github.com/uutils/coreutils/issues/9246
* tests.rs: Read executable binary location from environment at runtime by andstepan · Pull Request #9323
  https://github.com/uutils/coreutils/pull/9323

Andrea does not work with us anymore (sadly), feel free to take over his work.

Regards,
-- 
Yoann Congal
Smile ECS



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-13  7:41     ` Alexander Kanavin
  2026-10-13  8:13       ` Yoann Congal
@ 2026-10-13 10:02       ` Etienne Cordonnier
  2026-10-13 10:24         ` Alexander Kanavin
  2026-10-13 10:54         ` Alexander Kanavin
  1 sibling, 2 replies; 11+ messages in thread
From: Etienne Cordonnier @ 2026-10-13 10:02 UTC (permalink / raw)
  To: Alexander Kanavin
  Cc: openembedded-core, Paul Barker, Richard Purdie, collin.funk1

[-- Attachment #1: Type: text/plain, Size: 7939 bytes --]

> - add ptest support to the recipe. It must have feature parity with the
GNU recipe.

OK, I'll do that in meta-openembedded, since I don't want to mix this
change with a move between two repos

> - investigate and propose a plan for pseudo compatibility. It's not easy:
pseudo relies on substituting libc API, and rust binaries issue kernel
syscalls directly.

It is doable, since uutils-coreutils already uses the libc crate for many
things, and the rustix crate can be configured at build-time to use the
libc crate instead of using kernel syscalls directly.
On the other hand, PREFERRED_PROVIDER_coreutils is independent of
PREFERRED_PROVIDER_coreutils-native, and very few recipes depend on
coreutils-native, so I suggest decoupling a potential merge of
uutils-coreutils with pseudo support. The target version delivers almost
all the value, and pseudo compatibility can follow separately. Or am I
missing something?

> - propose a test plan for Yocto. Merely sticking it into poky-altcfg is
actually a regression in testing, because then sysvinit images will be
tested only with GNU, and systemd images will be tested only with uutils.

OK, then I'm not sure what's best in terms of testing matrix. I'll need to
investigate.

> - last, but not least. Actually this is the most important one: fix your
relationship with GNU coreutils. It's painful to watch you two bicker, and
I do not want the Yocto project to be dragged into this.

On the last point: I can see Collin feels strongly about this, and I take
the licensing concern seriously. But I haven't been in conflict with him or
with GNU coreutils. If there's a specific exchange you'd like me to look
at, please point me to it.

Étienne

On Tue, Oct 13, 2026 at 9:42 AM Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> Alright. Here's a suggested plan for you:
>
> - add ptest support to the recipe. It must have feature parity with the
> GNU recipe.
>
> - investigate and propose a plan for pseudo compatibility. It's not easy:
> pseudo relies on substituting libc API, and rust binaries issue kernel
> syscalls directly.
>
> - address concerns of 'license-washing'. A few of us are deeply
> uncomfortable with this recent wave of component rewrites (especially AI
> assisted which causes dubious copyrights) where the primary goal is not
> technical improvement but simply getting rid of the GPL. The purpose of
> open source is not serving commercial interests, it's making computing
> better for everyone.
>
> - get the core community distributions (which is, Fedora and Debian) to
> have a plan and timeline of adoping uutils as the default. This is the
> ultimate test of maturity.
>
> - propose a test plan for Yocto. Merely sticking it into poky-altcfg is
> actually a regression in testing, because then sysvinit images will be
> tested only with GNU, and systemd images will be tested only with uutils.
>
> - last, but not least. Actually this is the most important one: fix your
> relationship with GNU coreutils. It's painful to watch you two bicker, and
> I do not want the Yocto project to be dragged into this.
>
> Alex
>
>
> On Mon, 12 Oct 2026 at 23:13, Etienne Cordonnier <ecordonnier@snap.com>
> wrote:
>
>> Hi Alex,
>> - what is achieved by moving it to core is improving no-gplv3.inc for
>> users who are not using gplv3 and still want full coreutils syntax support.
>> It will also make it possible to add it to poky-altcfg.conf, and generally
>> make it easier to consume without needing meta-openembedded.
>>
>> - what specifically makes this component mature enough is:
>>   - I've added the recipe to meta-openembedded in July 2022 and it has
>> been continuously tested and improved since (e.g. I fixed the musl support
>> upstream, the cross-compilation of stdbuf upstream, some buildpath issue)
>>   - its adoption in Ubuntu 26.04 as default coreutils implementation and
>> the resulting large-scale usage and bug-fixing
>>   - its availability in Windows as "Coreutils for Windows" starting in
>> June 2026 as a package maintained by Microsoft, and the resulting
>> large-scale usage and bug-fixing
>>   - its massive adoption in various distros and package-managers (see
>> https://uutils.org/users/
>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__uutils.org_users_&d=DwMFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=TQmofvWjML0rStkG9aORknAn231FNShwwQFbVxuoEpFoFov2hNAHI82gZaXe_Ji-&s=CBQ3d8b8uYSdxwNhKRN4m1Bv7jOIX0EwE2ZOXtUfDj0&e=>
>> )
>>   - its >95% pass-rate of the GNU testing suite in release 0.0.12 (some
>> tests are still skipped)
>>   - anecdotally, my own usage in production on embedded devices for
>> several years without issues (on arm and qemu-arm64)
>>
>> - "should we make uutils-coreutils the default choice, or maybe the only
>> choice?"
>>   -> maybe in several years when uutils-coreutils has matured even more
>> and has 100% test coverage of the GNU test suite? At the moment I think the
>> safest choice on critical devices is still GNU coreutils, so I wouldn't
>> remove or make rust coreutils the default or only choice. Also rust
>> binaries are bigger than C binaries so there is some tradeoff involved. GNU
>> coreutils 9.12 main package is 10.3MB big in my test build, compared to
>> 13.6MB for the uutils-coreutils 0.0.12 main package (uutils-coreutils uses
>> a multi-binary executable to save space, GNU coreutils doesn't).
>>
>> - "Does it work as a provider of coreutils-native and is it compatible
>> with pseudo?"
>>   - the recipe uutils-coreutils-native compiles, but it's not compatible
>> with pseudo because of differences in syscalls, and it's not suitable as a
>> replacement for coreutils-native at the moment. I'll try to make it work
>> with pseudo in the future, but I think almost all users consume it as a
>> target recipe and that's where it provides most value.
>>
>> - "Does it pass the full autobuilder matrix when selected as coreutils
>> provider? Should we add that test to the autobuilder?"
>>   -> it should, but I've not tested the full matrix of the autobuilder. I
>> would like to add the recipe to poky-altcfg.conf, and as far as I
>> understand this would add it to the autobuilder as side-effect.
>> I am also working on adding ptest support for the recipe and can send
>> this if necessary for the acceptance to oe-core.
>>
>> Étienne
>>
>> On Mon, Oct 12, 2026 at 3:04 PM Alexander Kanavin <alex.kanavin@gmail.com>
>> wrote:
>>
>>> On Sat, 10 Oct 2026 at 13:30, Etienne Cordonnier via
>>> lists.openembedded.org
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org&d=DwMFaQ&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=AhkbNonVuMIGRfPx_Qj9TsRih1DULJTKUkSGa66m67E&m=Pf9ypvX_MT4dU4cYC3brv9jpglRcRrrz1luHXObxYfW6J0oO8XAW6KnUoiQHzUES&s=QSmPEv1BkubeZVNksJqkHkppRkyy-Bac7QdkZuoYqaA&e=>
>>> <ecordonnier=snap.com@lists.openembedded.org> wrote:
>>>
>>>>
>>>> uutils-coreutils, the Rust reimplementation of GNU coreutils, is mature
>>>> enough for production use, so move the recipe from meta-oe to oe-core.
>>>> It provides and rprovides coreutils, and is excluded from world unless
>>>> selected as the coreutils provider.
>>>>
>>>
>>> This needs a bit more justification. What is achieved by moving it to
>>> core? What specifically makes this component mature enough? What tests were
>>> performed with it? Does it pass the full autobuilder matrix when selected
>>> as coreutiuls provider? Should we add that test to the autobuilder? Should
>>> we make uutils-coreutils the default choice, or maybe the only choice? Does
>>> it work as a provider of coreutils-native, and is it compatible with pseudo?
>>>
>>> Adding things to core has a pretty high bar, and the above commit
>>> message does not meet it.
>>>
>>> Alex
>>>
>>

[-- Attachment #2: Type: text/html, Size: 9365 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-13 10:02       ` Etienne Cordonnier
@ 2026-10-13 10:24         ` Alexander Kanavin
  2026-10-13 10:54         ` Alexander Kanavin
  1 sibling, 0 replies; 11+ messages in thread
From: Alexander Kanavin @ 2026-10-13 10:24 UTC (permalink / raw)
  To: Etienne Cordonnier
  Cc: openembedded-core, Paul Barker, Richard Purdie, collin.funk1

[-- Attachment #1: Type: text/plain, Size: 1434 bytes --]

On Tue, 13 Oct 2026 at 12:02, Etienne Cordonnier <ecordonnier@snap.com>
wrote:

> > - investigate and propose a plan for pseudo compatibility. It's not
> easy: pseudo relies on substituting libc API, and rust binaries issue
> kernel syscalls directly.
>
> It is doable, since uutils-coreutils already uses the libc crate for many
> things, and the rustix crate can be configured at build-time to use the
> libc crate instead of using kernel syscalls directly.
> On the other hand, PREFERRED_PROVIDER_coreutils is independent of
> PREFERRED_PROVIDER_coreutils-native, and very few recipes depend on
> coreutils-native, so I suggest decoupling a potential merge of
> uutils-coreutils with pseudo support. The target version delivers almost
> all the value, and pseudo compatibility can follow separately. Or am I
> missing something?
>

It's not just about coreutils-native, it's about what implementation of
coreutils is provided by host distributions. For now, the project has
forced GNU coreutils on Ubuntu, but going forward this may not be
sustainable:

https://git.openembedded.org/openembedded-core/commit/?id=16f2684ebeffa72b5d90525cf9102751b68c298e

and we'll either have to convince distros to build with libc crates, or do
such a build ourselves via -native recipe.

(note also all the fails that were observed when trying to use uutils from
the ubuntu host, which means at least a year ago it was nowhere near mature)

Alex

[-- Attachment #2: Type: text/html, Size: 1979 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [OE-core] [PATCH] uutils-coreutils: move from meta-openembedded
  2026-10-13 10:02       ` Etienne Cordonnier
  2026-10-13 10:24         ` Alexander Kanavin
@ 2026-10-13 10:54         ` Alexander Kanavin
  1 sibling, 0 replies; 11+ messages in thread
From: Alexander Kanavin @ 2026-10-13 10:54 UTC (permalink / raw)
  To: Etienne Cordonnier
  Cc: openembedded-core, Paul Barker, Richard Purdie, collin.funk1

[-- Attachment #1: Type: text/plain, Size: 1183 bytes --]

On Tue, 13 Oct 2026 at 12:02, Etienne Cordonnier <ecordonnier@snap.com>
wrote:

> > - last, but not least. Actually this is the most important one: fix your
> relationship with GNU coreutils. It's painful to watch you two bicker, and
> I do not want the Yocto project to be dragged into this.
>
> On the last point: I can see Collin feels strongly about this, and I take
> the licensing concern seriously. But I haven't been in conflict with him or
> with GNU coreutils. If there's a specific exchange you'd like me to look
> at, please point me to it.
>

The risk of AI-assisted contributions that basically rewrite GPLd gnu
coreutils C code into rust is very real, and it has happened in other
projects, causing their complete derailment. Are you able to spot and
reject such contributions?

There's also a distinct lack of collaboration. Both projects obviously must
implement the exact same UI, and the only way to do it is to have a shared,
independent, rigorous test suite. Collin has explicitly said he is not
endorsing the use of GNU tests for uutils.

I'd also note that quietly skipping my points without saying anything about
them only means they remain unresolved.

Alex

[-- Attachment #2: Type: text/html, Size: 1902 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-10-13 10:54 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-10 11:30 [PATCH] uutils-coreutils: move from meta-openembedded ecordonnier
2026-10-10 18:33 ` Collin Funk
2026-10-11 16:23   ` [OE-core] " Yoann Congal
2026-10-12 13:04 ` Alexander Kanavin
2026-10-12 21:13   ` Etienne Cordonnier
2026-10-12 22:58     ` Collin Funk
2026-10-13  7:41     ` Alexander Kanavin
2026-10-13  8:13       ` Yoann Congal
2026-10-13 10:02       ` Etienne Cordonnier
2026-10-13 10:24         ` Alexander Kanavin
2026-10-13 10:54         ` Alexander Kanavin

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.