All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] Extend cargo based recip support
@ 2023-03-25  9:00 frederic.martinsons
  2023-03-25  9:00 ` [PATCH 1/5] cargo_common.bbclass: Support local github repos frederic.martinsons
                   ` (5 more replies)
  0 siblings, 6 replies; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Frederic Martinsons <frederic.martinsons@gmail.com>

This series brings the support of local git repository inside
a cargo based recipe.

It also enable devtool capacity on it and provide a real crate
example recipe to show how things are done.

The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:

  xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)

are available in the Git repository at:

  https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool

Alex Kiernan (1):
  cargo_common.bbclass: Support local github repos

Frederic Martinsons (4):
  cargo_common.bbclass: add support of user in url for patch
  rust-example: provide a recipe for zvariant
  devtool: add support for multiple git url inside a cargo based recipe
  patch: support of git patches when the source uri contained subpath
    param

 meta/classes-recipe/cargo_common.bbclass      |   40 +
 meta/classes/externalsrc.bbclass              |    3 +
 meta/lib/oe/patch.py                          |   57 +-
 .../rust-example/zvariant-crates.inc          |  145 ++
 .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
 .../rust-example/zvariant_3.12.0.bb           |   20 +
 6 files changed, 1501 insertions(+), 13 deletions(-)
 create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
 create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
 create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb

-- 
2.34.1



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

* [PATCH 1/5] cargo_common.bbclass: Support local github repos
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
@ 2023-03-25  9:00 ` frederic.martinsons
  2023-03-25  9:00 ` [PATCH 2/5] cargo_common.bbclass: add support of user in url for patch frederic.martinsons
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Alex Kiernan <alex.kiernan@gmail.com>

Since disable network was added cargo configurations which reference git
repos fail as they attempt to fetch across the network as part of
do_compile, even if EXTRA_OECARGO_PATHS to add them as part of `paths`
is used, as this is documented as only working for packages which exist
in crates.io.

Add parsing of the SRC_URIs for git repos and include `[patch]` sections
to redirect to the checked out source repos which the bitbake fetcher
has already populated.

There are still cases which don't work - if you have multiple copies of
the same repo with different revisions, there's currently no way to
represent that and anything using a repo which has a virtual manifest
will fail to build (see https://github.com/rust-lang/cargo/issues/4934).

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
---
 meta/classes-recipe/cargo_common.bbclass | 30 ++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass
index f503a001dd..63b1382908 100644
--- a/meta/classes-recipe/cargo_common.bbclass
+++ b/meta/classes-recipe/cargo_common.bbclass
@@ -116,6 +116,36 @@ cargo_common_do_configure () {
 	EOF
 }
 
+python cargo_common_do_patch_paths() {
+    cargo_config = os.path.join(d.getVar("CARGO_HOME"), "config")
+    if not os.path.exists(cargo_config):
+        return
+
+    src_uri = (d.getVar('SRC_URI') or "").split()
+    if len(src_uri) == 0:
+        return
+
+    patches = dict()
+    workdir = d.getVar('WORKDIR')
+    fetcher = bb.fetch2.Fetch(src_uri, d)
+    for url in fetcher.urls:
+        ud = fetcher.ud[url]
+        if ud.type == 'git':
+            name = ud.parm.get('name')
+            destsuffix = ud.parm.get('destsuffix')
+            if name is not None and destsuffix is not None:
+                repo = '%s://%s%s' % (ud.proto, ud.host, ud.path)
+                path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix))
+                patches.setdefault(repo, []).append(path)
+
+    with open(cargo_config, "a+") as config:
+        for k, v in patches.items():
+            print('\n[patch."%s"]' % k, file=config)
+            for name in v:
+                print(name, file=config)
+}
+do_configure[postfuncs] += "cargo_common_do_patch_paths"
+
 oe_cargo_fix_env () {
 	export CC="${RUST_TARGET_CC}"
 	export CXX="${RUST_TARGET_CXX}"
-- 
2.34.1



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

* [PATCH 2/5] cargo_common.bbclass: add support of user in url for patch
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
  2023-03-25  9:00 ` [PATCH 1/5] cargo_common.bbclass: Support local github repos frederic.martinsons
@ 2023-03-25  9:00 ` frederic.martinsons
  2023-03-25  9:00 ` [PATCH 3/5] rust-example: provide a recipe for zvariant frederic.martinsons
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Frederic Martinsons <frederic.martinsons@gmail.com>

To handle url like git://git@repo/project

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
---
 meta/classes-recipe/cargo_common.bbclass | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass
index 63b1382908..82ab25b59c 100644
--- a/meta/classes-recipe/cargo_common.bbclass
+++ b/meta/classes-recipe/cargo_common.bbclass
@@ -134,7 +134,10 @@ python cargo_common_do_patch_paths() {
             name = ud.parm.get('name')
             destsuffix = ud.parm.get('destsuffix')
             if name is not None and destsuffix is not None:
-                repo = '%s://%s%s' % (ud.proto, ud.host, ud.path)
+                if ud.user:
+                    repo = '%s://%s@%s%s' % (ud.proto, ud.user, ud.host, ud.path)
+                else:
+                    repo = '%s://%s%s' % (ud.proto, ud.host, ud.path)
                 path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix))
                 patches.setdefault(repo, []).append(path)
 
-- 
2.34.1



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

* [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
  2023-03-25  9:00 ` [PATCH 1/5] cargo_common.bbclass: Support local github repos frederic.martinsons
  2023-03-25  9:00 ` [PATCH 2/5] cargo_common.bbclass: add support of user in url for patch frederic.martinsons
@ 2023-03-25  9:00 ` frederic.martinsons
  2023-03-25 18:51   ` [OE-core] " Alexander Kanavin
  2023-03-25  9:00 ` [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe frederic.martinsons
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Frederic Martinsons <frederic.martinsons@gmail.com>

This recipe is for showing an "real world" example of
a crate that depends on some git repositories.

Usually, this kind of crate is built within a global
workspace (here it is the zbus project) and so
doesn't need a Cargo.lock on its own.

For the sake of the demonstration, I had to add
a patch for probiding a Cargo.lock and modifying
zvariant_deriver to get it from crates.io instead
of pulling locally with a relative path

The use case where the crate had some git repository
in dependency is very common for "private" crate that
are not aimed to be published on crate.io.
When the project grow bigger, it is common to have
a bin and multiple lib developped in parallel, and these
libs are surely on a git repostitory.

Hence the need of this support in oe-core.

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
---
 .../rust-example/zvariant-crates.inc          |  140 ++
 .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
 .../rust-example/zvariant_3.12.0.bb           |   20 +
 3 files changed, 1409 insertions(+)
 create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
 create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
 create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb

diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
new file mode 100644
index 0000000000..297a784661
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
@@ -0,0 +1,140 @@
+SRC_URI += " \
+    crate://crates.io/anes/0.1.6 \
+    crate://crates.io/anyhow/1.0.70 \
+    crate://crates.io/arrayvec/0.7.2 \
+    crate://crates.io/atty/0.2.14 \
+    crate://crates.io/autocfg/1.1.0 \
+    crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bumpalo/3.12.0 \
+    crate://crates.io/byteorder/1.4.3 \
+    crate://crates.io/cast/0.3.0 \
+    crate://crates.io/cfg-if/1.0.0 \
+    crate://crates.io/chrono/0.4.24 \
+    crate://crates.io/ciborium-io/0.2.0 \
+    crate://crates.io/ciborium-ll/0.2.0 \
+    crate://crates.io/ciborium/0.2.0 \
+    crate://crates.io/clap/3.2.23 \
+    crate://crates.io/clap_lex/0.2.4 \
+    crate://crates.io/criterion-plot/0.5.0 \
+    crate://crates.io/criterion/0.4.0 \
+    crate://crates.io/crossbeam-channel/0.5.7 \
+    crate://crates.io/crossbeam-deque/0.8.3 \
+    crate://crates.io/crossbeam-epoch/0.9.14 \
+    crate://crates.io/crossbeam-utils/0.8.15 \
+    crate://crates.io/either/1.8.1 \
+    crate://crates.io/enumflags2/0.7.5 \
+    crate://crates.io/enumflags2_derive/0.7.4 \
+    crate://crates.io/form_urlencoded/1.1.0 \
+    crate://crates.io/futures-channel/0.3.27 \
+    crate://crates.io/futures-core/0.3.27 \
+    crate://crates.io/futures-executor/0.3.27 \
+    crate://crates.io/futures-macro/0.3.27 \
+    crate://crates.io/futures-task/0.3.27 \
+    crate://crates.io/futures-util/0.3.27 \
+    crate://crates.io/getrandom/0.2.8 \
+    crate://crates.io/half/1.8.2 \
+    crate://crates.io/hashbrown/0.12.3 \
+    crate://crates.io/heck/0.3.3 \
+    crate://crates.io/hermit-abi/0.1.19 \
+    crate://crates.io/hermit-abi/0.2.6 \
+    crate://crates.io/idna/0.3.0 \
+    crate://crates.io/indexmap/1.9.2 \
+    crate://crates.io/itertools/0.10.5 \
+    crate://crates.io/itertools/0.9.0 \
+    crate://crates.io/itoa/1.0.6 \
+    crate://crates.io/js-sys/0.3.61 \
+    crate://crates.io/lazy_static/1.4.0 \
+    crate://crates.io/libc/0.2.140 \
+    crate://crates.io/log/0.4.17 \
+    crate://crates.io/memchr/2.5.0 \
+    crate://crates.io/memoffset/0.8.0 \
+    crate://crates.io/num-integer/0.1.45 \
+    crate://crates.io/num-traits/0.2.15 \
+    crate://crates.io/num_cpus/1.15.0 \
+    crate://crates.io/once_cell/1.17.1 \
+    crate://crates.io/oorandom/11.1.3 \
+    crate://crates.io/os_str_bytes/6.5.0 \
+    crate://crates.io/percent-encoding/2.2.0 \
+    crate://crates.io/pin-project-lite/0.2.9 \
+    crate://crates.io/pin-utils/0.1.0 \
+    crate://crates.io/pkg-config/0.3.26 \
+    crate://crates.io/plotters-backend/0.3.4 \
+    crate://crates.io/plotters-svg/0.3.3 \
+    crate://crates.io/plotters/0.3.4 \
+    crate://crates.io/ppv-lite86/0.2.17 \
+    crate://crates.io/proc-macro-crate/0.1.5 \
+    crate://crates.io/proc-macro-crate/1.3.1 \
+    crate://crates.io/proc-macro-error-attr/1.0.4 \
+    crate://crates.io/proc-macro-error/1.0.4 \
+    crate://crates.io/proc-macro2/1.0.53 \
+    crate://crates.io/quote/1.0.26 \
+    crate://crates.io/rand/0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1 \
+    crate://crates.io/rand_core/0.6.4 \
+    crate://crates.io/rayon-core/1.11.0 \
+    crate://crates.io/rayon/1.7.0 \
+    crate://crates.io/regex-syntax/0.6.29 \
+    crate://crates.io/regex/1.7.2 \
+    crate://crates.io/ryu/1.0.13 \
+    crate://crates.io/same-file/1.0.6 \
+    crate://crates.io/scopeguard/1.1.0 \
+    crate://crates.io/serde/1.0.158 \
+    crate://crates.io/serde_bytes/0.11.9 \
+    crate://crates.io/serde_derive/1.0.158 \
+    crate://crates.io/serde_json/1.0.94 \
+    crate://crates.io/serde_repr/0.1.12 \
+    crate://crates.io/slab/0.4.8 \
+    crate://crates.io/static_assertions/1.1.0 \
+    crate://crates.io/strum/0.18.0 \
+    crate://crates.io/strum_macros/0.18.0 \
+    crate://crates.io/syn/1.0.109 \
+    crate://crates.io/syn/2.0.8 \
+    crate://crates.io/system-deps/1.3.2 \
+    crate://crates.io/textwrap/0.16.0 \
+    crate://crates.io/thiserror-impl/1.0.40 \
+    crate://crates.io/thiserror/1.0.40 \
+    crate://crates.io/time-core/0.1.0 \
+    crate://crates.io/time-macros/0.2.8 \
+    crate://crates.io/time/0.3.20 \
+    crate://crates.io/tinytemplate/1.2.1 \
+    crate://crates.io/tinyvec/1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.1 \
+    crate://crates.io/toml/0.5.11 \
+    crate://crates.io/toml_datetime/0.6.1 \
+    crate://crates.io/toml_edit/0.19.8 \
+    crate://crates.io/unicode-bidi/0.3.13 \
+    crate://crates.io/unicode-ident/1.0.8 \
+    crate://crates.io/unicode-normalization/0.1.22 \
+    crate://crates.io/unicode-segmentation/1.10.1 \
+    crate://crates.io/url/2.3.1 \
+    crate://crates.io/uuid/1.3.0 \
+    crate://crates.io/version-compare/0.0.10 \
+    crate://crates.io/version_check/0.9.4 \
+    crate://crates.io/walkdir/2.3.3 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen-backend/0.2.84 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
+    crate://crates.io/wasm-bindgen-macro/0.2.84 \
+    crate://crates.io/wasm-bindgen-shared/0.2.84 \
+    crate://crates.io/wasm-bindgen/0.2.84 \
+    crate://crates.io/web-sys/0.3.61 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi-util/0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi/0.3.9 \
+    crate://crates.io/winnow/0.4.0 \
+    crate://crates.io/zvariant_derive/3.12.0 \
+    crate://crates.io/zvariant_utils/1.0.0 \
+    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
+"
+
+SRCREV_FORMAT .= "_glib"
+SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
+
+SRCREV_FORMAT .= "_glib-sys"
+SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
+
+SRCREV_FORMAT .= "_gobject-sys"
+SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
new file mode 100644
index 0000000000..638ba3ed4d
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
@@ -0,0 +1,1249 @@
+From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
+From: Frederic Martinsons <frederic.martinsons@gmail.com>
+Date: Thu, 23 Mar 2023 07:12:37 +0100
+Subject: [PATCH] Tweak zvariant cargo config
+
+This library crate is a part of zbus project, and is aimed to
+be published amongst the whole project.
+
+Nevertheless, this recipe is for showing example of real
+code which uses a local registry via git url inside yocto
+environment.
+
+I didn't find a real example of binary crate that uses git
+dependency but it seems to me a very common use case
+when we are working on multiple local crates that are not
+aimed to be published on public registry.
+
+Long story short, this patch add a modified Cargo.toml
+to use the zvariant_derive dependency from crates.io instead
+of zbus local one and a pre generated Cargo.lock in order
+to make cargo patch process inside cargo_common.bbclass work
+
+Upstream-Status: Inappropriate
+Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
+---
+ zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
+ zvariant/Cargo.toml |    2 +-
+ 2 files changed, 1199 insertions(+), 1 deletion(-)
+ create mode 100644 zvariant/Cargo.lock
+
+diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
+new file mode 100644
+index 00000000..02a83d42
+--- /dev/null
++++ b/zvariant/Cargo.lock
+@@ -0,0 +1,1198 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++version = 3
++
++[[package]]
++name = "anes"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
++
++[[package]]
++name = "anyhow"
++version = "1.0.70"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
++
++[[package]]
++name = "arrayvec"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi 0.1.19",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
++
++[[package]]
++name = "bitflags"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
++
++[[package]]
++name = "bumpalo"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
++
++[[package]]
++name = "byteorder"
++version = "1.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
++
++[[package]]
++name = "cast"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
++
++[[package]]
++name = "cfg-if"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
++
++[[package]]
++name = "chrono"
++version = "0.4.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
++dependencies = [
++ "num-integer",
++ "num-traits",
++ "serde",
++]
++
++[[package]]
++name = "ciborium"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
++dependencies = [
++ "ciborium-io",
++ "ciborium-ll",
++ "serde",
++]
++
++[[package]]
++name = "ciborium-io"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
++
++[[package]]
++name = "ciborium-ll"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
++dependencies = [
++ "ciborium-io",
++ "half",
++]
++
++[[package]]
++name = "clap"
++version = "3.2.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
++dependencies = [
++ "bitflags",
++ "clap_lex",
++ "indexmap",
++ "textwrap",
++]
++
++[[package]]
++name = "clap_lex"
++version = "0.2.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
++dependencies = [
++ "os_str_bytes",
++]
++
++[[package]]
++name = "criterion"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
++dependencies = [
++ "anes",
++ "atty",
++ "cast",
++ "ciborium",
++ "clap",
++ "criterion-plot",
++ "itertools 0.10.5",
++ "lazy_static",
++ "num-traits",
++ "oorandom",
++ "plotters",
++ "rayon",
++ "regex",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "tinytemplate",
++ "walkdir",
++]
++
++[[package]]
++name = "criterion-plot"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
++dependencies = [
++ "cast",
++ "itertools 0.10.5",
++]
++
++[[package]]
++name = "crossbeam-channel"
++version = "0.5.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
++dependencies = [
++ "cfg-if",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
++dependencies = [
++ "cfg-if",
++ "crossbeam-epoch",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.9.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
++dependencies = [
++ "autocfg",
++ "cfg-if",
++ "crossbeam-utils",
++ "memoffset",
++ "scopeguard",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "either"
++version = "1.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
++
++[[package]]
++name = "enumflags2"
++version = "0.7.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
++dependencies = [
++ "enumflags2_derive",
++ "serde",
++]
++
++[[package]]
++name = "enumflags2_derive"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "form_urlencoded"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
++dependencies = [
++ "percent-encoding",
++]
++
++[[package]]
++name = "futures-channel"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
++dependencies = [
++ "futures-core",
++]
++
++[[package]]
++name = "futures-core"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
++
++[[package]]
++name = "futures-executor"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
++dependencies = [
++ "futures-core",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-macro"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "futures-task"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
++
++[[package]]
++name = "futures-util"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
++dependencies = [
++ "futures-core",
++ "futures-macro",
++ "futures-task",
++ "pin-project-lite",
++ "pin-utils",
++ "slab",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "wasi",
++]
++
++[[package]]
++name = "glib"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "bitflags",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-macros",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++]
++
++[[package]]
++name = "glib-macros"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "anyhow",
++ "heck",
++ "itertools 0.9.0",
++ "proc-macro-crate 0.1.5",
++ "proc-macro-error",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "glib-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gobject-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "glib-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "half"
++version = "1.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
++
++[[package]]
++name = "hashbrown"
++version = "0.12.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
++
++[[package]]
++name = "heck"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
++dependencies = [
++ "unicode-segmentation",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "idna"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
++dependencies = [
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
++dependencies = [
++ "autocfg",
++ "hashbrown",
++]
++
++[[package]]
++name = "itertools"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itertools"
++version = "0.10.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
++
++[[package]]
++name = "js-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.140"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++
++[[package]]
++name = "log"
++version = "0.4.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "memchr"
++version = "2.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
++
++[[package]]
++name = "memoffset"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.45"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
++dependencies = [
++ "autocfg",
++ "num-traits",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.15.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
++dependencies = [
++ "hermit-abi 0.2.6",
++ "libc",
++]
++
++[[package]]
++name = "once_cell"
++version = "1.17.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
++
++[[package]]
++name = "oorandom"
++version = "11.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
++
++[[package]]
++name = "os_str_bytes"
++version = "6.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
++
++[[package]]
++name = "percent-encoding"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
++
++[[package]]
++name = "pin-project-lite"
++version = "0.2.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
++
++[[package]]
++name = "pin-utils"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
++
++[[package]]
++name = "plotters"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
++dependencies = [
++ "num-traits",
++ "plotters-backend",
++ "plotters-svg",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "plotters-backend"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
++
++[[package]]
++name = "plotters-svg"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
++dependencies = [
++ "plotters-backend",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
++
++[[package]]
++name = "proc-macro-crate"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
++dependencies = [
++ "toml",
++]
++
++[[package]]
++name = "proc-macro-crate"
++version = "1.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
++dependencies = [
++ "once_cell",
++ "toml_edit",
++]
++
++[[package]]
++name = "proc-macro-error"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
++dependencies = [
++ "proc-macro-error-attr",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro-error-attr"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.53"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
++dependencies = [
++ "unicode-ident",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
++dependencies = [
++ "libc",
++ "rand_chacha",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
++dependencies = [
++ "ppv-lite86",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
++dependencies = [
++ "getrandom",
++]
++
++[[package]]
++name = "rayon"
++version = "1.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
++dependencies = [
++ "either",
++ "rayon-core",
++]
++
++[[package]]
++name = "rayon-core"
++version = "1.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
++dependencies = [
++ "crossbeam-channel",
++ "crossbeam-deque",
++ "crossbeam-utils",
++ "num_cpus",
++]
++
++[[package]]
++name = "regex"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
++dependencies = [
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
++
++[[package]]
++name = "ryu"
++version = "1.0.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
++
++[[package]]
++name = "same-file"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
++dependencies = [
++ "winapi-util",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "serde"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_bytes"
++version = "0.11.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.94"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "serde_repr"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "slab"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "static_assertions"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
++
++[[package]]
++name = "strum"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
++
++[[package]]
++name = "strum_macros"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
++dependencies = [
++ "heck",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.109"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "syn"
++version = "2.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "system-deps"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
++dependencies = [
++ "heck",
++ "pkg-config",
++ "strum",
++ "strum_macros",
++ "thiserror",
++ "toml",
++ "version-compare",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.16.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
++
++[[package]]
++name = "thiserror"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
++dependencies = [
++ "thiserror-impl",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "time"
++version = "0.3.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
++dependencies = [
++ "serde",
++ "time-core",
++ "time-macros",
++]
++
++[[package]]
++name = "time-core"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
++
++[[package]]
++name = "time-macros"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
++dependencies = [
++ "time-core",
++]
++
++[[package]]
++name = "tinytemplate"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
++dependencies = [
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "tinyvec"
++version = "1.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
++dependencies = [
++ "tinyvec_macros",
++]
++
++[[package]]
++name = "tinyvec_macros"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
++
++[[package]]
++name = "toml"
++version = "0.5.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "toml_datetime"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
++
++[[package]]
++name = "toml_edit"
++version = "0.19.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
++dependencies = [
++ "indexmap",
++ "toml_datetime",
++ "winnow",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
++
++[[package]]
++name = "unicode-ident"
++version = "1.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
++dependencies = [
++ "tinyvec",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
++
++[[package]]
++name = "url"
++version = "2.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
++dependencies = [
++ "form_urlencoded",
++ "idna",
++ "percent-encoding",
++ "serde",
++]
++
++[[package]]
++name = "uuid"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "version-compare"
++version = "0.0.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
++
++[[package]]
++name = "version_check"
++version = "0.9.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
++
++[[package]]
++name = "walkdir"
++version = "2.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
++dependencies = [
++ "same-file",
++ "winapi-util",
++]
++
++[[package]]
++name = "wasi"
++version = "0.11.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
++dependencies = [
++ "cfg-if",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
++dependencies = [
++ "bumpalo",
++ "log",
++ "once_cell",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
++
++[[package]]
++name = "web-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "winapi"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++
++[[package]]
++name = "winnow"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "zvariant"
++version = "3.12.0"
++dependencies = [
++ "arrayvec",
++ "byteorder",
++ "chrono",
++ "criterion",
++ "enumflags2",
++ "glib",
++ "libc",
++ "rand",
++ "serde",
++ "serde_bytes",
++ "serde_json",
++ "serde_repr",
++ "static_assertions",
++ "time",
++ "url",
++ "uuid",
++ "zvariant_derive",
++]
++
++[[package]]
++name = "zvariant_derive"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
++dependencies = [
++ "proc-macro-crate 1.3.1",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "zvariant_utils",
++]
++
++[[package]]
++name = "zvariant_utils"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
+diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
+index 45367729..6981862a 100644
+--- a/zvariant/Cargo.toml
++++ b/zvariant/Cargo.toml
+@@ -27,7 +27,7 @@ byteorder = "1.4.3"
+ serde = { version = "1.0", features = ["derive"] }
+ arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
+ enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
+-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
++zvariant_derive = "3.12.0"
+ serde_bytes = { version = "0.11", optional = true }
+ static_assertions = "1.1.0"
+ libc = "0.2.137"
+2.34.1
+
diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
new file mode 100644
index 0000000000..ab769b3fce
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
+DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
+This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
+A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
+data and is also supported by this crate."
+HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
+
+SRC_URI = " \
+    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
+    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
+"
+
+SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
+S = "${WORKDIR}/zvariant"
+
+inherit cargo cargo-update-recipe-crates
+
+require ${BPN}-crates.inc
-- 
2.34.1



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

* [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
                   ` (2 preceding siblings ...)
  2023-03-25  9:00 ` [PATCH 3/5] rust-example: provide a recipe for zvariant frederic.martinsons
@ 2023-03-25  9:00 ` frederic.martinsons
  2023-03-25 18:55   ` [OE-core] " Alexander Kanavin
  2023-03-25 19:02   ` Alexander Kanavin
  2023-03-25  9:00 ` [PATCH 5/5] patch: support of git patches when the source uri contained subpath param frederic.martinsons
  2023-03-27 14:20 ` [OE-core] [PATCH 0/5] Extend cargo based recip support Richard Purdie
  5 siblings, 2 replies; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Frederic Martinsons <frederic.martinsons@gmail.com>

Without that, the possible git urls that are in SRC_URI of a recipe
are sucked up during a devtool modify on the recipe.

Let's treat these dependency as local ones by using a new
dedicated variable to be set in the recipe and which will
contains the url of such dependencies.

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
---
 meta/classes-recipe/cargo_common.bbclass               | 7 +++++++
 meta/classes/externalsrc.bbclass                       | 3 +++
 meta/recipes-extended/rust-example/zvariant-crates.inc | 5 +++++
 3 files changed, 15 insertions(+)

diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass
index 82ab25b59c..358c7d7ed2 100644
--- a/meta/classes-recipe/cargo_common.bbclass
+++ b/meta/classes-recipe/cargo_common.bbclass
@@ -33,6 +33,13 @@ CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
 # Used by libstd-rs to point to the vendor dir included in rustc src
 CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
 
+# Contains a list of crate that are fetch on a git
+# repository instead of from crates.io
+# This is useful when devtool'ing a rust recipe
+# and still patch the path of these dependencies
+# to get these dependencies locally
+CARGO_GIT_DEPENDENCIES ?= ""
+
 CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
 cargo_common_do_configure () {
 	mkdir -p ${CARGO_HOME}/bitbake
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index 26c5803ee6..b8ffeb8614 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -65,6 +65,7 @@ python () {
 
         local_srcuri = []
         fetch = bb.fetch2.Fetch((d.getVar('SRC_URI') or '').split(), d)
+        cargo_git_deps = (d.getVar('CARGO_GIT_DEPENDENCIES') or '').split()
         for url in fetch.urls:
             url_data = fetch.ud[url]
             parm = url_data.parm
@@ -72,6 +73,8 @@ python () {
                     url_data.type == 'npmsw' or url_data.type == 'crate' or
                     'type' in parm and parm['type'] == 'kmeta'):
                 local_srcuri.append(url)
+            if url in cargo_git_deps:
+                local_srcuri.append(url)
 
         d.setVar('SRC_URI', ' '.join(local_srcuri))
 
diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
index 297a784661..074ac1934e 100644
--- a/meta/recipes-extended/rust-example/zvariant-crates.inc
+++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
@@ -125,11 +125,16 @@ SRC_URI += " \
     crate://crates.io/winnow/0.4.0 \
     crate://crates.io/zvariant_derive/3.12.0 \
     crate://crates.io/zvariant_utils/1.0.0 \
+"
+
+CARGO_GIT_DEPENDENCIES = " \
     git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
     git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
     git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
 "
 
+SRC_URI += "${CARGO_GIT_DEPENDENCIES}"
+
 SRCREV_FORMAT .= "_glib"
 SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
 
-- 
2.34.1



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

* [PATCH 5/5] patch: support of git patches when the source uri contained subpath param
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
                   ` (3 preceding siblings ...)
  2023-03-25  9:00 ` [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe frederic.martinsons
@ 2023-03-25  9:00 ` frederic.martinsons
  2023-03-27 14:20 ` [OE-core] [PATCH 0/5] Extend cargo based recip support Richard Purdie
  5 siblings, 0 replies; 38+ messages in thread
From: frederic.martinsons @ 2023-03-25  9:00 UTC (permalink / raw)
  To: openembedded-core; +Cc: alex.kiernan

From: Frederic Martinsons <frederic.martinsons@gmail.com>

This is for a specific case where:
  - A recipe use a subpath on a git repo (e.g. git://repo.git/projects;subpath=subproject)
  - The recipe contains a patch to apply
  - a devtool modify is used on this recipe

With these condition, the patch cannot be applied at all.
GitApplyTree class is used for handling patch under devtool, but
when subpath is present in SRC_URI, the resulting git tree
is dirty (every files and dir which was not in subpath are suppressed)
and so "git am" refuse to apply patches. That would not be such
an issue since the GitApplyTree have a fallback to PatchTree in case
of error, but during this error management, there is a git reset --hard HEAD
call which suppress the subpath operation and finally prevent
the patch to be applied even with PatchTree.

When devtool is not involved, only PatchTree class is used and the
above problem is irrelevant.

To support git patch during devtool, the presence of subpath and
the dirtyness of the repo is checked. If these both condition are
met , we simply fallback to PatchTree like it was already done
in case of error during git apply.

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
---
 meta/lib/oe/patch.py | 57 ++++++++++++++++++++++++++++++++++----------
 1 file changed, 44 insertions(+), 13 deletions(-)

diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index b2dc8d0a90..d047b3b947 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -499,6 +499,36 @@ class GitApplyTree(PatchTree):
         finally:
             shutil.rmtree(tempdir)
 
+    def _need_dirty_check(self):
+        fetch = bb.fetch2.Fetch([], self.d)
+        check_dirtyness = False
+        for url in fetch.urls:
+            url_data = fetch.ud[url]
+            parm = url_data.parm
+            # a git url with subpath param will surely be dirty
+            # since the git tree from which we clone will be emptied
+            # from all files that are not in the subpath
+            if url_data.type == 'git' and parm.get('subpath'):
+                check_dirtyness = True
+        return check_dirtyness
+
+    def _commitpatch(self, patch, patchfilevar):
+        output = ""
+        # Add all files
+        shellcmd = ["git", "add", "-f", "-A", "."]
+        output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        # Exclude the patches directory
+        shellcmd = ["git", "reset", "HEAD", self.patchdir]
+        output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        # Commit the result
+        (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail)
+        try:
+            shellcmd.insert(0, patchfilevar)
+            output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        finally:
+            os.remove(tmpfile)
+        return output
+
     def _applypatch(self, patch, force = False, reverse = False, run = True):
         import shutil
 
@@ -534,6 +564,19 @@ class GitApplyTree(PatchTree):
         shutil.copy2(commithook, applyhook)
         try:
             patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file'])
+            if self._need_dirty_check():
+                # Check dirtyness of the tree
+                try:
+                    output = runcmd(["git", "--work-tree=%s" % reporoot, "status", "--short"])
+                except CmdError:
+                    pass
+                else:
+                    if output:
+                        # The tree is dirty, not need to try to apply patches with git anymore
+                        # since they fail, fallback directly to patch
+                        output = PatchTree._applypatch(self, patch, force, reverse, run)
+                        output += self._commitpatch(patch, patchfilevar)
+                        return output
             try:
                 shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot]
                 self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail)
@@ -560,19 +603,7 @@ class GitApplyTree(PatchTree):
                 except CmdError:
                     # Fall back to patch
                     output = PatchTree._applypatch(self, patch, force, reverse, run)
-                # Add all files
-                shellcmd = ["git", "add", "-f", "-A", "."]
-                output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                # Exclude the patches directory
-                shellcmd = ["git", "reset", "HEAD", self.patchdir]
-                output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                # Commit the result
-                (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail)
-                try:
-                    shellcmd.insert(0, patchfilevar)
-                    output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                finally:
-                    os.remove(tmpfile)
+                output += self._commitpatch(patch, patchfilevar)
                 return output
         finally:
             shutil.rmtree(hooks_dir)
-- 
2.34.1



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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-25  9:00 ` [PATCH 3/5] rust-example: provide a recipe for zvariant frederic.martinsons
@ 2023-03-25 18:51   ` Alexander Kanavin
  2023-03-25 20:43     ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-25 18:51 UTC (permalink / raw)
  To: Frederic Martinsons; +Cc: openembedded-core, alex.kiernan

I don't think this should be going in oe-core, as it's not actually
used by anything, or in any automated tests. But you can place it in a
separate layer.

Alex

On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> From: Frederic Martinsons <frederic.martinsons@gmail.com>
>
> This recipe is for showing an "real world" example of
> a crate that depends on some git repositories.
>
> Usually, this kind of crate is built within a global
> workspace (here it is the zbus project) and so
> doesn't need a Cargo.lock on its own.
>
> For the sake of the demonstration, I had to add
> a patch for probiding a Cargo.lock and modifying
> zvariant_deriver to get it from crates.io instead
> of pulling locally with a relative path
>
> The use case where the crate had some git repository
> in dependency is very common for "private" crate that
> are not aimed to be published on crate.io.
> When the project grow bigger, it is common to have
> a bin and multiple lib developped in parallel, and these
> libs are surely on a git repostitory.
>
> Hence the need of this support in oe-core.
>
> Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> ---
>  .../rust-example/zvariant-crates.inc          |  140 ++
>  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>  .../rust-example/zvariant_3.12.0.bb           |   20 +
>  3 files changed, 1409 insertions(+)
>  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>
> diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
> new file mode 100644
> index 0000000000..297a784661
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> @@ -0,0 +1,140 @@
> +SRC_URI += " \
> +    crate://crates.io/anes/0.1.6 \
> +    crate://crates.io/anyhow/1.0.70 \
> +    crate://crates.io/arrayvec/0.7.2 \
> +    crate://crates.io/atty/0.2.14 \
> +    crate://crates.io/autocfg/1.1.0 \
> +    crate://crates.io/bitflags/1.3.2 \
> +    crate://crates.io/bumpalo/3.12.0 \
> +    crate://crates.io/byteorder/1.4.3 \
> +    crate://crates.io/cast/0.3.0 \
> +    crate://crates.io/cfg-if/1.0.0 \
> +    crate://crates.io/chrono/0.4.24 \
> +    crate://crates.io/ciborium-io/0.2.0 \
> +    crate://crates.io/ciborium-ll/0.2.0 \
> +    crate://crates.io/ciborium/0.2.0 \
> +    crate://crates.io/clap/3.2.23 \
> +    crate://crates.io/clap_lex/0.2.4 \
> +    crate://crates.io/criterion-plot/0.5.0 \
> +    crate://crates.io/criterion/0.4.0 \
> +    crate://crates.io/crossbeam-channel/0.5.7 \
> +    crate://crates.io/crossbeam-deque/0.8.3 \
> +    crate://crates.io/crossbeam-epoch/0.9.14 \
> +    crate://crates.io/crossbeam-utils/0.8.15 \
> +    crate://crates.io/either/1.8.1 \
> +    crate://crates.io/enumflags2/0.7.5 \
> +    crate://crates.io/enumflags2_derive/0.7.4 \
> +    crate://crates.io/form_urlencoded/1.1.0 \
> +    crate://crates.io/futures-channel/0.3.27 \
> +    crate://crates.io/futures-core/0.3.27 \
> +    crate://crates.io/futures-executor/0.3.27 \
> +    crate://crates.io/futures-macro/0.3.27 \
> +    crate://crates.io/futures-task/0.3.27 \
> +    crate://crates.io/futures-util/0.3.27 \
> +    crate://crates.io/getrandom/0.2.8 \
> +    crate://crates.io/half/1.8.2 \
> +    crate://crates.io/hashbrown/0.12.3 \
> +    crate://crates.io/heck/0.3.3 \
> +    crate://crates.io/hermit-abi/0.1.19 \
> +    crate://crates.io/hermit-abi/0.2.6 \
> +    crate://crates.io/idna/0.3.0 \
> +    crate://crates.io/indexmap/1.9.2 \
> +    crate://crates.io/itertools/0.10.5 \
> +    crate://crates.io/itertools/0.9.0 \
> +    crate://crates.io/itoa/1.0.6 \
> +    crate://crates.io/js-sys/0.3.61 \
> +    crate://crates.io/lazy_static/1.4.0 \
> +    crate://crates.io/libc/0.2.140 \
> +    crate://crates.io/log/0.4.17 \
> +    crate://crates.io/memchr/2.5.0 \
> +    crate://crates.io/memoffset/0.8.0 \
> +    crate://crates.io/num-integer/0.1.45 \
> +    crate://crates.io/num-traits/0.2.15 \
> +    crate://crates.io/num_cpus/1.15.0 \
> +    crate://crates.io/once_cell/1.17.1 \
> +    crate://crates.io/oorandom/11.1.3 \
> +    crate://crates.io/os_str_bytes/6.5.0 \
> +    crate://crates.io/percent-encoding/2.2.0 \
> +    crate://crates.io/pin-project-lite/0.2.9 \
> +    crate://crates.io/pin-utils/0.1.0 \
> +    crate://crates.io/pkg-config/0.3.26 \
> +    crate://crates.io/plotters-backend/0.3.4 \
> +    crate://crates.io/plotters-svg/0.3.3 \
> +    crate://crates.io/plotters/0.3.4 \
> +    crate://crates.io/ppv-lite86/0.2.17 \
> +    crate://crates.io/proc-macro-crate/0.1.5 \
> +    crate://crates.io/proc-macro-crate/1.3.1 \
> +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> +    crate://crates.io/proc-macro-error/1.0.4 \
> +    crate://crates.io/proc-macro2/1.0.53 \
> +    crate://crates.io/quote/1.0.26 \
> +    crate://crates.io/rand/0.8.5 \
> +    crate://crates.io/rand_chacha/0.3.1 \
> +    crate://crates.io/rand_core/0.6.4 \
> +    crate://crates.io/rayon-core/1.11.0 \
> +    crate://crates.io/rayon/1.7.0 \
> +    crate://crates.io/regex-syntax/0.6.29 \
> +    crate://crates.io/regex/1.7.2 \
> +    crate://crates.io/ryu/1.0.13 \
> +    crate://crates.io/same-file/1.0.6 \
> +    crate://crates.io/scopeguard/1.1.0 \
> +    crate://crates.io/serde/1.0.158 \
> +    crate://crates.io/serde_bytes/0.11.9 \
> +    crate://crates.io/serde_derive/1.0.158 \
> +    crate://crates.io/serde_json/1.0.94 \
> +    crate://crates.io/serde_repr/0.1.12 \
> +    crate://crates.io/slab/0.4.8 \
> +    crate://crates.io/static_assertions/1.1.0 \
> +    crate://crates.io/strum/0.18.0 \
> +    crate://crates.io/strum_macros/0.18.0 \
> +    crate://crates.io/syn/1.0.109 \
> +    crate://crates.io/syn/2.0.8 \
> +    crate://crates.io/system-deps/1.3.2 \
> +    crate://crates.io/textwrap/0.16.0 \
> +    crate://crates.io/thiserror-impl/1.0.40 \
> +    crate://crates.io/thiserror/1.0.40 \
> +    crate://crates.io/time-core/0.1.0 \
> +    crate://crates.io/time-macros/0.2.8 \
> +    crate://crates.io/time/0.3.20 \
> +    crate://crates.io/tinytemplate/1.2.1 \
> +    crate://crates.io/tinyvec/1.6.0 \
> +    crate://crates.io/tinyvec_macros/0.1.1 \
> +    crate://crates.io/toml/0.5.11 \
> +    crate://crates.io/toml_datetime/0.6.1 \
> +    crate://crates.io/toml_edit/0.19.8 \
> +    crate://crates.io/unicode-bidi/0.3.13 \
> +    crate://crates.io/unicode-ident/1.0.8 \
> +    crate://crates.io/unicode-normalization/0.1.22 \
> +    crate://crates.io/unicode-segmentation/1.10.1 \
> +    crate://crates.io/url/2.3.1 \
> +    crate://crates.io/uuid/1.3.0 \
> +    crate://crates.io/version-compare/0.0.10 \
> +    crate://crates.io/version_check/0.9.4 \
> +    crate://crates.io/walkdir/2.3.3 \
> +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> +    crate://crates.io/wasm-bindgen/0.2.84 \
> +    crate://crates.io/web-sys/0.3.61 \
> +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> +    crate://crates.io/winapi-util/0.1.5 \
> +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> +    crate://crates.io/winapi/0.3.9 \
> +    crate://crates.io/winnow/0.4.0 \
> +    crate://crates.io/zvariant_derive/3.12.0 \
> +    crate://crates.io/zvariant_utils/1.0.0 \
> +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
> +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
> +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
> +"
> +
> +SRCREV_FORMAT .= "_glib"
> +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> +
> +SRCREV_FORMAT .= "_glib-sys"
> +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> +
> +SRCREV_FORMAT .= "_gobject-sys"
> +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> new file mode 100644
> index 0000000000..638ba3ed4d
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> @@ -0,0 +1,1249 @@
> +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> +Date: Thu, 23 Mar 2023 07:12:37 +0100
> +Subject: [PATCH] Tweak zvariant cargo config
> +
> +This library crate is a part of zbus project, and is aimed to
> +be published amongst the whole project.
> +
> +Nevertheless, this recipe is for showing example of real
> +code which uses a local registry via git url inside yocto
> +environment.
> +
> +I didn't find a real example of binary crate that uses git
> +dependency but it seems to me a very common use case
> +when we are working on multiple local crates that are not
> +aimed to be published on public registry.
> +
> +Long story short, this patch add a modified Cargo.toml
> +to use the zvariant_derive dependency from crates.io instead
> +of zbus local one and a pre generated Cargo.lock in order
> +to make cargo patch process inside cargo_common.bbclass work
> +
> +Upstream-Status: Inappropriate
> +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> +---
> + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> + zvariant/Cargo.toml |    2 +-
> + 2 files changed, 1199 insertions(+), 1 deletion(-)
> + create mode 100644 zvariant/Cargo.lock
> +
> +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> +new file mode 100644
> +index 00000000..02a83d42
> +--- /dev/null
> ++++ b/zvariant/Cargo.lock
> +@@ -0,0 +1,1198 @@
> ++# This file is automatically @generated by Cargo.
> ++# It is not intended for manual editing.
> ++version = 3
> ++
> ++[[package]]
> ++name = "anes"
> ++version = "0.1.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> ++
> ++[[package]]
> ++name = "anyhow"
> ++version = "1.0.70"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> ++
> ++[[package]]
> ++name = "arrayvec"
> ++version = "0.7.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "atty"
> ++version = "0.2.14"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> ++dependencies = [
> ++ "hermit-abi 0.1.19",
> ++ "libc",
> ++ "winapi",
> ++]
> ++
> ++[[package]]
> ++name = "autocfg"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> ++
> ++[[package]]
> ++name = "bitflags"
> ++version = "1.3.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> ++
> ++[[package]]
> ++name = "bumpalo"
> ++version = "3.12.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> ++
> ++[[package]]
> ++name = "byteorder"
> ++version = "1.4.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> ++
> ++[[package]]
> ++name = "cast"
> ++version = "0.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> ++
> ++[[package]]
> ++name = "cfg-if"
> ++version = "1.0.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> ++
> ++[[package]]
> ++name = "chrono"
> ++version = "0.4.24"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> ++dependencies = [
> ++ "num-integer",
> ++ "num-traits",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "ciborium"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> ++dependencies = [
> ++ "ciborium-io",
> ++ "ciborium-ll",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "ciborium-io"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> ++
> ++[[package]]
> ++name = "ciborium-ll"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> ++dependencies = [
> ++ "ciborium-io",
> ++ "half",
> ++]
> ++
> ++[[package]]
> ++name = "clap"
> ++version = "3.2.23"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> ++dependencies = [
> ++ "bitflags",
> ++ "clap_lex",
> ++ "indexmap",
> ++ "textwrap",
> ++]
> ++
> ++[[package]]
> ++name = "clap_lex"
> ++version = "0.2.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> ++dependencies = [
> ++ "os_str_bytes",
> ++]
> ++
> ++[[package]]
> ++name = "criterion"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> ++dependencies = [
> ++ "anes",
> ++ "atty",
> ++ "cast",
> ++ "ciborium",
> ++ "clap",
> ++ "criterion-plot",
> ++ "itertools 0.10.5",
> ++ "lazy_static",
> ++ "num-traits",
> ++ "oorandom",
> ++ "plotters",
> ++ "rayon",
> ++ "regex",
> ++ "serde",
> ++ "serde_derive",
> ++ "serde_json",
> ++ "tinytemplate",
> ++ "walkdir",
> ++]
> ++
> ++[[package]]
> ++name = "criterion-plot"
> ++version = "0.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> ++dependencies = [
> ++ "cast",
> ++ "itertools 0.10.5",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-channel"
> ++version = "0.5.7"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> ++dependencies = [
> ++ "cfg-if",
> ++ "crossbeam-utils",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-deque"
> ++version = "0.8.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> ++dependencies = [
> ++ "cfg-if",
> ++ "crossbeam-epoch",
> ++ "crossbeam-utils",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-epoch"
> ++version = "0.9.14"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> ++dependencies = [
> ++ "autocfg",
> ++ "cfg-if",
> ++ "crossbeam-utils",
> ++ "memoffset",
> ++ "scopeguard",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-utils"
> ++version = "0.8.15"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> ++dependencies = [
> ++ "cfg-if",
> ++]
> ++
> ++[[package]]
> ++name = "either"
> ++version = "1.8.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> ++
> ++[[package]]
> ++name = "enumflags2"
> ++version = "0.7.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> ++dependencies = [
> ++ "enumflags2_derive",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "enumflags2_derive"
> ++version = "0.7.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "form_urlencoded"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> ++dependencies = [
> ++ "percent-encoding",
> ++]
> ++
> ++[[package]]
> ++name = "futures-channel"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> ++dependencies = [
> ++ "futures-core",
> ++]
> ++
> ++[[package]]
> ++name = "futures-core"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> ++
> ++[[package]]
> ++name = "futures-executor"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> ++dependencies = [
> ++ "futures-core",
> ++ "futures-task",
> ++ "futures-util",
> ++]
> ++
> ++[[package]]
> ++name = "futures-macro"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "futures-task"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> ++
> ++[[package]]
> ++name = "futures-util"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> ++dependencies = [
> ++ "futures-core",
> ++ "futures-macro",
> ++ "futures-task",
> ++ "pin-project-lite",
> ++ "pin-utils",
> ++ "slab",
> ++]
> ++
> ++[[package]]
> ++name = "getrandom"
> ++version = "0.2.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> ++dependencies = [
> ++ "cfg-if",
> ++ "libc",
> ++ "wasi",
> ++]
> ++
> ++[[package]]
> ++name = "glib"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> ++dependencies = [
> ++ "bitflags",
> ++ "futures-channel",
> ++ "futures-core",
> ++ "futures-executor",
> ++ "futures-task",
> ++ "futures-util",
> ++ "glib-macros",
> ++ "glib-sys",
> ++ "gobject-sys",
> ++ "libc",
> ++ "once_cell",
> ++]
> ++
> ++[[package]]
> ++name = "glib-macros"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> ++dependencies = [
> ++ "anyhow",
> ++ "heck",
> ++ "itertools 0.9.0",
> ++ "proc-macro-crate 0.1.5",
> ++ "proc-macro-error",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "glib-sys"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> ++dependencies = [
> ++ "libc",
> ++ "system-deps",
> ++]
> ++
> ++[[package]]
> ++name = "gobject-sys"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> ++dependencies = [
> ++ "glib-sys",
> ++ "libc",
> ++ "system-deps",
> ++]
> ++
> ++[[package]]
> ++name = "half"
> ++version = "1.8.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> ++
> ++[[package]]
> ++name = "hashbrown"
> ++version = "0.12.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> ++
> ++[[package]]
> ++name = "heck"
> ++version = "0.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> ++dependencies = [
> ++ "unicode-segmentation",
> ++]
> ++
> ++[[package]]
> ++name = "hermit-abi"
> ++version = "0.1.19"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> ++dependencies = [
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "hermit-abi"
> ++version = "0.2.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> ++dependencies = [
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "idna"
> ++version = "0.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> ++dependencies = [
> ++ "unicode-bidi",
> ++ "unicode-normalization",
> ++]
> ++
> ++[[package]]
> ++name = "indexmap"
> ++version = "1.9.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> ++dependencies = [
> ++ "autocfg",
> ++ "hashbrown",
> ++]
> ++
> ++[[package]]
> ++name = "itertools"
> ++version = "0.9.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> ++dependencies = [
> ++ "either",
> ++]
> ++
> ++[[package]]
> ++name = "itertools"
> ++version = "0.10.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> ++dependencies = [
> ++ "either",
> ++]
> ++
> ++[[package]]
> ++name = "itoa"
> ++version = "1.0.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> ++
> ++[[package]]
> ++name = "js-sys"
> ++version = "0.3.61"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> ++dependencies = [
> ++ "wasm-bindgen",
> ++]
> ++
> ++[[package]]
> ++name = "lazy_static"
> ++version = "1.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> ++
> ++[[package]]
> ++name = "libc"
> ++version = "0.2.140"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> ++
> ++[[package]]
> ++name = "log"
> ++version = "0.4.17"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> ++dependencies = [
> ++ "cfg-if",
> ++]
> ++
> ++[[package]]
> ++name = "memchr"
> ++version = "2.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> ++
> ++[[package]]
> ++name = "memoffset"
> ++version = "0.8.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "num-integer"
> ++version = "0.1.45"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> ++dependencies = [
> ++ "autocfg",
> ++ "num-traits",
> ++]
> ++
> ++[[package]]
> ++name = "num-traits"
> ++version = "0.2.15"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "num_cpus"
> ++version = "1.15.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> ++dependencies = [
> ++ "hermit-abi 0.2.6",
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "once_cell"
> ++version = "1.17.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> ++
> ++[[package]]
> ++name = "oorandom"
> ++version = "11.1.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> ++
> ++[[package]]
> ++name = "os_str_bytes"
> ++version = "6.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> ++
> ++[[package]]
> ++name = "percent-encoding"
> ++version = "2.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> ++
> ++[[package]]
> ++name = "pin-project-lite"
> ++version = "0.2.9"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> ++
> ++[[package]]
> ++name = "pin-utils"
> ++version = "0.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> ++
> ++[[package]]
> ++name = "pkg-config"
> ++version = "0.3.26"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> ++
> ++[[package]]
> ++name = "plotters"
> ++version = "0.3.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> ++dependencies = [
> ++ "num-traits",
> ++ "plotters-backend",
> ++ "plotters-svg",
> ++ "wasm-bindgen",
> ++ "web-sys",
> ++]
> ++
> ++[[package]]
> ++name = "plotters-backend"
> ++version = "0.3.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> ++
> ++[[package]]
> ++name = "plotters-svg"
> ++version = "0.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> ++dependencies = [
> ++ "plotters-backend",
> ++]
> ++
> ++[[package]]
> ++name = "ppv-lite86"
> ++version = "0.2.17"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> ++
> ++[[package]]
> ++name = "proc-macro-crate"
> ++version = "0.1.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> ++dependencies = [
> ++ "toml",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-crate"
> ++version = "1.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> ++dependencies = [
> ++ "once_cell",
> ++ "toml_edit",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-error"
> ++version = "1.0.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> ++dependencies = [
> ++ "proc-macro-error-attr",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "version_check",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-error-attr"
> ++version = "1.0.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "version_check",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro2"
> ++version = "1.0.53"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> ++dependencies = [
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "quote"
> ++version = "1.0.26"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> ++dependencies = [
> ++ "proc-macro2",
> ++]
> ++
> ++[[package]]
> ++name = "rand"
> ++version = "0.8.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> ++dependencies = [
> ++ "libc",
> ++ "rand_chacha",
> ++ "rand_core",
> ++]
> ++
> ++[[package]]
> ++name = "rand_chacha"
> ++version = "0.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> ++dependencies = [
> ++ "ppv-lite86",
> ++ "rand_core",
> ++]
> ++
> ++[[package]]
> ++name = "rand_core"
> ++version = "0.6.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> ++dependencies = [
> ++ "getrandom",
> ++]
> ++
> ++[[package]]
> ++name = "rayon"
> ++version = "1.7.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> ++dependencies = [
> ++ "either",
> ++ "rayon-core",
> ++]
> ++
> ++[[package]]
> ++name = "rayon-core"
> ++version = "1.11.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> ++dependencies = [
> ++ "crossbeam-channel",
> ++ "crossbeam-deque",
> ++ "crossbeam-utils",
> ++ "num_cpus",
> ++]
> ++
> ++[[package]]
> ++name = "regex"
> ++version = "1.7.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> ++dependencies = [
> ++ "regex-syntax",
> ++]
> ++
> ++[[package]]
> ++name = "regex-syntax"
> ++version = "0.6.29"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> ++
> ++[[package]]
> ++name = "ryu"
> ++version = "1.0.13"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> ++
> ++[[package]]
> ++name = "same-file"
> ++version = "1.0.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> ++dependencies = [
> ++ "winapi-util",
> ++]
> ++
> ++[[package]]
> ++name = "scopeguard"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> ++
> ++[[package]]
> ++name = "serde"
> ++version = "1.0.158"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> ++dependencies = [
> ++ "serde_derive",
> ++]
> ++
> ++[[package]]
> ++name = "serde_bytes"
> ++version = "0.11.9"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "serde_derive"
> ++version = "1.0.158"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "serde_json"
> ++version = "1.0.94"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> ++dependencies = [
> ++ "itoa",
> ++ "ryu",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "serde_repr"
> ++version = "0.1.12"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "slab"
> ++version = "0.4.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "static_assertions"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> ++
> ++[[package]]
> ++name = "strum"
> ++version = "0.18.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> ++
> ++[[package]]
> ++name = "strum_macros"
> ++version = "0.18.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> ++dependencies = [
> ++ "heck",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "syn"
> ++version = "1.0.109"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "syn"
> ++version = "2.0.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "system-deps"
> ++version = "1.3.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> ++dependencies = [
> ++ "heck",
> ++ "pkg-config",
> ++ "strum",
> ++ "strum_macros",
> ++ "thiserror",
> ++ "toml",
> ++ "version-compare",
> ++]
> ++
> ++[[package]]
> ++name = "textwrap"
> ++version = "0.16.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> ++
> ++[[package]]
> ++name = "thiserror"
> ++version = "1.0.40"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> ++dependencies = [
> ++ "thiserror-impl",
> ++]
> ++
> ++[[package]]
> ++name = "thiserror-impl"
> ++version = "1.0.40"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "time"
> ++version = "0.3.20"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> ++dependencies = [
> ++ "serde",
> ++ "time-core",
> ++ "time-macros",
> ++]
> ++
> ++[[package]]
> ++name = "time-core"
> ++version = "0.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> ++
> ++[[package]]
> ++name = "time-macros"
> ++version = "0.2.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> ++dependencies = [
> ++ "time-core",
> ++]
> ++
> ++[[package]]
> ++name = "tinytemplate"
> ++version = "1.2.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> ++dependencies = [
> ++ "serde",
> ++ "serde_json",
> ++]
> ++
> ++[[package]]
> ++name = "tinyvec"
> ++version = "1.6.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> ++dependencies = [
> ++ "tinyvec_macros",
> ++]
> ++
> ++[[package]]
> ++name = "tinyvec_macros"
> ++version = "0.1.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> ++
> ++[[package]]
> ++name = "toml"
> ++version = "0.5.11"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "toml_datetime"
> ++version = "0.6.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> ++
> ++[[package]]
> ++name = "toml_edit"
> ++version = "0.19.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> ++dependencies = [
> ++ "indexmap",
> ++ "toml_datetime",
> ++ "winnow",
> ++]
> ++
> ++[[package]]
> ++name = "unicode-bidi"
> ++version = "0.3.13"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> ++
> ++[[package]]
> ++name = "unicode-ident"
> ++version = "1.0.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> ++
> ++[[package]]
> ++name = "unicode-normalization"
> ++version = "0.1.22"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> ++dependencies = [
> ++ "tinyvec",
> ++]
> ++
> ++[[package]]
> ++name = "unicode-segmentation"
> ++version = "1.10.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> ++
> ++[[package]]
> ++name = "url"
> ++version = "2.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> ++dependencies = [
> ++ "form_urlencoded",
> ++ "idna",
> ++ "percent-encoding",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "uuid"
> ++version = "1.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "version-compare"
> ++version = "0.0.10"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> ++
> ++[[package]]
> ++name = "version_check"
> ++version = "0.9.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> ++
> ++[[package]]
> ++name = "walkdir"
> ++version = "2.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> ++dependencies = [
> ++ "same-file",
> ++ "winapi-util",
> ++]
> ++
> ++[[package]]
> ++name = "wasi"
> ++version = "0.11.0+wasi-snapshot-preview1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> ++
> ++[[package]]
> ++name = "wasm-bindgen"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> ++dependencies = [
> ++ "cfg-if",
> ++ "wasm-bindgen-macro",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-backend"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> ++dependencies = [
> ++ "bumpalo",
> ++ "log",
> ++ "once_cell",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "wasm-bindgen-shared",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-macro"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> ++dependencies = [
> ++ "quote",
> ++ "wasm-bindgen-macro-support",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-macro-support"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "wasm-bindgen-backend",
> ++ "wasm-bindgen-shared",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-shared"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> ++
> ++[[package]]
> ++name = "web-sys"
> ++version = "0.3.61"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> ++dependencies = [
> ++ "js-sys",
> ++ "wasm-bindgen",
> ++]
> ++
> ++[[package]]
> ++name = "winapi"
> ++version = "0.3.9"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> ++dependencies = [
> ++ "winapi-i686-pc-windows-gnu",
> ++ "winapi-x86_64-pc-windows-gnu",
> ++]
> ++
> ++[[package]]
> ++name = "winapi-i686-pc-windows-gnu"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> ++
> ++[[package]]
> ++name = "winapi-util"
> ++version = "0.1.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> ++dependencies = [
> ++ "winapi",
> ++]
> ++
> ++[[package]]
> ++name = "winapi-x86_64-pc-windows-gnu"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> ++
> ++[[package]]
> ++name = "winnow"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> ++dependencies = [
> ++ "memchr",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant"
> ++version = "3.12.0"
> ++dependencies = [
> ++ "arrayvec",
> ++ "byteorder",
> ++ "chrono",
> ++ "criterion",
> ++ "enumflags2",
> ++ "glib",
> ++ "libc",
> ++ "rand",
> ++ "serde",
> ++ "serde_bytes",
> ++ "serde_json",
> ++ "serde_repr",
> ++ "static_assertions",
> ++ "time",
> ++ "url",
> ++ "uuid",
> ++ "zvariant_derive",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant_derive"
> ++version = "3.12.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> ++dependencies = [
> ++ "proc-macro-crate 1.3.1",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "zvariant_utils",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant_utils"
> ++version = "1.0.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> +index 45367729..6981862a 100644
> +--- a/zvariant/Cargo.toml
> ++++ b/zvariant/Cargo.toml
> +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> + serde = { version = "1.0", features = ["derive"] }
> + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
> +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> ++zvariant_derive = "3.12.0"
> + serde_bytes = { version = "0.11", optional = true }
> + static_assertions = "1.1.0"
> + libc = "0.2.137"
> +2.34.1
> +
> diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> new file mode 100644
> index 0000000000..ab769b3fce
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> @@ -0,0 +1,20 @@
> +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
> +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
> +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
> +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
> +data and is also supported by this crate."
> +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> +
> +SRC_URI = " \
> +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
> +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> +"
> +
> +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> +S = "${WORKDIR}/zvariant"
> +
> +inherit cargo cargo-update-recipe-crates
> +
> +require ${BPN}-crates.inc
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
> Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>


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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-25  9:00 ` [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe frederic.martinsons
@ 2023-03-25 18:55   ` Alexander Kanavin
  2023-03-26  5:15     ` Frédéric Martinsons
  2023-03-25 19:02   ` Alexander Kanavin
  1 sibling, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-25 18:55 UTC (permalink / raw)
  To: Frederic Martinsons; +Cc: openembedded-core, alex.kiernan

On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
<frederic.martinsons@gmail.com> wrote:
> +            if url in cargo_git_deps:
> +                local_srcuri.append(url)
>
>          d.setVar('SRC_URI', ' '.join(local_srcuri))

What actually happens without this patch, and what does the patch
change? The commit message isn't making it clear.

Adding special cases based on custom variables is also not great; why
would git:// entries in rust recipes be treated differently than
git:// entries in other recipes?

Alex


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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-25  9:00 ` [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe frederic.martinsons
  2023-03-25 18:55   ` [OE-core] " Alexander Kanavin
@ 2023-03-25 19:02   ` Alexander Kanavin
  2023-03-26  5:15     ` Frédéric Martinsons
  1 sibling, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-25 19:02 UTC (permalink / raw)
  To: Frederic Martinsons; +Cc: openembedded-core, alex.kiernan

On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
<frederic.martinsons@gmail.com> wrote:
> @@ -72,6 +73,8 @@ python () {
>                      url_data.type == 'npmsw' or url_data.type == 'crate' or
>                      'type' in parm and parm['type'] == 'kmeta'):
>                  local_srcuri.append(url)
> +            if url in cargo_git_deps:
> +                local_srcuri.append(url)

Come to think of it, it's better to use the same type parameter with a
special value as in kernel recipes:

git://.....;type=cargo-dep;...

This would avoid the ugly special variable.

Alex


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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-25 18:51   ` [OE-core] " Alexander Kanavin
@ 2023-03-25 20:43     ` Frédéric Martinsons
  2023-03-26 16:55       ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-25 20:43 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, Alex Kiernan

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

I thought that would be treated the same as rust-hello-world_git.bb which
is in oe-core.

Anyway, I don't mind placing it elsewhere, which layer do you think this
recipe would land?



Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> I don't think this should be going in oe-core, as it's not actually
> used by anything, or in any automated tests. But you can place it in a
> separate layer.
>
> Alex
>
> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >
> > This recipe is for showing an "real world" example of
> > a crate that depends on some git repositories.
> >
> > Usually, this kind of crate is built within a global
> > workspace (here it is the zbus project) and so
> > doesn't need a Cargo.lock on its own.
> >
> > For the sake of the demonstration, I had to add
> > a patch for probiding a Cargo.lock and modifying
> > zvariant_deriver to get it from crates.io instead
> > of pulling locally with a relative path
> >
> > The use case where the crate had some git repository
> > in dependency is very common for "private" crate that
> > are not aimed to be published on crate.io.
> > When the project grow bigger, it is common to have
> > a bin and multiple lib developped in parallel, and these
> > libs are surely on a git repostitory.
> >
> > Hence the need of this support in oe-core.
> >
> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> > ---
> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >  3 files changed, 1409 insertions(+)
> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >
> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > new file mode 100644
> > index 0000000000..297a784661
> > --- /dev/null
> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > @@ -0,0 +1,140 @@
> > +SRC_URI += " \
> > +    crate://crates.io/anes/0.1.6 \
> > +    crate://crates.io/anyhow/1.0.70 \
> > +    crate://crates.io/arrayvec/0.7.2 \
> > +    crate://crates.io/atty/0.2.14 \
> > +    crate://crates.io/autocfg/1.1.0 \
> > +    crate://crates.io/bitflags/1.3.2 \
> > +    crate://crates.io/bumpalo/3.12.0 \
> > +    crate://crates.io/byteorder/1.4.3 \
> > +    crate://crates.io/cast/0.3.0 \
> > +    crate://crates.io/cfg-if/1.0.0 \
> > +    crate://crates.io/chrono/0.4.24 \
> > +    crate://crates.io/ciborium-io/0.2.0 \
> > +    crate://crates.io/ciborium-ll/0.2.0 \
> > +    crate://crates.io/ciborium/0.2.0 \
> > +    crate://crates.io/clap/3.2.23 \
> > +    crate://crates.io/clap_lex/0.2.4 \
> > +    crate://crates.io/criterion-plot/0.5.0 \
> > +    crate://crates.io/criterion/0.4.0 \
> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> > +    crate://crates.io/either/1.8.1 \
> > +    crate://crates.io/enumflags2/0.7.5 \
> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> > +    crate://crates.io/form_urlencoded/1.1.0 \
> > +    crate://crates.io/futures-channel/0.3.27 \
> > +    crate://crates.io/futures-core/0.3.27 \
> > +    crate://crates.io/futures-executor/0.3.27 \
> > +    crate://crates.io/futures-macro/0.3.27 \
> > +    crate://crates.io/futures-task/0.3.27 \
> > +    crate://crates.io/futures-util/0.3.27 \
> > +    crate://crates.io/getrandom/0.2.8 \
> > +    crate://crates.io/half/1.8.2 \
> > +    crate://crates.io/hashbrown/0.12.3 \
> > +    crate://crates.io/heck/0.3.3 \
> > +    crate://crates.io/hermit-abi/0.1.19 \
> > +    crate://crates.io/hermit-abi/0.2.6 \
> > +    crate://crates.io/idna/0.3.0 \
> > +    crate://crates.io/indexmap/1.9.2 \
> > +    crate://crates.io/itertools/0.10.5 \
> > +    crate://crates.io/itertools/0.9.0 \
> > +    crate://crates.io/itoa/1.0.6 \
> > +    crate://crates.io/js-sys/0.3.61 \
> > +    crate://crates.io/lazy_static/1.4.0 \
> > +    crate://crates.io/libc/0.2.140 \
> > +    crate://crates.io/log/0.4.17 \
> > +    crate://crates.io/memchr/2.5.0 \
> > +    crate://crates.io/memoffset/0.8.0 \
> > +    crate://crates.io/num-integer/0.1.45 \
> > +    crate://crates.io/num-traits/0.2.15 \
> > +    crate://crates.io/num_cpus/1.15.0 \
> > +    crate://crates.io/once_cell/1.17.1 \
> > +    crate://crates.io/oorandom/11.1.3 \
> > +    crate://crates.io/os_str_bytes/6.5.0 \
> > +    crate://crates.io/percent-encoding/2.2.0 \
> > +    crate://crates.io/pin-project-lite/0.2.9 \
> > +    crate://crates.io/pin-utils/0.1.0 \
> > +    crate://crates.io/pkg-config/0.3.26 \
> > +    crate://crates.io/plotters-backend/0.3.4 \
> > +    crate://crates.io/plotters-svg/0.3.3 \
> > +    crate://crates.io/plotters/0.3.4 \
> > +    crate://crates.io/ppv-lite86/0.2.17 \
> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> > +    crate://crates.io/proc-macro-error/1.0.4 \
> > +    crate://crates.io/proc-macro2/1.0.53 \
> > +    crate://crates.io/quote/1.0.26 \
> > +    crate://crates.io/rand/0.8.5 \
> > +    crate://crates.io/rand_chacha/0.3.1 \
> > +    crate://crates.io/rand_core/0.6.4 \
> > +    crate://crates.io/rayon-core/1.11.0 \
> > +    crate://crates.io/rayon/1.7.0 \
> > +    crate://crates.io/regex-syntax/0.6.29 \
> > +    crate://crates.io/regex/1.7.2 \
> > +    crate://crates.io/ryu/1.0.13 \
> > +    crate://crates.io/same-file/1.0.6 \
> > +    crate://crates.io/scopeguard/1.1.0 \
> > +    crate://crates.io/serde/1.0.158 \
> > +    crate://crates.io/serde_bytes/0.11.9 \
> > +    crate://crates.io/serde_derive/1.0.158 \
> > +    crate://crates.io/serde_json/1.0.94 \
> > +    crate://crates.io/serde_repr/0.1.12 \
> > +    crate://crates.io/slab/0.4.8 \
> > +    crate://crates.io/static_assertions/1.1.0 \
> > +    crate://crates.io/strum/0.18.0 \
> > +    crate://crates.io/strum_macros/0.18.0 \
> > +    crate://crates.io/syn/1.0.109 \
> > +    crate://crates.io/syn/2.0.8 \
> > +    crate://crates.io/system-deps/1.3.2 \
> > +    crate://crates.io/textwrap/0.16.0 \
> > +    crate://crates.io/thiserror-impl/1.0.40 \
> > +    crate://crates.io/thiserror/1.0.40 \
> > +    crate://crates.io/time-core/0.1.0 \
> > +    crate://crates.io/time-macros/0.2.8 \
> > +    crate://crates.io/time/0.3.20 \
> > +    crate://crates.io/tinytemplate/1.2.1 \
> > +    crate://crates.io/tinyvec/1.6.0 \
> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> > +    crate://crates.io/toml/0.5.11 \
> > +    crate://crates.io/toml_datetime/0.6.1 \
> > +    crate://crates.io/toml_edit/0.19.8 \
> > +    crate://crates.io/unicode-bidi/0.3.13 \
> > +    crate://crates.io/unicode-ident/1.0.8 \
> > +    crate://crates.io/unicode-normalization/0.1.22 \
> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> > +    crate://crates.io/url/2.3.1 \
> > +    crate://crates.io/uuid/1.3.0 \
> > +    crate://crates.io/version-compare/0.0.10 \
> > +    crate://crates.io/version_check/0.9.4 \
> > +    crate://crates.io/walkdir/2.3.3 \
> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> > +    crate://crates.io/web-sys/0.3.61 \
> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> > +    crate://crates.io/winapi-util/0.1.5 \
> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> > +    crate://crates.io/winapi/0.3.9 \
> > +    crate://crates.io/winnow/0.4.0 \
> > +    crate://crates.io/zvariant_derive/3.12.0 \
> > +    crate://crates.io/zvariant_utils/1.0.0 \
> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> > +"
> > +
> > +SRCREV_FORMAT .= "_glib"
> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> > +
> > +SRCREV_FORMAT .= "_glib-sys"
> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > +
> > +SRCREV_FORMAT .= "_gobject-sys"
> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > new file mode 100644
> > index 0000000000..638ba3ed4d
> > --- /dev/null
> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > @@ -0,0 +1,1249 @@
> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> > +Subject: [PATCH] Tweak zvariant cargo config
> > +
> > +This library crate is a part of zbus project, and is aimed to
> > +be published amongst the whole project.
> > +
> > +Nevertheless, this recipe is for showing example of real
> > +code which uses a local registry via git url inside yocto
> > +environment.
> > +
> > +I didn't find a real example of binary crate that uses git
> > +dependency but it seems to me a very common use case
> > +when we are working on multiple local crates that are not
> > +aimed to be published on public registry.
> > +
> > +Long story short, this patch add a modified Cargo.toml
> > +to use the zvariant_derive dependency from crates.io instead
> > +of zbus local one and a pre generated Cargo.lock in order
> > +to make cargo patch process inside cargo_common.bbclass work
> > +
> > +Upstream-Status: Inappropriate
> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> > +---
> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> > + zvariant/Cargo.toml |    2 +-
> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> > + create mode 100644 zvariant/Cargo.lock
> > +
> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> > +new file mode 100644
> > +index 00000000..02a83d42
> > +--- /dev/null
> > ++++ b/zvariant/Cargo.lock
> > +@@ -0,0 +1,1198 @@
> > ++# This file is automatically @generated by Cargo.
> > ++# It is not intended for manual editing.
> > ++version = 3
> > ++
> > ++[[package]]
> > ++name = "anes"
> > ++version = "0.1.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> > ++
> > ++[[package]]
> > ++name = "anyhow"
> > ++version = "1.0.70"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> > ++
> > ++[[package]]
> > ++name = "arrayvec"
> > ++version = "0.7.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "atty"
> > ++version = "0.2.14"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> > ++dependencies = [
> > ++ "hermit-abi 0.1.19",
> > ++ "libc",
> > ++ "winapi",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "autocfg"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> > ++
> > ++[[package]]
> > ++name = "bitflags"
> > ++version = "1.3.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> > ++
> > ++[[package]]
> > ++name = "bumpalo"
> > ++version = "3.12.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> > ++
> > ++[[package]]
> > ++name = "byteorder"
> > ++version = "1.4.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> > ++
> > ++[[package]]
> > ++name = "cast"
> > ++version = "0.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> > ++
> > ++[[package]]
> > ++name = "cfg-if"
> > ++version = "1.0.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> > ++
> > ++[[package]]
> > ++name = "chrono"
> > ++version = "0.4.24"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> > ++dependencies = [
> > ++ "num-integer",
> > ++ "num-traits",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ciborium"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> > ++dependencies = [
> > ++ "ciborium-io",
> > ++ "ciborium-ll",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ciborium-io"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> > ++
> > ++[[package]]
> > ++name = "ciborium-ll"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> > ++dependencies = [
> > ++ "ciborium-io",
> > ++ "half",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "clap"
> > ++version = "3.2.23"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> > ++dependencies = [
> > ++ "bitflags",
> > ++ "clap_lex",
> > ++ "indexmap",
> > ++ "textwrap",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "clap_lex"
> > ++version = "0.2.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> > ++dependencies = [
> > ++ "os_str_bytes",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "criterion"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> > ++dependencies = [
> > ++ "anes",
> > ++ "atty",
> > ++ "cast",
> > ++ "ciborium",
> > ++ "clap",
> > ++ "criterion-plot",
> > ++ "itertools 0.10.5",
> > ++ "lazy_static",
> > ++ "num-traits",
> > ++ "oorandom",
> > ++ "plotters",
> > ++ "rayon",
> > ++ "regex",
> > ++ "serde",
> > ++ "serde_derive",
> > ++ "serde_json",
> > ++ "tinytemplate",
> > ++ "walkdir",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "criterion-plot"
> > ++version = "0.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> > ++dependencies = [
> > ++ "cast",
> > ++ "itertools 0.10.5",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-channel"
> > ++version = "0.5.7"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "crossbeam-utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-deque"
> > ++version = "0.8.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "crossbeam-epoch",
> > ++ "crossbeam-utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-epoch"
> > ++version = "0.9.14"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "cfg-if",
> > ++ "crossbeam-utils",
> > ++ "memoffset",
> > ++ "scopeguard",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-utils"
> > ++version = "0.8.15"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "either"
> > ++version = "1.8.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> > ++
> > ++[[package]]
> > ++name = "enumflags2"
> > ++version = "0.7.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> > ++dependencies = [
> > ++ "enumflags2_derive",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "enumflags2_derive"
> > ++version = "0.7.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "form_urlencoded"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> > ++dependencies = [
> > ++ "percent-encoding",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-channel"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> > ++dependencies = [
> > ++ "futures-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-core"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> > ++
> > ++[[package]]
> > ++name = "futures-executor"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> > ++dependencies = [
> > ++ "futures-core",
> > ++ "futures-task",
> > ++ "futures-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-macro"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-task"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> > ++
> > ++[[package]]
> > ++name = "futures-util"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> > ++dependencies = [
> > ++ "futures-core",
> > ++ "futures-macro",
> > ++ "futures-task",
> > ++ "pin-project-lite",
> > ++ "pin-utils",
> > ++ "slab",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "getrandom"
> > ++version = "0.2.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "libc",
> > ++ "wasi",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > ++dependencies = [
> > ++ "bitflags",
> > ++ "futures-channel",
> > ++ "futures-core",
> > ++ "futures-executor",
> > ++ "futures-task",
> > ++ "futures-util",
> > ++ "glib-macros",
> > ++ "glib-sys",
> > ++ "gobject-sys",
> > ++ "libc",
> > ++ "once_cell",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib-macros"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > ++dependencies = [
> > ++ "anyhow",
> > ++ "heck",
> > ++ "itertools 0.9.0",
> > ++ "proc-macro-crate 0.1.5",
> > ++ "proc-macro-error",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib-sys"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > ++dependencies = [
> > ++ "libc",
> > ++ "system-deps",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "gobject-sys"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > ++dependencies = [
> > ++ "glib-sys",
> > ++ "libc",
> > ++ "system-deps",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "half"
> > ++version = "1.8.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> > ++
> > ++[[package]]
> > ++name = "hashbrown"
> > ++version = "0.12.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> > ++
> > ++[[package]]
> > ++name = "heck"
> > ++version = "0.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> > ++dependencies = [
> > ++ "unicode-segmentation",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "hermit-abi"
> > ++version = "0.1.19"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> > ++dependencies = [
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "hermit-abi"
> > ++version = "0.2.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> > ++dependencies = [
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "idna"
> > ++version = "0.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> > ++dependencies = [
> > ++ "unicode-bidi",
> > ++ "unicode-normalization",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "indexmap"
> > ++version = "1.9.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "hashbrown",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itertools"
> > ++version = "0.9.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> > ++dependencies = [
> > ++ "either",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itertools"
> > ++version = "0.10.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> > ++dependencies = [
> > ++ "either",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itoa"
> > ++version = "1.0.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> > ++
> > ++[[package]]
> > ++name = "js-sys"
> > ++version = "0.3.61"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> > ++dependencies = [
> > ++ "wasm-bindgen",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "lazy_static"
> > ++version = "1.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> > ++
> > ++[[package]]
> > ++name = "libc"
> > ++version = "0.2.140"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> > ++
> > ++[[package]]
> > ++name = "log"
> > ++version = "0.4.17"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "memchr"
> > ++version = "2.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> > ++
> > ++[[package]]
> > ++name = "memoffset"
> > ++version = "0.8.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num-integer"
> > ++version = "0.1.45"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "num-traits",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num-traits"
> > ++version = "0.2.15"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num_cpus"
> > ++version = "1.15.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> > ++dependencies = [
> > ++ "hermit-abi 0.2.6",
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "once_cell"
> > ++version = "1.17.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> > ++
> > ++[[package]]
> > ++name = "oorandom"
> > ++version = "11.1.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> > ++
> > ++[[package]]
> > ++name = "os_str_bytes"
> > ++version = "6.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> > ++
> > ++[[package]]
> > ++name = "percent-encoding"
> > ++version = "2.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> > ++
> > ++[[package]]
> > ++name = "pin-project-lite"
> > ++version = "0.2.9"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> > ++
> > ++[[package]]
> > ++name = "pin-utils"
> > ++version = "0.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> > ++
> > ++[[package]]
> > ++name = "pkg-config"
> > ++version = "0.3.26"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> > ++
> > ++[[package]]
> > ++name = "plotters"
> > ++version = "0.3.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> > ++dependencies = [
> > ++ "num-traits",
> > ++ "plotters-backend",
> > ++ "plotters-svg",
> > ++ "wasm-bindgen",
> > ++ "web-sys",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "plotters-backend"
> > ++version = "0.3.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> > ++
> > ++[[package]]
> > ++name = "plotters-svg"
> > ++version = "0.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> > ++dependencies = [
> > ++ "plotters-backend",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ppv-lite86"
> > ++version = "0.2.17"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> > ++
> > ++[[package]]
> > ++name = "proc-macro-crate"
> > ++version = "0.1.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> > ++dependencies = [
> > ++ "toml",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-crate"
> > ++version = "1.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> > ++dependencies = [
> > ++ "once_cell",
> > ++ "toml_edit",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-error"
> > ++version = "1.0.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> > ++dependencies = [
> > ++ "proc-macro-error-attr",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "version_check",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-error-attr"
> > ++version = "1.0.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "version_check",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro2"
> > ++version = "1.0.53"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> > ++dependencies = [
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "quote"
> > ++version = "1.0.26"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand"
> > ++version = "0.8.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> > ++dependencies = [
> > ++ "libc",
> > ++ "rand_chacha",
> > ++ "rand_core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand_chacha"
> > ++version = "0.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> > ++dependencies = [
> > ++ "ppv-lite86",
> > ++ "rand_core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand_core"
> > ++version = "0.6.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> > ++dependencies = [
> > ++ "getrandom",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rayon"
> > ++version = "1.7.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> > ++dependencies = [
> > ++ "either",
> > ++ "rayon-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rayon-core"
> > ++version = "1.11.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> > ++dependencies = [
> > ++ "crossbeam-channel",
> > ++ "crossbeam-deque",
> > ++ "crossbeam-utils",
> > ++ "num_cpus",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "regex"
> > ++version = "1.7.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> > ++dependencies = [
> > ++ "regex-syntax",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "regex-syntax"
> > ++version = "0.6.29"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> > ++
> > ++[[package]]
> > ++name = "ryu"
> > ++version = "1.0.13"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> > ++
> > ++[[package]]
> > ++name = "same-file"
> > ++version = "1.0.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> > ++dependencies = [
> > ++ "winapi-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "scopeguard"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> > ++
> > ++[[package]]
> > ++name = "serde"
> > ++version = "1.0.158"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> > ++dependencies = [
> > ++ "serde_derive",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_bytes"
> > ++version = "0.11.9"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_derive"
> > ++version = "1.0.158"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_json"
> > ++version = "1.0.94"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> > ++dependencies = [
> > ++ "itoa",
> > ++ "ryu",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_repr"
> > ++version = "0.1.12"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "slab"
> > ++version = "0.4.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "static_assertions"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> > ++
> > ++[[package]]
> > ++name = "strum"
> > ++version = "0.18.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> > ++
> > ++[[package]]
> > ++name = "strum_macros"
> > ++version = "0.18.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> > ++dependencies = [
> > ++ "heck",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "syn"
> > ++version = "1.0.109"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "syn"
> > ++version = "2.0.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "system-deps"
> > ++version = "1.3.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> > ++dependencies = [
> > ++ "heck",
> > ++ "pkg-config",
> > ++ "strum",
> > ++ "strum_macros",
> > ++ "thiserror",
> > ++ "toml",
> > ++ "version-compare",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "textwrap"
> > ++version = "0.16.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> > ++
> > ++[[package]]
> > ++name = "thiserror"
> > ++version = "1.0.40"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> > ++dependencies = [
> > ++ "thiserror-impl",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "thiserror-impl"
> > ++version = "1.0.40"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "time"
> > ++version = "0.3.20"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> > ++dependencies = [
> > ++ "serde",
> > ++ "time-core",
> > ++ "time-macros",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "time-core"
> > ++version = "0.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> > ++
> > ++[[package]]
> > ++name = "time-macros"
> > ++version = "0.2.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> > ++dependencies = [
> > ++ "time-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinytemplate"
> > ++version = "1.2.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> > ++dependencies = [
> > ++ "serde",
> > ++ "serde_json",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinyvec"
> > ++version = "1.6.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> > ++dependencies = [
> > ++ "tinyvec_macros",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinyvec_macros"
> > ++version = "0.1.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> > ++
> > ++[[package]]
> > ++name = "toml"
> > ++version = "0.5.11"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "toml_datetime"
> > ++version = "0.6.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> > ++
> > ++[[package]]
> > ++name = "toml_edit"
> > ++version = "0.19.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> > ++dependencies = [
> > ++ "indexmap",
> > ++ "toml_datetime",
> > ++ "winnow",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "unicode-bidi"
> > ++version = "0.3.13"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> > ++
> > ++[[package]]
> > ++name = "unicode-ident"
> > ++version = "1.0.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> > ++
> > ++[[package]]
> > ++name = "unicode-normalization"
> > ++version = "0.1.22"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> > ++dependencies = [
> > ++ "tinyvec",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "unicode-segmentation"
> > ++version = "1.10.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> > ++
> > ++[[package]]
> > ++name = "url"
> > ++version = "2.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> > ++dependencies = [
> > ++ "form_urlencoded",
> > ++ "idna",
> > ++ "percent-encoding",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "uuid"
> > ++version = "1.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "version-compare"
> > ++version = "0.0.10"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> > ++
> > ++[[package]]
> > ++name = "version_check"
> > ++version = "0.9.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> > ++
> > ++[[package]]
> > ++name = "walkdir"
> > ++version = "2.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> > ++dependencies = [
> > ++ "same-file",
> > ++ "winapi-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasi"
> > ++version = "0.11.0+wasi-snapshot-preview1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "wasm-bindgen-macro",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-backend"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> > ++dependencies = [
> > ++ "bumpalo",
> > ++ "log",
> > ++ "once_cell",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "wasm-bindgen-shared",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-macro"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> > ++dependencies = [
> > ++ "quote",
> > ++ "wasm-bindgen-macro-support",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-macro-support"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "wasm-bindgen-backend",
> > ++ "wasm-bindgen-shared",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-shared"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> > ++
> > ++[[package]]
> > ++name = "web-sys"
> > ++version = "0.3.61"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> > ++dependencies = [
> > ++ "js-sys",
> > ++ "wasm-bindgen",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "winapi"
> > ++version = "0.3.9"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> > ++dependencies = [
> > ++ "winapi-i686-pc-windows-gnu",
> > ++ "winapi-x86_64-pc-windows-gnu",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "winapi-i686-pc-windows-gnu"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> > ++
> > ++[[package]]
> > ++name = "winapi-util"
> > ++version = "0.1.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> > ++dependencies = [
> > ++ "winapi",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "winapi-x86_64-pc-windows-gnu"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> > ++
> > ++[[package]]
> > ++name = "winnow"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> > ++dependencies = [
> > ++ "memchr",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant"
> > ++version = "3.12.0"
> > ++dependencies = [
> > ++ "arrayvec",
> > ++ "byteorder",
> > ++ "chrono",
> > ++ "criterion",
> > ++ "enumflags2",
> > ++ "glib",
> > ++ "libc",
> > ++ "rand",
> > ++ "serde",
> > ++ "serde_bytes",
> > ++ "serde_json",
> > ++ "serde_repr",
> > ++ "static_assertions",
> > ++ "time",
> > ++ "url",
> > ++ "uuid",
> > ++ "zvariant_derive",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant_derive"
> > ++version = "3.12.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> > ++dependencies = [
> > ++ "proc-macro-crate 1.3.1",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "zvariant_utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant_utils"
> > ++version = "1.0.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> > +index 45367729..6981862a 100644
> > +--- a/zvariant/Cargo.toml
> > ++++ b/zvariant/Cargo.toml
> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> > + serde = { version = "1.0", features = ["derive"] }
> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional =
> true }
> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> > ++zvariant_derive = "3.12.0"
> > + serde_bytes = { version = "0.11", optional = true }
> > + static_assertions = "1.1.0"
> > + libc = "0.2.137"
> > +2.34.1
> > +
> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > new file mode 100644
> > index 0000000000..ab769b3fce
> > --- /dev/null
> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > @@ -0,0 +1,20 @@
> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus
> wire format"
> > +DESCRIPTION = "This crate provides API for encoding/decoding of data
> to/from D-Bus wire format.\
> > +This binary wire format is simple and very efficient and hence useful
> outside of D-Bus context as well.\
> > +A modified form of this format, GVariant is very commonly used for
> efficient storage of arbitrary \
> > +data and is also supported by this crate."
> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> > +LICENSE = "MIT"
> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> > +
> > +SRC_URI = " \
> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> > +"
> > +
> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> > +S = "${WORKDIR}/zvariant"
> > +
> > +inherit cargo cargo-update-recipe-crates
> > +
> > +require ${BPN}-crates.inc
> > --
> > 2.34.1
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>

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

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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-25 18:55   ` [OE-core] " Alexander Kanavin
@ 2023-03-26  5:15     ` Frédéric Martinsons
  0 siblings, 0 replies; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-26  5:15 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, Alex Kiernan

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

Sorry for making it not clear.

Without this patch, git url that are in the original SRC_URI of the recipe
are simply
remove from the final SRC_URI under devtool and so it prevents
cargo_common_do_patch_paths of cargo_common.bbclass to patch these
component to fetch them locally.



Le sam. 25 mars 2023, 19:55, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> <frederic.martinsons@gmail.com> wrote:
> > +            if url in cargo_git_deps:
> > +                local_srcuri.append(url)
> >
> >          d.setVar('SRC_URI', ' '.join(local_srcuri))
>
> What actually happens without this patch, and what does the patch
> change? The commit message isn't making it clear.
>
> Adding special cases based on custom variables is also not great; why
> would git:// entries in rust recipes be treated differently than
> git:// entries in other recipes?
>
> Alex
>

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

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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-25 19:02   ` Alexander Kanavin
@ 2023-03-26  5:15     ` Frédéric Martinsons
  2023-03-26 14:58       ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-26  5:15 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, alex.kiernan

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

Ah, good idea, I'll try that and provide a V2 of this series if it fits.

On Sat, 25 Mar 2023 at 20:02, Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> <frederic.martinsons@gmail.com> wrote:
> > @@ -72,6 +73,8 @@ python () {
> >                      url_data.type == 'npmsw' or url_data.type ==
> 'crate' or
> >                      'type' in parm and parm['type'] == 'kmeta'):
> >                  local_srcuri.append(url)
> > +            if url in cargo_git_deps:
> > +                local_srcuri.append(url)
>
> Come to think of it, it's better to use the same type parameter with a
> special value as in kernel recipes:
>
> git://.....;type=cargo-dep;...
>
> This would avoid the ugly special variable.
>
> Alex
>

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

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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-26  5:15     ` Frédéric Martinsons
@ 2023-03-26 14:58       ` Frédéric Martinsons
  2023-03-26 18:01         ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-26 14:58 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, alex.kiernan

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

I submit a V2 series where I made modifications you suggested, I choose to
use a more
generic type (git-dependency instead of cargo-dep) since I foresee that
could be used also
for npm based recipe (see
https://bugzilla.yoctoproject.org/show_bug.cgi?id=11015)

For the moment, I let the example recipe in oe-core because I don't know
where it should
go (or even if I should keep it or remove it)

On Sun, 26 Mar 2023 at 07:15, Frédéric Martinsons <
frederic.martinsons@gmail.com> wrote:

> Ah, good idea, I'll try that and provide a V2 of this series if it fits.
>
> On Sat, 25 Mar 2023 at 20:02, Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
>
>> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> > @@ -72,6 +73,8 @@ python () {
>> >                      url_data.type == 'npmsw' or url_data.type ==
>> 'crate' or
>> >                      'type' in parm and parm['type'] == 'kmeta'):
>> >                  local_srcuri.append(url)
>> > +            if url in cargo_git_deps:
>> > +                local_srcuri.append(url)
>>
>> Come to think of it, it's better to use the same type parameter with a
>> special value as in kernel recipes:
>>
>> git://.....;type=cargo-dep;...
>>
>> This would avoid the ugly special variable.
>>
>> Alex
>>
>

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

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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-25 20:43     ` Frédéric Martinsons
@ 2023-03-26 16:55       ` Alexander Kanavin
  2023-03-27  4:09         ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-26 16:55 UTC (permalink / raw)
  To: Frédéric Martinsons; +Cc: openembedded-core, Alex Kiernan

rust-hello-world is installed into test images, and has a runtime test
to verify that the toolchain produces working binaries:
meta/lib/oeqa/runtime/cases/rust.py

I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
Same as meta-perl/meta-python.
https://github.com/meta-rust/meta-rust

Alex

On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>
> Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>
>
>
> Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>>
>> I don't think this should be going in oe-core, as it's not actually
>> used by anything, or in any automated tests. But you can place it in a
>> separate layer.
>>
>> Alex
>>
>> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >
>> > This recipe is for showing an "real world" example of
>> > a crate that depends on some git repositories.
>> >
>> > Usually, this kind of crate is built within a global
>> > workspace (here it is the zbus project) and so
>> > doesn't need a Cargo.lock on its own.
>> >
>> > For the sake of the demonstration, I had to add
>> > a patch for probiding a Cargo.lock and modifying
>> > zvariant_deriver to get it from crates.io instead
>> > of pulling locally with a relative path
>> >
>> > The use case where the crate had some git repository
>> > in dependency is very common for "private" crate that
>> > are not aimed to be published on crate.io.
>> > When the project grow bigger, it is common to have
>> > a bin and multiple lib developped in parallel, and these
>> > libs are surely on a git repostitory.
>> >
>> > Hence the need of this support in oe-core.
>> >
>> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > ---
>> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >  3 files changed, 1409 insertions(+)
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >
>> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > new file mode 100644
>> > index 0000000000..297a784661
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > @@ -0,0 +1,140 @@
>> > +SRC_URI += " \
>> > +    crate://crates.io/anes/0.1.6 \
>> > +    crate://crates.io/anyhow/1.0.70 \
>> > +    crate://crates.io/arrayvec/0.7.2 \
>> > +    crate://crates.io/atty/0.2.14 \
>> > +    crate://crates.io/autocfg/1.1.0 \
>> > +    crate://crates.io/bitflags/1.3.2 \
>> > +    crate://crates.io/bumpalo/3.12.0 \
>> > +    crate://crates.io/byteorder/1.4.3 \
>> > +    crate://crates.io/cast/0.3.0 \
>> > +    crate://crates.io/cfg-if/1.0.0 \
>> > +    crate://crates.io/chrono/0.4.24 \
>> > +    crate://crates.io/ciborium-io/0.2.0 \
>> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> > +    crate://crates.io/ciborium/0.2.0 \
>> > +    crate://crates.io/clap/3.2.23 \
>> > +    crate://crates.io/clap_lex/0.2.4 \
>> > +    crate://crates.io/criterion-plot/0.5.0 \
>> > +    crate://crates.io/criterion/0.4.0 \
>> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> > +    crate://crates.io/either/1.8.1 \
>> > +    crate://crates.io/enumflags2/0.7.5 \
>> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> > +    crate://crates.io/futures-channel/0.3.27 \
>> > +    crate://crates.io/futures-core/0.3.27 \
>> > +    crate://crates.io/futures-executor/0.3.27 \
>> > +    crate://crates.io/futures-macro/0.3.27 \
>> > +    crate://crates.io/futures-task/0.3.27 \
>> > +    crate://crates.io/futures-util/0.3.27 \
>> > +    crate://crates.io/getrandom/0.2.8 \
>> > +    crate://crates.io/half/1.8.2 \
>> > +    crate://crates.io/hashbrown/0.12.3 \
>> > +    crate://crates.io/heck/0.3.3 \
>> > +    crate://crates.io/hermit-abi/0.1.19 \
>> > +    crate://crates.io/hermit-abi/0.2.6 \
>> > +    crate://crates.io/idna/0.3.0 \
>> > +    crate://crates.io/indexmap/1.9.2 \
>> > +    crate://crates.io/itertools/0.10.5 \
>> > +    crate://crates.io/itertools/0.9.0 \
>> > +    crate://crates.io/itoa/1.0.6 \
>> > +    crate://crates.io/js-sys/0.3.61 \
>> > +    crate://crates.io/lazy_static/1.4.0 \
>> > +    crate://crates.io/libc/0.2.140 \
>> > +    crate://crates.io/log/0.4.17 \
>> > +    crate://crates.io/memchr/2.5.0 \
>> > +    crate://crates.io/memoffset/0.8.0 \
>> > +    crate://crates.io/num-integer/0.1.45 \
>> > +    crate://crates.io/num-traits/0.2.15 \
>> > +    crate://crates.io/num_cpus/1.15.0 \
>> > +    crate://crates.io/once_cell/1.17.1 \
>> > +    crate://crates.io/oorandom/11.1.3 \
>> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> > +    crate://crates.io/percent-encoding/2.2.0 \
>> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> > +    crate://crates.io/pin-utils/0.1.0 \
>> > +    crate://crates.io/pkg-config/0.3.26 \
>> > +    crate://crates.io/plotters-backend/0.3.4 \
>> > +    crate://crates.io/plotters-svg/0.3.3 \
>> > +    crate://crates.io/plotters/0.3.4 \
>> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> > +    crate://crates.io/proc-macro2/1.0.53 \
>> > +    crate://crates.io/quote/1.0.26 \
>> > +    crate://crates.io/rand/0.8.5 \
>> > +    crate://crates.io/rand_chacha/0.3.1 \
>> > +    crate://crates.io/rand_core/0.6.4 \
>> > +    crate://crates.io/rayon-core/1.11.0 \
>> > +    crate://crates.io/rayon/1.7.0 \
>> > +    crate://crates.io/regex-syntax/0.6.29 \
>> > +    crate://crates.io/regex/1.7.2 \
>> > +    crate://crates.io/ryu/1.0.13 \
>> > +    crate://crates.io/same-file/1.0.6 \
>> > +    crate://crates.io/scopeguard/1.1.0 \
>> > +    crate://crates.io/serde/1.0.158 \
>> > +    crate://crates.io/serde_bytes/0.11.9 \
>> > +    crate://crates.io/serde_derive/1.0.158 \
>> > +    crate://crates.io/serde_json/1.0.94 \
>> > +    crate://crates.io/serde_repr/0.1.12 \
>> > +    crate://crates.io/slab/0.4.8 \
>> > +    crate://crates.io/static_assertions/1.1.0 \
>> > +    crate://crates.io/strum/0.18.0 \
>> > +    crate://crates.io/strum_macros/0.18.0 \
>> > +    crate://crates.io/syn/1.0.109 \
>> > +    crate://crates.io/syn/2.0.8 \
>> > +    crate://crates.io/system-deps/1.3.2 \
>> > +    crate://crates.io/textwrap/0.16.0 \
>> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> > +    crate://crates.io/thiserror/1.0.40 \
>> > +    crate://crates.io/time-core/0.1.0 \
>> > +    crate://crates.io/time-macros/0.2.8 \
>> > +    crate://crates.io/time/0.3.20 \
>> > +    crate://crates.io/tinytemplate/1.2.1 \
>> > +    crate://crates.io/tinyvec/1.6.0 \
>> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> > +    crate://crates.io/toml/0.5.11 \
>> > +    crate://crates.io/toml_datetime/0.6.1 \
>> > +    crate://crates.io/toml_edit/0.19.8 \
>> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> > +    crate://crates.io/unicode-ident/1.0.8 \
>> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> > +    crate://crates.io/url/2.3.1 \
>> > +    crate://crates.io/uuid/1.3.0 \
>> > +    crate://crates.io/version-compare/0.0.10 \
>> > +    crate://crates.io/version_check/0.9.4 \
>> > +    crate://crates.io/walkdir/2.3.3 \
>> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> > +    crate://crates.io/web-sys/0.3.61 \
>> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> > +    crate://crates.io/winapi-util/0.1.5 \
>> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> > +    crate://crates.io/winapi/0.3.9 \
>> > +    crate://crates.io/winnow/0.4.0 \
>> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> > +"
>> > +
>> > +SRCREV_FORMAT .= "_glib"
>> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > +
>> > +SRCREV_FORMAT .= "_glib-sys"
>> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > +
>> > +SRCREV_FORMAT .= "_gobject-sys"
>> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > new file mode 100644
>> > index 0000000000..638ba3ed4d
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > @@ -0,0 +1,1249 @@
>> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> > +Subject: [PATCH] Tweak zvariant cargo config
>> > +
>> > +This library crate is a part of zbus project, and is aimed to
>> > +be published amongst the whole project.
>> > +
>> > +Nevertheless, this recipe is for showing example of real
>> > +code which uses a local registry via git url inside yocto
>> > +environment.
>> > +
>> > +I didn't find a real example of binary crate that uses git
>> > +dependency but it seems to me a very common use case
>> > +when we are working on multiple local crates that are not
>> > +aimed to be published on public registry.
>> > +
>> > +Long story short, this patch add a modified Cargo.toml
>> > +to use the zvariant_derive dependency from crates.io instead
>> > +of zbus local one and a pre generated Cargo.lock in order
>> > +to make cargo patch process inside cargo_common.bbclass work
>> > +
>> > +Upstream-Status: Inappropriate
>> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > +---
>> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> > + zvariant/Cargo.toml |    2 +-
>> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> > + create mode 100644 zvariant/Cargo.lock
>> > +
>> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> > +new file mode 100644
>> > +index 00000000..02a83d42
>> > +--- /dev/null
>> > ++++ b/zvariant/Cargo.lock
>> > +@@ -0,0 +1,1198 @@
>> > ++# This file is automatically @generated by Cargo.
>> > ++# It is not intended for manual editing.
>> > ++version = 3
>> > ++
>> > ++[[package]]
>> > ++name = "anes"
>> > ++version = "0.1.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> > ++
>> > ++[[package]]
>> > ++name = "anyhow"
>> > ++version = "1.0.70"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> > ++
>> > ++[[package]]
>> > ++name = "arrayvec"
>> > ++version = "0.7.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "atty"
>> > ++version = "0.2.14"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> > ++dependencies = [
>> > ++ "hermit-abi 0.1.19",
>> > ++ "libc",
>> > ++ "winapi",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "autocfg"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> > ++
>> > ++[[package]]
>> > ++name = "bitflags"
>> > ++version = "1.3.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> > ++
>> > ++[[package]]
>> > ++name = "bumpalo"
>> > ++version = "3.12.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> > ++
>> > ++[[package]]
>> > ++name = "byteorder"
>> > ++version = "1.4.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> > ++
>> > ++[[package]]
>> > ++name = "cast"
>> > ++version = "0.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> > ++
>> > ++[[package]]
>> > ++name = "cfg-if"
>> > ++version = "1.0.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> > ++
>> > ++[[package]]
>> > ++name = "chrono"
>> > ++version = "0.4.24"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> > ++dependencies = [
>> > ++ "num-integer",
>> > ++ "num-traits",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> > ++dependencies = [
>> > ++ "ciborium-io",
>> > ++ "ciborium-ll",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium-io"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium-ll"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> > ++dependencies = [
>> > ++ "ciborium-io",
>> > ++ "half",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "clap"
>> > ++version = "3.2.23"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> > ++dependencies = [
>> > ++ "bitflags",
>> > ++ "clap_lex",
>> > ++ "indexmap",
>> > ++ "textwrap",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "clap_lex"
>> > ++version = "0.2.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> > ++dependencies = [
>> > ++ "os_str_bytes",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "criterion"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> > ++dependencies = [
>> > ++ "anes",
>> > ++ "atty",
>> > ++ "cast",
>> > ++ "ciborium",
>> > ++ "clap",
>> > ++ "criterion-plot",
>> > ++ "itertools 0.10.5",
>> > ++ "lazy_static",
>> > ++ "num-traits",
>> > ++ "oorandom",
>> > ++ "plotters",
>> > ++ "rayon",
>> > ++ "regex",
>> > ++ "serde",
>> > ++ "serde_derive",
>> > ++ "serde_json",
>> > ++ "tinytemplate",
>> > ++ "walkdir",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "criterion-plot"
>> > ++version = "0.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> > ++dependencies = [
>> > ++ "cast",
>> > ++ "itertools 0.10.5",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-channel"
>> > ++version = "0.5.7"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "crossbeam-utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-deque"
>> > ++version = "0.8.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "crossbeam-epoch",
>> > ++ "crossbeam-utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-epoch"
>> > ++version = "0.9.14"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "cfg-if",
>> > ++ "crossbeam-utils",
>> > ++ "memoffset",
>> > ++ "scopeguard",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-utils"
>> > ++version = "0.8.15"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "either"
>> > ++version = "1.8.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> > ++
>> > ++[[package]]
>> > ++name = "enumflags2"
>> > ++version = "0.7.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> > ++dependencies = [
>> > ++ "enumflags2_derive",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "enumflags2_derive"
>> > ++version = "0.7.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "form_urlencoded"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> > ++dependencies = [
>> > ++ "percent-encoding",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-channel"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-core"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> > ++
>> > ++[[package]]
>> > ++name = "futures-executor"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++ "futures-task",
>> > ++ "futures-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-macro"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-task"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> > ++
>> > ++[[package]]
>> > ++name = "futures-util"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++ "futures-macro",
>> > ++ "futures-task",
>> > ++ "pin-project-lite",
>> > ++ "pin-utils",
>> > ++ "slab",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "getrandom"
>> > ++version = "0.2.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "libc",
>> > ++ "wasi",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > ++dependencies = [
>> > ++ "bitflags",
>> > ++ "futures-channel",
>> > ++ "futures-core",
>> > ++ "futures-executor",
>> > ++ "futures-task",
>> > ++ "futures-util",
>> > ++ "glib-macros",
>> > ++ "glib-sys",
>> > ++ "gobject-sys",
>> > ++ "libc",
>> > ++ "once_cell",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib-macros"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > ++dependencies = [
>> > ++ "anyhow",
>> > ++ "heck",
>> > ++ "itertools 0.9.0",
>> > ++ "proc-macro-crate 0.1.5",
>> > ++ "proc-macro-error",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib-sys"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++ "system-deps",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "gobject-sys"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > ++dependencies = [
>> > ++ "glib-sys",
>> > ++ "libc",
>> > ++ "system-deps",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "half"
>> > ++version = "1.8.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> > ++
>> > ++[[package]]
>> > ++name = "hashbrown"
>> > ++version = "0.12.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> > ++
>> > ++[[package]]
>> > ++name = "heck"
>> > ++version = "0.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> > ++dependencies = [
>> > ++ "unicode-segmentation",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "hermit-abi"
>> > ++version = "0.1.19"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "hermit-abi"
>> > ++version = "0.2.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "idna"
>> > ++version = "0.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> > ++dependencies = [
>> > ++ "unicode-bidi",
>> > ++ "unicode-normalization",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "indexmap"
>> > ++version = "1.9.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "hashbrown",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itertools"
>> > ++version = "0.9.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> > ++dependencies = [
>> > ++ "either",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itertools"
>> > ++version = "0.10.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> > ++dependencies = [
>> > ++ "either",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itoa"
>> > ++version = "1.0.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> > ++
>> > ++[[package]]
>> > ++name = "js-sys"
>> > ++version = "0.3.61"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> > ++dependencies = [
>> > ++ "wasm-bindgen",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "lazy_static"
>> > ++version = "1.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> > ++
>> > ++[[package]]
>> > ++name = "libc"
>> > ++version = "0.2.140"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> > ++
>> > ++[[package]]
>> > ++name = "log"
>> > ++version = "0.4.17"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "memchr"
>> > ++version = "2.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> > ++
>> > ++[[package]]
>> > ++name = "memoffset"
>> > ++version = "0.8.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num-integer"
>> > ++version = "0.1.45"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "num-traits",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num-traits"
>> > ++version = "0.2.15"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num_cpus"
>> > ++version = "1.15.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> > ++dependencies = [
>> > ++ "hermit-abi 0.2.6",
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "once_cell"
>> > ++version = "1.17.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> > ++
>> > ++[[package]]
>> > ++name = "oorandom"
>> > ++version = "11.1.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> > ++
>> > ++[[package]]
>> > ++name = "os_str_bytes"
>> > ++version = "6.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> > ++
>> > ++[[package]]
>> > ++name = "percent-encoding"
>> > ++version = "2.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> > ++
>> > ++[[package]]
>> > ++name = "pin-project-lite"
>> > ++version = "0.2.9"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> > ++
>> > ++[[package]]
>> > ++name = "pin-utils"
>> > ++version = "0.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> > ++
>> > ++[[package]]
>> > ++name = "pkg-config"
>> > ++version = "0.3.26"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> > ++
>> > ++[[package]]
>> > ++name = "plotters"
>> > ++version = "0.3.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> > ++dependencies = [
>> > ++ "num-traits",
>> > ++ "plotters-backend",
>> > ++ "plotters-svg",
>> > ++ "wasm-bindgen",
>> > ++ "web-sys",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "plotters-backend"
>> > ++version = "0.3.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> > ++
>> > ++[[package]]
>> > ++name = "plotters-svg"
>> > ++version = "0.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> > ++dependencies = [
>> > ++ "plotters-backend",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ppv-lite86"
>> > ++version = "0.2.17"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-crate"
>> > ++version = "0.1.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> > ++dependencies = [
>> > ++ "toml",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-crate"
>> > ++version = "1.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> > ++dependencies = [
>> > ++ "once_cell",
>> > ++ "toml_edit",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-error"
>> > ++version = "1.0.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> > ++dependencies = [
>> > ++ "proc-macro-error-attr",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "version_check",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-error-attr"
>> > ++version = "1.0.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "version_check",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro2"
>> > ++version = "1.0.53"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> > ++dependencies = [
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "quote"
>> > ++version = "1.0.26"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand"
>> > ++version = "0.8.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++ "rand_chacha",
>> > ++ "rand_core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand_chacha"
>> > ++version = "0.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> > ++dependencies = [
>> > ++ "ppv-lite86",
>> > ++ "rand_core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand_core"
>> > ++version = "0.6.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> > ++dependencies = [
>> > ++ "getrandom",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rayon"
>> > ++version = "1.7.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> > ++dependencies = [
>> > ++ "either",
>> > ++ "rayon-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rayon-core"
>> > ++version = "1.11.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> > ++dependencies = [
>> > ++ "crossbeam-channel",
>> > ++ "crossbeam-deque",
>> > ++ "crossbeam-utils",
>> > ++ "num_cpus",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "regex"
>> > ++version = "1.7.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> > ++dependencies = [
>> > ++ "regex-syntax",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "regex-syntax"
>> > ++version = "0.6.29"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> > ++
>> > ++[[package]]
>> > ++name = "ryu"
>> > ++version = "1.0.13"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> > ++
>> > ++[[package]]
>> > ++name = "same-file"
>> > ++version = "1.0.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> > ++dependencies = [
>> > ++ "winapi-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "scopeguard"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> > ++
>> > ++[[package]]
>> > ++name = "serde"
>> > ++version = "1.0.158"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> > ++dependencies = [
>> > ++ "serde_derive",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_bytes"
>> > ++version = "0.11.9"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_derive"
>> > ++version = "1.0.158"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_json"
>> > ++version = "1.0.94"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> > ++dependencies = [
>> > ++ "itoa",
>> > ++ "ryu",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_repr"
>> > ++version = "0.1.12"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "slab"
>> > ++version = "0.4.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "static_assertions"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> > ++
>> > ++[[package]]
>> > ++name = "strum"
>> > ++version = "0.18.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> > ++
>> > ++[[package]]
>> > ++name = "strum_macros"
>> > ++version = "0.18.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> > ++dependencies = [
>> > ++ "heck",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "syn"
>> > ++version = "1.0.109"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "syn"
>> > ++version = "2.0.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "system-deps"
>> > ++version = "1.3.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> > ++dependencies = [
>> > ++ "heck",
>> > ++ "pkg-config",
>> > ++ "strum",
>> > ++ "strum_macros",
>> > ++ "thiserror",
>> > ++ "toml",
>> > ++ "version-compare",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "textwrap"
>> > ++version = "0.16.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> > ++
>> > ++[[package]]
>> > ++name = "thiserror"
>> > ++version = "1.0.40"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> > ++dependencies = [
>> > ++ "thiserror-impl",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "thiserror-impl"
>> > ++version = "1.0.40"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "time"
>> > ++version = "0.3.20"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++ "time-core",
>> > ++ "time-macros",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "time-core"
>> > ++version = "0.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> > ++
>> > ++[[package]]
>> > ++name = "time-macros"
>> > ++version = "0.2.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> > ++dependencies = [
>> > ++ "time-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinytemplate"
>> > ++version = "1.2.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++ "serde_json",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinyvec"
>> > ++version = "1.6.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> > ++dependencies = [
>> > ++ "tinyvec_macros",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinyvec_macros"
>> > ++version = "0.1.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> > ++
>> > ++[[package]]
>> > ++name = "toml"
>> > ++version = "0.5.11"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "toml_datetime"
>> > ++version = "0.6.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> > ++
>> > ++[[package]]
>> > ++name = "toml_edit"
>> > ++version = "0.19.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> > ++dependencies = [
>> > ++ "indexmap",
>> > ++ "toml_datetime",
>> > ++ "winnow",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-bidi"
>> > ++version = "0.3.13"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-ident"
>> > ++version = "1.0.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-normalization"
>> > ++version = "0.1.22"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> > ++dependencies = [
>> > ++ "tinyvec",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-segmentation"
>> > ++version = "1.10.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> > ++
>> > ++[[package]]
>> > ++name = "url"
>> > ++version = "2.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> > ++dependencies = [
>> > ++ "form_urlencoded",
>> > ++ "idna",
>> > ++ "percent-encoding",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "uuid"
>> > ++version = "1.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "version-compare"
>> > ++version = "0.0.10"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> > ++
>> > ++[[package]]
>> > ++name = "version_check"
>> > ++version = "0.9.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> > ++
>> > ++[[package]]
>> > ++name = "walkdir"
>> > ++version = "2.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> > ++dependencies = [
>> > ++ "same-file",
>> > ++ "winapi-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasi"
>> > ++version = "0.11.0+wasi-snapshot-preview1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "wasm-bindgen-macro",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-backend"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> > ++dependencies = [
>> > ++ "bumpalo",
>> > ++ "log",
>> > ++ "once_cell",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "wasm-bindgen-shared",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-macro"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> > ++dependencies = [
>> > ++ "quote",
>> > ++ "wasm-bindgen-macro-support",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-macro-support"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "wasm-bindgen-backend",
>> > ++ "wasm-bindgen-shared",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-shared"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> > ++
>> > ++[[package]]
>> > ++name = "web-sys"
>> > ++version = "0.3.61"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> > ++dependencies = [
>> > ++ "js-sys",
>> > ++ "wasm-bindgen",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "winapi"
>> > ++version = "0.3.9"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
>> > ++dependencies = [
>> > ++ "winapi-i686-pc-windows-gnu",
>> > ++ "winapi-x86_64-pc-windows-gnu",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "winapi-i686-pc-windows-gnu"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
>> > ++
>> > ++[[package]]
>> > ++name = "winapi-util"
>> > ++version = "0.1.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> > ++dependencies = [
>> > ++ "winapi",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "winapi-x86_64-pc-windows-gnu"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
>> > ++
>> > ++[[package]]
>> > ++name = "winnow"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> > ++dependencies = [
>> > ++ "memchr",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant"
>> > ++version = "3.12.0"
>> > ++dependencies = [
>> > ++ "arrayvec",
>> > ++ "byteorder",
>> > ++ "chrono",
>> > ++ "criterion",
>> > ++ "enumflags2",
>> > ++ "glib",
>> > ++ "libc",
>> > ++ "rand",
>> > ++ "serde",
>> > ++ "serde_bytes",
>> > ++ "serde_json",
>> > ++ "serde_repr",
>> > ++ "static_assertions",
>> > ++ "time",
>> > ++ "url",
>> > ++ "uuid",
>> > ++ "zvariant_derive",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant_derive"
>> > ++version = "3.12.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> > ++dependencies = [
>> > ++ "proc-macro-crate 1.3.1",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "zvariant_utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant_utils"
>> > ++version = "1.0.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> > +index 45367729..6981862a 100644
>> > +--- a/zvariant/Cargo.toml
>> > ++++ b/zvariant/Cargo.toml
>> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> > + serde = { version = "1.0", features = ["derive"] }
>> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> > ++zvariant_derive = "3.12.0"
>> > + serde_bytes = { version = "0.11", optional = true }
>> > + static_assertions = "1.1.0"
>> > + libc = "0.2.137"
>> > +2.34.1
>> > +
>> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > new file mode 100644
>> > index 0000000000..ab769b3fce
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > @@ -0,0 +1,20 @@
>> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> > +data and is also supported by this crate."
>> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> > +LICENSE = "MIT"
>> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> > +
>> > +SRC_URI = " \
>> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> > +"
>> > +
>> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> > +S = "${WORKDIR}/zvariant"
>> > +
>> > +inherit cargo cargo-update-recipe-crates
>> > +
>> > +require ${BPN}-crates.inc
>> > --
>> > 2.34.1
>> >
>> >
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> > Links: You receive all messages sent to this group.
>> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> >


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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-26 14:58       ` Frédéric Martinsons
@ 2023-03-26 18:01         ` Alexander Kanavin
  2023-03-27  4:09           ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-26 18:01 UTC (permalink / raw)
  To: Frédéric Martinsons; +Cc: openembedded-core, alex.kiernan

I'm fine with v2, except for the zvariant recipe, that should probably
go to meta-rust (which itself should go to meta-oe, with cleanups).

Alex

On Sun, 26 Mar 2023 at 16:58, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> I submit a V2 series where I made modifications you suggested, I choose to use a more
> generic type (git-dependency instead of cargo-dep) since I foresee that could be used also
> for npm based recipe (see https://bugzilla.yoctoproject.org/show_bug.cgi?id=11015)
>
> For the moment, I let the example recipe in oe-core because I don't know where it should
> go (or even if I should keep it or remove it)
>
> On Sun, 26 Mar 2023 at 07:15, Frédéric Martinsons <frederic.martinsons@gmail.com> wrote:
>>
>> Ah, good idea, I'll try that and provide a V2 of this series if it fits.
>>
>> On Sat, 25 Mar 2023 at 20:02, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>>>
>>> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>>> <frederic.martinsons@gmail.com> wrote:
>>> > @@ -72,6 +73,8 @@ python () {
>>> >                      url_data.type == 'npmsw' or url_data.type == 'crate' or
>>> >                      'type' in parm and parm['type'] == 'kmeta'):
>>> >                  local_srcuri.append(url)
>>> > +            if url in cargo_git_deps:
>>> > +                local_srcuri.append(url)
>>>
>>> Come to think of it, it's better to use the same type parameter with a
>>> special value as in kernel recipes:
>>>
>>> git://.....;type=cargo-dep;...
>>>
>>> This would avoid the ugly special variable.
>>>
>>> Alex


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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-26 16:55       ` Alexander Kanavin
@ 2023-03-27  4:09         ` Frédéric Martinsons
  2023-03-27  6:40           ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27  4:09 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, Alex Kiernan

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

Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or
should I wait for other opinions ?

On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> rust-hello-world is installed into test images, and has a runtime test
> to verify that the toolchain produces working binaries:
> meta/lib/oeqa/runtime/cases/rust.py
>
> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> Same as meta-perl/meta-python.
> https://github.com/meta-rust/meta-rust
>
> Alex
>
> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > I thought that would be treated the same as rust-hello-world_git.bb
> which is in oe-core.
> >
> > Anyway, I don't mind placing it elsewhere, which layer do you think this
> recipe would land?
> >
> >
> >
> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com>
> a écrit :
> >>
> >> I don't think this should be going in oe-core, as it's not actually
> >> used by anything, or in any automated tests. But you can place it in a
> >> separate layer.
> >>
> >> Alex
> >>
> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >
> >> > This recipe is for showing an "real world" example of
> >> > a crate that depends on some git repositories.
> >> >
> >> > Usually, this kind of crate is built within a global
> >> > workspace (here it is the zbus project) and so
> >> > doesn't need a Cargo.lock on its own.
> >> >
> >> > For the sake of the demonstration, I had to add
> >> > a patch for probiding a Cargo.lock and modifying
> >> > zvariant_deriver to get it from crates.io instead
> >> > of pulling locally with a relative path
> >> >
> >> > The use case where the crate had some git repository
> >> > in dependency is very common for "private" crate that
> >> > are not aimed to be published on crate.io.
> >> > When the project grow bigger, it is common to have
> >> > a bin and multiple lib developped in parallel, and these
> >> > libs are surely on a git repostitory.
> >> >
> >> > Hence the need of this support in oe-core.
> >> >
> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > ---
> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> >  3 files changed, 1409 insertions(+)
> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >> >
> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > new file mode 100644
> >> > index 0000000000..297a784661
> >> > --- /dev/null
> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > @@ -0,0 +1,140 @@
> >> > +SRC_URI += " \
> >> > +    crate://crates.io/anes/0.1.6 \
> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> > +    crate://crates.io/atty/0.2.14 \
> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> > +    crate://crates.io/cast/0.3.0 \
> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> > +    crate://crates.io/chrono/0.4.24 \
> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> > +    crate://crates.io/clap/3.2.23 \
> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> > +    crate://crates.io/criterion/0.4.0 \
> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> > +    crate://crates.io/either/1.8.1 \
> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> > +    crate://crates.io/half/1.8.2 \
> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> > +    crate://crates.io/heck/0.3.3 \
> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> > +    crate://crates.io/idna/0.3.0 \
> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> > +    crate://crates.io/itertools/0.10.5 \
> >> > +    crate://crates.io/itertools/0.9.0 \
> >> > +    crate://crates.io/itoa/1.0.6 \
> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> > +    crate://crates.io/libc/0.2.140 \
> >> > +    crate://crates.io/log/0.4.17 \
> >> > +    crate://crates.io/memchr/2.5.0 \
> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> > +    crate://crates.io/plotters/0.3.4 \
> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> > +    crate://crates.io/quote/1.0.26 \
> >> > +    crate://crates.io/rand/0.8.5 \
> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> > +    crate://crates.io/rayon/1.7.0 \
> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> > +    crate://crates.io/regex/1.7.2 \
> >> > +    crate://crates.io/ryu/1.0.13 \
> >> > +    crate://crates.io/same-file/1.0.6 \
> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> > +    crate://crates.io/serde/1.0.158 \
> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> > +    crate://crates.io/slab/0.4.8 \
> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> > +    crate://crates.io/strum/0.18.0 \
> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> > +    crate://crates.io/syn/1.0.109 \
> >> > +    crate://crates.io/syn/2.0.8 \
> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> > +    crate://crates.io/time-core/0.1.0 \
> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> > +    crate://crates.io/time/0.3.20 \
> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> > +    crate://crates.io/toml/0.5.11 \
> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> > +    crate://crates.io/url/2.3.1 \
> >> > +    crate://crates.io/uuid/1.3.0 \
> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> > +    crate://crates.io/version_check/0.9.4 \
> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> > +    crate://crates.io/winapi/0.3.9 \
> >> > +    crate://crates.io/winnow/0.4.0 \
> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> >> > +"
> >> > +
> >> > +SRCREV_FORMAT .= "_glib"
> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> > +
> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > +
> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > new file mode 100644
> >> > index 0000000000..638ba3ed4d
> >> > --- /dev/null
> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > @@ -0,0 +1,1249 @@
> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00
> 2001
> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> > +
> >> > +This library crate is a part of zbus project, and is aimed to
> >> > +be published amongst the whole project.
> >> > +
> >> > +Nevertheless, this recipe is for showing example of real
> >> > +code which uses a local registry via git url inside yocto
> >> > +environment.
> >> > +
> >> > +I didn't find a real example of binary crate that uses git
> >> > +dependency but it seems to me a very common use case
> >> > +when we are working on multiple local crates that are not
> >> > +aimed to be published on public registry.
> >> > +
> >> > +Long story short, this patch add a modified Cargo.toml
> >> > +to use the zvariant_derive dependency from crates.io instead
> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> > +
> >> > +Upstream-Status: Inappropriate
> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > +---
> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> >> > + zvariant/Cargo.toml |    2 +-
> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> > + create mode 100644 zvariant/Cargo.lock
> >> > +
> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> > +new file mode 100644
> >> > +index 00000000..02a83d42
> >> > +--- /dev/null
> >> > ++++ b/zvariant/Cargo.lock
> >> > +@@ -0,0 +1,1198 @@
> >> > ++# This file is automatically @generated by Cargo.
> >> > ++# It is not intended for manual editing.
> >> > ++version = 3
> >> > ++
> >> > ++[[package]]
> >> > ++name = "anes"
> >> > ++version = "0.1.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "anyhow"
> >> > ++version = "1.0.70"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "arrayvec"
> >> > ++version = "0.7.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "atty"
> >> > ++version = "0.2.14"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> > ++dependencies = [
> >> > ++ "hermit-abi 0.1.19",
> >> > ++ "libc",
> >> > ++ "winapi",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "autocfg"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "bitflags"
> >> > ++version = "1.3.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "bumpalo"
> >> > ++version = "3.12.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "byteorder"
> >> > ++version = "1.4.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "cast"
> >> > ++version = "0.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "cfg-if"
> >> > ++version = "1.0.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "chrono"
> >> > ++version = "0.4.24"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> > ++dependencies = [
> >> > ++ "num-integer",
> >> > ++ "num-traits",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> > ++dependencies = [
> >> > ++ "ciborium-io",
> >> > ++ "ciborium-ll",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium-io"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium-ll"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> > ++dependencies = [
> >> > ++ "ciborium-io",
> >> > ++ "half",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "clap"
> >> > ++version = "3.2.23"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> > ++dependencies = [
> >> > ++ "bitflags",
> >> > ++ "clap_lex",
> >> > ++ "indexmap",
> >> > ++ "textwrap",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "clap_lex"
> >> > ++version = "0.2.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> > ++dependencies = [
> >> > ++ "os_str_bytes",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "criterion"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> > ++dependencies = [
> >> > ++ "anes",
> >> > ++ "atty",
> >> > ++ "cast",
> >> > ++ "ciborium",
> >> > ++ "clap",
> >> > ++ "criterion-plot",
> >> > ++ "itertools 0.10.5",
> >> > ++ "lazy_static",
> >> > ++ "num-traits",
> >> > ++ "oorandom",
> >> > ++ "plotters",
> >> > ++ "rayon",
> >> > ++ "regex",
> >> > ++ "serde",
> >> > ++ "serde_derive",
> >> > ++ "serde_json",
> >> > ++ "tinytemplate",
> >> > ++ "walkdir",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "criterion-plot"
> >> > ++version = "0.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> > ++dependencies = [
> >> > ++ "cast",
> >> > ++ "itertools 0.10.5",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-channel"
> >> > ++version = "0.5.7"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-deque"
> >> > ++version = "0.8.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-epoch",
> >> > ++ "crossbeam-utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-epoch"
> >> > ++version = "0.9.14"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-utils",
> >> > ++ "memoffset",
> >> > ++ "scopeguard",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-utils"
> >> > ++version = "0.8.15"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "either"
> >> > ++version = "1.8.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "enumflags2"
> >> > ++version = "0.7.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> > ++dependencies = [
> >> > ++ "enumflags2_derive",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "enumflags2_derive"
> >> > ++version = "0.7.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "form_urlencoded"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> > ++dependencies = [
> >> > ++ "percent-encoding",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-channel"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-core"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-executor"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++ "futures-task",
> >> > ++ "futures-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-macro"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-task"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-util"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++ "futures-macro",
> >> > ++ "futures-task",
> >> > ++ "pin-project-lite",
> >> > ++ "pin-utils",
> >> > ++ "slab",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "getrandom"
> >> > ++version = "0.2.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "libc",
> >> > ++ "wasi",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > ++dependencies = [
> >> > ++ "bitflags",
> >> > ++ "futures-channel",
> >> > ++ "futures-core",
> >> > ++ "futures-executor",
> >> > ++ "futures-task",
> >> > ++ "futures-util",
> >> > ++ "glib-macros",
> >> > ++ "glib-sys",
> >> > ++ "gobject-sys",
> >> > ++ "libc",
> >> > ++ "once_cell",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib-macros"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > ++dependencies = [
> >> > ++ "anyhow",
> >> > ++ "heck",
> >> > ++ "itertools 0.9.0",
> >> > ++ "proc-macro-crate 0.1.5",
> >> > ++ "proc-macro-error",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib-sys"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++ "system-deps",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "gobject-sys"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > ++dependencies = [
> >> > ++ "glib-sys",
> >> > ++ "libc",
> >> > ++ "system-deps",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "half"
> >> > ++version = "1.8.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hashbrown"
> >> > ++version = "0.12.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "heck"
> >> > ++version = "0.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> > ++dependencies = [
> >> > ++ "unicode-segmentation",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hermit-abi"
> >> > ++version = "0.1.19"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hermit-abi"
> >> > ++version = "0.2.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "idna"
> >> > ++version = "0.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> > ++dependencies = [
> >> > ++ "unicode-bidi",
> >> > ++ "unicode-normalization",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "indexmap"
> >> > ++version = "1.9.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "hashbrown",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itertools"
> >> > ++version = "0.9.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itertools"
> >> > ++version = "0.10.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itoa"
> >> > ++version = "1.0.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "js-sys"
> >> > ++version = "0.3.61"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> > ++dependencies = [
> >> > ++ "wasm-bindgen",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "lazy_static"
> >> > ++version = "1.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "libc"
> >> > ++version = "0.2.140"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "log"
> >> > ++version = "0.4.17"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "memchr"
> >> > ++version = "2.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "memoffset"
> >> > ++version = "0.8.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num-integer"
> >> > ++version = "0.1.45"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "num-traits",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num-traits"
> >> > ++version = "0.2.15"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num_cpus"
> >> > ++version = "1.15.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> > ++dependencies = [
> >> > ++ "hermit-abi 0.2.6",
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "once_cell"
> >> > ++version = "1.17.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "oorandom"
> >> > ++version = "11.1.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "os_str_bytes"
> >> > ++version = "6.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "percent-encoding"
> >> > ++version = "2.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pin-project-lite"
> >> > ++version = "0.2.9"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pin-utils"
> >> > ++version = "0.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pkg-config"
> >> > ++version = "0.3.26"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters"
> >> > ++version = "0.3.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> > ++dependencies = [
> >> > ++ "num-traits",
> >> > ++ "plotters-backend",
> >> > ++ "plotters-svg",
> >> > ++ "wasm-bindgen",
> >> > ++ "web-sys",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters-backend"
> >> > ++version = "0.3.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters-svg"
> >> > ++version = "0.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> > ++dependencies = [
> >> > ++ "plotters-backend",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ppv-lite86"
> >> > ++version = "0.2.17"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-crate"
> >> > ++version = "0.1.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> > ++dependencies = [
> >> > ++ "toml",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-crate"
> >> > ++version = "1.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> > ++dependencies = [
> >> > ++ "once_cell",
> >> > ++ "toml_edit",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-error"
> >> > ++version = "1.0.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> > ++dependencies = [
> >> > ++ "proc-macro-error-attr",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "version_check",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-error-attr"
> >> > ++version = "1.0.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "version_check",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro2"
> >> > ++version = "1.0.53"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> > ++dependencies = [
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "quote"
> >> > ++version = "1.0.26"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand"
> >> > ++version = "0.8.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++ "rand_chacha",
> >> > ++ "rand_core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand_chacha"
> >> > ++version = "0.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> > ++dependencies = [
> >> > ++ "ppv-lite86",
> >> > ++ "rand_core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand_core"
> >> > ++version = "0.6.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> > ++dependencies = [
> >> > ++ "getrandom",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rayon"
> >> > ++version = "1.7.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++ "rayon-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rayon-core"
> >> > ++version = "1.11.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> > ++dependencies = [
> >> > ++ "crossbeam-channel",
> >> > ++ "crossbeam-deque",
> >> > ++ "crossbeam-utils",
> >> > ++ "num_cpus",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "regex"
> >> > ++version = "1.7.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> > ++dependencies = [
> >> > ++ "regex-syntax",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "regex-syntax"
> >> > ++version = "0.6.29"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ryu"
> >> > ++version = "1.0.13"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "same-file"
> >> > ++version = "1.0.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> > ++dependencies = [
> >> > ++ "winapi-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "scopeguard"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde"
> >> > ++version = "1.0.158"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> > ++dependencies = [
> >> > ++ "serde_derive",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_bytes"
> >> > ++version = "0.11.9"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_derive"
> >> > ++version = "1.0.158"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_json"
> >> > ++version = "1.0.94"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> > ++dependencies = [
> >> > ++ "itoa",
> >> > ++ "ryu",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_repr"
> >> > ++version = "0.1.12"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "slab"
> >> > ++version = "0.4.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "static_assertions"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "strum"
> >> > ++version = "0.18.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "strum_macros"
> >> > ++version = "0.18.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> > ++dependencies = [
> >> > ++ "heck",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "syn"
> >> > ++version = "1.0.109"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "syn"
> >> > ++version = "2.0.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "system-deps"
> >> > ++version = "1.3.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> > ++dependencies = [
> >> > ++ "heck",
> >> > ++ "pkg-config",
> >> > ++ "strum",
> >> > ++ "strum_macros",
> >> > ++ "thiserror",
> >> > ++ "toml",
> >> > ++ "version-compare",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "textwrap"
> >> > ++version = "0.16.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "thiserror"
> >> > ++version = "1.0.40"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> > ++dependencies = [
> >> > ++ "thiserror-impl",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "thiserror-impl"
> >> > ++version = "1.0.40"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time"
> >> > ++version = "0.3.20"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++ "time-core",
> >> > ++ "time-macros",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time-core"
> >> > ++version = "0.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time-macros"
> >> > ++version = "0.2.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> > ++dependencies = [
> >> > ++ "time-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinytemplate"
> >> > ++version = "1.2.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++ "serde_json",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinyvec"
> >> > ++version = "1.6.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> > ++dependencies = [
> >> > ++ "tinyvec_macros",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinyvec_macros"
> >> > ++version = "0.1.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml"
> >> > ++version = "0.5.11"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml_datetime"
> >> > ++version = "0.6.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml_edit"
> >> > ++version = "0.19.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> > ++dependencies = [
> >> > ++ "indexmap",
> >> > ++ "toml_datetime",
> >> > ++ "winnow",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-bidi"
> >> > ++version = "0.3.13"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-ident"
> >> > ++version = "1.0.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-normalization"
> >> > ++version = "0.1.22"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> > ++dependencies = [
> >> > ++ "tinyvec",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-segmentation"
> >> > ++version = "1.10.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "url"
> >> > ++version = "2.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> > ++dependencies = [
> >> > ++ "form_urlencoded",
> >> > ++ "idna",
> >> > ++ "percent-encoding",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "uuid"
> >> > ++version = "1.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "version-compare"
> >> > ++version = "0.0.10"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "version_check"
> >> > ++version = "0.9.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "walkdir"
> >> > ++version = "2.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> > ++dependencies = [
> >> > ++ "same-file",
> >> > ++ "winapi-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasi"
> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "wasm-bindgen-macro",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-backend"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> > ++dependencies = [
> >> > ++ "bumpalo",
> >> > ++ "log",
> >> > ++ "once_cell",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "wasm-bindgen-shared",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-macro"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> > ++dependencies = [
> >> > ++ "quote",
> >> > ++ "wasm-bindgen-macro-support",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-macro-support"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "wasm-bindgen-backend",
> >> > ++ "wasm-bindgen-shared",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-shared"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "web-sys"
> >> > ++version = "0.3.61"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> > ++dependencies = [
> >> > ++ "js-sys",
> >> > ++ "wasm-bindgen",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "winapi"
> >> > ++version = "0.3.9"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> >> > ++dependencies = [
> >> > ++ "winapi-i686-pc-windows-gnu",
> >> > ++ "winapi-x86_64-pc-windows-gnu",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "winapi-i686-pc-windows-gnu"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "winapi-util"
> >> > ++version = "0.1.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> > ++dependencies = [
> >> > ++ "winapi",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "winapi-x86_64-pc-windows-gnu"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "winnow"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> > ++dependencies = [
> >> > ++ "memchr",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant"
> >> > ++version = "3.12.0"
> >> > ++dependencies = [
> >> > ++ "arrayvec",
> >> > ++ "byteorder",
> >> > ++ "chrono",
> >> > ++ "criterion",
> >> > ++ "enumflags2",
> >> > ++ "glib",
> >> > ++ "libc",
> >> > ++ "rand",
> >> > ++ "serde",
> >> > ++ "serde_bytes",
> >> > ++ "serde_json",
> >> > ++ "serde_repr",
> >> > ++ "static_assertions",
> >> > ++ "time",
> >> > ++ "url",
> >> > ++ "uuid",
> >> > ++ "zvariant_derive",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant_derive"
> >> > ++version = "3.12.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> > ++dependencies = [
> >> > ++ "proc-macro-crate 1.3.1",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "zvariant_utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant_utils"
> >> > ++version = "1.0.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> > +index 45367729..6981862a 100644
> >> > +--- a/zvariant/Cargo.toml
> >> > ++++ b/zvariant/Cargo.toml
> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> > + serde = { version = "1.0", features = ["derive"] }
> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional =
> true }
> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional =
> true }
> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> >> > ++zvariant_derive = "3.12.0"
> >> > + serde_bytes = { version = "0.11", optional = true }
> >> > + static_assertions = "1.1.0"
> >> > + libc = "0.2.137"
> >> > +2.34.1
> >> > +
> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > new file mode 100644
> >> > index 0000000000..ab769b3fce
> >> > --- /dev/null
> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > @@ -0,0 +1,20 @@
> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus
> wire format"
> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data
> to/from D-Bus wire format.\
> >> > +This binary wire format is simple and very efficient and hence
> useful outside of D-Bus context as well.\
> >> > +A modified form of this format, GVariant is very commonly used for
> efficient storage of arbitrary \
> >> > +data and is also supported by this crate."
> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> > +LICENSE = "MIT"
> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> > +
> >> > +SRC_URI = " \
> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> > +"
> >> > +
> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> > +S = "${WORKDIR}/zvariant"
> >> > +
> >> > +inherit cargo cargo-update-recipe-crates
> >> > +
> >> > +require ${BPN}-crates.inc
> >> > --
> >> > 2.34.1
> >> >
> >> >
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > Links: You receive all messages sent to this group.
> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
> [alex.kanavin@gmail.com]
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >
>

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

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

* Re: [OE-core] [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe
  2023-03-26 18:01         ` Alexander Kanavin
@ 2023-03-27  4:09           ` Frédéric Martinsons
  0 siblings, 0 replies; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27  4:09 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core, alex.kiernan

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

Ok I'll provide a V3 where the zvariant recipe is removed.

On Sun, 26 Mar 2023 at 20:01, Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> I'm fine with v2, except for the zvariant recipe, that should probably
> go to meta-rust (which itself should go to meta-oe, with cleanups).
>
> Alex
>
> On Sun, 26 Mar 2023 at 16:58, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > I submit a V2 series where I made modifications you suggested, I choose
> to use a more
> > generic type (git-dependency instead of cargo-dep) since I foresee that
> could be used also
> > for npm based recipe (see
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=11015)
> >
> > For the moment, I let the example recipe in oe-core because I don't know
> where it should
> > go (or even if I should keep it or remove it)
> >
> > On Sun, 26 Mar 2023 at 07:15, Frédéric Martinsons <
> frederic.martinsons@gmail.com> wrote:
> >>
> >> Ah, good idea, I'll try that and provide a V2 of this series if it fits.
> >>
> >> On Sat, 25 Mar 2023 at 20:02, Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
> >>>
> >>> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >>> <frederic.martinsons@gmail.com> wrote:
> >>> > @@ -72,6 +73,8 @@ python () {
> >>> >                      url_data.type == 'npmsw' or url_data.type ==
> 'crate' or
> >>> >                      'type' in parm and parm['type'] == 'kmeta'):
> >>> >                  local_srcuri.append(url)
> >>> > +            if url in cargo_git_deps:
> >>> > +                local_srcuri.append(url)
> >>>
> >>> Come to think of it, it's better to use the same type parameter with a
> >>> special value as in kernel recipes:
> >>>
> >>> git://.....;type=cargo-dep;...
> >>>
> >>> This would avoid the ugly special variable.
> >>>
> >>> Alex
>

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

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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  4:09         ` Frédéric Martinsons
@ 2023-03-27  6:40           ` Alexander Kanavin
  2023-03-27  8:18             ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-27  6:40 UTC (permalink / raw)
  To: Frédéric Martinsons; +Cc: openembedded-core, Alex Kiernan

You could meanwhile review meta-rust, and see what is useful and what
is obsolete perhaps? I see it still carries toolchain recipes for
example, I have no idea why.

Alex

On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>
> On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>>
>> rust-hello-world is installed into test images, and has a runtime test
>> to verify that the toolchain produces working binaries:
>> meta/lib/oeqa/runtime/cases/rust.py
>>
>> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> Same as meta-perl/meta-python.
>> https://github.com/meta-rust/meta-rust
>>
>> Alex
>>
>> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> >
>> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> >
>> >
>> >
>> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >>
>> >> I don't think this should be going in oe-core, as it's not actually
>> >> used by anything, or in any automated tests. But you can place it in a
>> >> separate layer.
>> >>
>> >> Alex
>> >>
>> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> >> <frederic.martinsons@gmail.com> wrote:
>> >> >
>> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> >
>> >> > This recipe is for showing an "real world" example of
>> >> > a crate that depends on some git repositories.
>> >> >
>> >> > Usually, this kind of crate is built within a global
>> >> > workspace (here it is the zbus project) and so
>> >> > doesn't need a Cargo.lock on its own.
>> >> >
>> >> > For the sake of the demonstration, I had to add
>> >> > a patch for probiding a Cargo.lock and modifying
>> >> > zvariant_deriver to get it from crates.io instead
>> >> > of pulling locally with a relative path
>> >> >
>> >> > The use case where the crate had some git repository
>> >> > in dependency is very common for "private" crate that
>> >> > are not aimed to be published on crate.io.
>> >> > When the project grow bigger, it is common to have
>> >> > a bin and multiple lib developped in parallel, and these
>> >> > libs are surely on a git repostitory.
>> >> >
>> >> > Hence the need of this support in oe-core.
>> >> >
>> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > ---
>> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >> >  3 files changed, 1409 insertions(+)
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> >
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > new file mode 100644
>> >> > index 0000000000..297a784661
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > @@ -0,0 +1,140 @@
>> >> > +SRC_URI += " \
>> >> > +    crate://crates.io/anes/0.1.6 \
>> >> > +    crate://crates.io/anyhow/1.0.70 \
>> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> >> > +    crate://crates.io/atty/0.2.14 \
>> >> > +    crate://crates.io/autocfg/1.1.0 \
>> >> > +    crate://crates.io/bitflags/1.3.2 \
>> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> >> > +    crate://crates.io/byteorder/1.4.3 \
>> >> > +    crate://crates.io/cast/0.3.0 \
>> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> >> > +    crate://crates.io/chrono/0.4.24 \
>> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> >> > +    crate://crates.io/ciborium/0.2.0 \
>> >> > +    crate://crates.io/clap/3.2.23 \
>> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> >> > +    crate://crates.io/criterion/0.4.0 \
>> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> >> > +    crate://crates.io/either/1.8.1 \
>> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> >> > +    crate://crates.io/futures-core/0.3.27 \
>> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> >> > +    crate://crates.io/futures-task/0.3.27 \
>> >> > +    crate://crates.io/futures-util/0.3.27 \
>> >> > +    crate://crates.io/getrandom/0.2.8 \
>> >> > +    crate://crates.io/half/1.8.2 \
>> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> >> > +    crate://crates.io/heck/0.3.3 \
>> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> >> > +    crate://crates.io/idna/0.3.0 \
>> >> > +    crate://crates.io/indexmap/1.9.2 \
>> >> > +    crate://crates.io/itertools/0.10.5 \
>> >> > +    crate://crates.io/itertools/0.9.0 \
>> >> > +    crate://crates.io/itoa/1.0.6 \
>> >> > +    crate://crates.io/js-sys/0.3.61 \
>> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> >> > +    crate://crates.io/libc/0.2.140 \
>> >> > +    crate://crates.io/log/0.4.17 \
>> >> > +    crate://crates.io/memchr/2.5.0 \
>> >> > +    crate://crates.io/memoffset/0.8.0 \
>> >> > +    crate://crates.io/num-integer/0.1.45 \
>> >> > +    crate://crates.io/num-traits/0.2.15 \
>> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> >> > +    crate://crates.io/once_cell/1.17.1 \
>> >> > +    crate://crates.io/oorandom/11.1.3 \
>> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> >> > +    crate://crates.io/plotters/0.3.4 \
>> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> >> > +    crate://crates.io/quote/1.0.26 \
>> >> > +    crate://crates.io/rand/0.8.5 \
>> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> >> > +    crate://crates.io/rand_core/0.6.4 \
>> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> >> > +    crate://crates.io/rayon/1.7.0 \
>> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> >> > +    crate://crates.io/regex/1.7.2 \
>> >> > +    crate://crates.io/ryu/1.0.13 \
>> >> > +    crate://crates.io/same-file/1.0.6 \
>> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> >> > +    crate://crates.io/serde/1.0.158 \
>> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> >> > +    crate://crates.io/serde_json/1.0.94 \
>> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> >> > +    crate://crates.io/slab/0.4.8 \
>> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> >> > +    crate://crates.io/strum/0.18.0 \
>> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> >> > +    crate://crates.io/syn/1.0.109 \
>> >> > +    crate://crates.io/syn/2.0.8 \
>> >> > +    crate://crates.io/system-deps/1.3.2 \
>> >> > +    crate://crates.io/textwrap/0.16.0 \
>> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> >> > +    crate://crates.io/thiserror/1.0.40 \
>> >> > +    crate://crates.io/time-core/0.1.0 \
>> >> > +    crate://crates.io/time-macros/0.2.8 \
>> >> > +    crate://crates.io/time/0.3.20 \
>> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> >> > +    crate://crates.io/toml/0.5.11 \
>> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> >> > +    crate://crates.io/url/2.3.1 \
>> >> > +    crate://crates.io/uuid/1.3.0 \
>> >> > +    crate://crates.io/version-compare/0.0.10 \
>> >> > +    crate://crates.io/version_check/0.9.4 \
>> >> > +    crate://crates.io/walkdir/2.3.3 \
>> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> >> > +    crate://crates.io/web-sys/0.3.61 \
>> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> >> > +    crate://crates.io/winapi/0.3.9 \
>> >> > +    crate://crates.io/winnow/0.4.0 \
>> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> >> > +"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_glib"
>> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_glib-sys"
>> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > new file mode 100644
>> >> > index 0000000000..638ba3ed4d
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > @@ -0,0 +1,1249 @@
>> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> >> > +
>> >> > +This library crate is a part of zbus project, and is aimed to
>> >> > +be published amongst the whole project.
>> >> > +
>> >> > +Nevertheless, this recipe is for showing example of real
>> >> > +code which uses a local registry via git url inside yocto
>> >> > +environment.
>> >> > +
>> >> > +I didn't find a real example of binary crate that uses git
>> >> > +dependency but it seems to me a very common use case
>> >> > +when we are working on multiple local crates that are not
>> >> > +aimed to be published on public registry.
>> >> > +
>> >> > +Long story short, this patch add a modified Cargo.toml
>> >> > +to use the zvariant_derive dependency from crates.io instead
>> >> > +of zbus local one and a pre generated Cargo.lock in order
>> >> > +to make cargo patch process inside cargo_common.bbclass work
>> >> > +
>> >> > +Upstream-Status: Inappropriate
>> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > +---
>> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> >> > + zvariant/Cargo.toml |    2 +-
>> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> >> > + create mode 100644 zvariant/Cargo.lock
>> >> > +
>> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> >> > +new file mode 100644
>> >> > +index 00000000..02a83d42
>> >> > +--- /dev/null
>> >> > ++++ b/zvariant/Cargo.lock
>> >> > +@@ -0,0 +1,1198 @@
>> >> > ++# This file is automatically @generated by Cargo.
>> >> > ++# It is not intended for manual editing.
>> >> > ++version = 3
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "anes"
>> >> > ++version = "0.1.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "anyhow"
>> >> > ++version = "1.0.70"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "arrayvec"
>> >> > ++version = "0.7.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "atty"
>> >> > ++version = "0.2.14"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> >> > ++dependencies = [
>> >> > ++ "hermit-abi 0.1.19",
>> >> > ++ "libc",
>> >> > ++ "winapi",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "autocfg"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "bitflags"
>> >> > ++version = "1.3.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "bumpalo"
>> >> > ++version = "3.12.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "byteorder"
>> >> > ++version = "1.4.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "cast"
>> >> > ++version = "0.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "cfg-if"
>> >> > ++version = "1.0.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "chrono"
>> >> > ++version = "0.4.24"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> >> > ++dependencies = [
>> >> > ++ "num-integer",
>> >> > ++ "num-traits",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> >> > ++dependencies = [
>> >> > ++ "ciborium-io",
>> >> > ++ "ciborium-ll",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium-io"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium-ll"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> >> > ++dependencies = [
>> >> > ++ "ciborium-io",
>> >> > ++ "half",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "clap"
>> >> > ++version = "3.2.23"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> >> > ++dependencies = [
>> >> > ++ "bitflags",
>> >> > ++ "clap_lex",
>> >> > ++ "indexmap",
>> >> > ++ "textwrap",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "clap_lex"
>> >> > ++version = "0.2.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> >> > ++dependencies = [
>> >> > ++ "os_str_bytes",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "criterion"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> >> > ++dependencies = [
>> >> > ++ "anes",
>> >> > ++ "atty",
>> >> > ++ "cast",
>> >> > ++ "ciborium",
>> >> > ++ "clap",
>> >> > ++ "criterion-plot",
>> >> > ++ "itertools 0.10.5",
>> >> > ++ "lazy_static",
>> >> > ++ "num-traits",
>> >> > ++ "oorandom",
>> >> > ++ "plotters",
>> >> > ++ "rayon",
>> >> > ++ "regex",
>> >> > ++ "serde",
>> >> > ++ "serde_derive",
>> >> > ++ "serde_json",
>> >> > ++ "tinytemplate",
>> >> > ++ "walkdir",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "criterion-plot"
>> >> > ++version = "0.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> >> > ++dependencies = [
>> >> > ++ "cast",
>> >> > ++ "itertools 0.10.5",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-channel"
>> >> > ++version = "0.5.7"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-deque"
>> >> > ++version = "0.8.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-epoch",
>> >> > ++ "crossbeam-utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-epoch"
>> >> > ++version = "0.9.14"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-utils",
>> >> > ++ "memoffset",
>> >> > ++ "scopeguard",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-utils"
>> >> > ++version = "0.8.15"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "either"
>> >> > ++version = "1.8.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "enumflags2"
>> >> > ++version = "0.7.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> >> > ++dependencies = [
>> >> > ++ "enumflags2_derive",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "enumflags2_derive"
>> >> > ++version = "0.7.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "form_urlencoded"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> >> > ++dependencies = [
>> >> > ++ "percent-encoding",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-channel"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-core"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-executor"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++ "futures-task",
>> >> > ++ "futures-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-macro"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-task"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-util"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++ "futures-macro",
>> >> > ++ "futures-task",
>> >> > ++ "pin-project-lite",
>> >> > ++ "pin-utils",
>> >> > ++ "slab",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "getrandom"
>> >> > ++version = "0.2.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "libc",
>> >> > ++ "wasi",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > ++dependencies = [
>> >> > ++ "bitflags",
>> >> > ++ "futures-channel",
>> >> > ++ "futures-core",
>> >> > ++ "futures-executor",
>> >> > ++ "futures-task",
>> >> > ++ "futures-util",
>> >> > ++ "glib-macros",
>> >> > ++ "glib-sys",
>> >> > ++ "gobject-sys",
>> >> > ++ "libc",
>> >> > ++ "once_cell",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib-macros"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > ++dependencies = [
>> >> > ++ "anyhow",
>> >> > ++ "heck",
>> >> > ++ "itertools 0.9.0",
>> >> > ++ "proc-macro-crate 0.1.5",
>> >> > ++ "proc-macro-error",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib-sys"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++ "system-deps",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "gobject-sys"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > ++dependencies = [
>> >> > ++ "glib-sys",
>> >> > ++ "libc",
>> >> > ++ "system-deps",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "half"
>> >> > ++version = "1.8.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hashbrown"
>> >> > ++version = "0.12.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "heck"
>> >> > ++version = "0.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> >> > ++dependencies = [
>> >> > ++ "unicode-segmentation",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hermit-abi"
>> >> > ++version = "0.1.19"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hermit-abi"
>> >> > ++version = "0.2.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "idna"
>> >> > ++version = "0.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> >> > ++dependencies = [
>> >> > ++ "unicode-bidi",
>> >> > ++ "unicode-normalization",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "indexmap"
>> >> > ++version = "1.9.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "hashbrown",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itertools"
>> >> > ++version = "0.9.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itertools"
>> >> > ++version = "0.10.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itoa"
>> >> > ++version = "1.0.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "js-sys"
>> >> > ++version = "0.3.61"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> >> > ++dependencies = [
>> >> > ++ "wasm-bindgen",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "lazy_static"
>> >> > ++version = "1.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "libc"
>> >> > ++version = "0.2.140"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "log"
>> >> > ++version = "0.4.17"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "memchr"
>> >> > ++version = "2.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "memoffset"
>> >> > ++version = "0.8.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num-integer"
>> >> > ++version = "0.1.45"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "num-traits",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num-traits"
>> >> > ++version = "0.2.15"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num_cpus"
>> >> > ++version = "1.15.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> >> > ++dependencies = [
>> >> > ++ "hermit-abi 0.2.6",
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "once_cell"
>> >> > ++version = "1.17.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "oorandom"
>> >> > ++version = "11.1.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "os_str_bytes"
>> >> > ++version = "6.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "percent-encoding"
>> >> > ++version = "2.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pin-project-lite"
>> >> > ++version = "0.2.9"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pin-utils"
>> >> > ++version = "0.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pkg-config"
>> >> > ++version = "0.3.26"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters"
>> >> > ++version = "0.3.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> >> > ++dependencies = [
>> >> > ++ "num-traits",
>> >> > ++ "plotters-backend",
>> >> > ++ "plotters-svg",
>> >> > ++ "wasm-bindgen",
>> >> > ++ "web-sys",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters-backend"
>> >> > ++version = "0.3.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters-svg"
>> >> > ++version = "0.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> >> > ++dependencies = [
>> >> > ++ "plotters-backend",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ppv-lite86"
>> >> > ++version = "0.2.17"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-crate"
>> >> > ++version = "0.1.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> >> > ++dependencies = [
>> >> > ++ "toml",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-crate"
>> >> > ++version = "1.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> >> > ++dependencies = [
>> >> > ++ "once_cell",
>> >> > ++ "toml_edit",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-error"
>> >> > ++version = "1.0.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro-error-attr",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "version_check",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-error-attr"
>> >> > ++version = "1.0.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "version_check",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro2"
>> >> > ++version = "1.0.53"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> >> > ++dependencies = [
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "quote"
>> >> > ++version = "1.0.26"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand"
>> >> > ++version = "0.8.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++ "rand_chacha",
>> >> > ++ "rand_core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand_chacha"
>> >> > ++version = "0.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> >> > ++dependencies = [
>> >> > ++ "ppv-lite86",
>> >> > ++ "rand_core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand_core"
>> >> > ++version = "0.6.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> >> > ++dependencies = [
>> >> > ++ "getrandom",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rayon"
>> >> > ++version = "1.7.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++ "rayon-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rayon-core"
>> >> > ++version = "1.11.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> >> > ++dependencies = [
>> >> > ++ "crossbeam-channel",
>> >> > ++ "crossbeam-deque",
>> >> > ++ "crossbeam-utils",
>> >> > ++ "num_cpus",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "regex"
>> >> > ++version = "1.7.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> >> > ++dependencies = [
>> >> > ++ "regex-syntax",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "regex-syntax"
>> >> > ++version = "0.6.29"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ryu"
>> >> > ++version = "1.0.13"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "same-file"
>> >> > ++version = "1.0.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> >> > ++dependencies = [
>> >> > ++ "winapi-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "scopeguard"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde"
>> >> > ++version = "1.0.158"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> >> > ++dependencies = [
>> >> > ++ "serde_derive",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_bytes"
>> >> > ++version = "0.11.9"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_derive"
>> >> > ++version = "1.0.158"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_json"
>> >> > ++version = "1.0.94"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> >> > ++dependencies = [
>> >> > ++ "itoa",
>> >> > ++ "ryu",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_repr"
>> >> > ++version = "0.1.12"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "slab"
>> >> > ++version = "0.4.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "static_assertions"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "strum"
>> >> > ++version = "0.18.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "strum_macros"
>> >> > ++version = "0.18.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> >> > ++dependencies = [
>> >> > ++ "heck",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "syn"
>> >> > ++version = "1.0.109"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "syn"
>> >> > ++version = "2.0.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "system-deps"
>> >> > ++version = "1.3.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> >> > ++dependencies = [
>> >> > ++ "heck",
>> >> > ++ "pkg-config",
>> >> > ++ "strum",
>> >> > ++ "strum_macros",
>> >> > ++ "thiserror",
>> >> > ++ "toml",
>> >> > ++ "version-compare",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "textwrap"
>> >> > ++version = "0.16.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "thiserror"
>> >> > ++version = "1.0.40"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> >> > ++dependencies = [
>> >> > ++ "thiserror-impl",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "thiserror-impl"
>> >> > ++version = "1.0.40"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time"
>> >> > ++version = "0.3.20"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++ "time-core",
>> >> > ++ "time-macros",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time-core"
>> >> > ++version = "0.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time-macros"
>> >> > ++version = "0.2.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> >> > ++dependencies = [
>> >> > ++ "time-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinytemplate"
>> >> > ++version = "1.2.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++ "serde_json",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinyvec"
>> >> > ++version = "1.6.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> >> > ++dependencies = [
>> >> > ++ "tinyvec_macros",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinyvec_macros"
>> >> > ++version = "0.1.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml"
>> >> > ++version = "0.5.11"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml_datetime"
>> >> > ++version = "0.6.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml_edit"
>> >> > ++version = "0.19.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> >> > ++dependencies = [
>> >> > ++ "indexmap",
>> >> > ++ "toml_datetime",
>> >> > ++ "winnow",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-bidi"
>> >> > ++version = "0.3.13"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-ident"
>> >> > ++version = "1.0.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-normalization"
>> >> > ++version = "0.1.22"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> >> > ++dependencies = [
>> >> > ++ "tinyvec",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-segmentation"
>> >> > ++version = "1.10.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "url"
>> >> > ++version = "2.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> >> > ++dependencies = [
>> >> > ++ "form_urlencoded",
>> >> > ++ "idna",
>> >> > ++ "percent-encoding",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "uuid"
>> >> > ++version = "1.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "version-compare"
>> >> > ++version = "0.0.10"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "version_check"
>> >> > ++version = "0.9.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "walkdir"
>> >> > ++version = "2.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> >> > ++dependencies = [
>> >> > ++ "same-file",
>> >> > ++ "winapi-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasi"
>> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "wasm-bindgen-macro",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-backend"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> >> > ++dependencies = [
>> >> > ++ "bumpalo",
>> >> > ++ "log",
>> >> > ++ "once_cell",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "wasm-bindgen-shared",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-macro"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> >> > ++dependencies = [
>> >> > ++ "quote",
>> >> > ++ "wasm-bindgen-macro-support",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-macro-support"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "wasm-bindgen-backend",
>> >> > ++ "wasm-bindgen-shared",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-shared"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "web-sys"
>> >> > ++version = "0.3.61"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> >> > ++dependencies = [
>> >> > ++ "js-sys",
>> >> > ++ "wasm-bindgen",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "winapi"
>> >> > ++version = "0.3.9"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
>> >> > ++dependencies = [
>> >> > ++ "winapi-i686-pc-windows-gnu",
>> >> > ++ "winapi-x86_64-pc-windows-gnu",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "winapi-i686-pc-windows-gnu"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "winapi-util"
>> >> > ++version = "0.1.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> >> > ++dependencies = [
>> >> > ++ "winapi",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "winapi-x86_64-pc-windows-gnu"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "winnow"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> >> > ++dependencies = [
>> >> > ++ "memchr",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant"
>> >> > ++version = "3.12.0"
>> >> > ++dependencies = [
>> >> > ++ "arrayvec",
>> >> > ++ "byteorder",
>> >> > ++ "chrono",
>> >> > ++ "criterion",
>> >> > ++ "enumflags2",
>> >> > ++ "glib",
>> >> > ++ "libc",
>> >> > ++ "rand",
>> >> > ++ "serde",
>> >> > ++ "serde_bytes",
>> >> > ++ "serde_json",
>> >> > ++ "serde_repr",
>> >> > ++ "static_assertions",
>> >> > ++ "time",
>> >> > ++ "url",
>> >> > ++ "uuid",
>> >> > ++ "zvariant_derive",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant_derive"
>> >> > ++version = "3.12.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro-crate 1.3.1",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "zvariant_utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant_utils"
>> >> > ++version = "1.0.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> >> > +index 45367729..6981862a 100644
>> >> > +--- a/zvariant/Cargo.toml
>> >> > ++++ b/zvariant/Cargo.toml
>> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> >> > + serde = { version = "1.0", features = ["derive"] }
>> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> >> > ++zvariant_derive = "3.12.0"
>> >> > + serde_bytes = { version = "0.11", optional = true }
>> >> > + static_assertions = "1.1.0"
>> >> > + libc = "0.2.137"
>> >> > +2.34.1
>> >> > +
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > new file mode 100644
>> >> > index 0000000000..ab769b3fce
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > @@ -0,0 +1,20 @@
>> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> >> > +data and is also supported by this crate."
>> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> >> > +LICENSE = "MIT"
>> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> >> > +
>> >> > +SRC_URI = " \
>> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> >> > +"
>> >> > +
>> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> >> > +S = "${WORKDIR}/zvariant"
>> >> > +
>> >> > +inherit cargo cargo-update-recipe-crates
>> >> > +
>> >> > +require ${BPN}-crates.inc
>> >> > --
>> >> > 2.34.1
>> >> >
>> >> >
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > Links: You receive all messages sent to this group.
>> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> >


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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  6:40           ` Alexander Kanavin
@ 2023-03-27  8:18             ` Alex Kiernan
  2023-03-27  8:30               ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alex Kiernan @ 2023-03-27  8:18 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Frédéric Martinsons, openembedded-core

If you're on master I don't think there's anything useful in meta-rust
- its providing toolchains for older branches.

On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> You could meanwhile review meta-rust, and see what is useful and what
> is obsolete perhaps? I see it still carries toolchain recipes for
> example, I have no idea why.
>
> Alex
>
> On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
> >
> > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
> >>
> >> rust-hello-world is installed into test images, and has a runtime test
> >> to verify that the toolchain produces working binaries:
> >> meta/lib/oeqa/runtime/cases/rust.py
> >>
> >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> >> Same as meta-perl/meta-python.
> >> https://github.com/meta-rust/meta-rust
> >>
> >> Alex
> >>
> >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
> >> >
> >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
> >> >
> >> >
> >> >
> >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> >>
> >> >> I don't think this should be going in oe-core, as it's not actually
> >> >> used by anything, or in any automated tests. But you can place it in a
> >> >> separate layer.
> >> >>
> >> >> Alex
> >> >>
> >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> >> <frederic.martinsons@gmail.com> wrote:
> >> >> >
> >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> >
> >> >> > This recipe is for showing an "real world" example of
> >> >> > a crate that depends on some git repositories.
> >> >> >
> >> >> > Usually, this kind of crate is built within a global
> >> >> > workspace (here it is the zbus project) and so
> >> >> > doesn't need a Cargo.lock on its own.
> >> >> >
> >> >> > For the sake of the demonstration, I had to add
> >> >> > a patch for probiding a Cargo.lock and modifying
> >> >> > zvariant_deriver to get it from crates.io instead
> >> >> > of pulling locally with a relative path
> >> >> >
> >> >> > The use case where the crate had some git repository
> >> >> > in dependency is very common for "private" crate that
> >> >> > are not aimed to be published on crate.io.
> >> >> > When the project grow bigger, it is common to have
> >> >> > a bin and multiple lib developped in parallel, and these
> >> >> > libs are surely on a git repostitory.
> >> >> >
> >> >> > Hence the need of this support in oe-core.
> >> >> >
> >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > ---
> >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
> >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> >> >  3 files changed, 1409 insertions(+)
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> >
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> > new file mode 100644
> >> >> > index 0000000000..297a784661
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> > @@ -0,0 +1,140 @@
> >> >> > +SRC_URI += " \
> >> >> > +    crate://crates.io/anes/0.1.6 \
> >> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> >> > +    crate://crates.io/atty/0.2.14 \
> >> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> >> > +    crate://crates.io/cast/0.3.0 \
> >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> >> > +    crate://crates.io/chrono/0.4.24 \
> >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> >> > +    crate://crates.io/clap/3.2.23 \
> >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> >> > +    crate://crates.io/criterion/0.4.0 \
> >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> >> > +    crate://crates.io/either/1.8.1 \
> >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> >> > +    crate://crates.io/half/1.8.2 \
> >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> >> > +    crate://crates.io/heck/0.3.3 \
> >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> >> > +    crate://crates.io/idna/0.3.0 \
> >> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> >> > +    crate://crates.io/itertools/0.10.5 \
> >> >> > +    crate://crates.io/itertools/0.9.0 \
> >> >> > +    crate://crates.io/itoa/1.0.6 \
> >> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> >> > +    crate://crates.io/libc/0.2.140 \
> >> >> > +    crate://crates.io/log/0.4.17 \
> >> >> > +    crate://crates.io/memchr/2.5.0 \
> >> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> >> > +    crate://crates.io/plotters/0.3.4 \
> >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> >> > +    crate://crates.io/quote/1.0.26 \
> >> >> > +    crate://crates.io/rand/0.8.5 \
> >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> >> > +    crate://crates.io/rayon/1.7.0 \
> >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> >> > +    crate://crates.io/regex/1.7.2 \
> >> >> > +    crate://crates.io/ryu/1.0.13 \
> >> >> > +    crate://crates.io/same-file/1.0.6 \
> >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> >> > +    crate://crates.io/serde/1.0.158 \
> >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> >> > +    crate://crates.io/slab/0.4.8 \
> >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> >> > +    crate://crates.io/strum/0.18.0 \
> >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> >> > +    crate://crates.io/syn/1.0.109 \
> >> >> > +    crate://crates.io/syn/2.0.8 \
> >> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> >> > +    crate://crates.io/time-core/0.1.0 \
> >> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> >> > +    crate://crates.io/time/0.3.20 \
> >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> >> > +    crate://crates.io/toml/0.5.11 \
> >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> >> > +    crate://crates.io/url/2.3.1 \
> >> >> > +    crate://crates.io/uuid/1.3.0 \
> >> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> >> > +    crate://crates.io/version_check/0.9.4 \
> >> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> >> > +    crate://crates.io/winapi/0.3.9 \
> >> >> > +    crate://crates.io/winnow/0.4.0 \
> >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
> >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
> >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
> >> >> > +"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_glib"
> >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> > new file mode 100644
> >> >> > index 0000000000..638ba3ed4d
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> > @@ -0,0 +1,1249 @@
> >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> >> > +
> >> >> > +This library crate is a part of zbus project, and is aimed to
> >> >> > +be published amongst the whole project.
> >> >> > +
> >> >> > +Nevertheless, this recipe is for showing example of real
> >> >> > +code which uses a local registry via git url inside yocto
> >> >> > +environment.
> >> >> > +
> >> >> > +I didn't find a real example of binary crate that uses git
> >> >> > +dependency but it seems to me a very common use case
> >> >> > +when we are working on multiple local crates that are not
> >> >> > +aimed to be published on public registry.
> >> >> > +
> >> >> > +Long story short, this patch add a modified Cargo.toml
> >> >> > +to use the zvariant_derive dependency from crates.io instead
> >> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> >> > +
> >> >> > +Upstream-Status: Inappropriate
> >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > +---
> >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> >> >> > + zvariant/Cargo.toml |    2 +-
> >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> >> > + create mode 100644 zvariant/Cargo.lock
> >> >> > +
> >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> >> > +new file mode 100644
> >> >> > +index 00000000..02a83d42
> >> >> > +--- /dev/null
> >> >> > ++++ b/zvariant/Cargo.lock
> >> >> > +@@ -0,0 +1,1198 @@
> >> >> > ++# This file is automatically @generated by Cargo.
> >> >> > ++# It is not intended for manual editing.
> >> >> > ++version = 3
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "anes"
> >> >> > ++version = "0.1.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "anyhow"
> >> >> > ++version = "1.0.70"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "arrayvec"
> >> >> > ++version = "0.7.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "atty"
> >> >> > ++version = "0.2.14"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> >> > ++dependencies = [
> >> >> > ++ "hermit-abi 0.1.19",
> >> >> > ++ "libc",
> >> >> > ++ "winapi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "autocfg"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "bitflags"
> >> >> > ++version = "1.3.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "bumpalo"
> >> >> > ++version = "3.12.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "byteorder"
> >> >> > ++version = "1.4.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "cast"
> >> >> > ++version = "0.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "cfg-if"
> >> >> > ++version = "1.0.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "chrono"
> >> >> > ++version = "0.4.24"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> >> > ++dependencies = [
> >> >> > ++ "num-integer",
> >> >> > ++ "num-traits",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> >> > ++dependencies = [
> >> >> > ++ "ciborium-io",
> >> >> > ++ "ciborium-ll",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium-io"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium-ll"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> >> > ++dependencies = [
> >> >> > ++ "ciborium-io",
> >> >> > ++ "half",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "clap"
> >> >> > ++version = "3.2.23"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> >> > ++dependencies = [
> >> >> > ++ "bitflags",
> >> >> > ++ "clap_lex",
> >> >> > ++ "indexmap",
> >> >> > ++ "textwrap",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "clap_lex"
> >> >> > ++version = "0.2.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> >> > ++dependencies = [
> >> >> > ++ "os_str_bytes",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "criterion"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> >> > ++dependencies = [
> >> >> > ++ "anes",
> >> >> > ++ "atty",
> >> >> > ++ "cast",
> >> >> > ++ "ciborium",
> >> >> > ++ "clap",
> >> >> > ++ "criterion-plot",
> >> >> > ++ "itertools 0.10.5",
> >> >> > ++ "lazy_static",
> >> >> > ++ "num-traits",
> >> >> > ++ "oorandom",
> >> >> > ++ "plotters",
> >> >> > ++ "rayon",
> >> >> > ++ "regex",
> >> >> > ++ "serde",
> >> >> > ++ "serde_derive",
> >> >> > ++ "serde_json",
> >> >> > ++ "tinytemplate",
> >> >> > ++ "walkdir",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "criterion-plot"
> >> >> > ++version = "0.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> >> > ++dependencies = [
> >> >> > ++ "cast",
> >> >> > ++ "itertools 0.10.5",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-channel"
> >> >> > ++version = "0.5.7"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-deque"
> >> >> > ++version = "0.8.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-epoch",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-epoch"
> >> >> > ++version = "0.9.14"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++ "memoffset",
> >> >> > ++ "scopeguard",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-utils"
> >> >> > ++version = "0.8.15"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "either"
> >> >> > ++version = "1.8.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "enumflags2"
> >> >> > ++version = "0.7.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> >> > ++dependencies = [
> >> >> > ++ "enumflags2_derive",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "enumflags2_derive"
> >> >> > ++version = "0.7.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "form_urlencoded"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> >> > ++dependencies = [
> >> >> > ++ "percent-encoding",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-channel"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-core"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-executor"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-task",
> >> >> > ++ "futures-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-macro"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-task"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-util"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-macro",
> >> >> > ++ "futures-task",
> >> >> > ++ "pin-project-lite",
> >> >> > ++ "pin-utils",
> >> >> > ++ "slab",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "getrandom"
> >> >> > ++version = "0.2.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "libc",
> >> >> > ++ "wasi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > ++dependencies = [
> >> >> > ++ "bitflags",
> >> >> > ++ "futures-channel",
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-executor",
> >> >> > ++ "futures-task",
> >> >> > ++ "futures-util",
> >> >> > ++ "glib-macros",
> >> >> > ++ "glib-sys",
> >> >> > ++ "gobject-sys",
> >> >> > ++ "libc",
> >> >> > ++ "once_cell",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib-macros"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > ++dependencies = [
> >> >> > ++ "anyhow",
> >> >> > ++ "heck",
> >> >> > ++ "itertools 0.9.0",
> >> >> > ++ "proc-macro-crate 0.1.5",
> >> >> > ++ "proc-macro-error",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib-sys"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++ "system-deps",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "gobject-sys"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > ++dependencies = [
> >> >> > ++ "glib-sys",
> >> >> > ++ "libc",
> >> >> > ++ "system-deps",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "half"
> >> >> > ++version = "1.8.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hashbrown"
> >> >> > ++version = "0.12.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "heck"
> >> >> > ++version = "0.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-segmentation",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hermit-abi"
> >> >> > ++version = "0.1.19"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hermit-abi"
> >> >> > ++version = "0.2.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "idna"
> >> >> > ++version = "0.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-bidi",
> >> >> > ++ "unicode-normalization",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "indexmap"
> >> >> > ++version = "1.9.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "hashbrown",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itertools"
> >> >> > ++version = "0.9.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itertools"
> >> >> > ++version = "0.10.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itoa"
> >> >> > ++version = "1.0.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "js-sys"
> >> >> > ++version = "0.3.61"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> >> > ++dependencies = [
> >> >> > ++ "wasm-bindgen",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "lazy_static"
> >> >> > ++version = "1.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "libc"
> >> >> > ++version = "0.2.140"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "log"
> >> >> > ++version = "0.4.17"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "memchr"
> >> >> > ++version = "2.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "memoffset"
> >> >> > ++version = "0.8.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num-integer"
> >> >> > ++version = "0.1.45"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "num-traits",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num-traits"
> >> >> > ++version = "0.2.15"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num_cpus"
> >> >> > ++version = "1.15.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> >> > ++dependencies = [
> >> >> > ++ "hermit-abi 0.2.6",
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "once_cell"
> >> >> > ++version = "1.17.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "oorandom"
> >> >> > ++version = "11.1.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "os_str_bytes"
> >> >> > ++version = "6.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "percent-encoding"
> >> >> > ++version = "2.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pin-project-lite"
> >> >> > ++version = "0.2.9"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pin-utils"
> >> >> > ++version = "0.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pkg-config"
> >> >> > ++version = "0.3.26"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters"
> >> >> > ++version = "0.3.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> >> > ++dependencies = [
> >> >> > ++ "num-traits",
> >> >> > ++ "plotters-backend",
> >> >> > ++ "plotters-svg",
> >> >> > ++ "wasm-bindgen",
> >> >> > ++ "web-sys",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters-backend"
> >> >> > ++version = "0.3.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters-svg"
> >> >> > ++version = "0.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> >> > ++dependencies = [
> >> >> > ++ "plotters-backend",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ppv-lite86"
> >> >> > ++version = "0.2.17"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-crate"
> >> >> > ++version = "0.1.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> >> > ++dependencies = [
> >> >> > ++ "toml",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-crate"
> >> >> > ++version = "1.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> >> > ++dependencies = [
> >> >> > ++ "once_cell",
> >> >> > ++ "toml_edit",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-error"
> >> >> > ++version = "1.0.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro-error-attr",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "version_check",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-error-attr"
> >> >> > ++version = "1.0.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "version_check",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro2"
> >> >> > ++version = "1.0.53"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "quote"
> >> >> > ++version = "1.0.26"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand"
> >> >> > ++version = "0.8.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++ "rand_chacha",
> >> >> > ++ "rand_core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand_chacha"
> >> >> > ++version = "0.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> >> > ++dependencies = [
> >> >> > ++ "ppv-lite86",
> >> >> > ++ "rand_core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand_core"
> >> >> > ++version = "0.6.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> >> > ++dependencies = [
> >> >> > ++ "getrandom",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rayon"
> >> >> > ++version = "1.7.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++ "rayon-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rayon-core"
> >> >> > ++version = "1.11.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> >> > ++dependencies = [
> >> >> > ++ "crossbeam-channel",
> >> >> > ++ "crossbeam-deque",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++ "num_cpus",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "regex"
> >> >> > ++version = "1.7.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> >> > ++dependencies = [
> >> >> > ++ "regex-syntax",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "regex-syntax"
> >> >> > ++version = "0.6.29"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ryu"
> >> >> > ++version = "1.0.13"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "same-file"
> >> >> > ++version = "1.0.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> >> > ++dependencies = [
> >> >> > ++ "winapi-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "scopeguard"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde"
> >> >> > ++version = "1.0.158"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> >> > ++dependencies = [
> >> >> > ++ "serde_derive",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_bytes"
> >> >> > ++version = "0.11.9"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_derive"
> >> >> > ++version = "1.0.158"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_json"
> >> >> > ++version = "1.0.94"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> >> > ++dependencies = [
> >> >> > ++ "itoa",
> >> >> > ++ "ryu",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_repr"
> >> >> > ++version = "0.1.12"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "slab"
> >> >> > ++version = "0.4.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "static_assertions"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "strum"
> >> >> > ++version = "0.18.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "strum_macros"
> >> >> > ++version = "0.18.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> >> > ++dependencies = [
> >> >> > ++ "heck",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "syn"
> >> >> > ++version = "1.0.109"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "syn"
> >> >> > ++version = "2.0.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "system-deps"
> >> >> > ++version = "1.3.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> >> > ++dependencies = [
> >> >> > ++ "heck",
> >> >> > ++ "pkg-config",
> >> >> > ++ "strum",
> >> >> > ++ "strum_macros",
> >> >> > ++ "thiserror",
> >> >> > ++ "toml",
> >> >> > ++ "version-compare",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "textwrap"
> >> >> > ++version = "0.16.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "thiserror"
> >> >> > ++version = "1.0.40"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> >> > ++dependencies = [
> >> >> > ++ "thiserror-impl",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "thiserror-impl"
> >> >> > ++version = "1.0.40"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time"
> >> >> > ++version = "0.3.20"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++ "time-core",
> >> >> > ++ "time-macros",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time-core"
> >> >> > ++version = "0.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time-macros"
> >> >> > ++version = "0.2.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> >> > ++dependencies = [
> >> >> > ++ "time-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinytemplate"
> >> >> > ++version = "1.2.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++ "serde_json",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinyvec"
> >> >> > ++version = "1.6.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> >> > ++dependencies = [
> >> >> > ++ "tinyvec_macros",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinyvec_macros"
> >> >> > ++version = "0.1.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml"
> >> >> > ++version = "0.5.11"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml_datetime"
> >> >> > ++version = "0.6.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml_edit"
> >> >> > ++version = "0.19.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> >> > ++dependencies = [
> >> >> > ++ "indexmap",
> >> >> > ++ "toml_datetime",
> >> >> > ++ "winnow",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-bidi"
> >> >> > ++version = "0.3.13"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-ident"
> >> >> > ++version = "1.0.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-normalization"
> >> >> > ++version = "0.1.22"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> >> > ++dependencies = [
> >> >> > ++ "tinyvec",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-segmentation"
> >> >> > ++version = "1.10.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "url"
> >> >> > ++version = "2.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> >> > ++dependencies = [
> >> >> > ++ "form_urlencoded",
> >> >> > ++ "idna",
> >> >> > ++ "percent-encoding",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "uuid"
> >> >> > ++version = "1.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "version-compare"
> >> >> > ++version = "0.0.10"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "version_check"
> >> >> > ++version = "0.9.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "walkdir"
> >> >> > ++version = "2.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> >> > ++dependencies = [
> >> >> > ++ "same-file",
> >> >> > ++ "winapi-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasi"
> >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "wasm-bindgen-macro",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-backend"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> >> > ++dependencies = [
> >> >> > ++ "bumpalo",
> >> >> > ++ "log",
> >> >> > ++ "once_cell",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "wasm-bindgen-shared",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-macro"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> >> > ++dependencies = [
> >> >> > ++ "quote",
> >> >> > ++ "wasm-bindgen-macro-support",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-macro-support"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "wasm-bindgen-backend",
> >> >> > ++ "wasm-bindgen-shared",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-shared"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "web-sys"
> >> >> > ++version = "0.3.61"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> >> > ++dependencies = [
> >> >> > ++ "js-sys",
> >> >> > ++ "wasm-bindgen",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "winapi"
> >> >> > ++version = "0.3.9"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> >> >> > ++dependencies = [
> >> >> > ++ "winapi-i686-pc-windows-gnu",
> >> >> > ++ "winapi-x86_64-pc-windows-gnu",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "winapi-i686-pc-windows-gnu"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "winapi-util"
> >> >> > ++version = "0.1.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> >> > ++dependencies = [
> >> >> > ++ "winapi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "winapi-x86_64-pc-windows-gnu"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "winnow"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> >> > ++dependencies = [
> >> >> > ++ "memchr",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant"
> >> >> > ++version = "3.12.0"
> >> >> > ++dependencies = [
> >> >> > ++ "arrayvec",
> >> >> > ++ "byteorder",
> >> >> > ++ "chrono",
> >> >> > ++ "criterion",
> >> >> > ++ "enumflags2",
> >> >> > ++ "glib",
> >> >> > ++ "libc",
> >> >> > ++ "rand",
> >> >> > ++ "serde",
> >> >> > ++ "serde_bytes",
> >> >> > ++ "serde_json",
> >> >> > ++ "serde_repr",
> >> >> > ++ "static_assertions",
> >> >> > ++ "time",
> >> >> > ++ "url",
> >> >> > ++ "uuid",
> >> >> > ++ "zvariant_derive",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant_derive"
> >> >> > ++version = "3.12.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro-crate 1.3.1",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "zvariant_utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant_utils"
> >> >> > ++version = "1.0.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> >> > +index 45367729..6981862a 100644
> >> >> > +--- a/zvariant/Cargo.toml
> >> >> > ++++ b/zvariant/Cargo.toml
> >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> >> > + serde = { version = "1.0", features = ["derive"] }
> >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
> >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> >> >> > ++zvariant_derive = "3.12.0"
> >> >> > + serde_bytes = { version = "0.11", optional = true }
> >> >> > + static_assertions = "1.1.0"
> >> >> > + libc = "0.2.137"
> >> >> > +2.34.1
> >> >> > +
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> > new file mode 100644
> >> >> > index 0000000000..ab769b3fce
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> > @@ -0,0 +1,20 @@
> >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
> >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
> >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
> >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
> >> >> > +data and is also supported by this crate."
> >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> >> > +LICENSE = "MIT"
> >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> >> > +
> >> >> > +SRC_URI = " \
> >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
> >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> >> > +"
> >> >> > +
> >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> >> > +S = "${WORKDIR}/zvariant"
> >> >> > +
> >> >> > +inherit cargo cargo-update-recipe-crates
> >> >> > +
> >> >> > +require ${BPN}-crates.inc
> >> >> > --
> >> >> > 2.34.1
> >> >> >
> >> >> >
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> > Links: You receive all messages sent to this group.
> >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> >



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  8:18             ` Alex Kiernan
@ 2023-03-27  8:30               ` Frédéric Martinsons
  2023-03-27  8:42                 ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27  8:30 UTC (permalink / raw)
  To: Alex Kiernan; +Cc: Alexander Kanavin, openembedded-core

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

There is a stalled merge request for this clean:
https://github.com/meta-rust/meta-rust/pull/364

But I think Alex is right, all needed things for rust/cargo projects seem
to be already in oe-core except
for examples of recipes.

What about adding meta-rust in meta-openembedded which will contains the
example, something like

meta-rust/
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-extended
    ├── zvariant
    │   └── 0001-Tweak-zvariant-cargo-config.patch
    ├── zvariant_3.12.0.bb
    └── zvariant-crates.inc


On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:

> If you're on master I don't think there's anything useful in meta-rust
> - its providing toolchains for older branches.
>
> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
> <alex.kanavin@gmail.com> wrote:
> >
> > You could meanwhile review meta-rust, and see what is useful and what
> > is obsolete perhaps? I see it still carries toolchain recipes for
> > example, I have no idea why.
> >
> > Alex
> >
> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> > <frederic.martinsons@gmail.com> wrote:
> > >
> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe
> ? or should I wait for other opinions ?
> > >
> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <
> alex.kanavin@gmail.com> wrote:
> > >>
> > >> rust-hello-world is installed into test images, and has a runtime test
> > >> to verify that the toolchain produces working binaries:
> > >> meta/lib/oeqa/runtime/cases/rust.py
> > >>
> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> > >> Same as meta-perl/meta-python.
> > >> https://github.com/meta-rust/meta-rust
> > >>
> > >> Alex
> > >>
> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> > >> <frederic.martinsons@gmail.com> wrote:
> > >> >
> > >> > I thought that would be treated the same as rust-hello-world_git.bb
> which is in oe-core.
> > >> >
> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think
> this recipe would land?
> > >> >
> > >> >
> > >> >
> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> > >> >>
> > >> >> I don't think this should be going in oe-core, as it's not actually
> > >> >> used by anything, or in any automated tests. But you can place it
> in a
> > >> >> separate layer.
> > >> >>
> > >> >> Alex
> > >> >>
> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> > >> >> <frederic.martinsons@gmail.com> wrote:
> > >> >> >
> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> >> >
> > >> >> > This recipe is for showing an "real world" example of
> > >> >> > a crate that depends on some git repositories.
> > >> >> >
> > >> >> > Usually, this kind of crate is built within a global
> > >> >> > workspace (here it is the zbus project) and so
> > >> >> > doesn't need a Cargo.lock on its own.
> > >> >> >
> > >> >> > For the sake of the demonstration, I had to add
> > >> >> > a patch for probiding a Cargo.lock and modifying
> > >> >> > zvariant_deriver to get it from crates.io instead
> > >> >> > of pulling locally with a relative path
> > >> >> >
> > >> >> > The use case where the crate had some git repository
> > >> >> > in dependency is very common for "private" crate that
> > >> >> > are not aimed to be published on crate.io.
> > >> >> > When the project grow bigger, it is common to have
> > >> >> > a bin and multiple lib developped in parallel, and these
> > >> >> > libs are surely on a git repostitory.
> > >> >> >
> > >> >> > Hence the need of this support in oe-core.
> > >> >> >
> > >> >> > Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> > >> >> > ---
> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> > >> >> >  3 files changed, 1409 insertions(+)
> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> > >> >> >
> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..297a784661
> > >> >> > --- /dev/null
> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> > @@ -0,0 +1,140 @@
> > >> >> > +SRC_URI += " \
> > >> >> > +    crate://crates.io/anes/0.1.6 \
> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> > >> >> > +    crate://crates.io/atty/0.2.14 \
> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
> > >> >> > +    crate://crates.io/cast/0.3.0 \
> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> > >> >> > +    crate://crates.io/chrono/0.4.24 \
> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
> > >> >> > +    crate://crates.io/clap/3.2.23 \
> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> > >> >> > +    crate://crates.io/criterion/0.4.0 \
> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> > >> >> > +    crate://crates.io/either/1.8.1 \
> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
> > >> >> > +    crate://crates.io/half/1.8.2 \
> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> > >> >> > +    crate://crates.io/heck/0.3.3 \
> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> > >> >> > +    crate://crates.io/idna/0.3.0 \
> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
> > >> >> > +    crate://crates.io/itertools/0.10.5 \
> > >> >> > +    crate://crates.io/itertools/0.9.0 \
> > >> >> > +    crate://crates.io/itoa/1.0.6 \
> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> > >> >> > +    crate://crates.io/libc/0.2.140 \
> > >> >> > +    crate://crates.io/log/0.4.17 \
> > >> >> > +    crate://crates.io/memchr/2.5.0 \
> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> > >> >> > +    crate://crates.io/plotters/0.3.4 \
> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> > >> >> > +    crate://crates.io/quote/1.0.26 \
> > >> >> > +    crate://crates.io/rand/0.8.5 \
> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> > >> >> > +    crate://crates.io/rayon/1.7.0 \
> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> > >> >> > +    crate://crates.io/regex/1.7.2 \
> > >> >> > +    crate://crates.io/ryu/1.0.13 \
> > >> >> > +    crate://crates.io/same-file/1.0.6 \
> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> > >> >> > +    crate://crates.io/serde/1.0.158 \
> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> > >> >> > +    crate://crates.io/slab/0.4.8 \
> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> > >> >> > +    crate://crates.io/strum/0.18.0 \
> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> > >> >> > +    crate://crates.io/syn/1.0.109 \
> > >> >> > +    crate://crates.io/syn/2.0.8 \
> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
> > >> >> > +    crate://crates.io/time-core/0.1.0 \
> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
> > >> >> > +    crate://crates.io/time/0.3.20 \
> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> > >> >> > +    crate://crates.io/toml/0.5.11 \
> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> > >> >> > +    crate://crates.io/url/2.3.1 \
> > >> >> > +    crate://crates.io/uuid/1.3.0 \
> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
> > >> >> > +    crate://crates.io/version_check/0.9.4 \
> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> > >> >> > +    crate://crates.io/winapi/0.3.9 \
> > >> >> > +    crate://crates.io/winnow/0.4.0 \
> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> > >> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> > >> >> > +"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_glib"
> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..638ba3ed4d
> > >> >> > --- /dev/null
> > >> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> > @@ -0,0 +1,1249 @@
> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17
> 00:00:00 2001
> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> > >> >> > +
> > >> >> > +This library crate is a part of zbus project, and is aimed to
> > >> >> > +be published amongst the whole project.
> > >> >> > +
> > >> >> > +Nevertheless, this recipe is for showing example of real
> > >> >> > +code which uses a local registry via git url inside yocto
> > >> >> > +environment.
> > >> >> > +
> > >> >> > +I didn't find a real example of binary crate that uses git
> > >> >> > +dependency but it seems to me a very common use case
> > >> >> > +when we are working on multiple local crates that are not
> > >> >> > +aimed to be published on public registry.
> > >> >> > +
> > >> >> > +Long story short, this patch add a modified Cargo.toml
> > >> >> > +to use the zvariant_derive dependency from crates.io instead
> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
> > >> >> > +
> > >> >> > +Upstream-Status: Inappropriate
> > >> >> > +Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> > >> >> > +---
> > >> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> > >> >> > + zvariant/Cargo.toml |    2 +-
> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> > >> >> > + create mode 100644 zvariant/Cargo.lock
> > >> >> > +
> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> > >> >> > +new file mode 100644
> > >> >> > +index 00000000..02a83d42
> > >> >> > +--- /dev/null
> > >> >> > ++++ b/zvariant/Cargo.lock
> > >> >> > +@@ -0,0 +1,1198 @@
> > >> >> > ++# This file is automatically @generated by Cargo.
> > >> >> > ++# It is not intended for manual editing.
> > >> >> > ++version = 3
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "anes"
> > >> >> > ++version = "0.1.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "anyhow"
> > >> >> > ++version = "1.0.70"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "arrayvec"
> > >> >> > ++version = "0.7.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "atty"
> > >> >> > ++version = "0.2.14"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> > >> >> > ++dependencies = [
> > >> >> > ++ "hermit-abi 0.1.19",
> > >> >> > ++ "libc",
> > >> >> > ++ "winapi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "autocfg"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "bitflags"
> > >> >> > ++version = "1.3.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "bumpalo"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "byteorder"
> > >> >> > ++version = "1.4.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "cast"
> > >> >> > ++version = "0.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "cfg-if"
> > >> >> > ++version = "1.0.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "chrono"
> > >> >> > ++version = "0.4.24"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "num-integer",
> > >> >> > ++ "num-traits",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ciborium-io",
> > >> >> > ++ "ciborium-ll",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium-io"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium-ll"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ciborium-io",
> > >> >> > ++ "half",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "clap"
> > >> >> > ++version = "3.2.23"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "bitflags",
> > >> >> > ++ "clap_lex",
> > >> >> > ++ "indexmap",
> > >> >> > ++ "textwrap",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "clap_lex"
> > >> >> > ++version = "0.2.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "os_str_bytes",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "criterion"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> > >> >> > ++dependencies = [
> > >> >> > ++ "anes",
> > >> >> > ++ "atty",
> > >> >> > ++ "cast",
> > >> >> > ++ "ciborium",
> > >> >> > ++ "clap",
> > >> >> > ++ "criterion-plot",
> > >> >> > ++ "itertools 0.10.5",
> > >> >> > ++ "lazy_static",
> > >> >> > ++ "num-traits",
> > >> >> > ++ "oorandom",
> > >> >> > ++ "plotters",
> > >> >> > ++ "rayon",
> > >> >> > ++ "regex",
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_derive",
> > >> >> > ++ "serde_json",
> > >> >> > ++ "tinytemplate",
> > >> >> > ++ "walkdir",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "criterion-plot"
> > >> >> > ++version = "0.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cast",
> > >> >> > ++ "itertools 0.10.5",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-channel"
> > >> >> > ++version = "0.5.7"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-deque"
> > >> >> > ++version = "0.8.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-epoch",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-epoch"
> > >> >> > ++version = "0.9.14"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++ "memoffset",
> > >> >> > ++ "scopeguard",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-utils"
> > >> >> > ++version = "0.8.15"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "either"
> > >> >> > ++version = "1.8.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "enumflags2"
> > >> >> > ++version = "0.7.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> > >> >> > ++dependencies = [
> > >> >> > ++ "enumflags2_derive",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "enumflags2_derive"
> > >> >> > ++version = "0.7.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "form_urlencoded"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> > >> >> > ++dependencies = [
> > >> >> > ++ "percent-encoding",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-channel"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-core"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-executor"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "futures-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-macro"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-task"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-util"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-macro",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "pin-project-lite",
> > >> >> > ++ "pin-utils",
> > >> >> > ++ "slab",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "getrandom"
> > >> >> > ++version = "0.2.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "libc",
> > >> >> > ++ "wasi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > >> >> > ++dependencies = [
> > >> >> > ++ "bitflags",
> > >> >> > ++ "futures-channel",
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-executor",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "futures-util",
> > >> >> > ++ "glib-macros",
> > >> >> > ++ "glib-sys",
> > >> >> > ++ "gobject-sys",
> > >> >> > ++ "libc",
> > >> >> > ++ "once_cell",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib-macros"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > >> >> > ++dependencies = [
> > >> >> > ++ "anyhow",
> > >> >> > ++ "heck",
> > >> >> > ++ "itertools 0.9.0",
> > >> >> > ++ "proc-macro-crate 0.1.5",
> > >> >> > ++ "proc-macro-error",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib-sys"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++ "system-deps",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "gobject-sys"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > ++dependencies = [
> > >> >> > ++ "glib-sys",
> > >> >> > ++ "libc",
> > >> >> > ++ "system-deps",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "half"
> > >> >> > ++version = "1.8.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hashbrown"
> > >> >> > ++version = "0.12.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "heck"
> > >> >> > ++version = "0.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-segmentation",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hermit-abi"
> > >> >> > ++version = "0.1.19"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hermit-abi"
> > >> >> > ++version = "0.2.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "idna"
> > >> >> > ++version = "0.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-bidi",
> > >> >> > ++ "unicode-normalization",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "indexmap"
> > >> >> > ++version = "1.9.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "hashbrown",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itertools"
> > >> >> > ++version = "0.9.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itertools"
> > >> >> > ++version = "0.10.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itoa"
> > >> >> > ++version = "1.0.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "js-sys"
> > >> >> > ++version = "0.3.61"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> > >> >> > ++dependencies = [
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "lazy_static"
> > >> >> > ++version = "1.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "libc"
> > >> >> > ++version = "0.2.140"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "log"
> > >> >> > ++version = "0.4.17"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "memchr"
> > >> >> > ++version = "2.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "memoffset"
> > >> >> > ++version = "0.8.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num-integer"
> > >> >> > ++version = "0.1.45"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "num-traits",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num-traits"
> > >> >> > ++version = "0.2.15"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num_cpus"
> > >> >> > ++version = "1.15.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "hermit-abi 0.2.6",
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "once_cell"
> > >> >> > ++version = "1.17.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "oorandom"
> > >> >> > ++version = "11.1.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "os_str_bytes"
> > >> >> > ++version = "6.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "percent-encoding"
> > >> >> > ++version = "2.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pin-project-lite"
> > >> >> > ++version = "0.2.9"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pin-utils"
> > >> >> > ++version = "0.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pkg-config"
> > >> >> > ++version = "0.3.26"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters"
> > >> >> > ++version = "0.3.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> > >> >> > ++dependencies = [
> > >> >> > ++ "num-traits",
> > >> >> > ++ "plotters-backend",
> > >> >> > ++ "plotters-svg",
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++ "web-sys",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters-backend"
> > >> >> > ++version = "0.3.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters-svg"
> > >> >> > ++version = "0.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "plotters-backend",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ppv-lite86"
> > >> >> > ++version = "0.2.17"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-crate"
> > >> >> > ++version = "0.1.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> > >> >> > ++dependencies = [
> > >> >> > ++ "toml",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-crate"
> > >> >> > ++version = "1.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> > >> >> > ++dependencies = [
> > >> >> > ++ "once_cell",
> > >> >> > ++ "toml_edit",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-error"
> > >> >> > ++version = "1.0.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro-error-attr",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "version_check",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-error-attr"
> > >> >> > ++version = "1.0.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "version_check",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro2"
> > >> >> > ++version = "1.0.53"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "quote"
> > >> >> > ++version = "1.0.26"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand"
> > >> >> > ++version = "0.8.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++ "rand_chacha",
> > >> >> > ++ "rand_core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand_chacha"
> > >> >> > ++version = "0.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ppv-lite86",
> > >> >> > ++ "rand_core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand_core"
> > >> >> > ++version = "0.6.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "getrandom",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rayon"
> > >> >> > ++version = "1.7.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++ "rayon-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rayon-core"
> > >> >> > ++version = "1.11.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> > >> >> > ++dependencies = [
> > >> >> > ++ "crossbeam-channel",
> > >> >> > ++ "crossbeam-deque",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++ "num_cpus",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "regex"
> > >> >> > ++version = "1.7.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "regex-syntax",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "regex-syntax"
> > >> >> > ++version = "0.6.29"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ryu"
> > >> >> > ++version = "1.0.13"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "same-file"
> > >> >> > ++version = "1.0.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> > >> >> > ++dependencies = [
> > >> >> > ++ "winapi-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "scopeguard"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde"
> > >> >> > ++version = "1.0.158"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde_derive",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_bytes"
> > >> >> > ++version = "0.11.9"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_derive"
> > >> >> > ++version = "1.0.158"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_json"
> > >> >> > ++version = "1.0.94"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> > >> >> > ++dependencies = [
> > >> >> > ++ "itoa",
> > >> >> > ++ "ryu",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_repr"
> > >> >> > ++version = "0.1.12"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "slab"
> > >> >> > ++version = "0.4.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "static_assertions"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "strum"
> > >> >> > ++version = "0.18.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "strum_macros"
> > >> >> > ++version = "0.18.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "heck",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "syn"
> > >> >> > ++version = "1.0.109"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "syn"
> > >> >> > ++version = "2.0.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "system-deps"
> > >> >> > ++version = "1.3.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "heck",
> > >> >> > ++ "pkg-config",
> > >> >> > ++ "strum",
> > >> >> > ++ "strum_macros",
> > >> >> > ++ "thiserror",
> > >> >> > ++ "toml",
> > >> >> > ++ "version-compare",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "textwrap"
> > >> >> > ++version = "0.16.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "thiserror"
> > >> >> > ++version = "1.0.40"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> > >> >> > ++dependencies = [
> > >> >> > ++ "thiserror-impl",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "thiserror-impl"
> > >> >> > ++version = "1.0.40"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time"
> > >> >> > ++version = "0.3.20"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++ "time-core",
> > >> >> > ++ "time-macros",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time-core"
> > >> >> > ++version = "0.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time-macros"
> > >> >> > ++version = "0.2.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> > >> >> > ++dependencies = [
> > >> >> > ++ "time-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinytemplate"
> > >> >> > ++version = "1.2.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_json",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinyvec"
> > >> >> > ++version = "1.6.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> > >> >> > ++dependencies = [
> > >> >> > ++ "tinyvec_macros",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinyvec_macros"
> > >> >> > ++version = "0.1.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml"
> > >> >> > ++version = "0.5.11"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml_datetime"
> > >> >> > ++version = "0.6.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml_edit"
> > >> >> > ++version = "0.19.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> > >> >> > ++dependencies = [
> > >> >> > ++ "indexmap",
> > >> >> > ++ "toml_datetime",
> > >> >> > ++ "winnow",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-bidi"
> > >> >> > ++version = "0.3.13"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-ident"
> > >> >> > ++version = "1.0.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-normalization"
> > >> >> > ++version = "0.1.22"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> > >> >> > ++dependencies = [
> > >> >> > ++ "tinyvec",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-segmentation"
> > >> >> > ++version = "1.10.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "url"
> > >> >> > ++version = "2.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> > >> >> > ++dependencies = [
> > >> >> > ++ "form_urlencoded",
> > >> >> > ++ "idna",
> > >> >> > ++ "percent-encoding",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "uuid"
> > >> >> > ++version = "1.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "version-compare"
> > >> >> > ++version = "0.0.10"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "version_check"
> > >> >> > ++version = "0.9.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "walkdir"
> > >> >> > ++version = "2.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> > >> >> > ++dependencies = [
> > >> >> > ++ "same-file",
> > >> >> > ++ "winapi-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasi"
> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "wasm-bindgen-macro",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-backend"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "bumpalo",
> > >> >> > ++ "log",
> > >> >> > ++ "once_cell",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "wasm-bindgen-shared",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-macro"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "quote",
> > >> >> > ++ "wasm-bindgen-macro-support",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-macro-support"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "wasm-bindgen-backend",
> > >> >> > ++ "wasm-bindgen-shared",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-shared"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "web-sys"
> > >> >> > ++version = "0.3.61"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> > >> >> > ++dependencies = [
> > >> >> > ++ "js-sys",
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "winapi"
> > >> >> > ++version = "0.3.9"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> > >> >> > ++dependencies = [
> > >> >> > ++ "winapi-i686-pc-windows-gnu",
> > >> >> > ++ "winapi-x86_64-pc-windows-gnu",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "winapi-i686-pc-windows-gnu"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "winapi-util"
> > >> >> > ++version = "0.1.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> > >> >> > ++dependencies = [
> > >> >> > ++ "winapi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "winapi-x86_64-pc-windows-gnu"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "winnow"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "memchr",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++dependencies = [
> > >> >> > ++ "arrayvec",
> > >> >> > ++ "byteorder",
> > >> >> > ++ "chrono",
> > >> >> > ++ "criterion",
> > >> >> > ++ "enumflags2",
> > >> >> > ++ "glib",
> > >> >> > ++ "libc",
> > >> >> > ++ "rand",
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_bytes",
> > >> >> > ++ "serde_json",
> > >> >> > ++ "serde_repr",
> > >> >> > ++ "static_assertions",
> > >> >> > ++ "time",
> > >> >> > ++ "url",
> > >> >> > ++ "uuid",
> > >> >> > ++ "zvariant_derive",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant_derive"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro-crate 1.3.1",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "zvariant_utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant_utils"
> > >> >> > ++version = "1.0.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> > >> >> > +index 45367729..6981862a 100644
> > >> >> > +--- a/zvariant/Cargo.toml
> > >> >> > ++++ b/zvariant/Cargo.toml
> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> > >> >> > + serde = { version = "1.0", features = ["derive"] }
> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional
> = true }
> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"],
> optional = true }
> > >> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> > >> >> > ++zvariant_derive = "3.12.0"
> > >> >> > + serde_bytes = { version = "0.11", optional = true }
> > >> >> > + static_assertions = "1.1.0"
> > >> >> > + libc = "0.2.137"
> > >> >> > +2.34.1
> > >> >> > +
> > >> >> > diff --git a/meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..ab769b3fce
> > >> >> > --- /dev/null
> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > >> >> > @@ -0,0 +1,20 @@
> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from
> D-Bus wire format"
> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of
> data to/from D-Bus wire format.\
> > >> >> > +This binary wire format is simple and very efficient and hence
> useful outside of D-Bus context as well.\
> > >> >> > +A modified form of this format, GVariant is very commonly used
> for efficient storage of arbitrary \
> > >> >> > +data and is also supported by this crate."
> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> > >> >> > +LICENSE = "MIT"
> > >> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> > >> >> > +
> > >> >> > +SRC_URI = " \
> > >> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> > >> >> > +"
> > >> >> > +
> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> > >> >> > +S = "${WORKDIR}/zvariant"
> > >> >> > +
> > >> >> > +inherit cargo cargo-update-recipe-crates
> > >> >> > +
> > >> >> > +require ${BPN}-crates.inc
> > >> >> > --
> > >> >> > 2.34.1
> > >> >> >
> > >> >> >
> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> > Links: You receive all messages sent to this group.
> > >> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> > >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840364/1686489
> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> >
>
>
>
> --
> Alex Kiernan
>

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

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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  8:30               ` Frédéric Martinsons
@ 2023-03-27  8:42                 ` Alex Kiernan
  2023-03-27  8:52                   ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alex Kiernan @ 2023-03-27  8:42 UTC (permalink / raw)
  To: Frédéric Martinsons; +Cc: Alexander Kanavin, openembedded-core

I think modelling meta-rust on meta-python is wrong - rust doesn't
package crates, they get consumed into the main recipe (which I've
just realised means I think we have some work on licensing to do).

For this example, I think it's just a regular recipe which should sit
alongside other recipes in meta-oe; anyone who wants to consume
zvariant is going to list it as part of their Cargo.toml, not DEPEND
on this recipe.

I guess I'm really arguing that meta-rust is purely a legacy thing at
this point (one which I continue to need and maintain a fork of!).

On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> There is a stalled merge request for this clean: https://github.com/meta-rust/meta-rust/pull/364
>
> But I think Alex is right, all needed things for rust/cargo projects seem to be already in oe-core except
> for examples of recipes.
>
> What about adding meta-rust in meta-openembedded which will contains the example, something like
>
> meta-rust/
> ├── conf
> │   └── layer.conf
> ├── COPYING.MIT
> ├── README
> └── recipes-extended
>     ├── zvariant
>     │   └── 0001-Tweak-zvariant-cargo-config.patch
>     ├── zvariant_3.12.0.bb
>     └── zvariant-crates.inc
>
>
> On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>>
>> If you're on master I don't think there's anything useful in meta-rust
>> - its providing toolchains for older branches.
>>
>> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
>> <alex.kanavin@gmail.com> wrote:
>> >
>> > You could meanwhile review meta-rust, and see what is useful and what
>> > is obsolete perhaps? I see it still carries toolchain recipes for
>> > example, I have no idea why.
>> >
>> > Alex
>> >
>> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
>> > <frederic.martinsons@gmail.com> wrote:
>> > >
>> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>> > >
>> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>> > >>
>> > >> rust-hello-world is installed into test images, and has a runtime test
>> > >> to verify that the toolchain produces working binaries:
>> > >> meta/lib/oeqa/runtime/cases/rust.py
>> > >>
>> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> > >> Same as meta-perl/meta-python.
>> > >> https://github.com/meta-rust/meta-rust
>> > >>
>> > >> Alex
>> > >>
>> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> > >> <frederic.martinsons@gmail.com> wrote:
>> > >> >
>> > >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> > >> >
>> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> > >> >
>> > >> >
>> > >> >
>> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> > >> >>
>> > >> >> I don't think this should be going in oe-core, as it's not actually
>> > >> >> used by anything, or in any automated tests. But you can place it in a
>> > >> >> separate layer.
>> > >> >>
>> > >> >> Alex
>> > >> >>
>> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> > >> >> <frederic.martinsons@gmail.com> wrote:
>> > >> >> >
>> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> >
>> > >> >> > This recipe is for showing an "real world" example of
>> > >> >> > a crate that depends on some git repositories.
>> > >> >> >
>> > >> >> > Usually, this kind of crate is built within a global
>> > >> >> > workspace (here it is the zbus project) and so
>> > >> >> > doesn't need a Cargo.lock on its own.
>> > >> >> >
>> > >> >> > For the sake of the demonstration, I had to add
>> > >> >> > a patch for probiding a Cargo.lock and modifying
>> > >> >> > zvariant_deriver to get it from crates.io instead
>> > >> >> > of pulling locally with a relative path
>> > >> >> >
>> > >> >> > The use case where the crate had some git repository
>> > >> >> > in dependency is very common for "private" crate that
>> > >> >> > are not aimed to be published on crate.io.
>> > >> >> > When the project grow bigger, it is common to have
>> > >> >> > a bin and multiple lib developped in parallel, and these
>> > >> >> > libs are surely on a git repostitory.
>> > >> >> >
>> > >> >> > Hence the need of this support in oe-core.
>> > >> >> >
>> > >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > ---
>> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> > >> >> >  3 files changed, 1409 insertions(+)
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> >
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..297a784661
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> > @@ -0,0 +1,140 @@
>> > >> >> > +SRC_URI += " \
>> > >> >> > +    crate://crates.io/anes/0.1.6 \
>> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
>> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> > >> >> > +    crate://crates.io/atty/0.2.14 \
>> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
>> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
>> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
>> > >> >> > +    crate://crates.io/cast/0.3.0 \
>> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> > >> >> > +    crate://crates.io/chrono/0.4.24 \
>> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
>> > >> >> > +    crate://crates.io/clap/3.2.23 \
>> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> > >> >> > +    crate://crates.io/criterion/0.4.0 \
>> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> > >> >> > +    crate://crates.io/either/1.8.1 \
>> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
>> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
>> > >> >> > +    crate://crates.io/half/1.8.2 \
>> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> > >> >> > +    crate://crates.io/heck/0.3.3 \
>> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> > >> >> > +    crate://crates.io/idna/0.3.0 \
>> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
>> > >> >> > +    crate://crates.io/itertools/0.10.5 \
>> > >> >> > +    crate://crates.io/itertools/0.9.0 \
>> > >> >> > +    crate://crates.io/itoa/1.0.6 \
>> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
>> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> > >> >> > +    crate://crates.io/libc/0.2.140 \
>> > >> >> > +    crate://crates.io/log/0.4.17 \
>> > >> >> > +    crate://crates.io/memchr/2.5.0 \
>> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
>> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
>> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
>> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
>> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
>> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> > >> >> > +    crate://crates.io/plotters/0.3.4 \
>> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> > >> >> > +    crate://crates.io/quote/1.0.26 \
>> > >> >> > +    crate://crates.io/rand/0.8.5 \
>> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
>> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> > >> >> > +    crate://crates.io/rayon/1.7.0 \
>> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> > >> >> > +    crate://crates.io/regex/1.7.2 \
>> > >> >> > +    crate://crates.io/ryu/1.0.13 \
>> > >> >> > +    crate://crates.io/same-file/1.0.6 \
>> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> > >> >> > +    crate://crates.io/serde/1.0.158 \
>> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
>> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> > >> >> > +    crate://crates.io/slab/0.4.8 \
>> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> > >> >> > +    crate://crates.io/strum/0.18.0 \
>> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> > >> >> > +    crate://crates.io/syn/1.0.109 \
>> > >> >> > +    crate://crates.io/syn/2.0.8 \
>> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
>> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
>> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
>> > >> >> > +    crate://crates.io/time-core/0.1.0 \
>> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
>> > >> >> > +    crate://crates.io/time/0.3.20 \
>> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> > >> >> > +    crate://crates.io/toml/0.5.11 \
>> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> > >> >> > +    crate://crates.io/url/2.3.1 \
>> > >> >> > +    crate://crates.io/uuid/1.3.0 \
>> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
>> > >> >> > +    crate://crates.io/version_check/0.9.4 \
>> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
>> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
>> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> > >> >> > +    crate://crates.io/winapi/0.3.9 \
>> > >> >> > +    crate://crates.io/winnow/0.4.0 \
>> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> > >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> > >> >> > +"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_glib"
>> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
>> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..638ba3ed4d
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> > @@ -0,0 +1,1249 @@
>> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> > >> >> > +
>> > >> >> > +This library crate is a part of zbus project, and is aimed to
>> > >> >> > +be published amongst the whole project.
>> > >> >> > +
>> > >> >> > +Nevertheless, this recipe is for showing example of real
>> > >> >> > +code which uses a local registry via git url inside yocto
>> > >> >> > +environment.
>> > >> >> > +
>> > >> >> > +I didn't find a real example of binary crate that uses git
>> > >> >> > +dependency but it seems to me a very common use case
>> > >> >> > +when we are working on multiple local crates that are not
>> > >> >> > +aimed to be published on public registry.
>> > >> >> > +
>> > >> >> > +Long story short, this patch add a modified Cargo.toml
>> > >> >> > +to use the zvariant_derive dependency from crates.io instead
>> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
>> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
>> > >> >> > +
>> > >> >> > +Upstream-Status: Inappropriate
>> > >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > +---
>> > >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> > >> >> > + zvariant/Cargo.toml |    2 +-
>> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> > >> >> > + create mode 100644 zvariant/Cargo.lock
>> > >> >> > +
>> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> > >> >> > +new file mode 100644
>> > >> >> > +index 00000000..02a83d42
>> > >> >> > +--- /dev/null
>> > >> >> > ++++ b/zvariant/Cargo.lock
>> > >> >> > +@@ -0,0 +1,1198 @@
>> > >> >> > ++# This file is automatically @generated by Cargo.
>> > >> >> > ++# It is not intended for manual editing.
>> > >> >> > ++version = 3
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "anes"
>> > >> >> > ++version = "0.1.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "anyhow"
>> > >> >> > ++version = "1.0.70"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "arrayvec"
>> > >> >> > ++version = "0.7.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "atty"
>> > >> >> > ++version = "0.2.14"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "hermit-abi 0.1.19",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "winapi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "autocfg"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "bitflags"
>> > >> >> > ++version = "1.3.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "bumpalo"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "byteorder"
>> > >> >> > ++version = "1.4.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "cast"
>> > >> >> > ++version = "0.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "cfg-if"
>> > >> >> > ++version = "1.0.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "chrono"
>> > >> >> > ++version = "0.4.24"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "num-integer",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ciborium-io",
>> > >> >> > ++ "ciborium-ll",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium-io"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium-ll"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ciborium-io",
>> > >> >> > ++ "half",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "clap"
>> > >> >> > ++version = "3.2.23"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bitflags",
>> > >> >> > ++ "clap_lex",
>> > >> >> > ++ "indexmap",
>> > >> >> > ++ "textwrap",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "clap_lex"
>> > >> >> > ++version = "0.2.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "os_str_bytes",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "criterion"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "anes",
>> > >> >> > ++ "atty",
>> > >> >> > ++ "cast",
>> > >> >> > ++ "ciborium",
>> > >> >> > ++ "clap",
>> > >> >> > ++ "criterion-plot",
>> > >> >> > ++ "itertools 0.10.5",
>> > >> >> > ++ "lazy_static",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "oorandom",
>> > >> >> > ++ "plotters",
>> > >> >> > ++ "rayon",
>> > >> >> > ++ "regex",
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_derive",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++ "tinytemplate",
>> > >> >> > ++ "walkdir",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "criterion-plot"
>> > >> >> > ++version = "0.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cast",
>> > >> >> > ++ "itertools 0.10.5",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-channel"
>> > >> >> > ++version = "0.5.7"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-deque"
>> > >> >> > ++version = "0.8.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-epoch",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-epoch"
>> > >> >> > ++version = "0.9.14"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++ "memoffset",
>> > >> >> > ++ "scopeguard",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-utils"
>> > >> >> > ++version = "0.8.15"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "either"
>> > >> >> > ++version = "1.8.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "enumflags2"
>> > >> >> > ++version = "0.7.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "enumflags2_derive",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "enumflags2_derive"
>> > >> >> > ++version = "0.7.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "form_urlencoded"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "percent-encoding",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-channel"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-core"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-executor"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "futures-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-macro"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-task"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-util"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-macro",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "pin-project-lite",
>> > >> >> > ++ "pin-utils",
>> > >> >> > ++ "slab",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "getrandom"
>> > >> >> > ++version = "0.2.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "wasi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bitflags",
>> > >> >> > ++ "futures-channel",
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-executor",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "futures-util",
>> > >> >> > ++ "glib-macros",
>> > >> >> > ++ "glib-sys",
>> > >> >> > ++ "gobject-sys",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "once_cell",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib-macros"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "anyhow",
>> > >> >> > ++ "heck",
>> > >> >> > ++ "itertools 0.9.0",
>> > >> >> > ++ "proc-macro-crate 0.1.5",
>> > >> >> > ++ "proc-macro-error",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib-sys"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++ "system-deps",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "gobject-sys"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "glib-sys",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "system-deps",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "half"
>> > >> >> > ++version = "1.8.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hashbrown"
>> > >> >> > ++version = "0.12.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "heck"
>> > >> >> > ++version = "0.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-segmentation",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hermit-abi"
>> > >> >> > ++version = "0.1.19"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hermit-abi"
>> > >> >> > ++version = "0.2.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "idna"
>> > >> >> > ++version = "0.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-bidi",
>> > >> >> > ++ "unicode-normalization",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "indexmap"
>> > >> >> > ++version = "1.9.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "hashbrown",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itertools"
>> > >> >> > ++version = "0.9.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itertools"
>> > >> >> > ++version = "0.10.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itoa"
>> > >> >> > ++version = "1.0.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "js-sys"
>> > >> >> > ++version = "0.3.61"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "lazy_static"
>> > >> >> > ++version = "1.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "libc"
>> > >> >> > ++version = "0.2.140"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "log"
>> > >> >> > ++version = "0.4.17"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "memchr"
>> > >> >> > ++version = "2.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "memoffset"
>> > >> >> > ++version = "0.8.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num-integer"
>> > >> >> > ++version = "0.1.45"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num-traits"
>> > >> >> > ++version = "0.2.15"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num_cpus"
>> > >> >> > ++version = "1.15.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "hermit-abi 0.2.6",
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "once_cell"
>> > >> >> > ++version = "1.17.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "oorandom"
>> > >> >> > ++version = "11.1.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "os_str_bytes"
>> > >> >> > ++version = "6.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "percent-encoding"
>> > >> >> > ++version = "2.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pin-project-lite"
>> > >> >> > ++version = "0.2.9"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pin-utils"
>> > >> >> > ++version = "0.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pkg-config"
>> > >> >> > ++version = "0.3.26"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters"
>> > >> >> > ++version = "0.3.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "plotters-backend",
>> > >> >> > ++ "plotters-svg",
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++ "web-sys",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters-backend"
>> > >> >> > ++version = "0.3.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters-svg"
>> > >> >> > ++version = "0.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "plotters-backend",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ppv-lite86"
>> > >> >> > ++version = "0.2.17"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-crate"
>> > >> >> > ++version = "0.1.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "toml",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-crate"
>> > >> >> > ++version = "1.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "once_cell",
>> > >> >> > ++ "toml_edit",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-error"
>> > >> >> > ++version = "1.0.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro-error-attr",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "version_check",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-error-attr"
>> > >> >> > ++version = "1.0.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "version_check",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro2"
>> > >> >> > ++version = "1.0.53"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "quote"
>> > >> >> > ++version = "1.0.26"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand"
>> > >> >> > ++version = "0.8.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++ "rand_chacha",
>> > >> >> > ++ "rand_core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand_chacha"
>> > >> >> > ++version = "0.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ppv-lite86",
>> > >> >> > ++ "rand_core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand_core"
>> > >> >> > ++version = "0.6.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "getrandom",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rayon"
>> > >> >> > ++version = "1.7.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++ "rayon-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rayon-core"
>> > >> >> > ++version = "1.11.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "crossbeam-channel",
>> > >> >> > ++ "crossbeam-deque",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++ "num_cpus",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "regex"
>> > >> >> > ++version = "1.7.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "regex-syntax",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "regex-syntax"
>> > >> >> > ++version = "0.6.29"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ryu"
>> > >> >> > ++version = "1.0.13"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "same-file"
>> > >> >> > ++version = "1.0.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "winapi-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "scopeguard"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde"
>> > >> >> > ++version = "1.0.158"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde_derive",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_bytes"
>> > >> >> > ++version = "0.11.9"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_derive"
>> > >> >> > ++version = "1.0.158"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_json"
>> > >> >> > ++version = "1.0.94"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "itoa",
>> > >> >> > ++ "ryu",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_repr"
>> > >> >> > ++version = "0.1.12"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "slab"
>> > >> >> > ++version = "0.4.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "static_assertions"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "strum"
>> > >> >> > ++version = "0.18.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "strum_macros"
>> > >> >> > ++version = "0.18.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "heck",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "syn"
>> > >> >> > ++version = "1.0.109"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "syn"
>> > >> >> > ++version = "2.0.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "system-deps"
>> > >> >> > ++version = "1.3.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "heck",
>> > >> >> > ++ "pkg-config",
>> > >> >> > ++ "strum",
>> > >> >> > ++ "strum_macros",
>> > >> >> > ++ "thiserror",
>> > >> >> > ++ "toml",
>> > >> >> > ++ "version-compare",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "textwrap"
>> > >> >> > ++version = "0.16.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "thiserror"
>> > >> >> > ++version = "1.0.40"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "thiserror-impl",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "thiserror-impl"
>> > >> >> > ++version = "1.0.40"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time"
>> > >> >> > ++version = "0.3.20"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++ "time-core",
>> > >> >> > ++ "time-macros",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time-core"
>> > >> >> > ++version = "0.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time-macros"
>> > >> >> > ++version = "0.2.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "time-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinytemplate"
>> > >> >> > ++version = "1.2.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinyvec"
>> > >> >> > ++version = "1.6.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "tinyvec_macros",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinyvec_macros"
>> > >> >> > ++version = "0.1.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml"
>> > >> >> > ++version = "0.5.11"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml_datetime"
>> > >> >> > ++version = "0.6.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml_edit"
>> > >> >> > ++version = "0.19.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "indexmap",
>> > >> >> > ++ "toml_datetime",
>> > >> >> > ++ "winnow",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-bidi"
>> > >> >> > ++version = "0.3.13"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-ident"
>> > >> >> > ++version = "1.0.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-normalization"
>> > >> >> > ++version = "0.1.22"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "tinyvec",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-segmentation"
>> > >> >> > ++version = "1.10.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "url"
>> > >> >> > ++version = "2.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "form_urlencoded",
>> > >> >> > ++ "idna",
>> > >> >> > ++ "percent-encoding",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "uuid"
>> > >> >> > ++version = "1.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "version-compare"
>> > >> >> > ++version = "0.0.10"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "version_check"
>> > >> >> > ++version = "0.9.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "walkdir"
>> > >> >> > ++version = "2.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "same-file",
>> > >> >> > ++ "winapi-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasi"
>> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "wasm-bindgen-macro",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-backend"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bumpalo",
>> > >> >> > ++ "log",
>> > >> >> > ++ "once_cell",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "wasm-bindgen-shared",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-macro"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "quote",
>> > >> >> > ++ "wasm-bindgen-macro-support",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-macro-support"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "wasm-bindgen-backend",
>> > >> >> > ++ "wasm-bindgen-shared",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-shared"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "web-sys"
>> > >> >> > ++version = "0.3.61"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "js-sys",
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "winapi"
>> > >> >> > ++version = "0.3.9"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "winapi-i686-pc-windows-gnu",
>> > >> >> > ++ "winapi-x86_64-pc-windows-gnu",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "winapi-i686-pc-windows-gnu"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "winapi-util"
>> > >> >> > ++version = "0.1.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "winapi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "winapi-x86_64-pc-windows-gnu"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "winnow"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "memchr",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "arrayvec",
>> > >> >> > ++ "byteorder",
>> > >> >> > ++ "chrono",
>> > >> >> > ++ "criterion",
>> > >> >> > ++ "enumflags2",
>> > >> >> > ++ "glib",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "rand",
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_bytes",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++ "serde_repr",
>> > >> >> > ++ "static_assertions",
>> > >> >> > ++ "time",
>> > >> >> > ++ "url",
>> > >> >> > ++ "uuid",
>> > >> >> > ++ "zvariant_derive",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant_derive"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro-crate 1.3.1",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "zvariant_utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant_utils"
>> > >> >> > ++version = "1.0.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> > >> >> > +index 45367729..6981862a 100644
>> > >> >> > +--- a/zvariant/Cargo.toml
>> > >> >> > ++++ b/zvariant/Cargo.toml
>> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> > >> >> > + serde = { version = "1.0", features = ["derive"] }
>> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> > >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> > >> >> > ++zvariant_derive = "3.12.0"
>> > >> >> > + serde_bytes = { version = "0.11", optional = true }
>> > >> >> > + static_assertions = "1.1.0"
>> > >> >> > + libc = "0.2.137"
>> > >> >> > +2.34.1
>> > >> >> > +
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..ab769b3fce
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> > @@ -0,0 +1,20 @@
>> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> > >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> > >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> > >> >> > +data and is also supported by this crate."
>> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> > >> >> > +LICENSE = "MIT"
>> > >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> > >> >> > +
>> > >> >> > +SRC_URI = " \
>> > >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> > >> >> > +"
>> > >> >> > +
>> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> > >> >> > +S = "${WORKDIR}/zvariant"
>> > >> >> > +
>> > >> >> > +inherit cargo cargo-update-recipe-crates
>> > >> >> > +
>> > >> >> > +require ${BPN}-crates.inc
>> > >> >> > --
>> > >> >> > 2.34.1
>> > >> >> >
>> > >> >> >
>> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> > Links: You receive all messages sent to this group.
>> > >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> > >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> >
>>
>>
>>
>> --
>> Alex Kiernan



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  8:42                 ` Alex Kiernan
@ 2023-03-27  8:52                   ` Frédéric Martinsons
  2023-03-27 10:24                     ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27  8:52 UTC (permalink / raw)
  To: Alex Kiernan; +Cc: Alexander Kanavin, openembedded-core

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

True, no rust project will ever DEPENDS on the zvariant recipe and as you
said
will simply list zvariant as a crate.
My main concern with the example was to address this comment:
https://patchwork.yoctoproject.org/project/oe-core/patch/20221030173815.10212-2-alex.kiernan@gmail.com/#6450

So , do you think it's still worth providing such an example ? and if yes,
can I place it
in meta-openembedded/meta-oe/recipes-extended/ ?



On Mon, 27 Mar 2023 at 10:42, Alex Kiernan <alex.kiernan@gmail.com> wrote:

> I think modelling meta-rust on meta-python is wrong - rust doesn't
> package crates, they get consumed into the main recipe (which I've
> just realised means I think we have some work on licensing to do).
>
> For this example, I think it's just a regular recipe which should sit
> alongside other recipes in meta-oe; anyone who wants to consume
> zvariant is going to list it as part of their Cargo.toml, not DEPEND
> on this recipe.
>
> I guess I'm really arguing that meta-rust is purely a legacy thing at
> this point (one which I continue to need and maintain a fork of!).
>
> On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > There is a stalled merge request for this clean:
> https://github.com/meta-rust/meta-rust/pull/364
> >
> > But I think Alex is right, all needed things for rust/cargo projects
> seem to be already in oe-core except
> > for examples of recipes.
> >
> > What about adding meta-rust in meta-openembedded which will contains the
> example, something like
> >
> > meta-rust/
> > ├── conf
> > │   └── layer.conf
> > ├── COPYING.MIT
> > ├── README
> > └── recipes-extended
> >     ├── zvariant
> >     │   └── 0001-Tweak-zvariant-cargo-config.patch
> >     ├── zvariant_3.12.0.bb
> >     └── zvariant-crates.inc
> >
> >
> > On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com>
> wrote:
> >>
> >> If you're on master I don't think there's anything useful in meta-rust
> >> - its providing toolchains for older branches.
> >>
> >> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
> >> <alex.kanavin@gmail.com> wrote:
> >> >
> >> > You could meanwhile review meta-rust, and see what is useful and what
> >> > is obsolete perhaps? I see it still carries toolchain recipes for
> >> > example, I have no idea why.
> >> >
> >> > Alex
> >> >
> >> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> >> > <frederic.martinsons@gmail.com> wrote:
> >> > >
> >> > > Ok, should I work on this cleaning of meta-rust and merging in
> meta-oe ? or should I wait for other opinions ?
> >> > >
> >> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <
> alex.kanavin@gmail.com> wrote:
> >> > >>
> >> > >> rust-hello-world is installed into test images, and has a runtime
> test
> >> > >> to verify that the toolchain produces working binaries:
> >> > >> meta/lib/oeqa/runtime/cases/rust.py
> >> > >>
> >> > >> I thought meta-rust could be cleaned up, and added to meta-oe
> perhaps?
> >> > >> Same as meta-perl/meta-python.
> >> > >> https://github.com/meta-rust/meta-rust
> >> > >>
> >> > >> Alex
> >> > >>
> >> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> >> > >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >
> >> > >> > I thought that would be treated the same as
> rust-hello-world_git.bb which is in oe-core.
> >> > >> >
> >> > >> > Anyway, I don't mind placing it elsewhere, which layer do you
> think this recipe would land?
> >> > >> >
> >> > >> >
> >> > >> >
> >> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> >> > >> >>
> >> > >> >> I don't think this should be going in oe-core, as it's not
> actually
> >> > >> >> used by anything, or in any automated tests. But you can place
> it in a
> >> > >> >> separate layer.
> >> > >> >>
> >> > >> >> Alex
> >> > >> >>
> >> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> > >> >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >> >
> >> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> >
> >> > >> >> > This recipe is for showing an "real world" example of
> >> > >> >> > a crate that depends on some git repositories.
> >> > >> >> >
> >> > >> >> > Usually, this kind of crate is built within a global
> >> > >> >> > workspace (here it is the zbus project) and so
> >> > >> >> > doesn't need a Cargo.lock on its own.
> >> > >> >> >
> >> > >> >> > For the sake of the demonstration, I had to add
> >> > >> >> > a patch for probiding a Cargo.lock and modifying
> >> > >> >> > zvariant_deriver to get it from crates.io instead
> >> > >> >> > of pulling locally with a relative path
> >> > >> >> >
> >> > >> >> > The use case where the crate had some git repository
> >> > >> >> > in dependency is very common for "private" crate that
> >> > >> >> > are not aimed to be published on crate.io.
> >> > >> >> > When the project grow bigger, it is common to have
> >> > >> >> > a bin and multiple lib developped in parallel, and these
> >> > >> >> > libs are surely on a git repostitory.
> >> > >> >> >
> >> > >> >> > Hence the need of this support in oe-core.
> >> > >> >> >
> >> > >> >> > Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> >> > >> >> > ---
> >> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> >> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> > >> >> >  3 files changed, 1409 insertions(+)
> >> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >> > >> >> >
> >> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..297a784661
> >> > >> >> > --- /dev/null
> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> > @@ -0,0 +1,140 @@
> >> > >> >> > +SRC_URI += " \
> >> > >> >> > +    crate://crates.io/anes/0.1.6 \
> >> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> > >> >> > +    crate://crates.io/atty/0.2.14 \
> >> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> > >> >> > +    crate://crates.io/cast/0.3.0 \
> >> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> > >> >> > +    crate://crates.io/chrono/0.4.24 \
> >> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> > >> >> > +    crate://crates.io/clap/3.2.23 \
> >> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> > >> >> > +    crate://crates.io/criterion/0.4.0 \
> >> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> > >> >> > +    crate://crates.io/either/1.8.1 \
> >> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> > >> >> > +    crate://crates.io/half/1.8.2 \
> >> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> > >> >> > +    crate://crates.io/heck/0.3.3 \
> >> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> > >> >> > +    crate://crates.io/idna/0.3.0 \
> >> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> > >> >> > +    crate://crates.io/itertools/0.10.5 \
> >> > >> >> > +    crate://crates.io/itertools/0.9.0 \
> >> > >> >> > +    crate://crates.io/itoa/1.0.6 \
> >> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> > >> >> > +    crate://crates.io/libc/0.2.140 \
> >> > >> >> > +    crate://crates.io/log/0.4.17 \
> >> > >> >> > +    crate://crates.io/memchr/2.5.0 \
> >> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> > >> >> > +    crate://crates.io/plotters/0.3.4 \
> >> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> > >> >> > +    crate://crates.io/quote/1.0.26 \
> >> > >> >> > +    crate://crates.io/rand/0.8.5 \
> >> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> > >> >> > +    crate://crates.io/rayon/1.7.0 \
> >> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> > >> >> > +    crate://crates.io/regex/1.7.2 \
> >> > >> >> > +    crate://crates.io/ryu/1.0.13 \
> >> > >> >> > +    crate://crates.io/same-file/1.0.6 \
> >> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> > >> >> > +    crate://crates.io/serde/1.0.158 \
> >> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> > >> >> > +    crate://crates.io/slab/0.4.8 \
> >> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> > >> >> > +    crate://crates.io/strum/0.18.0 \
> >> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> > >> >> > +    crate://crates.io/syn/1.0.109 \
> >> > >> >> > +    crate://crates.io/syn/2.0.8 \
> >> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> > >> >> > +    crate://crates.io/time-core/0.1.0 \
> >> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> > >> >> > +    crate://crates.io/time/0.3.20 \
> >> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> > >> >> > +    crate://crates.io/toml/0.5.11 \
> >> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> > >> >> > +    crate://crates.io/url/2.3.1 \
> >> > >> >> > +    crate://crates.io/uuid/1.3.0 \
> >> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> > >> >> > +    crate://crates.io/version_check/0.9.4 \
> >> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> > >> >> > +    crate://crates.io/winapi/0.3.9 \
> >> > >> >> > +    crate://crates.io/winnow/0.4.0 \
> >> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> > >> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> >> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> >> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> >> > >> >> > +"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_glib"
> >> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> > >> >> > +SRCREV_gobject-sys =
> "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..638ba3ed4d
> >> > >> >> > --- /dev/null
> >> > >> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> > @@ -0,0 +1,1249 @@
> >> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17
> 00:00:00 2001
> >> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> > >> >> > +
> >> > >> >> > +This library crate is a part of zbus project, and is aimed to
> >> > >> >> > +be published amongst the whole project.
> >> > >> >> > +
> >> > >> >> > +Nevertheless, this recipe is for showing example of real
> >> > >> >> > +code which uses a local registry via git url inside yocto
> >> > >> >> > +environment.
> >> > >> >> > +
> >> > >> >> > +I didn't find a real example of binary crate that uses git
> >> > >> >> > +dependency but it seems to me a very common use case
> >> > >> >> > +when we are working on multiple local crates that are not
> >> > >> >> > +aimed to be published on public registry.
> >> > >> >> > +
> >> > >> >> > +Long story short, this patch add a modified Cargo.toml
> >> > >> >> > +to use the zvariant_derive dependency from crates.io instead
> >> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> > >> >> > +
> >> > >> >> > +Upstream-Status: Inappropriate
> >> > >> >> > +Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> >> > >> >> > +---
> >> > >> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> >> > >> >> > + zvariant/Cargo.toml |    2 +-
> >> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> > >> >> > + create mode 100644 zvariant/Cargo.lock
> >> > >> >> > +
> >> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> > >> >> > +new file mode 100644
> >> > >> >> > +index 00000000..02a83d42
> >> > >> >> > +--- /dev/null
> >> > >> >> > ++++ b/zvariant/Cargo.lock
> >> > >> >> > +@@ -0,0 +1,1198 @@
> >> > >> >> > ++# This file is automatically @generated by Cargo.
> >> > >> >> > ++# It is not intended for manual editing.
> >> > >> >> > ++version = 3
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "anes"
> >> > >> >> > ++version = "0.1.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "anyhow"
> >> > >> >> > ++version = "1.0.70"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "arrayvec"
> >> > >> >> > ++version = "0.7.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "atty"
> >> > >> >> > ++version = "0.2.14"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "hermit-abi 0.1.19",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "winapi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "autocfg"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "bitflags"
> >> > >> >> > ++version = "1.3.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "bumpalo"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "byteorder"
> >> > >> >> > ++version = "1.4.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "cast"
> >> > >> >> > ++version = "0.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "cfg-if"
> >> > >> >> > ++version = "1.0.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "chrono"
> >> > >> >> > ++version = "0.4.24"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "num-integer",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ciborium-io",
> >> > >> >> > ++ "ciborium-ll",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium-io"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium-ll"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ciborium-io",
> >> > >> >> > ++ "half",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "clap"
> >> > >> >> > ++version = "3.2.23"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bitflags",
> >> > >> >> > ++ "clap_lex",
> >> > >> >> > ++ "indexmap",
> >> > >> >> > ++ "textwrap",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "clap_lex"
> >> > >> >> > ++version = "0.2.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "os_str_bytes",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "criterion"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "anes",
> >> > >> >> > ++ "atty",
> >> > >> >> > ++ "cast",
> >> > >> >> > ++ "ciborium",
> >> > >> >> > ++ "clap",
> >> > >> >> > ++ "criterion-plot",
> >> > >> >> > ++ "itertools 0.10.5",
> >> > >> >> > ++ "lazy_static",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "oorandom",
> >> > >> >> > ++ "plotters",
> >> > >> >> > ++ "rayon",
> >> > >> >> > ++ "regex",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_derive",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++ "tinytemplate",
> >> > >> >> > ++ "walkdir",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "criterion-plot"
> >> > >> >> > ++version = "0.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cast",
> >> > >> >> > ++ "itertools 0.10.5",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-channel"
> >> > >> >> > ++version = "0.5.7"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-deque"
> >> > >> >> > ++version = "0.8.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-epoch",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-epoch"
> >> > >> >> > ++version = "0.9.14"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++ "memoffset",
> >> > >> >> > ++ "scopeguard",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-utils"
> >> > >> >> > ++version = "0.8.15"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "either"
> >> > >> >> > ++version = "1.8.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "enumflags2"
> >> > >> >> > ++version = "0.7.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "enumflags2_derive",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "enumflags2_derive"
> >> > >> >> > ++version = "0.7.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "form_urlencoded"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "percent-encoding",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-channel"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-core"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-executor"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "futures-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-macro"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-task"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-util"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-macro",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "pin-project-lite",
> >> > >> >> > ++ "pin-utils",
> >> > >> >> > ++ "slab",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "getrandom"
> >> > >> >> > ++version = "0.2.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "wasi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bitflags",
> >> > >> >> > ++ "futures-channel",
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-executor",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "futures-util",
> >> > >> >> > ++ "glib-macros",
> >> > >> >> > ++ "glib-sys",
> >> > >> >> > ++ "gobject-sys",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib-macros"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "anyhow",
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "itertools 0.9.0",
> >> > >> >> > ++ "proc-macro-crate 0.1.5",
> >> > >> >> > ++ "proc-macro-error",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib-sys"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "system-deps",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "gobject-sys"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "glib-sys",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "system-deps",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "half"
> >> > >> >> > ++version = "1.8.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hashbrown"
> >> > >> >> > ++version = "0.12.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "heck"
> >> > >> >> > ++version = "0.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-segmentation",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hermit-abi"
> >> > >> >> > ++version = "0.1.19"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hermit-abi"
> >> > >> >> > ++version = "0.2.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "idna"
> >> > >> >> > ++version = "0.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-bidi",
> >> > >> >> > ++ "unicode-normalization",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "indexmap"
> >> > >> >> > ++version = "1.9.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "hashbrown",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itertools"
> >> > >> >> > ++version = "0.9.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itertools"
> >> > >> >> > ++version = "0.10.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itoa"
> >> > >> >> > ++version = "1.0.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "js-sys"
> >> > >> >> > ++version = "0.3.61"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "lazy_static"
> >> > >> >> > ++version = "1.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "libc"
> >> > >> >> > ++version = "0.2.140"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "log"
> >> > >> >> > ++version = "0.4.17"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "memchr"
> >> > >> >> > ++version = "2.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "memoffset"
> >> > >> >> > ++version = "0.8.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num-integer"
> >> > >> >> > ++version = "0.1.45"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num-traits"
> >> > >> >> > ++version = "0.2.15"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num_cpus"
> >> > >> >> > ++version = "1.15.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "hermit-abi 0.2.6",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "once_cell"
> >> > >> >> > ++version = "1.17.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "oorandom"
> >> > >> >> > ++version = "11.1.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "os_str_bytes"
> >> > >> >> > ++version = "6.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "percent-encoding"
> >> > >> >> > ++version = "2.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pin-project-lite"
> >> > >> >> > ++version = "0.2.9"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pin-utils"
> >> > >> >> > ++version = "0.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pkg-config"
> >> > >> >> > ++version = "0.3.26"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters"
> >> > >> >> > ++version = "0.3.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "plotters-backend",
> >> > >> >> > ++ "plotters-svg",
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++ "web-sys",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters-backend"
> >> > >> >> > ++version = "0.3.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters-svg"
> >> > >> >> > ++version = "0.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "plotters-backend",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ppv-lite86"
> >> > >> >> > ++version = "0.2.17"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-crate"
> >> > >> >> > ++version = "0.1.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "toml",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-crate"
> >> > >> >> > ++version = "1.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++ "toml_edit",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-error"
> >> > >> >> > ++version = "1.0.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro-error-attr",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "version_check",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-error-attr"
> >> > >> >> > ++version = "1.0.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "version_check",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro2"
> >> > >> >> > ++version = "1.0.53"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "quote"
> >> > >> >> > ++version = "1.0.26"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand"
> >> > >> >> > ++version = "0.8.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "rand_chacha",
> >> > >> >> > ++ "rand_core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand_chacha"
> >> > >> >> > ++version = "0.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ppv-lite86",
> >> > >> >> > ++ "rand_core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand_core"
> >> > >> >> > ++version = "0.6.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "getrandom",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rayon"
> >> > >> >> > ++version = "1.7.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++ "rayon-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rayon-core"
> >> > >> >> > ++version = "1.11.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "crossbeam-channel",
> >> > >> >> > ++ "crossbeam-deque",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++ "num_cpus",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "regex"
> >> > >> >> > ++version = "1.7.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "regex-syntax",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "regex-syntax"
> >> > >> >> > ++version = "0.6.29"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ryu"
> >> > >> >> > ++version = "1.0.13"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "same-file"
> >> > >> >> > ++version = "1.0.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "winapi-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "scopeguard"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde"
> >> > >> >> > ++version = "1.0.158"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde_derive",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_bytes"
> >> > >> >> > ++version = "0.11.9"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_derive"
> >> > >> >> > ++version = "1.0.158"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_json"
> >> > >> >> > ++version = "1.0.94"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "itoa",
> >> > >> >> > ++ "ryu",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_repr"
> >> > >> >> > ++version = "0.1.12"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "slab"
> >> > >> >> > ++version = "0.4.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "static_assertions"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "strum"
> >> > >> >> > ++version = "0.18.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "strum_macros"
> >> > >> >> > ++version = "0.18.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "syn"
> >> > >> >> > ++version = "1.0.109"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "syn"
> >> > >> >> > ++version = "2.0.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "system-deps"
> >> > >> >> > ++version = "1.3.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "pkg-config",
> >> > >> >> > ++ "strum",
> >> > >> >> > ++ "strum_macros",
> >> > >> >> > ++ "thiserror",
> >> > >> >> > ++ "toml",
> >> > >> >> > ++ "version-compare",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "textwrap"
> >> > >> >> > ++version = "0.16.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "thiserror"
> >> > >> >> > ++version = "1.0.40"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "thiserror-impl",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "thiserror-impl"
> >> > >> >> > ++version = "1.0.40"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time"
> >> > >> >> > ++version = "0.3.20"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "time-core",
> >> > >> >> > ++ "time-macros",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time-core"
> >> > >> >> > ++version = "0.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time-macros"
> >> > >> >> > ++version = "0.2.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "time-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinytemplate"
> >> > >> >> > ++version = "1.2.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinyvec"
> >> > >> >> > ++version = "1.6.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "tinyvec_macros",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinyvec_macros"
> >> > >> >> > ++version = "0.1.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml"
> >> > >> >> > ++version = "0.5.11"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml_datetime"
> >> > >> >> > ++version = "0.6.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml_edit"
> >> > >> >> > ++version = "0.19.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "indexmap",
> >> > >> >> > ++ "toml_datetime",
> >> > >> >> > ++ "winnow",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-bidi"
> >> > >> >> > ++version = "0.3.13"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-ident"
> >> > >> >> > ++version = "1.0.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-normalization"
> >> > >> >> > ++version = "0.1.22"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "tinyvec",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-segmentation"
> >> > >> >> > ++version = "1.10.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "url"
> >> > >> >> > ++version = "2.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "form_urlencoded",
> >> > >> >> > ++ "idna",
> >> > >> >> > ++ "percent-encoding",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "uuid"
> >> > >> >> > ++version = "1.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "version-compare"
> >> > >> >> > ++version = "0.0.10"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "version_check"
> >> > >> >> > ++version = "0.9.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "walkdir"
> >> > >> >> > ++version = "2.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "same-file",
> >> > >> >> > ++ "winapi-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasi"
> >> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "wasm-bindgen-macro",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-backend"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bumpalo",
> >> > >> >> > ++ "log",
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "wasm-bindgen-shared",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-macro"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "wasm-bindgen-macro-support",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-macro-support"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "wasm-bindgen-backend",
> >> > >> >> > ++ "wasm-bindgen-shared",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-shared"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "web-sys"
> >> > >> >> > ++version = "0.3.61"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "js-sys",
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "winapi"
> >> > >> >> > ++version = "0.3.9"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "winapi-i686-pc-windows-gnu",
> >> > >> >> > ++ "winapi-x86_64-pc-windows-gnu",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "winapi-i686-pc-windows-gnu"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "winapi-util"
> >> > >> >> > ++version = "0.1.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "winapi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "winapi-x86_64-pc-windows-gnu"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "winnow"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "memchr",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "arrayvec",
> >> > >> >> > ++ "byteorder",
> >> > >> >> > ++ "chrono",
> >> > >> >> > ++ "criterion",
> >> > >> >> > ++ "enumflags2",
> >> > >> >> > ++ "glib",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "rand",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_bytes",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++ "serde_repr",
> >> > >> >> > ++ "static_assertions",
> >> > >> >> > ++ "time",
> >> > >> >> > ++ "url",
> >> > >> >> > ++ "uuid",
> >> > >> >> > ++ "zvariant_derive",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant_derive"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro-crate 1.3.1",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "zvariant_utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant_utils"
> >> > >> >> > ++version = "1.0.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> > >> >> > +index 45367729..6981862a 100644
> >> > >> >> > +--- a/zvariant/Cargo.toml
> >> > >> >> > ++++ b/zvariant/Cargo.toml
> >> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> > >> >> > + serde = { version = "1.0", features = ["derive"] }
> >> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"],
> optional = true }
> >> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"],
> optional = true }
> >> > >> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> >> > >> >> > ++zvariant_derive = "3.12.0"
> >> > >> >> > + serde_bytes = { version = "0.11", optional = true }
> >> > >> >> > + static_assertions = "1.1.0"
> >> > >> >> > + libc = "0.2.137"
> >> > >> >> > +2.34.1
> >> > >> >> > +
> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..ab769b3fce
> >> > >> >> > --- /dev/null
> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > >> >> > @@ -0,0 +1,20 @@
> >> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data
> to/from D-Bus wire format"
> >> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding
> of data to/from D-Bus wire format.\
> >> > >> >> > +This binary wire format is simple and very efficient and
> hence useful outside of D-Bus context as well.\
> >> > >> >> > +A modified form of this format, GVariant is very commonly
> used for efficient storage of arbitrary \
> >> > >> >> > +data and is also supported by this crate."
> >> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> > >> >> > +LICENSE = "MIT"
> >> > >> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> > >> >> > +
> >> > >> >> > +SRC_URI = " \
> >> > >> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> >> > >> >> > +
> file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> > >> >> > +"
> >> > >> >> > +
> >> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> > >> >> > +S = "${WORKDIR}/zvariant"
> >> > >> >> > +
> >> > >> >> > +inherit cargo cargo-update-recipe-crates
> >> > >> >> > +
> >> > >> >> > +require ${BPN}-crates.inc
> >> > >> >> > --
> >> > >> >> > 2.34.1
> >> > >> >> >
> >> > >> >> >
> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> > Links: You receive all messages sent to this group.
> >> > >> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> >> > >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840364/1686489
> >> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >
> >>
> >>
> >>
> >> --
> >> Alex Kiernan
>
>
>
> --
> Alex Kiernan
>

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

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

* Re: [OE-core] [PATCH 3/5] rust-example: provide a recipe for zvariant
  2023-03-27  8:52                   ` Frédéric Martinsons
@ 2023-03-27 10:24                     ` Alex Kiernan
  0 siblings, 0 replies; 38+ messages in thread
From: Alex Kiernan @ 2023-03-27 10:24 UTC (permalink / raw)
  To: Frédéric Martinsons; +Cc: Alexander Kanavin, openembedded-core

On Mon, Mar 27, 2023 at 9:52 AM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> True, no rust project will ever DEPENDS on the zvariant recipe and as you said
> will simply list zvariant as a crate.
> My main concern with the example was to address this comment: https://patchwork.yoctoproject.org/project/oe-core/patch/20221030173815.10212-2-alex.kiernan@gmail.com/#6450
>
> So , do you think it's still worth providing such an example ? and if yes, can I place it
> in meta-openembedded/meta-oe/recipes-extended/ ?
>

I think it definitely has value for this problem - the examples I had
were either synthetic, or internal.

>
>
> On Mon, 27 Mar 2023 at 10:42, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>>
>> I think modelling meta-rust on meta-python is wrong - rust doesn't
>> package crates, they get consumed into the main recipe (which I've
>> just realised means I think we have some work on licensing to do).
>>
>> For this example, I think it's just a regular recipe which should sit
>> alongside other recipes in meta-oe; anyone who wants to consume
>> zvariant is going to list it as part of their Cargo.toml, not DEPEND
>> on this recipe.
>>
>> I guess I'm really arguing that meta-rust is purely a legacy thing at
>> this point (one which I continue to need and maintain a fork of!).
>>
>> On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > There is a stalled merge request for this clean: https://github.com/meta-rust/meta-rust/pull/364
>> >
>> > But I think Alex is right, all needed things for rust/cargo projects seem to be already in oe-core except
>> > for examples of recipes.
>> >
>> > What about adding meta-rust in meta-openembedded which will contains the example, something like
>> >
>> > meta-rust/
>> > ├── conf
>> > │   └── layer.conf
>> > ├── COPYING.MIT
>> > ├── README
>> > └── recipes-extended
>> >     ├── zvariant
>> >     │   └── 0001-Tweak-zvariant-cargo-config.patch
>> >     ├── zvariant_3.12.0.bb
>> >     └── zvariant-crates.inc
>> >
>> >
>> > On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>> >>
>> >> If you're on master I don't think there's anything useful in meta-rust
>> >> - its providing toolchains for older branches.
>> >>
>> >> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
>> >> <alex.kanavin@gmail.com> wrote:
>> >> >
>> >> > You could meanwhile review meta-rust, and see what is useful and what
>> >> > is obsolete perhaps? I see it still carries toolchain recipes for
>> >> > example, I have no idea why.
>> >> >
>> >> > Alex
>> >> >
>> >> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
>> >> > <frederic.martinsons@gmail.com> wrote:
>> >> > >
>> >> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>> >> > >
>> >> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>> >> > >>
>> >> > >> rust-hello-world is installed into test images, and has a runtime test
>> >> > >> to verify that the toolchain produces working binaries:
>> >> > >> meta/lib/oeqa/runtime/cases/rust.py
>> >> > >>
>> >> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> >> > >> Same as meta-perl/meta-python.
>> >> > >> https://github.com/meta-rust/meta-rust
>> >> > >>
>> >> > >> Alex
>> >> > >>
>> >> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> >> > >> <frederic.martinsons@gmail.com> wrote:
>> >> > >> >
>> >> > >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> >> > >> >
>> >> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> >> > >> >
>> >> > >> >
>> >> > >> >
>> >> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >> > >> >>
>> >> > >> >> I don't think this should be going in oe-core, as it's not actually
>> >> > >> >> used by anything, or in any automated tests. But you can place it in a
>> >> > >> >> separate layer.
>> >> > >> >>
>> >> > >> >> Alex
>> >> > >> >>
>> >> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> >> > >> >> <frederic.martinsons@gmail.com> wrote:
>> >> > >> >> >
>> >> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> >
>> >> > >> >> > This recipe is for showing an "real world" example of
>> >> > >> >> > a crate that depends on some git repositories.
>> >> > >> >> >
>> >> > >> >> > Usually, this kind of crate is built within a global
>> >> > >> >> > workspace (here it is the zbus project) and so
>> >> > >> >> > doesn't need a Cargo.lock on its own.
>> >> > >> >> >
>> >> > >> >> > For the sake of the demonstration, I had to add
>> >> > >> >> > a patch for probiding a Cargo.lock and modifying
>> >> > >> >> > zvariant_deriver to get it from crates.io instead
>> >> > >> >> > of pulling locally with a relative path
>> >> > >> >> >
>> >> > >> >> > The use case where the crate had some git repository
>> >> > >> >> > in dependency is very common for "private" crate that
>> >> > >> >> > are not aimed to be published on crate.io.
>> >> > >> >> > When the project grow bigger, it is common to have
>> >> > >> >> > a bin and multiple lib developped in parallel, and these
>> >> > >> >> > libs are surely on a git repostitory.
>> >> > >> >> >
>> >> > >> >> > Hence the need of this support in oe-core.
>> >> > >> >> >
>> >> > >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > ---
>> >> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >> > >> >> >  3 files changed, 1409 insertions(+)
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> >
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..297a784661
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> > @@ -0,0 +1,140 @@
>> >> > >> >> > +SRC_URI += " \
>> >> > >> >> > +    crate://crates.io/anes/0.1.6 \
>> >> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
>> >> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> >> > >> >> > +    crate://crates.io/atty/0.2.14 \
>> >> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
>> >> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
>> >> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> >> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
>> >> > >> >> > +    crate://crates.io/cast/0.3.0 \
>> >> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> >> > >> >> > +    crate://crates.io/chrono/0.4.24 \
>> >> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> >> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> >> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
>> >> > >> >> > +    crate://crates.io/clap/3.2.23 \
>> >> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> >> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> >> > >> >> > +    crate://crates.io/criterion/0.4.0 \
>> >> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> >> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> >> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> >> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> >> > >> >> > +    crate://crates.io/either/1.8.1 \
>> >> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> >> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> >> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> >> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
>> >> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
>> >> > >> >> > +    crate://crates.io/half/1.8.2 \
>> >> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> >> > >> >> > +    crate://crates.io/heck/0.3.3 \
>> >> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> >> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> >> > >> >> > +    crate://crates.io/idna/0.3.0 \
>> >> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
>> >> > >> >> > +    crate://crates.io/itertools/0.10.5 \
>> >> > >> >> > +    crate://crates.io/itertools/0.9.0 \
>> >> > >> >> > +    crate://crates.io/itoa/1.0.6 \
>> >> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
>> >> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> >> > >> >> > +    crate://crates.io/libc/0.2.140 \
>> >> > >> >> > +    crate://crates.io/log/0.4.17 \
>> >> > >> >> > +    crate://crates.io/memchr/2.5.0 \
>> >> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
>> >> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
>> >> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
>> >> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> >> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
>> >> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
>> >> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> >> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> >> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> >> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> >> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> >> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> >> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> >> > >> >> > +    crate://crates.io/plotters/0.3.4 \
>> >> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> >> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> >> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> >> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> >> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> >> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> >> > >> >> > +    crate://crates.io/quote/1.0.26 \
>> >> > >> >> > +    crate://crates.io/rand/0.8.5 \
>> >> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> >> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
>> >> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> >> > >> >> > +    crate://crates.io/rayon/1.7.0 \
>> >> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> >> > >> >> > +    crate://crates.io/regex/1.7.2 \
>> >> > >> >> > +    crate://crates.io/ryu/1.0.13 \
>> >> > >> >> > +    crate://crates.io/same-file/1.0.6 \
>> >> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> >> > >> >> > +    crate://crates.io/serde/1.0.158 \
>> >> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> >> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> >> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
>> >> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> >> > >> >> > +    crate://crates.io/slab/0.4.8 \
>> >> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> >> > >> >> > +    crate://crates.io/strum/0.18.0 \
>> >> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> >> > >> >> > +    crate://crates.io/syn/1.0.109 \
>> >> > >> >> > +    crate://crates.io/syn/2.0.8 \
>> >> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
>> >> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
>> >> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> >> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
>> >> > >> >> > +    crate://crates.io/time-core/0.1.0 \
>> >> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
>> >> > >> >> > +    crate://crates.io/time/0.3.20 \
>> >> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> >> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> >> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> >> > >> >> > +    crate://crates.io/toml/0.5.11 \
>> >> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> >> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> >> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> >> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> >> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> >> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> >> > >> >> > +    crate://crates.io/url/2.3.1 \
>> >> > >> >> > +    crate://crates.io/uuid/1.3.0 \
>> >> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
>> >> > >> >> > +    crate://crates.io/version_check/0.9.4 \
>> >> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
>> >> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> >> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
>> >> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> >> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> >> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> >> > >> >> > +    crate://crates.io/winapi/0.3.9 \
>> >> > >> >> > +    crate://crates.io/winnow/0.4.0 \
>> >> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> >> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> >> > >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> >> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> >> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> >> > >> >> > +"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_glib"
>> >> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
>> >> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> >> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..638ba3ed4d
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> > @@ -0,0 +1,1249 @@
>> >> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> >> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> >> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> >> > >> >> > +
>> >> > >> >> > +This library crate is a part of zbus project, and is aimed to
>> >> > >> >> > +be published amongst the whole project.
>> >> > >> >> > +
>> >> > >> >> > +Nevertheless, this recipe is for showing example of real
>> >> > >> >> > +code which uses a local registry via git url inside yocto
>> >> > >> >> > +environment.
>> >> > >> >> > +
>> >> > >> >> > +I didn't find a real example of binary crate that uses git
>> >> > >> >> > +dependency but it seems to me a very common use case
>> >> > >> >> > +when we are working on multiple local crates that are not
>> >> > >> >> > +aimed to be published on public registry.
>> >> > >> >> > +
>> >> > >> >> > +Long story short, this patch add a modified Cargo.toml
>> >> > >> >> > +to use the zvariant_derive dependency from crates.io instead
>> >> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
>> >> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
>> >> > >> >> > +
>> >> > >> >> > +Upstream-Status: Inappropriate
>> >> > >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > +---
>> >> > >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> >> > >> >> > + zvariant/Cargo.toml |    2 +-
>> >> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> >> > >> >> > + create mode 100644 zvariant/Cargo.lock
>> >> > >> >> > +
>> >> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> >> > >> >> > +new file mode 100644
>> >> > >> >> > +index 00000000..02a83d42
>> >> > >> >> > +--- /dev/null
>> >> > >> >> > ++++ b/zvariant/Cargo.lock
>> >> > >> >> > +@@ -0,0 +1,1198 @@
>> >> > >> >> > ++# This file is automatically @generated by Cargo.
>> >> > >> >> > ++# It is not intended for manual editing.
>> >> > >> >> > ++version = 3
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "anes"
>> >> > >> >> > ++version = "0.1.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "anyhow"
>> >> > >> >> > ++version = "1.0.70"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "arrayvec"
>> >> > >> >> > ++version = "0.7.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "atty"
>> >> > >> >> > ++version = "0.2.14"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "hermit-abi 0.1.19",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "winapi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "autocfg"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "bitflags"
>> >> > >> >> > ++version = "1.3.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "bumpalo"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "byteorder"
>> >> > >> >> > ++version = "1.4.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "cast"
>> >> > >> >> > ++version = "0.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "cfg-if"
>> >> > >> >> > ++version = "1.0.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "chrono"
>> >> > >> >> > ++version = "0.4.24"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "num-integer",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ciborium-io",
>> >> > >> >> > ++ "ciborium-ll",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium-io"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium-ll"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ciborium-io",
>> >> > >> >> > ++ "half",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "clap"
>> >> > >> >> > ++version = "3.2.23"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bitflags",
>> >> > >> >> > ++ "clap_lex",
>> >> > >> >> > ++ "indexmap",
>> >> > >> >> > ++ "textwrap",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "clap_lex"
>> >> > >> >> > ++version = "0.2.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "os_str_bytes",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "criterion"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "anes",
>> >> > >> >> > ++ "atty",
>> >> > >> >> > ++ "cast",
>> >> > >> >> > ++ "ciborium",
>> >> > >> >> > ++ "clap",
>> >> > >> >> > ++ "criterion-plot",
>> >> > >> >> > ++ "itertools 0.10.5",
>> >> > >> >> > ++ "lazy_static",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "oorandom",
>> >> > >> >> > ++ "plotters",
>> >> > >> >> > ++ "rayon",
>> >> > >> >> > ++ "regex",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_derive",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++ "tinytemplate",
>> >> > >> >> > ++ "walkdir",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "criterion-plot"
>> >> > >> >> > ++version = "0.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cast",
>> >> > >> >> > ++ "itertools 0.10.5",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-channel"
>> >> > >> >> > ++version = "0.5.7"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-deque"
>> >> > >> >> > ++version = "0.8.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-epoch",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-epoch"
>> >> > >> >> > ++version = "0.9.14"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++ "memoffset",
>> >> > >> >> > ++ "scopeguard",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-utils"
>> >> > >> >> > ++version = "0.8.15"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "either"
>> >> > >> >> > ++version = "1.8.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "enumflags2"
>> >> > >> >> > ++version = "0.7.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "enumflags2_derive",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "enumflags2_derive"
>> >> > >> >> > ++version = "0.7.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "form_urlencoded"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "percent-encoding",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-channel"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-core"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-executor"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "futures-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-macro"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-task"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-util"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-macro",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "pin-project-lite",
>> >> > >> >> > ++ "pin-utils",
>> >> > >> >> > ++ "slab",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "getrandom"
>> >> > >> >> > ++version = "0.2.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "wasi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bitflags",
>> >> > >> >> > ++ "futures-channel",
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-executor",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "futures-util",
>> >> > >> >> > ++ "glib-macros",
>> >> > >> >> > ++ "glib-sys",
>> >> > >> >> > ++ "gobject-sys",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib-macros"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "anyhow",
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "itertools 0.9.0",
>> >> > >> >> > ++ "proc-macro-crate 0.1.5",
>> >> > >> >> > ++ "proc-macro-error",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib-sys"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "system-deps",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "gobject-sys"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "glib-sys",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "system-deps",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "half"
>> >> > >> >> > ++version = "1.8.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hashbrown"
>> >> > >> >> > ++version = "0.12.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "heck"
>> >> > >> >> > ++version = "0.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-segmentation",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hermit-abi"
>> >> > >> >> > ++version = "0.1.19"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hermit-abi"
>> >> > >> >> > ++version = "0.2.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "idna"
>> >> > >> >> > ++version = "0.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-bidi",
>> >> > >> >> > ++ "unicode-normalization",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "indexmap"
>> >> > >> >> > ++version = "1.9.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "hashbrown",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itertools"
>> >> > >> >> > ++version = "0.9.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itertools"
>> >> > >> >> > ++version = "0.10.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itoa"
>> >> > >> >> > ++version = "1.0.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "js-sys"
>> >> > >> >> > ++version = "0.3.61"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "lazy_static"
>> >> > >> >> > ++version = "1.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "libc"
>> >> > >> >> > ++version = "0.2.140"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "log"
>> >> > >> >> > ++version = "0.4.17"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "memchr"
>> >> > >> >> > ++version = "2.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "memoffset"
>> >> > >> >> > ++version = "0.8.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num-integer"
>> >> > >> >> > ++version = "0.1.45"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num-traits"
>> >> > >> >> > ++version = "0.2.15"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num_cpus"
>> >> > >> >> > ++version = "1.15.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "hermit-abi 0.2.6",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "once_cell"
>> >> > >> >> > ++version = "1.17.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "oorandom"
>> >> > >> >> > ++version = "11.1.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "os_str_bytes"
>> >> > >> >> > ++version = "6.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "percent-encoding"
>> >> > >> >> > ++version = "2.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pin-project-lite"
>> >> > >> >> > ++version = "0.2.9"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pin-utils"
>> >> > >> >> > ++version = "0.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pkg-config"
>> >> > >> >> > ++version = "0.3.26"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters"
>> >> > >> >> > ++version = "0.3.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "plotters-backend",
>> >> > >> >> > ++ "plotters-svg",
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++ "web-sys",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters-backend"
>> >> > >> >> > ++version = "0.3.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters-svg"
>> >> > >> >> > ++version = "0.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "plotters-backend",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ppv-lite86"
>> >> > >> >> > ++version = "0.2.17"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-crate"
>> >> > >> >> > ++version = "0.1.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "toml",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-crate"
>> >> > >> >> > ++version = "1.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++ "toml_edit",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-error"
>> >> > >> >> > ++version = "1.0.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro-error-attr",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "version_check",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-error-attr"
>> >> > >> >> > ++version = "1.0.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "version_check",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro2"
>> >> > >> >> > ++version = "1.0.53"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "quote"
>> >> > >> >> > ++version = "1.0.26"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand"
>> >> > >> >> > ++version = "0.8.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "rand_chacha",
>> >> > >> >> > ++ "rand_core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand_chacha"
>> >> > >> >> > ++version = "0.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ppv-lite86",
>> >> > >> >> > ++ "rand_core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand_core"
>> >> > >> >> > ++version = "0.6.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "getrandom",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rayon"
>> >> > >> >> > ++version = "1.7.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++ "rayon-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rayon-core"
>> >> > >> >> > ++version = "1.11.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "crossbeam-channel",
>> >> > >> >> > ++ "crossbeam-deque",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++ "num_cpus",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "regex"
>> >> > >> >> > ++version = "1.7.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "regex-syntax",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "regex-syntax"
>> >> > >> >> > ++version = "0.6.29"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ryu"
>> >> > >> >> > ++version = "1.0.13"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "same-file"
>> >> > >> >> > ++version = "1.0.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "winapi-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "scopeguard"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde"
>> >> > >> >> > ++version = "1.0.158"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde_derive",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_bytes"
>> >> > >> >> > ++version = "0.11.9"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_derive"
>> >> > >> >> > ++version = "1.0.158"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_json"
>> >> > >> >> > ++version = "1.0.94"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "itoa",
>> >> > >> >> > ++ "ryu",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_repr"
>> >> > >> >> > ++version = "0.1.12"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "slab"
>> >> > >> >> > ++version = "0.4.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "static_assertions"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "strum"
>> >> > >> >> > ++version = "0.18.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "strum_macros"
>> >> > >> >> > ++version = "0.18.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "syn"
>> >> > >> >> > ++version = "1.0.109"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "syn"
>> >> > >> >> > ++version = "2.0.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "system-deps"
>> >> > >> >> > ++version = "1.3.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "pkg-config",
>> >> > >> >> > ++ "strum",
>> >> > >> >> > ++ "strum_macros",
>> >> > >> >> > ++ "thiserror",
>> >> > >> >> > ++ "toml",
>> >> > >> >> > ++ "version-compare",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "textwrap"
>> >> > >> >> > ++version = "0.16.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "thiserror"
>> >> > >> >> > ++version = "1.0.40"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "thiserror-impl",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "thiserror-impl"
>> >> > >> >> > ++version = "1.0.40"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time"
>> >> > >> >> > ++version = "0.3.20"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "time-core",
>> >> > >> >> > ++ "time-macros",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time-core"
>> >> > >> >> > ++version = "0.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time-macros"
>> >> > >> >> > ++version = "0.2.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "time-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinytemplate"
>> >> > >> >> > ++version = "1.2.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinyvec"
>> >> > >> >> > ++version = "1.6.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "tinyvec_macros",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinyvec_macros"
>> >> > >> >> > ++version = "0.1.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml"
>> >> > >> >> > ++version = "0.5.11"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml_datetime"
>> >> > >> >> > ++version = "0.6.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml_edit"
>> >> > >> >> > ++version = "0.19.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "indexmap",
>> >> > >> >> > ++ "toml_datetime",
>> >> > >> >> > ++ "winnow",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-bidi"
>> >> > >> >> > ++version = "0.3.13"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-ident"
>> >> > >> >> > ++version = "1.0.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-normalization"
>> >> > >> >> > ++version = "0.1.22"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "tinyvec",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-segmentation"
>> >> > >> >> > ++version = "1.10.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "url"
>> >> > >> >> > ++version = "2.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "form_urlencoded",
>> >> > >> >> > ++ "idna",
>> >> > >> >> > ++ "percent-encoding",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "uuid"
>> >> > >> >> > ++version = "1.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "version-compare"
>> >> > >> >> > ++version = "0.0.10"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "version_check"
>> >> > >> >> > ++version = "0.9.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "walkdir"
>> >> > >> >> > ++version = "2.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "same-file",
>> >> > >> >> > ++ "winapi-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasi"
>> >> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "wasm-bindgen-macro",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-backend"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bumpalo",
>> >> > >> >> > ++ "log",
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "wasm-bindgen-shared",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-macro"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "wasm-bindgen-macro-support",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-macro-support"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "wasm-bindgen-backend",
>> >> > >> >> > ++ "wasm-bindgen-shared",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-shared"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "web-sys"
>> >> > >> >> > ++version = "0.3.61"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "js-sys",
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "winapi"
>> >> > >> >> > ++version = "0.3.9"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "winapi-i686-pc-windows-gnu",
>> >> > >> >> > ++ "winapi-x86_64-pc-windows-gnu",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "winapi-i686-pc-windows-gnu"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "winapi-util"
>> >> > >> >> > ++version = "0.1.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "winapi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "winapi-x86_64-pc-windows-gnu"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "winnow"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "memchr",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "arrayvec",
>> >> > >> >> > ++ "byteorder",
>> >> > >> >> > ++ "chrono",
>> >> > >> >> > ++ "criterion",
>> >> > >> >> > ++ "enumflags2",
>> >> > >> >> > ++ "glib",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "rand",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_bytes",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++ "serde_repr",
>> >> > >> >> > ++ "static_assertions",
>> >> > >> >> > ++ "time",
>> >> > >> >> > ++ "url",
>> >> > >> >> > ++ "uuid",
>> >> > >> >> > ++ "zvariant_derive",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant_derive"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro-crate 1.3.1",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "zvariant_utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant_utils"
>> >> > >> >> > ++version = "1.0.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> >> > >> >> > +index 45367729..6981862a 100644
>> >> > >> >> > +--- a/zvariant/Cargo.toml
>> >> > >> >> > ++++ b/zvariant/Cargo.toml
>> >> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> >> > >> >> > + serde = { version = "1.0", features = ["derive"] }
>> >> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> >> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> >> > >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> >> > >> >> > ++zvariant_derive = "3.12.0"
>> >> > >> >> > + serde_bytes = { version = "0.11", optional = true }
>> >> > >> >> > + static_assertions = "1.1.0"
>> >> > >> >> > + libc = "0.2.137"
>> >> > >> >> > +2.34.1
>> >> > >> >> > +
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..ab769b3fce
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> > @@ -0,0 +1,20 @@
>> >> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> >> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> >> > >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> >> > >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> >> > >> >> > +data and is also supported by this crate."
>> >> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> >> > >> >> > +LICENSE = "MIT"
>> >> > >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> >> > >> >> > +
>> >> > >> >> > +SRC_URI = " \
>> >> > >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> >> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> >> > >> >> > +"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> >> > >> >> > +S = "${WORKDIR}/zvariant"
>> >> > >> >> > +
>> >> > >> >> > +inherit cargo cargo-update-recipe-crates
>> >> > >> >> > +
>> >> > >> >> > +require ${BPN}-crates.inc
>> >> > >> >> > --
>> >> > >> >> > 2.34.1
>> >> > >> >> >
>> >> > >> >> >
>> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > >> >> > Links: You receive all messages sent to this group.
>> >> > >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> >> > >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> >> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> > >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > >> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Alex Kiernan
>>
>>
>>
>> --
>> Alex Kiernan



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
                   ` (4 preceding siblings ...)
  2023-03-25  9:00 ` [PATCH 5/5] patch: support of git patches when the source uri contained subpath param frederic.martinsons
@ 2023-03-27 14:20 ` Richard Purdie
  2023-03-27 14:25   ` Alexander Kanavin
  5 siblings, 1 reply; 38+ messages in thread
From: Richard Purdie @ 2023-03-27 14:20 UTC (permalink / raw)
  To: Frederic Martinsons, openembedded-core; +Cc: alex.kiernan

On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> From: Frederic Martinsons <frederic.martinsons@gmail.com>
> 
> This series brings the support of local git repository inside
> a cargo based recipe.
> 
> It also enable devtool capacity on it and provide a real crate
> example recipe to show how things are done.
> 
> The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> 
>   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> 
> are available in the Git repository at:
> 
>   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> 
> Alex Kiernan (1):
>   cargo_common.bbclass: Support local github repos
> 
> Frederic Martinsons (4):
>   cargo_common.bbclass: add support of user in url for patch
>   rust-example: provide a recipe for zvariant
>   devtool: add support for multiple git url inside a cargo based recipe
>   patch: support of git patches when the source uri contained subpath
>     param

The various rust/cargo/crate patches look like they're heading in a
good direction, thanks!

The one thing which I think is missing is more support for testing some
of these changes in our automated testing.

In particular, devtool does have a decent test suite so we should
ensure new devtool additions have tests.

You can see the devtools tests in
meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
like "oe-selftest -r devtool -j 3" for example.

Cheers,

Richard


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 14:20 ` [OE-core] [PATCH 0/5] Extend cargo based recip support Richard Purdie
@ 2023-03-27 14:25   ` Alexander Kanavin
  2023-03-27 15:01     ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-27 14:25 UTC (permalink / raw)
  To: Richard Purdie; +Cc: Frederic Martinsons, openembedded-core, alex.kiernan

So if devtool tests would operate on zvariant recipe, then the recipe
can simply go into meta-selftest after all :)

Alex

On Mon, 27 Mar 2023 at 16:20, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
>
> On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >
> > This series brings the support of local git repository inside
> > a cargo based recipe.
> >
> > It also enable devtool capacity on it and provide a real crate
> > example recipe to show how things are done.
> >
> > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >
> >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> >
> > Alex Kiernan (1):
> >   cargo_common.bbclass: Support local github repos
> >
> > Frederic Martinsons (4):
> >   cargo_common.bbclass: add support of user in url for patch
> >   rust-example: provide a recipe for zvariant
> >   devtool: add support for multiple git url inside a cargo based recipe
> >   patch: support of git patches when the source uri contained subpath
> >     param
>
> The various rust/cargo/crate patches look like they're heading in a
> good direction, thanks!
>
> The one thing which I think is missing is more support for testing some
> of these changes in our automated testing.
>
> In particular, devtool does have a decent test suite so we should
> ensure new devtool additions have tests.
>
> You can see the devtools tests in
> meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> like "oe-selftest -r devtool -j 3" for example.
>
> Cheers,
>
> Richard
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 14:25   ` Alexander Kanavin
@ 2023-03-27 15:01     ` Frédéric Martinsons
  2023-03-27 17:19       ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27 15:01 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Richard Purdie, openembedded-core, Alex Kiernan

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

Ah!

Alright, I'll try to setup a devtool test which demonstrate the usage of
git subpath with the zvariant.
I'll then issue a V4 series which reintroduce the zvariant recipe in
meta-selftest and the unit test on it.

I must admit I felt in love for rust since the beginning of the year and
considering that I use yocto on a daily basis, I'll do everything I can to
extend the support of developing rust for embedded devices.

Thank you all for the advices.

Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> So if devtool tests would operate on zvariant recipe, then the recipe
> can simply go into meta-selftest after all :)
>
> Alex
>
> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
> >
> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >
> > > This series brings the support of local git repository inside
> > > a cargo based recipe.
> > >
> > > It also enable devtool capacity on it and provide a real crate
> > > example recipe to show how things are done.
> > >
> > > The following changes since commit
> 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> > >
> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23
> 22:38:41 +0000)
> > >
> > > are available in the Git repository at:
> > >
> > >   https://gitlab.com/fmartinsons/openembedded-core
> cargo-extend-support-git-and-devtool
> > >
> > > Alex Kiernan (1):
> > >   cargo_common.bbclass: Support local github repos
> > >
> > > Frederic Martinsons (4):
> > >   cargo_common.bbclass: add support of user in url for patch
> > >   rust-example: provide a recipe for zvariant
> > >   devtool: add support for multiple git url inside a cargo based recipe
> > >   patch: support of git patches when the source uri contained subpath
> > >     param
> >
> > The various rust/cargo/crate patches look like they're heading in a
> > good direction, thanks!
> >
> > The one thing which I think is missing is more support for testing some
> > of these changes in our automated testing.
> >
> > In particular, devtool does have a decent test suite so we should
> > ensure new devtool additions have tests.
> >
> > You can see the devtools tests in
> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> > like "oe-selftest -r devtool -j 3" for example.
> >
> > Cheers,
> >
> > Richard
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#179160):
> https://lists.openembedded.org/g/openembedded-core/message/179160
> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>

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

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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 15:01     ` Frédéric Martinsons
@ 2023-03-27 17:19       ` Alexander Kanavin
  2023-03-27 18:07         ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-27 17:19 UTC (permalink / raw)
  To: Frédéric Martinsons
  Cc: Richard Purdie, openembedded-core, Alex Kiernan

If you'd like to do more here's off the top of my head:

- enable rust kernel modules in linux-yocto-dev

- help Alex Kiernan with update 1.67 -> 1.68; we need as many people
as possible capable of updating the rust toolchain. It's often not
trivial:
https://lists.openembedded.org/g/openembedded-core/message/178272

Alex

On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> Ah!
>
> Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
>
> I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
>
> Thank you all for the advices.
>
> Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>>
>> So if devtool tests would operate on zvariant recipe, then the recipe
>> can simply go into meta-selftest after all :)
>>
>> Alex
>>
>> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
>> <richard.purdie@linuxfoundation.org> wrote:
>> >
>> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
>> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >
>> > > This series brings the support of local git repository inside
>> > > a cargo based recipe.
>> > >
>> > > It also enable devtool capacity on it and provide a real crate
>> > > example recipe to show how things are done.
>> > >
>> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
>> > >
>> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
>> > >
>> > > are available in the Git repository at:
>> > >
>> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
>> > >
>> > > Alex Kiernan (1):
>> > >   cargo_common.bbclass: Support local github repos
>> > >
>> > > Frederic Martinsons (4):
>> > >   cargo_common.bbclass: add support of user in url for patch
>> > >   rust-example: provide a recipe for zvariant
>> > >   devtool: add support for multiple git url inside a cargo based recipe
>> > >   patch: support of git patches when the source uri contained subpath
>> > >     param
>> >
>> > The various rust/cargo/crate patches look like they're heading in a
>> > good direction, thanks!
>> >
>> > The one thing which I think is missing is more support for testing some
>> > of these changes in our automated testing.
>> >
>> > In particular, devtool does have a decent test suite so we should
>> > ensure new devtool additions have tests.
>> >
>> > You can see the devtools tests in
>> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
>> > like "oe-selftest -r devtool -j 3" for example.
>> >
>> > Cheers,
>> >
>> > Richard
>> >
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> > Links: You receive all messages sent to this group.
>> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
>> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
>> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> >


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 17:19       ` Alexander Kanavin
@ 2023-03-27 18:07         ` Frédéric Martinsons
  2023-03-27 18:30           ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27 18:07 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Richard Purdie, openembedded-core, Alex Kiernan

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

I'll look at this but I'm not sure if I can help since I'm a beginner
(enthusiastic but still)

Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> If you'd like to do more here's off the top of my head:
>
> - enable rust kernel modules in linux-yocto-dev
>
> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> as possible capable of updating the rust toolchain. It's often not
> trivial:
> https://lists.openembedded.org/g/openembedded-core/message/178272
>
> Alex
>
> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Ah!
> >
> > Alright, I'll try to setup a devtool test which demonstrate the usage of
> git subpath with the zvariant.
> > I'll then issue a V4 series which reintroduce the zvariant recipe in
> meta-selftest and the unit test on it.
> >
> > I must admit I felt in love for rust since the beginning of the year and
> considering that I use yocto on a daily basis, I'll do everything I can to
> extend the support of developing rust for embedded devices.
> >
> > Thank you all for the advices.
> >
> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com>
> a écrit :
> >>
> >> So if devtool tests would operate on zvariant recipe, then the recipe
> >> can simply go into meta-selftest after all :)
> >>
> >> Alex
> >>
> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> >> <richard.purdie@linuxfoundation.org> wrote:
> >> >
> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >
> >> > > This series brings the support of local git repository inside
> >> > > a cargo based recipe.
> >> > >
> >> > > It also enable devtool capacity on it and provide a real crate
> >> > > example recipe to show how things are done.
> >> > >
> >> > > The following changes since commit
> 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >> > >
> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23
> 22:38:41 +0000)
> >> > >
> >> > > are available in the Git repository at:
> >> > >
> >> > >   https://gitlab.com/fmartinsons/openembedded-core
> cargo-extend-support-git-and-devtool
> >> > >
> >> > > Alex Kiernan (1):
> >> > >   cargo_common.bbclass: Support local github repos
> >> > >
> >> > > Frederic Martinsons (4):
> >> > >   cargo_common.bbclass: add support of user in url for patch
> >> > >   rust-example: provide a recipe for zvariant
> >> > >   devtool: add support for multiple git url inside a cargo based
> recipe
> >> > >   patch: support of git patches when the source uri contained
> subpath
> >> > >     param
> >> >
> >> > The various rust/cargo/crate patches look like they're heading in a
> >> > good direction, thanks!
> >> >
> >> > The one thing which I think is missing is more support for testing
> some
> >> > of these changes in our automated testing.
> >> >
> >> > In particular, devtool does have a decent test suite so we should
> >> > ensure new devtool additions have tests.
> >> >
> >> > You can see the devtools tests in
> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> >> > like "oe-selftest -r devtool -j 3" for example.
> >> >
> >> > Cheers,
> >> >
> >> > Richard
> >> >
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > Links: You receive all messages sent to this group.
> >> > View/Reply Online (#179160):
> https://lists.openembedded.org/g/openembedded-core/message/179160
> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
> [alex.kanavin@gmail.com]
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >
>

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

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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 18:07         ` Frédéric Martinsons
@ 2023-03-27 18:30           ` Alex Kiernan
  2023-03-27 18:40             ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alex Kiernan @ 2023-03-27 18:30 UTC (permalink / raw)
  To: Frédéric Martinsons
  Cc: Alexander Kanavin, Richard Purdie, openembedded-core

Updating the rust version is pretty much nothing to do with your rust
knowledge and way more about digging into how the bootstrap process
hangs together... whilst I have an awesome rustacean working for me, I
don't think I've ever had to drag him into helping with an upgrade.

I wish I could say I'd spent the last few weeks figuring out why the
upgrade broke, but I've been buried down the bottom of an ESP-IDF
application...

Alex

On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
>
> Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>>
>> If you'd like to do more here's off the top of my head:
>>
>> - enable rust kernel modules in linux-yocto-dev
>>
>> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
>> as possible capable of updating the rust toolchain. It's often not
>> trivial:
>> https://lists.openembedded.org/g/openembedded-core/message/178272
>>
>> Alex
>>
>> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > Ah!
>> >
>> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
>> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
>> >
>> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
>> >
>> > Thank you all for the advices.
>> >
>> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >>
>> >> So if devtool tests would operate on zvariant recipe, then the recipe
>> >> can simply go into meta-selftest after all :)
>> >>
>> >> Alex
>> >>
>> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
>> >> <richard.purdie@linuxfoundation.org> wrote:
>> >> >
>> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
>> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >
>> >> > > This series brings the support of local git repository inside
>> >> > > a cargo based recipe.
>> >> > >
>> >> > > It also enable devtool capacity on it and provide a real crate
>> >> > > example recipe to show how things are done.
>> >> > >
>> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
>> >> > >
>> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
>> >> > >
>> >> > > are available in the Git repository at:
>> >> > >
>> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
>> >> > >
>> >> > > Alex Kiernan (1):
>> >> > >   cargo_common.bbclass: Support local github repos
>> >> > >
>> >> > > Frederic Martinsons (4):
>> >> > >   cargo_common.bbclass: add support of user in url for patch
>> >> > >   rust-example: provide a recipe for zvariant
>> >> > >   devtool: add support for multiple git url inside a cargo based recipe
>> >> > >   patch: support of git patches when the source uri contained subpath
>> >> > >     param
>> >> >
>> >> > The various rust/cargo/crate patches look like they're heading in a
>> >> > good direction, thanks!
>> >> >
>> >> > The one thing which I think is missing is more support for testing some
>> >> > of these changes in our automated testing.
>> >> >
>> >> > In particular, devtool does have a decent test suite so we should
>> >> > ensure new devtool additions have tests.
>> >> >
>> >> > You can see the devtools tests in
>> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
>> >> > like "oe-selftest -r devtool -j 3" for example.
>> >> >
>> >> > Cheers,
>> >> >
>> >> > Richard
>> >> >
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > Links: You receive all messages sent to this group.
>> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
>> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
>> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> >



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 18:30           ` Alex Kiernan
@ 2023-03-27 18:40             ` Frédéric Martinsons
  2023-03-27 18:52               ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27 18:40 UTC (permalink / raw)
  To: Alex Kiernan; +Cc: Alexander Kanavin, Richard Purdie, openembedded-core

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

Ok great, I'm willing to know more about the bootstrap of a rust toolchain,
I think I can start by just upgrading my poky master to rust 1.68 and see
what it spills out when I compile the hello world

On the other hand, for enabling rust kernel modules in linux-yocto-dev, I
don't know where to start (full disclosure : I have no skills about kernel
and kernel module developments)

Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :

> Updating the rust version is pretty much nothing to do with your rust
> knowledge and way more about digging into how the bootstrap process
> hangs together... whilst I have an awesome rustacean working for me, I
> don't think I've ever had to drag him into helping with an upgrade.
>
> I wish I could say I'd spent the last few weeks figuring out why the
> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> application...
>
> Alex
>
> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > I'll look at this but I'm not sure if I can help since I'm a beginner
> (enthusiastic but still)
> >
> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com>
> a écrit :
> >>
> >> If you'd like to do more here's off the top of my head:
> >>
> >> - enable rust kernel modules in linux-yocto-dev
> >>
> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> >> as possible capable of updating the rust toolchain. It's often not
> >> trivial:
> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> >>
> >> Alex
> >>
> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > Ah!
> >> >
> >> > Alright, I'll try to setup a devtool test which demonstrate the usage
> of git subpath with the zvariant.
> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in
> meta-selftest and the unit test on it.
> >> >
> >> > I must admit I felt in love for rust since the beginning of the year
> and considering that I use yocto on a daily basis, I'll do everything I can
> to extend the support of developing rust for embedded devices.
> >> >
> >> > Thank you all for the advices.
> >> >
> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> >> >>
> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> >> >> can simply go into meta-selftest after all :)
> >> >>
> >> >> Alex
> >> >>
> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> >> >> <richard.purdie@linuxfoundation.org> wrote:
> >> >> >
> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > >
> >> >> > > This series brings the support of local git repository inside
> >> >> > > a cargo based recipe.
> >> >> > >
> >> >> > > It also enable devtool capacity on it and provide a real crate
> >> >> > > example recipe to show how things are done.
> >> >> > >
> >> >> > > The following changes since commit
> 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >> >> > >
> >> >> > >   xcb-proto: Fix install conflict when enable multilib.
> (2023-03-23 22:38:41 +0000)
> >> >> > >
> >> >> > > are available in the Git repository at:
> >> >> > >
> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core
> cargo-extend-support-git-and-devtool
> >> >> > >
> >> >> > > Alex Kiernan (1):
> >> >> > >   cargo_common.bbclass: Support local github repos
> >> >> > >
> >> >> > > Frederic Martinsons (4):
> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> >> >> > >   rust-example: provide a recipe for zvariant
> >> >> > >   devtool: add support for multiple git url inside a cargo based
> recipe
> >> >> > >   patch: support of git patches when the source uri contained
> subpath
> >> >> > >     param
> >> >> >
> >> >> > The various rust/cargo/crate patches look like they're heading in a
> >> >> > good direction, thanks!
> >> >> >
> >> >> > The one thing which I think is missing is more support for testing
> some
> >> >> > of these changes in our automated testing.
> >> >> >
> >> >> > In particular, devtool does have a decent test suite so we should
> >> >> > ensure new devtool additions have tests.
> >> >> >
> >> >> > You can see the devtools tests in
> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> >> >> > like "oe-selftest -r devtool -j 3" for example.
> >> >> >
> >> >> > Cheers,
> >> >> >
> >> >> > Richard
> >> >> >
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> > Links: You receive all messages sent to this group.
> >> >> > View/Reply Online (#179160):
> https://lists.openembedded.org/g/openembedded-core/message/179160
> >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840361/1686489
> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> >
>
>
>
> --
> Alex Kiernan
>

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

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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 18:40             ` Frédéric Martinsons
@ 2023-03-27 18:52               ` Alex Kiernan
  2023-03-27 19:00                 ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Alex Kiernan @ 2023-03-27 18:52 UTC (permalink / raw)
  To: Frédéric Martinsons
  Cc: Alexander Kanavin, Richard Purdie, openembedded-core

IIRC the cross upgrade just works, its the target build which explodes:

https://github.com/akiernan/openembedded-core

On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
>
> On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
>
> Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
>>
>> Updating the rust version is pretty much nothing to do with your rust
>> knowledge and way more about digging into how the bootstrap process
>> hangs together... whilst I have an awesome rustacean working for me, I
>> don't think I've ever had to drag him into helping with an upgrade.
>>
>> I wish I could say I'd spent the last few weeks figuring out why the
>> upgrade broke, but I've been buried down the bottom of an ESP-IDF
>> application...
>>
>> Alex
>>
>> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
>> >
>> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >>
>> >> If you'd like to do more here's off the top of my head:
>> >>
>> >> - enable rust kernel modules in linux-yocto-dev
>> >>
>> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
>> >> as possible capable of updating the rust toolchain. It's often not
>> >> trivial:
>> >> https://lists.openembedded.org/g/openembedded-core/message/178272
>> >>
>> >> Alex
>> >>
>> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
>> >> <frederic.martinsons@gmail.com> wrote:
>> >> >
>> >> > Ah!
>> >> >
>> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
>> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
>> >> >
>> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
>> >> >
>> >> > Thank you all for the advices.
>> >> >
>> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >> >>
>> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
>> >> >> can simply go into meta-selftest after all :)
>> >> >>
>> >> >> Alex
>> >> >>
>> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
>> >> >> <richard.purdie@linuxfoundation.org> wrote:
>> >> >> >
>> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
>> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> >> > >
>> >> >> > > This series brings the support of local git repository inside
>> >> >> > > a cargo based recipe.
>> >> >> > >
>> >> >> > > It also enable devtool capacity on it and provide a real crate
>> >> >> > > example recipe to show how things are done.
>> >> >> > >
>> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
>> >> >> > >
>> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
>> >> >> > >
>> >> >> > > are available in the Git repository at:
>> >> >> > >
>> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
>> >> >> > >
>> >> >> > > Alex Kiernan (1):
>> >> >> > >   cargo_common.bbclass: Support local github repos
>> >> >> > >
>> >> >> > > Frederic Martinsons (4):
>> >> >> > >   cargo_common.bbclass: add support of user in url for patch
>> >> >> > >   rust-example: provide a recipe for zvariant
>> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
>> >> >> > >   patch: support of git patches when the source uri contained subpath
>> >> >> > >     param
>> >> >> >
>> >> >> > The various rust/cargo/crate patches look like they're heading in a
>> >> >> > good direction, thanks!
>> >> >> >
>> >> >> > The one thing which I think is missing is more support for testing some
>> >> >> > of these changes in our automated testing.
>> >> >> >
>> >> >> > In particular, devtool does have a decent test suite so we should
>> >> >> > ensure new devtool additions have tests.
>> >> >> >
>> >> >> > You can see the devtools tests in
>> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
>> >> >> > like "oe-selftest -r devtool -j 3" for example.
>> >> >> >
>> >> >> > Cheers,
>> >> >> >
>> >> >> > Richard
>> >> >> >
>> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> >> > Links: You receive all messages sent to this group.
>> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
>> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
>> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> >> >
>>
>>
>>
>> --
>> Alex Kiernan



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 18:52               ` Alex Kiernan
@ 2023-03-27 19:00                 ` Alexander Kanavin
  2023-03-27 19:20                   ` Frédéric Martinsons
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-27 19:00 UTC (permalink / raw)
  To: Alex Kiernan
  Cc: Frédéric Martinsons, Richard Purdie, openembedded-core

For the kernel modules you could start by replicating an out-of-yocto
kernel build as shown here:
https://lwn.net/Articles/910762/

Alex

On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>
> IIRC the cross upgrade just works, its the target build which explodes:
>
> https://github.com/akiernan/openembedded-core
>
> On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
> >
> > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
> >
> > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
> >>
> >> Updating the rust version is pretty much nothing to do with your rust
> >> knowledge and way more about digging into how the bootstrap process
> >> hangs together... whilst I have an awesome rustacean working for me, I
> >> don't think I've ever had to drag him into helping with an upgrade.
> >>
> >> I wish I could say I'd spent the last few weeks figuring out why the
> >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> >> application...
> >>
> >> Alex
> >>
> >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
> >> >
> >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> >>
> >> >> If you'd like to do more here's off the top of my head:
> >> >>
> >> >> - enable rust kernel modules in linux-yocto-dev
> >> >>
> >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> >> >> as possible capable of updating the rust toolchain. It's often not
> >> >> trivial:
> >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> >> >>
> >> >> Alex
> >> >>
> >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> >> >> <frederic.martinsons@gmail.com> wrote:
> >> >> >
> >> >> > Ah!
> >> >> >
> >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
> >> >> >
> >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
> >> >> >
> >> >> > Thank you all for the advices.
> >> >> >
> >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> >> >>
> >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> >> >> >> can simply go into meta-selftest after all :)
> >> >> >>
> >> >> >> Alex
> >> >> >>
> >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> >> >> >> >
> >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> >> > >
> >> >> >> > > This series brings the support of local git repository inside
> >> >> >> > > a cargo based recipe.
> >> >> >> > >
> >> >> >> > > It also enable devtool capacity on it and provide a real crate
> >> >> >> > > example recipe to show how things are done.
> >> >> >> > >
> >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >> >> >> > >
> >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> >> >> >> > >
> >> >> >> > > are available in the Git repository at:
> >> >> >> > >
> >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> >> >> >> > >
> >> >> >> > > Alex Kiernan (1):
> >> >> >> > >   cargo_common.bbclass: Support local github repos
> >> >> >> > >
> >> >> >> > > Frederic Martinsons (4):
> >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> >> >> >> > >   rust-example: provide a recipe for zvariant
> >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
> >> >> >> > >   patch: support of git patches when the source uri contained subpath
> >> >> >> > >     param
> >> >> >> >
> >> >> >> > The various rust/cargo/crate patches look like they're heading in a
> >> >> >> > good direction, thanks!
> >> >> >> >
> >> >> >> > The one thing which I think is missing is more support for testing some
> >> >> >> > of these changes in our automated testing.
> >> >> >> >
> >> >> >> > In particular, devtool does have a decent test suite so we should
> >> >> >> > ensure new devtool additions have tests.
> >> >> >> >
> >> >> >> > You can see the devtools tests in
> >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> >> >> >> >
> >> >> >> > Cheers,
> >> >> >> >
> >> >> >> > Richard
> >> >> >> >
> >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> >> > Links: You receive all messages sent to this group.
> >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> >> >
> >>
> >>
> >>
> >> --
> >> Alex Kiernan
>
>
>
> --
> Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 19:00                 ` Alexander Kanavin
@ 2023-03-27 19:20                   ` Frédéric Martinsons
  2023-03-27 22:13                     ` Alexander Kanavin
  0 siblings, 1 reply; 38+ messages in thread
From: Frédéric Martinsons @ 2023-03-27 19:20 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Alex Kiernan, Richard Purdie, openembedded-core

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

Thank you alex and alexender ;)

I'll take a look at this as soon as possible and and tell you in a
dedicated thread if I'm making progress. But first, I'll work for the
devtool test that has been mentioned first.

Have a good evening (or day, depending on your timezone)

Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> For the kernel modules you could start by replicating an out-of-yocto
> kernel build as shown here:
> https://lwn.net/Articles/910762/
>
> Alex
>
> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> >
> > IIRC the cross upgrade just works, its the target build which explodes:
> >
> > https://github.com/akiernan/openembedded-core
> >
> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> > <frederic.martinsons@gmail.com> wrote:
> > >
> > > Ok great, I'm willing to know more about the bootstrap of a rust
> toolchain, I think I can start by just upgrading my poky master to rust
> 1.68 and see what it spills out when I compile the hello world
> > >
> > > On the other hand, for enabling rust kernel modules in
> linux-yocto-dev, I don't know where to start (full disclosure : I have no
> skills about kernel and kernel module developments)
> > >
> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a
> écrit :
> > >>
> > >> Updating the rust version is pretty much nothing to do with your rust
> > >> knowledge and way more about digging into how the bootstrap process
> > >> hangs together... whilst I have an awesome rustacean working for me, I
> > >> don't think I've ever had to drag him into helping with an upgrade.
> > >>
> > >> I wish I could say I'd spent the last few weeks figuring out why the
> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> > >> application...
> > >>
> > >> Alex
> > >>
> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> > >> <frederic.martinsons@gmail.com> wrote:
> > >> >
> > >> > I'll look at this but I'm not sure if I can help since I'm a
> beginner (enthusiastic but still)
> > >> >
> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> > >> >>
> > >> >> If you'd like to do more here's off the top of my head:
> > >> >>
> > >> >> - enable rust kernel modules in linux-yocto-dev
> > >> >>
> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many
> people
> > >> >> as possible capable of updating the rust toolchain. It's often not
> > >> >> trivial:
> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> > >> >>
> > >> >> Alex
> > >> >>
> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> > >> >> <frederic.martinsons@gmail.com> wrote:
> > >> >> >
> > >> >> > Ah!
> > >> >> >
> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the
> usage of git subpath with the zvariant.
> > >> >> > I'll then issue a V4 series which reintroduce the zvariant
> recipe in meta-selftest and the unit test on it.
> > >> >> >
> > >> >> > I must admit I felt in love for rust since the beginning of the
> year and considering that I use yocto on a daily basis, I'll do everything
> I can to extend the support of developing rust for embedded devices.
> > >> >> >
> > >> >> > Thank you all for the advices.
> > >> >> >
> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> > >> >> >>
> > >> >> >> So if devtool tests would operate on zvariant recipe, then the
> recipe
> > >> >> >> can simply go into meta-selftest after all :)
> > >> >> >>
> > >> >> >> Alex
> > >> >> >>
> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> > >> >> >> >
> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> >> >> > >
> > >> >> >> > > This series brings the support of local git repository
> inside
> > >> >> >> > > a cargo based recipe.
> > >> >> >> > >
> > >> >> >> > > It also enable devtool capacity on it and provide a real
> crate
> > >> >> >> > > example recipe to show how things are done.
> > >> >> >> > >
> > >> >> >> > > The following changes since commit
> 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> > >> >> >> > >
> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib.
> (2023-03-23 22:38:41 +0000)
> > >> >> >> > >
> > >> >> >> > > are available in the Git repository at:
> > >> >> >> > >
> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core
> cargo-extend-support-git-and-devtool
> > >> >> >> > >
> > >> >> >> > > Alex Kiernan (1):
> > >> >> >> > >   cargo_common.bbclass: Support local github repos
> > >> >> >> > >
> > >> >> >> > > Frederic Martinsons (4):
> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> > >> >> >> > >   rust-example: provide a recipe for zvariant
> > >> >> >> > >   devtool: add support for multiple git url inside a cargo
> based recipe
> > >> >> >> > >   patch: support of git patches when the source uri
> contained subpath
> > >> >> >> > >     param
> > >> >> >> >
> > >> >> >> > The various rust/cargo/crate patches look like they're
> heading in a
> > >> >> >> > good direction, thanks!
> > >> >> >> >
> > >> >> >> > The one thing which I think is missing is more support for
> testing some
> > >> >> >> > of these changes in our automated testing.
> > >> >> >> >
> > >> >> >> > In particular, devtool does have a decent test suite so we
> should
> > >> >> >> > ensure new devtool additions have tests.
> > >> >> >> >
> > >> >> >> > You can see the devtools tests in
> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a
> command
> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> > >> >> >> >
> > >> >> >> > Cheers,
> > >> >> >> >
> > >> >> >> > Richard
> > >> >> >> >
> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> >> > Links: You receive all messages sent to this group.
> > >> >> >> > View/Reply Online (#179160):
> https://lists.openembedded.org/g/openembedded-core/message/179160
> > >> >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840361/1686489
> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > >> >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Alex Kiernan
> >
> >
> >
> > --
> > Alex Kiernan
>

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

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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 19:20                   ` Frédéric Martinsons
@ 2023-03-27 22:13                     ` Alexander Kanavin
  2023-03-28  7:11                       ` Alex Kiernan
  2023-03-29 12:35                       ` Alex Kiernan
  0 siblings, 2 replies; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-27 22:13 UTC (permalink / raw)
  To: Frédéric Martinsons
  Cc: Alex Kiernan, Richard Purdie, openembedded-core

I think I have meanwhile resolved the 1.68 upgrade issues:
https://git.yoctoproject.org/poky-contrib/log/?h=akanavin/package-version-updates

So that leaves the hip and cool rust-in-kernel project ;-)

Alex

On Mon, 27 Mar 2023 at 21:20, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> Thank you alex and alexender ;)
>
> I'll take a look at this as soon as possible and and tell you in a dedicated thread if I'm making progress. But first, I'll work for the devtool test that has been mentioned first.
>
> Have a good evening (or day, depending on your timezone)
>
> Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>>
>> For the kernel modules you could start by replicating an out-of-yocto
>> kernel build as shown here:
>> https://lwn.net/Articles/910762/
>>
>> Alex
>>
>> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>> >
>> > IIRC the cross upgrade just works, its the target build which explodes:
>> >
>> > https://github.com/akiernan/openembedded-core
>> >
>> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
>> > <frederic.martinsons@gmail.com> wrote:
>> > >
>> > > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
>> > >
>> > > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
>> > >
>> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
>> > >>
>> > >> Updating the rust version is pretty much nothing to do with your rust
>> > >> knowledge and way more about digging into how the bootstrap process
>> > >> hangs together... whilst I have an awesome rustacean working for me, I
>> > >> don't think I've ever had to drag him into helping with an upgrade.
>> > >>
>> > >> I wish I could say I'd spent the last few weeks figuring out why the
>> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
>> > >> application...
>> > >>
>> > >> Alex
>> > >>
>> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
>> > >> <frederic.martinsons@gmail.com> wrote:
>> > >> >
>> > >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
>> > >> >
>> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> > >> >>
>> > >> >> If you'd like to do more here's off the top of my head:
>> > >> >>
>> > >> >> - enable rust kernel modules in linux-yocto-dev
>> > >> >>
>> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
>> > >> >> as possible capable of updating the rust toolchain. It's often not
>> > >> >> trivial:
>> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
>> > >> >>
>> > >> >> Alex
>> > >> >>
>> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
>> > >> >> <frederic.martinsons@gmail.com> wrote:
>> > >> >> >
>> > >> >> > Ah!
>> > >> >> >
>> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
>> > >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
>> > >> >> >
>> > >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
>> > >> >> >
>> > >> >> > Thank you all for the advices.
>> > >> >> >
>> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> > >> >> >>
>> > >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
>> > >> >> >> can simply go into meta-selftest after all :)
>> > >> >> >>
>> > >> >> >> Alex
>> > >> >> >>
>> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
>> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
>> > >> >> >> >
>> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
>> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> >> > >
>> > >> >> >> > > This series brings the support of local git repository inside
>> > >> >> >> > > a cargo based recipe.
>> > >> >> >> > >
>> > >> >> >> > > It also enable devtool capacity on it and provide a real crate
>> > >> >> >> > > example recipe to show how things are done.
>> > >> >> >> > >
>> > >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
>> > >> >> >> > >
>> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
>> > >> >> >> > >
>> > >> >> >> > > are available in the Git repository at:
>> > >> >> >> > >
>> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
>> > >> >> >> > >
>> > >> >> >> > > Alex Kiernan (1):
>> > >> >> >> > >   cargo_common.bbclass: Support local github repos
>> > >> >> >> > >
>> > >> >> >> > > Frederic Martinsons (4):
>> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
>> > >> >> >> > >   rust-example: provide a recipe for zvariant
>> > >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
>> > >> >> >> > >   patch: support of git patches when the source uri contained subpath
>> > >> >> >> > >     param
>> > >> >> >> >
>> > >> >> >> > The various rust/cargo/crate patches look like they're heading in a
>> > >> >> >> > good direction, thanks!
>> > >> >> >> >
>> > >> >> >> > The one thing which I think is missing is more support for testing some
>> > >> >> >> > of these changes in our automated testing.
>> > >> >> >> >
>> > >> >> >> > In particular, devtool does have a decent test suite so we should
>> > >> >> >> > ensure new devtool additions have tests.
>> > >> >> >> >
>> > >> >> >> > You can see the devtools tests in
>> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
>> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
>> > >> >> >> >
>> > >> >> >> > Cheers,
>> > >> >> >> >
>> > >> >> >> > Richard
>> > >> >> >> >
>> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> >> > Links: You receive all messages sent to this group.
>> > >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
>> > >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
>> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> >> >
>> > >>
>> > >>
>> > >>
>> > >> --
>> > >> Alex Kiernan
>> >
>> >
>> >
>> > --
>> > Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 22:13                     ` Alexander Kanavin
@ 2023-03-28  7:11                       ` Alex Kiernan
  2023-03-28  8:37                         ` Alexander Kanavin
  2023-03-29 12:35                       ` Alex Kiernan
  1 sibling, 1 reply; 38+ messages in thread
From: Alex Kiernan @ 2023-03-28  7:11 UTC (permalink / raw)
  To: Alexander Kanavin
  Cc: Frédéric Martinsons, Richard Purdie, openembedded-core

I was going to say, that looks pretty much identical to what I had,
but it looks like they've reverted some LTO stuff in 1.68.1, which I
guess is what was exploding:

https://github.com/rust-lang/rust/issues/109067

Would be good to pick up this too:

https://github.com/akiernan/openembedded-core/commit/9e098599aa5247086a346bf73a087a2ce4ab640f#diff-84ec9441385da6fa39407418d2eebc685e1ca4260bfeb94c6f5d411ef706df1e

which was a backport of what actually got merged upstream for @Khem
Raj's open64 fix:

On Mon, Mar 27, 2023 at 11:13 PM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> I think I have meanwhile resolved the 1.68 upgrade issues:
> https://git.yoctoproject.org/poky-contrib/log/?h=akanavin/package-version-updates
>
> So that leaves the hip and cool rust-in-kernel project ;-)
>
> Alex
>
> On Mon, 27 Mar 2023 at 21:20, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Thank you alex and alexender ;)
> >
> > I'll take a look at this as soon as possible and and tell you in a dedicated thread if I'm making progress. But first, I'll work for the devtool test that has been mentioned first.
> >
> > Have a good evening (or day, depending on your timezone)
> >
> > Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >>
> >> For the kernel modules you could start by replicating an out-of-yocto
> >> kernel build as shown here:
> >> https://lwn.net/Articles/910762/
> >>
> >> Alex
> >>
> >> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> >> >
> >> > IIRC the cross upgrade just works, its the target build which explodes:
> >> >
> >> > https://github.com/akiernan/openembedded-core
> >> >
> >> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> >> > <frederic.martinsons@gmail.com> wrote:
> >> > >
> >> > > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
> >> > >
> >> > > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
> >> > >
> >> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
> >> > >>
> >> > >> Updating the rust version is pretty much nothing to do with your rust
> >> > >> knowledge and way more about digging into how the bootstrap process
> >> > >> hangs together... whilst I have an awesome rustacean working for me, I
> >> > >> don't think I've ever had to drag him into helping with an upgrade.
> >> > >>
> >> > >> I wish I could say I'd spent the last few weeks figuring out why the
> >> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> >> > >> application...
> >> > >>
> >> > >> Alex
> >> > >>
> >> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> >> > >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >
> >> > >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
> >> > >> >
> >> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> > >> >>
> >> > >> >> If you'd like to do more here's off the top of my head:
> >> > >> >>
> >> > >> >> - enable rust kernel modules in linux-yocto-dev
> >> > >> >>
> >> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> >> > >> >> as possible capable of updating the rust toolchain. It's often not
> >> > >> >> trivial:
> >> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> >> > >> >>
> >> > >> >> Alex
> >> > >> >>
> >> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> >> > >> >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >> >
> >> > >> >> > Ah!
> >> > >> >> >
> >> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> >> > >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
> >> > >> >> >
> >> > >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
> >> > >> >> >
> >> > >> >> > Thank you all for the advices.
> >> > >> >> >
> >> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> > >> >> >>
> >> > >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> >> > >> >> >> can simply go into meta-selftest after all :)
> >> > >> >> >>
> >> > >> >> >> Alex
> >> > >> >> >>
> >> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> >> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> >> > >> >> >> >
> >> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> >> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> >> > >
> >> > >> >> >> > > This series brings the support of local git repository inside
> >> > >> >> >> > > a cargo based recipe.
> >> > >> >> >> > >
> >> > >> >> >> > > It also enable devtool capacity on it and provide a real crate
> >> > >> >> >> > > example recipe to show how things are done.
> >> > >> >> >> > >
> >> > >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >> > >> >> >> > >
> >> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> >> > >> >> >> > >
> >> > >> >> >> > > are available in the Git repository at:
> >> > >> >> >> > >
> >> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> >> > >> >> >> > >
> >> > >> >> >> > > Alex Kiernan (1):
> >> > >> >> >> > >   cargo_common.bbclass: Support local github repos
> >> > >> >> >> > >
> >> > >> >> >> > > Frederic Martinsons (4):
> >> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> >> > >> >> >> > >   rust-example: provide a recipe for zvariant
> >> > >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
> >> > >> >> >> > >   patch: support of git patches when the source uri contained subpath
> >> > >> >> >> > >     param
> >> > >> >> >> >
> >> > >> >> >> > The various rust/cargo/crate patches look like they're heading in a
> >> > >> >> >> > good direction, thanks!
> >> > >> >> >> >
> >> > >> >> >> > The one thing which I think is missing is more support for testing some
> >> > >> >> >> > of these changes in our automated testing.
> >> > >> >> >> >
> >> > >> >> >> > In particular, devtool does have a decent test suite so we should
> >> > >> >> >> > ensure new devtool additions have tests.
> >> > >> >> >> >
> >> > >> >> >> > You can see the devtools tests in
> >> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> >> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> >> > >> >> >> >
> >> > >> >> >> > Cheers,
> >> > >> >> >> >
> >> > >> >> >> > Richard
> >> > >> >> >> >
> >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >> > Links: You receive all messages sent to this group.
> >> > >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> >> > >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> >> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >> >
> >> > >>
> >> > >>
> >> > >>
> >> > >> --
> >> > >> Alex Kiernan
> >> >
> >> >
> >> >
> >> > --
> >> > Alex Kiernan



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-28  7:11                       ` Alex Kiernan
@ 2023-03-28  8:37                         ` Alexander Kanavin
  2023-03-28  9:01                           ` Alex Kiernan
  0 siblings, 1 reply; 38+ messages in thread
From: Alexander Kanavin @ 2023-03-28  8:37 UTC (permalink / raw)
  To: Alex Kiernan
  Cc: Frédéric Martinsons, Richard Purdie, openembedded-core

The exploding part was the 'unable to find std crate', which is fixed
by not doing 'build --stage 2' at all, and going directly to 'install'
(which builds all the needed parts in correct order anyway and is
tested upstream).

I'll add the getrandom-open64.patch update to my tree, thanks.

Alex

On Tue, 28 Mar 2023 at 09:11, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>
> I was going to say, that looks pretty much identical to what I had,
> but it looks like they've reverted some LTO stuff in 1.68.1, which I
> guess is what was exploding:
>
> https://github.com/rust-lang/rust/issues/109067
>
> Would be good to pick up this too:
>
> https://github.com/akiernan/openembedded-core/commit/9e098599aa5247086a346bf73a087a2ce4ab640f#diff-84ec9441385da6fa39407418d2eebc685e1ca4260bfeb94c6f5d411ef706df1e
>
> which was a backport of what actually got merged upstream for @Khem
> Raj's open64 fix:
>
> On Mon, Mar 27, 2023 at 11:13 PM Alexander Kanavin
> <alex.kanavin@gmail.com> wrote:
> >
> > I think I have meanwhile resolved the 1.68 upgrade issues:
> > https://git.yoctoproject.org/poky-contrib/log/?h=akanavin/package-version-updates
> >
> > So that leaves the hip and cool rust-in-kernel project ;-)
> >
> > Alex
> >
> > On Mon, 27 Mar 2023 at 21:20, Frédéric Martinsons
> > <frederic.martinsons@gmail.com> wrote:
> > >
> > > Thank you alex and alexender ;)
> > >
> > > I'll take a look at this as soon as possible and and tell you in a dedicated thread if I'm making progress. But first, I'll work for the devtool test that has been mentioned first.
> > >
> > > Have a good evening (or day, depending on your timezone)
> > >
> > > Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > >>
> > >> For the kernel modules you could start by replicating an out-of-yocto
> > >> kernel build as shown here:
> > >> https://lwn.net/Articles/910762/
> > >>
> > >> Alex
> > >>
> > >> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> > >> >
> > >> > IIRC the cross upgrade just works, its the target build which explodes:
> > >> >
> > >> > https://github.com/akiernan/openembedded-core
> > >> >
> > >> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> > >> > <frederic.martinsons@gmail.com> wrote:
> > >> > >
> > >> > > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
> > >> > >
> > >> > > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
> > >> > >
> > >> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
> > >> > >>
> > >> > >> Updating the rust version is pretty much nothing to do with your rust
> > >> > >> knowledge and way more about digging into how the bootstrap process
> > >> > >> hangs together... whilst I have an awesome rustacean working for me, I
> > >> > >> don't think I've ever had to drag him into helping with an upgrade.
> > >> > >>
> > >> > >> I wish I could say I'd spent the last few weeks figuring out why the
> > >> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> > >> > >> application...
> > >> > >>
> > >> > >> Alex
> > >> > >>
> > >> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> > >> > >> <frederic.martinsons@gmail.com> wrote:
> > >> > >> >
> > >> > >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
> > >> > >> >
> > >> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > >> > >> >>
> > >> > >> >> If you'd like to do more here's off the top of my head:
> > >> > >> >>
> > >> > >> >> - enable rust kernel modules in linux-yocto-dev
> > >> > >> >>
> > >> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> > >> > >> >> as possible capable of updating the rust toolchain. It's often not
> > >> > >> >> trivial:
> > >> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> > >> > >> >>
> > >> > >> >> Alex
> > >> > >> >>
> > >> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> > >> > >> >> <frederic.martinsons@gmail.com> wrote:
> > >> > >> >> >
> > >> > >> >> > Ah!
> > >> > >> >> >
> > >> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> > >> > >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
> > >> > >> >> >
> > >> > >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
> > >> > >> >> >
> > >> > >> >> > Thank you all for the advices.
> > >> > >> >> >
> > >> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > >> > >> >> >>
> > >> > >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> > >> > >> >> >> can simply go into meta-selftest after all :)
> > >> > >> >> >>
> > >> > >> >> >> Alex
> > >> > >> >> >>
> > >> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> > >> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> > >> > >> >> >> >
> > >> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> > >> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> > >> >> >> > >
> > >> > >> >> >> > > This series brings the support of local git repository inside
> > >> > >> >> >> > > a cargo based recipe.
> > >> > >> >> >> > >
> > >> > >> >> >> > > It also enable devtool capacity on it and provide a real crate
> > >> > >> >> >> > > example recipe to show how things are done.
> > >> > >> >> >> > >
> > >> > >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> > >> > >> >> >> > >
> > >> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> > >> > >> >> >> > >
> > >> > >> >> >> > > are available in the Git repository at:
> > >> > >> >> >> > >
> > >> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> > >> > >> >> >> > >
> > >> > >> >> >> > > Alex Kiernan (1):
> > >> > >> >> >> > >   cargo_common.bbclass: Support local github repos
> > >> > >> >> >> > >
> > >> > >> >> >> > > Frederic Martinsons (4):
> > >> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> > >> > >> >> >> > >   rust-example: provide a recipe for zvariant
> > >> > >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
> > >> > >> >> >> > >   patch: support of git patches when the source uri contained subpath
> > >> > >> >> >> > >     param
> > >> > >> >> >> >
> > >> > >> >> >> > The various rust/cargo/crate patches look like they're heading in a
> > >> > >> >> >> > good direction, thanks!
> > >> > >> >> >> >
> > >> > >> >> >> > The one thing which I think is missing is more support for testing some
> > >> > >> >> >> > of these changes in our automated testing.
> > >> > >> >> >> >
> > >> > >> >> >> > In particular, devtool does have a decent test suite so we should
> > >> > >> >> >> > ensure new devtool additions have tests.
> > >> > >> >> >> >
> > >> > >> >> >> > You can see the devtools tests in
> > >> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> > >> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> > >> > >> >> >> >
> > >> > >> >> >> > Cheers,
> > >> > >> >> >> >
> > >> > >> >> >> > Richard
> > >> > >> >> >> >
> > >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> > >> >> >> > Links: You receive all messages sent to this group.
> > >> > >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> > >> > >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> > >> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > >> > >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> > >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> > >> >> >> >
> > >> > >>
> > >> > >>
> > >> > >>
> > >> > >> --
> > >> > >> Alex Kiernan
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > Alex Kiernan
>
>
>
> --
> Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-28  8:37                         ` Alexander Kanavin
@ 2023-03-28  9:01                           ` Alex Kiernan
  0 siblings, 0 replies; 38+ messages in thread
From: Alex Kiernan @ 2023-03-28  9:01 UTC (permalink / raw)
  To: Alexander Kanavin
  Cc: Frédéric Martinsons, Richard Purdie, openembedded-core

Ah! I stared at all of that stuff and failed to spot it, thanks!

On Tue, Mar 28, 2023 at 9:37 AM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> The exploding part was the 'unable to find std crate', which is fixed
> by not doing 'build --stage 2' at all, and going directly to 'install'
> (which builds all the needed parts in correct order anyway and is
> tested upstream).
>
> I'll add the getrandom-open64.patch update to my tree, thanks.
>
> Alex
>
> On Tue, 28 Mar 2023 at 09:11, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> >
> > I was going to say, that looks pretty much identical to what I had,
> > but it looks like they've reverted some LTO stuff in 1.68.1, which I
> > guess is what was exploding:
> >
> > https://github.com/rust-lang/rust/issues/109067
> >
> > Would be good to pick up this too:
> >
> > https://github.com/akiernan/openembedded-core/commit/9e098599aa5247086a346bf73a087a2ce4ab640f#diff-84ec9441385da6fa39407418d2eebc685e1ca4260bfeb94c6f5d411ef706df1e
> >
> > which was a backport of what actually got merged upstream for @Khem
> > Raj's open64 fix:
> >
> > On Mon, Mar 27, 2023 at 11:13 PM Alexander Kanavin
> > <alex.kanavin@gmail.com> wrote:
> > >
> > > I think I have meanwhile resolved the 1.68 upgrade issues:
> > > https://git.yoctoproject.org/poky-contrib/log/?h=akanavin/package-version-updates
> > >
> > > So that leaves the hip and cool rust-in-kernel project ;-)
> > >
> > > Alex
> > >
> > > On Mon, 27 Mar 2023 at 21:20, Frédéric Martinsons
> > > <frederic.martinsons@gmail.com> wrote:
> > > >
> > > > Thank you alex and alexender ;)
> > > >
> > > > I'll take a look at this as soon as possible and and tell you in a dedicated thread if I'm making progress. But first, I'll work for the devtool test that has been mentioned first.
> > > >
> > > > Have a good evening (or day, depending on your timezone)
> > > >
> > > > Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > > >>
> > > >> For the kernel modules you could start by replicating an out-of-yocto
> > > >> kernel build as shown here:
> > > >> https://lwn.net/Articles/910762/
> > > >>
> > > >> Alex
> > > >>
> > > >> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> > > >> >
> > > >> > IIRC the cross upgrade just works, its the target build which explodes:
> > > >> >
> > > >> > https://github.com/akiernan/openembedded-core
> > > >> >
> > > >> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> > > >> > <frederic.martinsons@gmail.com> wrote:
> > > >> > >
> > > >> > > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
> > > >> > >
> > > >> > > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
> > > >> > >
> > > >> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
> > > >> > >>
> > > >> > >> Updating the rust version is pretty much nothing to do with your rust
> > > >> > >> knowledge and way more about digging into how the bootstrap process
> > > >> > >> hangs together... whilst I have an awesome rustacean working for me, I
> > > >> > >> don't think I've ever had to drag him into helping with an upgrade.
> > > >> > >>
> > > >> > >> I wish I could say I'd spent the last few weeks figuring out why the
> > > >> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> > > >> > >> application...
> > > >> > >>
> > > >> > >> Alex
> > > >> > >>
> > > >> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> > > >> > >> <frederic.martinsons@gmail.com> wrote:
> > > >> > >> >
> > > >> > >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
> > > >> > >> >
> > > >> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > > >> > >> >>
> > > >> > >> >> If you'd like to do more here's off the top of my head:
> > > >> > >> >>
> > > >> > >> >> - enable rust kernel modules in linux-yocto-dev
> > > >> > >> >>
> > > >> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> > > >> > >> >> as possible capable of updating the rust toolchain. It's often not
> > > >> > >> >> trivial:
> > > >> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> > > >> > >> >>
> > > >> > >> >> Alex
> > > >> > >> >>
> > > >> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> > > >> > >> >> <frederic.martinsons@gmail.com> wrote:
> > > >> > >> >> >
> > > >> > >> >> > Ah!
> > > >> > >> >> >
> > > >> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> > > >> > >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
> > > >> > >> >> >
> > > >> > >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
> > > >> > >> >> >
> > > >> > >> >> > Thank you all for the advices.
> > > >> > >> >> >
> > > >> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> > > >> > >> >> >>
> > > >> > >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> > > >> > >> >> >> can simply go into meta-selftest after all :)
> > > >> > >> >> >>
> > > >> > >> >> >> Alex
> > > >> > >> >> >>
> > > >> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> > > >> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> > > >> > >> >> >> >
> > > >> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> > > >> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > This series brings the support of local git repository inside
> > > >> > >> >> >> > > a cargo based recipe.
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > It also enable devtool capacity on it and provide a real crate
> > > >> > >> >> >> > > example recipe to show how things are done.
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> > > >> > >> >> >> > >
> > > >> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > are available in the Git repository at:
> > > >> > >> >> >> > >
> > > >> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > Alex Kiernan (1):
> > > >> > >> >> >> > >   cargo_common.bbclass: Support local github repos
> > > >> > >> >> >> > >
> > > >> > >> >> >> > > Frederic Martinsons (4):
> > > >> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> > > >> > >> >> >> > >   rust-example: provide a recipe for zvariant
> > > >> > >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
> > > >> > >> >> >> > >   patch: support of git patches when the source uri contained subpath
> > > >> > >> >> >> > >     param
> > > >> > >> >> >> >
> > > >> > >> >> >> > The various rust/cargo/crate patches look like they're heading in a
> > > >> > >> >> >> > good direction, thanks!
> > > >> > >> >> >> >
> > > >> > >> >> >> > The one thing which I think is missing is more support for testing some
> > > >> > >> >> >> > of these changes in our automated testing.
> > > >> > >> >> >> >
> > > >> > >> >> >> > In particular, devtool does have a decent test suite so we should
> > > >> > >> >> >> > ensure new devtool additions have tests.
> > > >> > >> >> >> >
> > > >> > >> >> >> > You can see the devtools tests in
> > > >> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> > > >> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> > > >> > >> >> >> >
> > > >> > >> >> >> > Cheers,
> > > >> > >> >> >> >
> > > >> > >> >> >> > Richard
> > > >> > >> >> >> >
> > > >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > > >> > >> >> >> > Links: You receive all messages sent to this group.
> > > >> > >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> > > >> > >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> > > >> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > > >> > >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> > > >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > > >> > >> >> >> >
> > > >> > >>
> > > >> > >>
> > > >> > >>
> > > >> > >> --
> > > >> > >> Alex Kiernan
> > > >> >
> > > >> >
> > > >> >
> > > >> > --
> > > >> > Alex Kiernan
> >
> >
> >
> > --
> > Alex Kiernan



-- 
Alex Kiernan


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

* Re: [OE-core] [PATCH 0/5] Extend cargo based recip support
  2023-03-27 22:13                     ` Alexander Kanavin
  2023-03-28  7:11                       ` Alex Kiernan
@ 2023-03-29 12:35                       ` Alex Kiernan
  1 sibling, 0 replies; 38+ messages in thread
From: Alex Kiernan @ 2023-03-29 12:35 UTC (permalink / raw)
  To: Alexander Kanavin
  Cc: Frédéric Martinsons, Richard Purdie, openembedded-core

Just run this up locally and rebuilt our world - looks good to me.

On Mon, Mar 27, 2023 at 11:13 PM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> I think I have meanwhile resolved the 1.68 upgrade issues:
> https://git.yoctoproject.org/poky-contrib/log/?h=akanavin/package-version-updates
>
> So that leaves the hip and cool rust-in-kernel project ;-)
>
> Alex
>
> On Mon, 27 Mar 2023 at 21:20, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Thank you alex and alexender ;)
> >
> > I'll take a look at this as soon as possible and and tell you in a dedicated thread if I'm making progress. But first, I'll work for the devtool test that has been mentioned first.
> >
> > Have a good evening (or day, depending on your timezone)
> >
> > Le lun. 27 mars 2023, 21:00, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >>
> >> For the kernel modules you could start by replicating an out-of-yocto
> >> kernel build as shown here:
> >> https://lwn.net/Articles/910762/
> >>
> >> Alex
> >>
> >> On Mon, 27 Mar 2023 at 20:52, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> >> >
> >> > IIRC the cross upgrade just works, its the target build which explodes:
> >> >
> >> > https://github.com/akiernan/openembedded-core
> >> >
> >> > On Mon, Mar 27, 2023 at 7:40 PM Frédéric Martinsons
> >> > <frederic.martinsons@gmail.com> wrote:
> >> > >
> >> > > Ok great, I'm willing to know more about the bootstrap of a rust toolchain, I think I can start by just upgrading my poky master to rust 1.68 and see what it spills out when I compile the hello world
> >> > >
> >> > > On the other hand, for enabling rust kernel modules in linux-yocto-dev, I don't know where to start (full disclosure : I have no skills about kernel and kernel module developments)
> >> > >
> >> > > Le lun. 27 mars 2023, 20:30, Alex Kiernan <alex.kiernan@gmail.com> a écrit :
> >> > >>
> >> > >> Updating the rust version is pretty much nothing to do with your rust
> >> > >> knowledge and way more about digging into how the bootstrap process
> >> > >> hangs together... whilst I have an awesome rustacean working for me, I
> >> > >> don't think I've ever had to drag him into helping with an upgrade.
> >> > >>
> >> > >> I wish I could say I'd spent the last few weeks figuring out why the
> >> > >> upgrade broke, but I've been buried down the bottom of an ESP-IDF
> >> > >> application...
> >> > >>
> >> > >> Alex
> >> > >>
> >> > >> On Mon, Mar 27, 2023 at 7:08 PM Frédéric Martinsons
> >> > >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >
> >> > >> > I'll look at this but I'm not sure if I can help since I'm a beginner (enthusiastic but still)
> >> > >> >
> >> > >> > Le lun. 27 mars 2023, 19:19, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> > >> >>
> >> > >> >> If you'd like to do more here's off the top of my head:
> >> > >> >>
> >> > >> >> - enable rust kernel modules in linux-yocto-dev
> >> > >> >>
> >> > >> >> - help Alex Kiernan with update 1.67 -> 1.68; we need as many people
> >> > >> >> as possible capable of updating the rust toolchain. It's often not
> >> > >> >> trivial:
> >> > >> >> https://lists.openembedded.org/g/openembedded-core/message/178272
> >> > >> >>
> >> > >> >> Alex
> >> > >> >>
> >> > >> >> On Mon, 27 Mar 2023 at 17:01, Frédéric Martinsons
> >> > >> >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >> >
> >> > >> >> > Ah!
> >> > >> >> >
> >> > >> >> > Alright, I'll try to setup a devtool test which demonstrate the usage of git subpath with the zvariant.
> >> > >> >> > I'll then issue a V4 series which reintroduce the zvariant recipe in meta-selftest and the unit test on it.
> >> > >> >> >
> >> > >> >> > I must admit I felt in love for rust since the beginning of the year and considering that I use yocto on a daily basis, I'll do everything I can to extend the support of developing rust for embedded devices.
> >> > >> >> >
> >> > >> >> > Thank you all for the advices.
> >> > >> >> >
> >> > >> >> > Le lun. 27 mars 2023, 16:25, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> > >> >> >>
> >> > >> >> >> So if devtool tests would operate on zvariant recipe, then the recipe
> >> > >> >> >> can simply go into meta-selftest after all :)
> >> > >> >> >>
> >> > >> >> >> Alex
> >> > >> >> >>
> >> > >> >> >> On Mon, 27 Mar 2023 at 16:20, Richard Purdie
> >> > >> >> >> <richard.purdie@linuxfoundation.org> wrote:
> >> > >> >> >> >
> >> > >> >> >> > On Sat, 2023-03-25 at 10:00 +0100, Frederic Martinsons wrote:
> >> > >> >> >> > > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> >> > >
> >> > >> >> >> > > This series brings the support of local git repository inside
> >> > >> >> >> > > a cargo based recipe.
> >> > >> >> >> > >
> >> > >> >> >> > > It also enable devtool capacity on it and provide a real crate
> >> > >> >> >> > > example recipe to show how things are done.
> >> > >> >> >> > >
> >> > >> >> >> > > The following changes since commit 4876189dd2ae5a04a296b11b537b9f613159c6bf:
> >> > >> >> >> > >
> >> > >> >> >> > >   xcb-proto: Fix install conflict when enable multilib. (2023-03-23 22:38:41 +0000)
> >> > >> >> >> > >
> >> > >> >> >> > > are available in the Git repository at:
> >> > >> >> >> > >
> >> > >> >> >> > >   https://gitlab.com/fmartinsons/openembedded-core cargo-extend-support-git-and-devtool
> >> > >> >> >> > >
> >> > >> >> >> > > Alex Kiernan (1):
> >> > >> >> >> > >   cargo_common.bbclass: Support local github repos
> >> > >> >> >> > >
> >> > >> >> >> > > Frederic Martinsons (4):
> >> > >> >> >> > >   cargo_common.bbclass: add support of user in url for patch
> >> > >> >> >> > >   rust-example: provide a recipe for zvariant
> >> > >> >> >> > >   devtool: add support for multiple git url inside a cargo based recipe
> >> > >> >> >> > >   patch: support of git patches when the source uri contained subpath
> >> > >> >> >> > >     param
> >> > >> >> >> >
> >> > >> >> >> > The various rust/cargo/crate patches look like they're heading in a
> >> > >> >> >> > good direction, thanks!
> >> > >> >> >> >
> >> > >> >> >> > The one thing which I think is missing is more support for testing some
> >> > >> >> >> > of these changes in our automated testing.
> >> > >> >> >> >
> >> > >> >> >> > In particular, devtool does have a decent test suite so we should
> >> > >> >> >> > ensure new devtool additions have tests.
> >> > >> >> >> >
> >> > >> >> >> > You can see the devtools tests in
> >> > >> >> >> > meta/lib/oeqa/selftest/cases/devtool.py and run them with a command
> >> > >> >> >> > like "oe-selftest -r devtool -j 3" for example.
> >> > >> >> >> >
> >> > >> >> >> > Cheers,
> >> > >> >> >> >
> >> > >> >> >> > Richard
> >> > >> >> >> >
> >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >> > Links: You receive all messages sent to this group.
> >> > >> >> >> > View/Reply Online (#179160): https://lists.openembedded.org/g/openembedded-core/message/179160
> >> > >> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840361/1686489
> >> > >> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > >> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> >> > >> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >> >
> >> > >>
> >> > >>
> >> > >>
> >> > >> --
> >> > >> Alex Kiernan
> >> >
> >> >
> >> >
> >> > --
> >> > Alex Kiernan



-- 
Alex Kiernan


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

end of thread, other threads:[~2023-03-29 12:35 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-25  9:00 [PATCH 0/5] Extend cargo based recip support frederic.martinsons
2023-03-25  9:00 ` [PATCH 1/5] cargo_common.bbclass: Support local github repos frederic.martinsons
2023-03-25  9:00 ` [PATCH 2/5] cargo_common.bbclass: add support of user in url for patch frederic.martinsons
2023-03-25  9:00 ` [PATCH 3/5] rust-example: provide a recipe for zvariant frederic.martinsons
2023-03-25 18:51   ` [OE-core] " Alexander Kanavin
2023-03-25 20:43     ` Frédéric Martinsons
2023-03-26 16:55       ` Alexander Kanavin
2023-03-27  4:09         ` Frédéric Martinsons
2023-03-27  6:40           ` Alexander Kanavin
2023-03-27  8:18             ` Alex Kiernan
2023-03-27  8:30               ` Frédéric Martinsons
2023-03-27  8:42                 ` Alex Kiernan
2023-03-27  8:52                   ` Frédéric Martinsons
2023-03-27 10:24                     ` Alex Kiernan
2023-03-25  9:00 ` [PATCH 4/5] devtool: add support for multiple git url inside a cargo based recipe frederic.martinsons
2023-03-25 18:55   ` [OE-core] " Alexander Kanavin
2023-03-26  5:15     ` Frédéric Martinsons
2023-03-25 19:02   ` Alexander Kanavin
2023-03-26  5:15     ` Frédéric Martinsons
2023-03-26 14:58       ` Frédéric Martinsons
2023-03-26 18:01         ` Alexander Kanavin
2023-03-27  4:09           ` Frédéric Martinsons
2023-03-25  9:00 ` [PATCH 5/5] patch: support of git patches when the source uri contained subpath param frederic.martinsons
2023-03-27 14:20 ` [OE-core] [PATCH 0/5] Extend cargo based recip support Richard Purdie
2023-03-27 14:25   ` Alexander Kanavin
2023-03-27 15:01     ` Frédéric Martinsons
2023-03-27 17:19       ` Alexander Kanavin
2023-03-27 18:07         ` Frédéric Martinsons
2023-03-27 18:30           ` Alex Kiernan
2023-03-27 18:40             ` Frédéric Martinsons
2023-03-27 18:52               ` Alex Kiernan
2023-03-27 19:00                 ` Alexander Kanavin
2023-03-27 19:20                   ` Frédéric Martinsons
2023-03-27 22:13                     ` Alexander Kanavin
2023-03-28  7:11                       ` Alex Kiernan
2023-03-28  8:37                         ` Alexander Kanavin
2023-03-28  9:01                           ` Alex Kiernan
2023-03-29 12:35                       ` Alex Kiernan

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.