* [PATCH 0/6] Add 'maturin' python backend support
@ 2023-12-07 23:13 Tim Orling
2023-12-07 23:13 ` [PATCH 1/6] python3-setuptools-rust: BBCLASSEXTEND + nativesdk Tim Orling
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
We are increasingly seeing Rust extensions for Python added in the
ecosystem. The current best practices approach has moved from using
'setuptools-rust' to using 'maturin'.
* Add python3-maturin, including 'native' and 'nativesdk' support.
* Add a 'python_maturin' bbclass for the PEP-517 backend.
* Add recipetool support for the 'maturin' PEP-517 backend.
* Add a very basic 'maturin list-python' smoke test added to oeqa for
both 'runtime' (-c testimage) and 'sdk' (-c testsdk).
The following changes since commit 70ad9b9b309575134834757468cb32c9e3b87448:
bitbake: hashserv: sqlite: Ensure sync propagates to database connections (2023-12-04 22:36:09 +0000)
are available in the Git repository at:
https://git.yoctoproject.org/poky-contrib timo/maturin_1.3.2
https://git.yoctoproject.org/poky-contrib/log/?h=timo/maturin_1.3.2
Tim Orling (6):
python3-setuptools-rust: BBCLASSEXTEND + nativesdk
python3-maturin: add v1.3.2
classes-recipe: add python_maturin.bbclass
recipetool: add python_maturin support
oe-selfest: add maturn runtime (testimage) test
python3-maturin: add sdk (testsdk) test case
meta/classes-recipe/python_maturin.bbclass | 17 +
meta/conf/distro/include/maintainers.inc | 1 +
meta/lib/oeqa/runtime/cases/maturin.py | 23 +
meta/lib/oeqa/sdk/cases/maturin.py | 33 +
meta/lib/oeqa/selftest/cases/recipetool.py | 34 ++
.../python/python3-maturin-crates.inc | 572 ++++++++++++++++++
.../python/python3-maturin_1.3.2.bb | 40 ++
.../python/python3-setuptools-rust_1.8.1.bb | 2 +-
.../lib/recipetool/create_buildsys_python.py | 1 +
9 files changed, 722 insertions(+), 1 deletion(-)
create mode 100644 meta/classes-recipe/python_maturin.bbclass
create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
create mode 100644 meta/recipes-devtools/python/python3-maturin-crates.inc
create mode 100644 meta/recipes-devtools/python/python3-maturin_1.3.2.bb
--
2.34.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/6] python3-setuptools-rust: BBCLASSEXTEND + nativesdk
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-07 23:13 ` [PATCH 2/6] python3-maturin: add v1.3.2 Tim Orling
` (5 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
We would like to build python3-maturin for nativesdk use
and nativesdk-python3-setuptools-rust is a dependency.
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/recipes-devtools/python/python3-setuptools-rust_1.8.1.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/python/python3-setuptools-rust_1.8.1.bb b/meta/recipes-devtools/python/python3-setuptools-rust_1.8.1.bb
index db5c6c449c3..a91ee23ca0c 100644
--- a/meta/recipes-devtools/python/python3-setuptools-rust_1.8.1.bb
+++ b/meta/recipes-devtools/python/python3-setuptools-rust_1.8.1.bb
@@ -33,4 +33,4 @@ RDEPENDS:${PN} += " \
python3-wheel \
"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/6] python3-maturin: add v1.3.2
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
2023-12-07 23:13 ` [PATCH 1/6] python3-setuptools-rust: BBCLASSEXTEND + nativesdk Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-07 23:13 ` [PATCH 3/6] classes-recipe: add python_maturin.bbclass Tim Orling
` (4 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
Build and publish crates with pyo3, rust-cpython, cffi and uniffi bindings
as well as rust binaries as python packages.
This project is meant as a zero configuration replacement for setuptools-rust
and milksnake. It supports building wheels for python 3.7+ on windows, linux,
mac and freebsd, can upload them to pypi and has basic pypy and graalpy support.
https://github.com/pyo3/maturin
[YOCTO #15312]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/conf/distro/include/maintainers.inc | 1 +
.../python/python3-maturin-crates.inc | 572 ++++++++++++++++++
.../python/python3-maturin_1.3.2.bb | 40 ++
3 files changed, 613 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-maturin-crates.inc
create mode 100644 meta/recipes-devtools/python/python3-maturin_1.3.2.bb
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 2c59db56ac6..8fe1efd3288 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -653,6 +653,7 @@ RECIPE_MAINTAINER:pn-python3-magic = "Joshua Watt <JPEWhacker@gmail.com>"
RECIPE_MAINTAINER:pn-python3-mako = "Trevor Gamblin <tgamblin@baylibre.com>"
RECIPE_MAINTAINER:pn-python3-markdown = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER:pn-python3-markupsafe = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-python3-maturin = "Tim Orling <tim.orling@konsulko.com>"
RECIPE_MAINTAINER:pn-python3-more-itertools = "Tim Orling <tim.orling@konsulko.com>"
RECIPE_MAINTAINER:pn-python3-ndg-httpsclient = "Tim Orling <tim.orling@konsulko.com>"
RECIPE_MAINTAINER:pn-python3-numpy = "Trevor Gamblin <tgamblin@baylibre.com>"
diff --git a/meta/recipes-devtools/python/python3-maturin-crates.inc b/meta/recipes-devtools/python/python3-maturin-crates.inc
new file mode 100644
index 00000000000..2b6949ee496
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin-crates.inc
@@ -0,0 +1,572 @@
+# Autogenerated with 'bitbake -c update_crates python3-maturin'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/adler/1.0.2 \
+ crate://crates.io/ahash/0.7.7 \
+ crate://crates.io/aho-corasick/0.7.20 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.2 \
+ crate://crates.io/anyhow/1.0.75 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/base64/0.13.1 \
+ crate://crates.io/base64/0.21.2 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/block-buffer/0.10.4 \
+ crate://crates.io/bstr/1.6.0 \
+ crate://crates.io/byteorder/1.4.3 \
+ crate://crates.io/bytes/1.4.0 \
+ crate://crates.io/bytesize/1.2.0 \
+ crate://crates.io/bzip2/0.4.4 \
+ crate://crates.io/bzip2-sys/0.1.11+1.0.8 \
+ crate://crates.io/cab/0.4.1 \
+ crate://crates.io/camino/1.1.6 \
+ crate://crates.io/cargo-config2/0.1.9 \
+ crate://crates.io/cargo-options/0.6.0 \
+ crate://crates.io/cargo-platform/0.1.3 \
+ crate://crates.io/cargo-xwin/0.14.8 \
+ crate://crates.io/cargo-zigbuild/0.17.5 \
+ crate://crates.io/cargo_metadata/0.18.0 \
+ crate://crates.io/cbindgen/0.26.0 \
+ crate://crates.io/cc/1.0.82 \
+ crate://crates.io/cfb/0.7.3 \
+ crate://crates.io/cfg-expr/0.15.4 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/charset/0.1.3 \
+ crate://crates.io/chumsky/0.9.2 \
+ crate://crates.io/clap/4.1.14 \
+ crate://crates.io/clap_builder/4.1.14 \
+ crate://crates.io/clap_complete/4.2.3 \
+ crate://crates.io/clap_complete_command/0.5.1 \
+ crate://crates.io/clap_complete_fig/4.2.0 \
+ crate://crates.io/clap_complete_nushell/0.1.11 \
+ crate://crates.io/clap_derive/4.1.14 \
+ crate://crates.io/clap_lex/0.4.1 \
+ crate://crates.io/cli-table/0.4.7 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/configparser/3.0.2 \
+ crate://crates.io/console/0.15.7 \
+ crate://crates.io/content_inspector/0.2.4 \
+ crate://crates.io/core-foundation/0.9.3 \
+ crate://crates.io/core-foundation-sys/0.8.4 \
+ crate://crates.io/cpufeatures/0.2.9 \
+ crate://crates.io/crc32fast/1.3.2 \
+ crate://crates.io/crossbeam-channel/0.5.8 \
+ crate://crates.io/crossbeam-deque/0.8.3 \
+ crate://crates.io/crossbeam-epoch/0.9.15 \
+ crate://crates.io/crossbeam-utils/0.8.16 \
+ crate://crates.io/crypto-common/0.1.6 \
+ crate://crates.io/data-encoding/2.4.0 \
+ crate://crates.io/dialoguer/0.11.0 \
+ crate://crates.io/diff/0.1.13 \
+ crate://crates.io/digest/0.10.7 \
+ crate://crates.io/dirs/5.0.1 \
+ crate://crates.io/dirs-sys/0.4.1 \
+ crate://crates.io/dissimilar/1.0.7 \
+ crate://crates.io/dunce/1.0.4 \
+ crate://crates.io/either/1.9.0 \
+ crate://crates.io/encode_unicode/0.3.6 \
+ crate://crates.io/encoding_rs/0.8.32 \
+ crate://crates.io/errno/0.3.2 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/expect-test/1.4.1 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/fat-macho/0.4.7 \
+ crate://crates.io/filetime/0.2.22 \
+ crate://crates.io/flate2/1.0.27 \
+ crate://crates.io/fnv/1.0.7 \
+ crate://crates.io/foreign-types/0.3.2 \
+ crate://crates.io/foreign-types-shared/0.1.1 \
+ crate://crates.io/form_urlencoded/1.2.0 \
+ crate://crates.io/fs-err/2.9.0 \
+ crate://crates.io/generic-array/0.14.7 \
+ crate://crates.io/getrandom/0.2.10 \
+ crate://crates.io/glob/0.3.1 \
+ crate://crates.io/globset/0.4.10 \
+ crate://crates.io/goblin/0.7.1 \
+ crate://crates.io/hashbrown/0.12.3 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/home/0.5.5 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/humantime-serde/1.1.1 \
+ crate://crates.io/idna/0.4.0 \
+ crate://crates.io/ignore/0.4.20 \
+ crate://crates.io/indexmap/1.9.3 \
+ crate://crates.io/indicatif/0.17.6 \
+ crate://crates.io/indoc/2.0.3 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/is-terminal/0.4.7 \
+ crate://crates.io/itertools/0.11.0 \
+ crate://crates.io/itoa/1.0.9 \
+ crate://crates.io/keyring/2.0.5 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/lddtree/0.3.3 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linux-keyutils/0.2.3 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/lock_api/0.4.10 \
+ crate://crates.io/log/0.4.20 \
+ crate://crates.io/lzxd/0.1.4 \
+ crate://crates.io/mailparse/0.14.0 \
+ crate://crates.io/matchers/0.1.0 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/memoffset/0.9.0 \
+ crate://crates.io/mime/0.3.17 \
+ crate://crates.io/mime_guess/2.0.4 \
+ crate://crates.io/minijinja/1.0.8 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/miniz_oxide/0.7.1 \
+ crate://crates.io/msi/0.6.0 \
+ crate://crates.io/multipart/0.18.0 \
+ crate://crates.io/native-tls/0.2.11 \
+ crate://crates.io/nom/7.1.3 \
+ crate://crates.io/normalize-line-endings/0.3.0 \
+ crate://crates.io/normpath/1.1.1 \
+ crate://crates.io/nu-ansi-term/0.46.0 \
+ crate://crates.io/num_cpus/1.16.0 \
+ crate://crates.io/number_prefix/0.4.0 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/openssl/0.10.56 \
+ crate://crates.io/openssl-macros/0.1.1 \
+ crate://crates.io/openssl-probe/0.1.5 \
+ crate://crates.io/openssl-src/111.27.0+1.1.1v \
+ crate://crates.io/openssl-sys/0.9.91 \
+ crate://crates.io/option-ext/0.2.0 \
+ crate://crates.io/os_pipe/1.1.4 \
+ crate://crates.io/overload/0.1.1 \
+ crate://crates.io/parking_lot/0.12.1 \
+ crate://crates.io/parking_lot_core/0.9.8 \
+ crate://crates.io/paste/1.0.14 \
+ crate://crates.io/path-slash/0.2.1 \
+ crate://crates.io/pep440_rs/0.3.6 \
+ crate://crates.io/pep508_rs/0.2.1 \
+ crate://crates.io/percent-encoding/2.3.0 \
+ crate://crates.io/pin-project-lite/0.2.12 \
+ crate://crates.io/pkg-config/0.3.27 \
+ crate://crates.io/plain/0.2.3 \
+ crate://crates.io/platform-info/2.0.2 \
+ crate://crates.io/portable-atomic/1.4.2 \
+ crate://crates.io/ppv-lite86/0.2.17 \
+ crate://crates.io/pretty_assertions/1.4.0 \
+ crate://crates.io/proc-macro2/1.0.66 \
+ crate://crates.io/psm/0.1.21 \
+ crate://crates.io/pyproject-toml/0.6.1 \
+ crate://crates.io/python-pkginfo/0.6.0 \
+ crate://crates.io/quote/1.0.33 \
+ crate://crates.io/quoted_printable/0.4.8 \
+ 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/1.7.0 \
+ crate://crates.io/rayon-core/1.11.0 \
+ crate://crates.io/redox_syscall/0.2.16 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/redox_users/0.4.3 \
+ crate://crates.io/regex/1.7.3 \
+ crate://crates.io/regex-automata/0.1.10 \
+ crate://crates.io/regex-syntax/0.6.29 \
+ crate://crates.io/rfc2047-decoder/0.2.2 \
+ crate://crates.io/ring/0.17.3 \
+ crate://crates.io/rustc_version/0.4.0 \
+ crate://crates.io/rustix/0.37.25 \
+ crate://crates.io/rustls/0.21.8 \
+ crate://crates.io/rustls-pemfile/1.0.3 \
+ crate://crates.io/rustls-webpki/0.101.7 \
+ crate://crates.io/rustversion/1.0.14 \
+ crate://crates.io/ryu/1.0.15 \
+ crate://crates.io/same-file/1.0.6 \
+ crate://crates.io/schannel/0.1.22 \
+ crate://crates.io/scopeguard/1.2.0 \
+ crate://crates.io/scroll/0.11.0 \
+ crate://crates.io/scroll_derive/0.11.1 \
+ crate://crates.io/sct/0.7.1 \
+ crate://crates.io/security-framework/2.9.2 \
+ crate://crates.io/security-framework-sys/2.9.1 \
+ crate://crates.io/semver/1.0.18 \
+ crate://crates.io/serde/1.0.183 \
+ crate://crates.io/serde_derive/1.0.183 \
+ crate://crates.io/serde_json/1.0.105 \
+ crate://crates.io/serde_spanned/0.6.3 \
+ crate://crates.io/sha2/0.10.7 \
+ crate://crates.io/sharded-slab/0.1.4 \
+ crate://crates.io/shell-escape/0.1.5 \
+ crate://crates.io/shell-words/1.1.0 \
+ crate://crates.io/shlex/1.1.0 \
+ crate://crates.io/similar/2.2.1 \
+ crate://crates.io/smallvec/1.11.0 \
+ crate://crates.io/smawk/0.3.1 \
+ crate://crates.io/snapbox/0.4.11 \
+ crate://crates.io/snapbox-macros/0.3.4 \
+ crate://crates.io/socks/0.3.4 \
+ crate://crates.io/spin/0.9.8 \
+ crate://crates.io/stacker/0.1.15 \
+ crate://crates.io/static_assertions/1.1.0 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.29 \
+ crate://crates.io/tar/0.4.40 \
+ crate://crates.io/target-lexicon/0.12.11 \
+ crate://crates.io/tempfile/3.6.0 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/terminal_size/0.2.6 \
+ crate://crates.io/textwrap/0.16.0 \
+ crate://crates.io/thiserror/1.0.47 \
+ crate://crates.io/thiserror-impl/1.0.47 \
+ crate://crates.io/thread_local/1.1.7 \
+ crate://crates.io/time/0.3.20 \
+ crate://crates.io/time-core/0.1.0 \
+ crate://crates.io/time-macros/0.2.8 \
+ 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/0.7.4 \
+ crate://crates.io/toml_datetime/0.6.2 \
+ crate://crates.io/toml_edit/0.19.10 \
+ crate://crates.io/tracing/0.1.37 \
+ crate://crates.io/tracing-attributes/0.1.26 \
+ crate://crates.io/tracing-core/0.1.31 \
+ crate://crates.io/tracing-log/0.1.3 \
+ crate://crates.io/tracing-serde/0.1.3 \
+ crate://crates.io/tracing-subscriber/0.3.17 \
+ crate://crates.io/trycmd/0.14.16 \
+ crate://crates.io/twox-hash/1.6.3 \
+ crate://crates.io/typenum/1.16.0 \
+ crate://crates.io/unicase/2.6.0 \
+ crate://crates.io/unicode-bidi/0.3.13 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/unicode-linebreak/0.1.5 \
+ crate://crates.io/unicode-normalization/0.1.22 \
+ crate://crates.io/unicode-width/0.1.10 \
+ crate://crates.io/untrusted/0.9.0 \
+ crate://crates.io/ureq/2.8.0 \
+ crate://crates.io/url/2.4.1 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/uuid/1.4.1 \
+ crate://crates.io/valuable/0.1.0 \
+ crate://crates.io/vcpkg/0.2.15 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/versions/5.0.1 \
+ crate://crates.io/wait-timeout/0.2.0 \
+ crate://crates.io/walkdir/2.3.3 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/webpki-roots/0.25.2 \
+ crate://crates.io/which/4.4.0 \
+ crate://crates.io/wild/2.1.0 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.45.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.42.2 \
+ crate://crates.io/windows-targets/0.48.2 \
+ crate://crates.io/windows_aarch64_gnullvm/0.42.2 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.2 \
+ crate://crates.io/windows_aarch64_msvc/0.42.2 \
+ crate://crates.io/windows_aarch64_msvc/0.48.2 \
+ crate://crates.io/windows_i686_gnu/0.42.2 \
+ crate://crates.io/windows_i686_gnu/0.48.2 \
+ crate://crates.io/windows_i686_msvc/0.42.2 \
+ crate://crates.io/windows_i686_msvc/0.48.2 \
+ crate://crates.io/windows_x86_64_gnu/0.42.2 \
+ crate://crates.io/windows_x86_64_gnu/0.48.2 \
+ crate://crates.io/windows_x86_64_gnullvm/0.42.2 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.2 \
+ crate://crates.io/windows_x86_64_msvc/0.42.2 \
+ crate://crates.io/windows_x86_64_msvc/0.48.2 \
+ crate://crates.io/winnow/0.4.7 \
+ crate://crates.io/xattr/1.0.1 \
+ crate://crates.io/xwin/0.3.1 \
+ crate://crates.io/yansi/0.5.1 \
+ crate://crates.io/zeroize/1.6.0 \
+ crate://crates.io/zip/0.6.6 \
+"
+
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[ahash-0.7.7.sha256sum] = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
+SRC_URI[aho-corasick-0.7.20.sha256sum] = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.2.sha256sum] = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
+SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[base64-0.21.2.sha256sum] = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+SRC_URI[bstr-1.6.0.sha256sum] = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[bytes-1.4.0.sha256sum] = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+SRC_URI[bytesize-1.2.0.sha256sum] = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5"
+SRC_URI[bzip2-0.4.4.sha256sum] = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
+SRC_URI[bzip2-sys-0.1.11+1.0.8.sha256sum] = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+SRC_URI[cab-0.4.1.sha256sum] = "ae6b4de23c7d39c0631fd3cc952d87951c86c75a13812d7247cb7a896e7b3551"
+SRC_URI[camino-1.1.6.sha256sum] = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
+SRC_URI[cargo-config2-0.1.9.sha256sum] = "a393492158d1198da424057afeadc96af9330d76d12e56d131a7a5302524ac65"
+SRC_URI[cargo-options-0.6.0.sha256sum] = "9b8e8daa6b2b84aa7cccd57317d9a9b36d969d75bb95923471f4eabbd36f2955"
+SRC_URI[cargo-platform-0.1.3.sha256sum] = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
+SRC_URI[cargo-xwin-0.14.8.sha256sum] = "11c08ee57b16103990269874220c0e8a4613b8096a314ce2f29ad1b54d4b6d02"
+SRC_URI[cargo-zigbuild-0.17.5.sha256sum] = "d5166694ea85c72f887293af72a665d7ac5a537649e607773bf834cb6303b1da"
+SRC_URI[cargo_metadata-0.18.0.sha256sum] = "fb9ac64500cc83ce4b9f8dafa78186aa008c8dea77a09b94cd307fd0cd5022a8"
+SRC_URI[cbindgen-0.26.0.sha256sum] = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49"
+SRC_URI[cc-1.0.82.sha256sum] = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
+SRC_URI[cfb-0.7.3.sha256sum] = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
+SRC_URI[cfg-expr-0.15.4.sha256sum] = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[charset-0.1.3.sha256sum] = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46"
+SRC_URI[chumsky-0.9.2.sha256sum] = "23170228b96236b5a7299057ac284a321457700bc8c41a4476052f0f4ba5349d"
+SRC_URI[clap-4.1.14.sha256sum] = "906f7fe1da4185b7a282b2bc90172a496f9def1aca4545fe7526810741591e14"
+SRC_URI[clap_builder-4.1.14.sha256sum] = "351f9ad9688141ed83dfd8f5fb998a06225ef444b48ff4dc43de6d409b7fd10b"
+SRC_URI[clap_complete-4.2.3.sha256sum] = "1594fe2312ec4abf402076e407628f5c313e54c32ade058521df4ee34ecac8a8"
+SRC_URI[clap_complete_command-0.5.1.sha256sum] = "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d"
+SRC_URI[clap_complete_fig-4.2.0.sha256sum] = "f3af28956330989baa428ed4d3471b853715d445c62de21b67292e22cf8a41fa"
+SRC_URI[clap_complete_nushell-0.1.11.sha256sum] = "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e"
+SRC_URI[clap_derive-4.1.14.sha256sum] = "81d7dc0031c3a59a04fc2ba395c8e2dd463cba1859275f065d225f6122221b45"
+SRC_URI[clap_lex-0.4.1.sha256sum] = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1"
+SRC_URI[cli-table-0.4.7.sha256sum] = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[configparser-3.0.2.sha256sum] = "5458d9d1a587efaf5091602c59d299696a3877a439c8f6d461a2d3cce11df87a"
+SRC_URI[console-0.15.7.sha256sum] = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+SRC_URI[content_inspector-0.2.4.sha256sum] = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
+SRC_URI[core-foundation-0.9.3.sha256sum] = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+SRC_URI[cpufeatures-0.2.9.sha256sum] = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
+SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[crossbeam-channel-0.5.8.sha256sum] = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+SRC_URI[crossbeam-epoch-0.9.15.sha256sum] = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[data-encoding-2.4.0.sha256sum] = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+SRC_URI[dialoguer-0.11.0.sha256sum] = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
+SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[dirs-5.0.1.sha256sum] = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+SRC_URI[dirs-sys-0.4.1.sha256sum] = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+SRC_URI[dissimilar-1.0.7.sha256sum] = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632"
+SRC_URI[dunce-1.0.4.sha256sum] = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+SRC_URI[encoding_rs-0.8.32.sha256sum] = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+SRC_URI[errno-0.3.2.sha256sum] = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[expect-test-1.4.1.sha256sum] = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[fat-macho-0.4.7.sha256sum] = "63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b"
+SRC_URI[filetime-0.2.22.sha256sum] = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+SRC_URI[flate2-1.0.27.sha256sum] = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+SRC_URI[form_urlencoded-1.2.0.sha256sum] = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+SRC_URI[fs-err-2.9.0.sha256sum] = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[getrandom-0.2.10.sha256sum] = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[globset-0.4.10.sha256sum] = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc"
+SRC_URI[goblin-0.7.1.sha256sum] = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[humantime-serde-1.1.1.sha256sum] = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c"
+SRC_URI[idna-0.4.0.sha256sum] = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+SRC_URI[ignore-0.4.20.sha256sum] = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
+SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+SRC_URI[indicatif-0.17.6.sha256sum] = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730"
+SRC_URI[indoc-2.0.3.sha256sum] = "2c785eefb63ebd0e33416dfcb8d6da0bf27ce752843a45632a67bf10d4d4b5c4"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[is-terminal-0.4.7.sha256sum] = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+SRC_URI[itertools-0.11.0.sha256sum] = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+SRC_URI[keyring-2.0.5.sha256sum] = "9549a129bd08149e0a71b2d1ce2729780d47127991bfd0a78cc1df697ec72492"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lddtree-0.3.3.sha256sum] = "2f5bfec46830ad3a95199ae6804dfe9f51fdad43d7a95fbb6c185efa9824c295"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linux-keyutils-0.2.3.sha256sum] = "3f27bb67f6dd1d0bb5ab582868e4f65052e58da6401188a08f0da09cf512b84b"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[lock_api-0.4.10.sha256sum] = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[lzxd-0.1.4.sha256sum] = "784462f20dddd9dfdb45de963fa4ad4a288cb10a7889ac5d2c34fb6481c6b213"
+SRC_URI[mailparse-0.14.0.sha256sum] = "6b56570f5f8c0047260d1c8b5b331f62eb9c660b9dd4071a8c46f8c7d3f280aa"
+SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+SRC_URI[mime_guess-2.0.4.sha256sum] = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+SRC_URI[minijinja-1.0.8.sha256sum] = "80084fa3099f58b7afab51e5f92e24c2c2c68dcad26e96ad104bd6011570461d"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+SRC_URI[msi-0.6.0.sha256sum] = "a7124fc3188eff23916d20d82bcbbb993914b22fba5603f9e7745e347a86cf67"
+SRC_URI[multipart-0.18.0.sha256sum] = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182"
+SRC_URI[native-tls-0.2.11.sha256sum] = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+SRC_URI[normpath-1.1.1.sha256sum] = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5"
+SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[openssl-0.10.56.sha256sum] = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
+SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+SRC_URI[openssl-src-111.27.0+1.1.1v.sha256sum] = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02"
+SRC_URI[openssl-sys-0.9.91.sha256sum] = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
+SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+SRC_URI[os_pipe-1.1.4.sha256sum] = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
+SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.8.sha256sum] = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+SRC_URI[paste-1.0.14.sha256sum] = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+SRC_URI[path-slash-0.2.1.sha256sum] = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
+SRC_URI[pep440_rs-0.3.6.sha256sum] = "3d6f6ead185985925c7e2b5ddb57ed5ef9d95835bf3994a5ce74403653898ab6"
+SRC_URI[pep508_rs-0.2.1.sha256sum] = "c0713d7bb861ca2b7d4c50a38e1f31a4b63a2e2df35ef1e5855cc29e108453e2"
+SRC_URI[percent-encoding-2.3.0.sha256sum] = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+SRC_URI[pin-project-lite-0.2.12.sha256sum] = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05"
+SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
+SRC_URI[platform-info-2.0.2.sha256sum] = "d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f"
+SRC_URI[portable-atomic-1.4.2.sha256sum] = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[pretty_assertions-1.4.0.sha256sum] = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+SRC_URI[proc-macro2-1.0.66.sha256sum] = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+SRC_URI[psm-0.1.21.sha256sum] = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
+SRC_URI[pyproject-toml-0.6.1.sha256sum] = "ee79feaa9d31e1c417e34219e610b67db4e786ce9b49d77dda549640abb9dc5f"
+SRC_URI[python-pkginfo-0.6.0.sha256sum] = "037469c164f08c891bf6d69ca02f1d56210011451e229618669777df82124cfa"
+SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+SRC_URI[quoted_printable-0.4.8.sha256sum] = "5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[rayon-1.7.0.sha256sum] = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+SRC_URI[rayon-core-1.11.0.sha256sum] = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[redox_users-0.4.3.sha256sum] = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+SRC_URI[regex-1.7.3.sha256sum] = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+SRC_URI[rfc2047-decoder-0.2.2.sha256sum] = "61fc4b4e52897c3e30b12b7e9b04461215b647fbe66f6def60dd8edbce14ec2e"
+SRC_URI[ring-0.17.3.sha256sum] = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e"
+SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+SRC_URI[rustix-0.37.25.sha256sum] = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035"
+SRC_URI[rustls-0.21.8.sha256sum] = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c"
+SRC_URI[rustls-pemfile-1.0.3.sha256sum] = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
+SRC_URI[rustls-webpki-0.101.7.sha256sum] = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+SRC_URI[rustversion-1.0.14.sha256sum] = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[schannel-0.1.22.sha256sum] = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+SRC_URI[scroll-0.11.0.sha256sum] = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da"
+SRC_URI[scroll_derive-0.11.1.sha256sum] = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
+SRC_URI[sct-0.7.1.sha256sum] = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+SRC_URI[security-framework-2.9.2.sha256sum] = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+SRC_URI[security-framework-sys-2.9.1.sha256sum] = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+SRC_URI[semver-1.0.18.sha256sum] = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
+SRC_URI[serde-1.0.183.sha256sum] = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
+SRC_URI[serde_derive-1.0.183.sha256sum] = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
+SRC_URI[serde_json-1.0.105.sha256sum] = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"
+SRC_URI[serde_spanned-0.6.3.sha256sum] = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+SRC_URI[sha2-0.10.7.sha256sum] = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
+SRC_URI[sharded-slab-0.1.4.sha256sum] = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+SRC_URI[shell-escape-0.1.5.sha256sum] = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
+SRC_URI[shell-words-1.1.0.sha256sum] = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+SRC_URI[shlex-1.1.0.sha256sum] = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+SRC_URI[similar-2.2.1.sha256sum] = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
+SRC_URI[smallvec-1.11.0.sha256sum] = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
+SRC_URI[smawk-0.3.1.sha256sum] = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
+SRC_URI[snapbox-0.4.11.sha256sum] = "f6bccd62078347f89a914e3004d94582e13824d4e3d8a816317862884c423835"
+SRC_URI[snapbox-macros-0.3.4.sha256sum] = "eaaf09df9f0eeae82be96290918520214530e738a7fe5a351b0f24cf77c0ca31"
+SRC_URI[socks-0.3.4.sha256sum] = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
+SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+SRC_URI[stacker-0.1.15.sha256sum] = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.29.sha256sum] = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
+SRC_URI[tar-0.4.40.sha256sum] = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
+SRC_URI[target-lexicon-0.12.11.sha256sum] = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
+SRC_URI[tempfile-3.6.0.sha256sum] = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[terminal_size-0.2.6.sha256sum] = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
+SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[thiserror-1.0.47.sha256sum] = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"
+SRC_URI[thiserror-impl-1.0.47.sha256sum] = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
+SRC_URI[thread_local-1.1.7.sha256sum] = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+SRC_URI[time-0.3.20.sha256sum] = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+SRC_URI[time-core-0.1.0.sha256sum] = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+SRC_URI[time-macros-0.2.8.sha256sum] = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+SRC_URI[toml-0.7.4.sha256sum] = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec"
+SRC_URI[toml_datetime-0.6.2.sha256sum] = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f"
+SRC_URI[toml_edit-0.19.10.sha256sum] = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739"
+SRC_URI[tracing-0.1.37.sha256sum] = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+SRC_URI[tracing-attributes-0.1.26.sha256sum] = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+SRC_URI[tracing-core-0.1.31.sha256sum] = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+SRC_URI[tracing-log-0.1.3.sha256sum] = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+SRC_URI[tracing-serde-0.1.3.sha256sum] = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+SRC_URI[tracing-subscriber-0.3.17.sha256sum] = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
+SRC_URI[trycmd-0.14.16.sha256sum] = "2925e71868a12b173c1eb166018c2d2f9dfaedfcaec747bdb6ea2246785d258e"
+SRC_URI[twox-hash-1.6.3.sha256sum] = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+SRC_URI[unicase-2.6.0.sha256sum] = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+SRC_URI[ureq-2.8.0.sha256sum] = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3"
+SRC_URI[url-2.4.1.sha256sum] = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[uuid-1.4.1.sha256sum] = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
+SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[versions-5.0.1.sha256sum] = "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd"
+SRC_URI[wait-timeout-0.2.0.sha256sum] = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+SRC_URI[walkdir-2.3.3.sha256sum] = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[webpki-roots-0.25.2.sha256sum] = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
+SRC_URI[which-4.4.0.sha256sum] = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
+SRC_URI[wild-2.1.0.sha256sum] = "05b116685a6be0c52f5a103334cbff26db643826c7b3735fc0a3ba9871310a74"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+SRC_URI[windows-targets-0.48.2.sha256sum] = "d1eeca1c172a285ee6c2c84c341ccea837e7c01b12fbb2d0fe3c9e550ce49ec8"
+SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+SRC_URI[windows_aarch64_gnullvm-0.48.2.sha256sum] = "b10d0c968ba7f6166195e13d593af609ec2e3d24f916f081690695cf5eaffb2f"
+SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+SRC_URI[windows_aarch64_msvc-0.48.2.sha256sum] = "571d8d4e62f26d4932099a9efe89660e8bd5087775a2ab5cdd8b747b811f1058"
+SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+SRC_URI[windows_i686_gnu-0.48.2.sha256sum] = "2229ad223e178db5fbbc8bd8d3835e51e566b8474bfca58d2e6150c48bb723cd"
+SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+SRC_URI[windows_i686_msvc-0.48.2.sha256sum] = "600956e2d840c194eedfc5d18f8242bc2e17c7775b6684488af3a9fff6fe3287"
+SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+SRC_URI[windows_x86_64_gnu-0.48.2.sha256sum] = "ea99ff3f8b49fb7a8e0d305e5aec485bd068c2ba691b6e277d29eaeac945868a"
+SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+SRC_URI[windows_x86_64_gnullvm-0.48.2.sha256sum] = "8f1a05a1ece9a7a0d5a7ccf30ba2c33e3a61a30e042ffd247567d1de1d94120d"
+SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+SRC_URI[windows_x86_64_msvc-0.48.2.sha256sum] = "d419259aba16b663966e29e6d7c6ecfa0bb8425818bb96f6f1f3c3eb71a6e7b9"
+SRC_URI[winnow-0.4.7.sha256sum] = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448"
+SRC_URI[xattr-1.0.1.sha256sum] = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
+SRC_URI[xwin-0.3.1.sha256sum] = "79db6a9fc6b665feccd1984e4e21ff588102652c317176fab0d6706b55d3e208"
+SRC_URI[yansi-0.5.1.sha256sum] = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+SRC_URI[zeroize-1.6.0.sha256sum] = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+SRC_URI[zip-0.6.6.sha256sum] = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
diff --git a/meta/recipes-devtools/python/python3-maturin_1.3.2.bb b/meta/recipes-devtools/python/python3-maturin_1.3.2.bb
new file mode 100644
index 00000000000..4ab91024cf5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin_1.3.2.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Build and publish crates with pyo3, rust-cpython, cffi bindings and rust binaries as python packages"
+HOMEPAGE = "https://github.com/pyo3/maturin"
+SECTION = "devel/python"
+LICENSE = "MIT | Apache-2.0"
+LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \
+ file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797"
+
+SRC_URI[sha256sum] = "952d458b3dea01e9670582ac2dff3c522a34e491f08ed6376b270655a68c24af"
+
+S = "${WORKDIR}/maturin-${PV}"
+
+DEPENDS += "\
+ python3-setuptools-rust-native \
+ python3-semantic-version-native \
+ python3-setuptools-rust \
+"
+
+require ${BPN}-crates.inc
+
+inherit pypi cargo-update-recipe-crates python_pyo3 python_setuptools_build_meta
+
+do_configure() {
+ python_pyo3_do_configure
+ cargo_common_do_configure
+ python_pep517_do_configure
+}
+
+RDEPENDS:${PN} += "\
+ cargo \
+ python3-json \
+ rust \
+"
+
+RRECOMMENDS:${PN} += "\
+ python3-ensurepip \
+ python3-pip \
+ python3-venv \
+"
+
+BBCLASSEXTEND = "native nativesdk"
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 3/6] classes-recipe: add python_maturin.bbclass
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
2023-12-07 23:13 ` [PATCH 1/6] python3-setuptools-rust: BBCLASSEXTEND + nativesdk Tim Orling
2023-12-07 23:13 ` [PATCH 2/6] python3-maturin: add v1.3.2 Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-07 23:13 ` [PATCH 4/6] recipetool: add python_maturin support Tim Orling
` (3 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
maturin is a replacement for setuptools_rust and another "backend" for
building python wheels.
[YOCTO #15312]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/classes-recipe/python_maturin.bbclass | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 meta/classes-recipe/python_maturin.bbclass
diff --git a/meta/classes-recipe/python_maturin.bbclass b/meta/classes-recipe/python_maturin.bbclass
new file mode 100644
index 00000000000..c39d6c6e37d
--- /dev/null
+++ b/meta/classes-recipe/python_maturin.bbclass
@@ -0,0 +1,17 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+inherit python_pyo3 python_setuptools_build_meta
+
+DEPENDS += "python3-maturin-native"
+
+python_maturin_do_configure() {
+ python_pyo3_do_configure
+ cargo_common_do_configure
+ python_pep517_do_configure
+}
+
+EXPORT_FUNCTIONS do_configure
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 4/6] recipetool: add python_maturin support
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
` (2 preceding siblings ...)
2023-12-07 23:13 ` [PATCH 3/6] classes-recipe: add python_maturin.bbclass Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-08 23:38 ` [OE-core] " Peter Kjellerstedt
2023-12-09 2:02 ` [PATCH v2 " Tim Orling
2023-12-07 23:13 ` [PATCH 5/6] oe-selfest: add maturn runtime (testimage) test Tim Orling
` (2 subsequent siblings)
6 siblings, 2 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
Add the new python_maturin PEP-517 backend
Add selftest for 'pydantic-core' pypi package.
[YOCTO #15312]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/lib/oeqa/selftest/cases/recipetool.py | 34 +++++++++++++++++++
.../lib/recipetool/create_buildsys_python.py | 1 +
2 files changed, 35 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
index 55cbba9ca74..ddcacaa73c7 100644
--- a/meta/lib/oeqa/selftest/cases/recipetool.py
+++ b/meta/lib/oeqa/selftest/cases/recipetool.py
@@ -611,6 +611,40 @@ class RecipetoolCreateTests(RecipetoolBase):
self._test_recipe_contents(recipefile, checkvars, inherits)
+ def test_recipetool_create_python3_pep517_maturin(self):
+ # This test require python 3.11 or above for the tomllib module
+ # or tomli module to be installed
+ try:
+ import tomllib
+ except ImportError:
+ try:
+ import tomli
+ except ImportError:
+ self.skipTest('Test requires python 3.11 or above for tomllib module or tomli module')
+
+ # Test creating python3 package from tarball (using maturin class)
+ temprecipe = os.path.join(self.tempdir, 'recipe')
+ os.makedirs(temprecipe)
+ pn = 'pydantic-core'
+ pv = '2.14.5'
+ recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
+ srcuri = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz' % pv
+ result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+ self.assertTrue(os.path.isfile(recipefile))
+ checkvars = {}
+ checkvars['HOMEPAGE'] = 'https://github.com/pydantic/pydantic-core'
+ checkvars['LICENSE'] = set(['MIT'])
+ checkvars['LIC_FILES_CHKSUM'] = 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
+ checkvars['SRC_URI'] = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-${PV}.tar.gz'
+ checkvars['SRC_URI[md5sum]'] = '1eb13c211147496c1c9484ff7f8ac438'
+ checkvars['SRC_URI[sha1sum]'] = '0803a731aa793f3eaf4d52f656d7300408ca0b36'
+ checkvars['SRC_URI[sha256sum]'] = '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
+ checkvars['SRC_URI[sha384sum]'] = 'cca6d9f0ba72ff92e16aaf3d6c628b8df33bdf244cc39c9d59cff9d541f35d4e87ec136e60e4b040ad73c5c69b27cec6'
+ checkvars['SRC_URI[sha512sum]'] = 'e6c3081dfa58d9b59f8c33dfe80712d732ac3048a2f8240f9a0f5448d9bfc83e222c1e08b8bb49779b84f685c3bec3060cc935c113a818b1ab8aa955f3df2238'
+ inherits = ['python_maturin']
+
+ self._test_recipe_contents(recipefile, checkvars, inherits)
+
def test_recipetool_create_github_tarball(self):
# Basic test to ensure github URL mangling doesn't apply to release tarballs
temprecipe = os.path.join(self.tempdir, 'recipe')
diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
index 9312e4abf13..9bebb3061b1 100644
--- a/scripts/lib/recipetool/create_buildsys_python.py
+++ b/scripts/lib/recipetool/create_buildsys_python.py
@@ -668,6 +668,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
"poetry.core.masonry.api": "python_poetry_core",
"flit_core.buildapi": "python_flit_core",
"hatchling.build": "python_hatchling",
+ "maturin": "python_maturin",
}
# setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 5/6] oe-selfest: add maturn runtime (testimage) test
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
` (3 preceding siblings ...)
2023-12-07 23:13 ` [PATCH 4/6] recipetool: add python_maturin support Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-07 23:13 ` [PATCH 6/6] python3-maturin: add sdk (testsdk) test case Tim Orling
2023-12-08 22:50 ` [OE-core] [PATCH 0/6] Add 'maturin' python backend support Alexandre Belloni
6 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
Basic smoke test for maturin to test the 'maturin list-python' case.
[YOCTO #15312]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/lib/oeqa/runtime/cases/maturin.py | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
diff --git a/meta/lib/oeqa/runtime/cases/maturin.py b/meta/lib/oeqa/runtime/cases/maturin.py
new file mode 100644
index 00000000000..b9a3b4acbcd
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/maturin.py
@@ -0,0 +1,23 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+
+class MaturinTest(OERuntimeTestCase):
+ @OETestDepends(['ssh.SSHTest.test_ssh', 'python.PythonTest.test_python3'])
+ @OEHasPackage(['python3-maturin'])
+ def test_maturin_list_python(self):
+ status, output = self.target.run("maturin list-python")
+ self.assertEqual(status, 0)
+ _, py_major = self.target.run("python3 -c 'import sys; print(sys.version_info.major)'")
+ _, py_minor = self.target.run("python3 -c 'import sys; print(sys.version_info.minor)'")
+ python_version = "%s.%s" % (py_major, py_minor)
+ self.assertEqual(output, "🐍 1 python interpreter found:\n"
+ " - CPython %s at /usr/bin/python%s" % (python_version, python_version))
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 6/6] python3-maturin: add sdk (testsdk) test case
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
` (4 preceding siblings ...)
2023-12-07 23:13 ` [PATCH 5/6] oe-selfest: add maturn runtime (testimage) test Tim Orling
@ 2023-12-07 23:13 ` Tim Orling
2023-12-08 22:50 ` [OE-core] [PATCH 0/6] Add 'maturin' python backend support Alexandre Belloni
6 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-07 23:13 UTC (permalink / raw)
To: openembedded-core
We expect 'maturin' will be used in SDKs, so it makes sense to also
test it in the testsdk environment.
To run this test case, you can add the following to local.conf:
TOOLCHAIN_HOST_TASK:append = " nativesdk-python3-maturin"
And the build and test the SDK:
bitbake -c populate_sdk core-image-full-cmdline
bitbake -c testsdk core-image-full-cmdline
You can substitute a different image recipe for "core-image-full-cmdline"
[YOCTO #15312]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
meta/lib/oeqa/sdk/cases/maturin.py | 33 ++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
diff --git a/meta/lib/oeqa/sdk/cases/maturin.py b/meta/lib/oeqa/sdk/cases/maturin.py
new file mode 100644
index 00000000000..14245bc36e5
--- /dev/null
+++ b/meta/lib/oeqa/sdk/cases/maturin.py
@@ -0,0 +1,33 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import unittest
+from oeqa.sdk.case import OESDKTestCase
+
+from oeqa.utils.subprocesstweak import errors_have_output
+
+errors_have_output()
+
+
+class MaturinTest(OESDKTestCase):
+ def setUp(self):
+ if not (
+ self.tc.hasHostPackage("nativesdk-python3-maturin")
+ or self.tc.hasHostPackage("python3-maturin-native")
+ ):
+ raise unittest.SkipTest("No python3-maturin package in the SDK")
+
+ def test_maturin_list_python(self):
+ py_major = self._run("python3 -c 'import sys; print(sys.version_info.major)'")
+ py_minor = self._run("python3 -c 'import sys; print(sys.version_info.minor)'")
+ python_version = "%s.%s" % (py_major.strip(), py_minor.strip())
+ cmd = "maturin list-python"
+ output = self._run(cmd)
+ self.assertRegex(output, r"^🐍 1 python interpreter found:\n")
+ self.assertRegex(
+ output,
+ r" - CPython %s (.+)/usr/bin/python%s$" % (python_version, python_version),
+ )
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH 0/6] Add 'maturin' python backend support
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
` (5 preceding siblings ...)
2023-12-07 23:13 ` [PATCH 6/6] python3-maturin: add sdk (testsdk) test case Tim Orling
@ 2023-12-08 22:50 ` Alexandre Belloni
2023-12-08 23:58 ` Tim Orling
[not found] ` <179F00AD57313E1B.7956@lists.openembedded.org>
6 siblings, 2 replies; 15+ messages in thread
From: Alexandre Belloni @ 2023-12-08 22:50 UTC (permalink / raw)
To: Tim Orling; +Cc: openembedded-core
Hello Tim,
I got this failure, can you check?
https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6166/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6159/steps/14/logs/stdio
2023-12-08 22:03:18,822 - oe-selftest - INFO - FAIL: recipetool.RecipetoolCreateTests.test_recipetool_create_python3_pep517_maturin (subunit.RemotedTestCase)
2023-12-08 22:03:18,822 - oe-selftest - INFO - ----------------------------------------------------------------------
2023-12-08 22:03:18,823 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
File "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/recipetool.py", line 698, in test_recipetool_create_python3_pep517_maturin
self._test_recipe_contents(recipefile, checkvars, inherits)
File "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/devtool.py", line 178, in _test_recipe_contents
self.assertEqual(missingvars, {}, 'Some expected variables not found in recipe: %s' % checkvars)
File "/usr/lib64/python3.11/unittest/case.py", line 873, in assertEqual
assertion_func(first, second, msg=msg)
File "/usr/lib64/python3.11/unittest/case.py", line 1172, in assertDictEqual
self.fail(self._formatMessage(msg, standardMsg))
File "/usr/lib64/python3.11/unittest/case.py", line 703, in fail
raise self.failureException(msg)
AssertionError: {'SRC_URI': 'https://files.pythonhosted.or[586 chars]238'} != {}
Diff is 656 characters long. Set self.maxDiff to None to see it. : Some expected variables not found in recipe: {'SRC_URI': 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-${PV}.tar.gz', 'SRC_URI[md5sum]': '1eb13c211147496c1c9484ff7f8ac438', 'SRC_URI[sha1sum]': '0803a731aa793f3eaf4d52f656d7300408ca0b36', 'SRC_URI[sha256sum]': '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71', 'SRC_URI[sha384sum]': 'cca6d9f0ba72ff92e16aaf3d6c628b8df33bdf244cc39c9d59cff9d541f35d4e87ec136e60e4b040ad73c5c69b27cec6', 'SRC_URI[sha512sum]': 'e6c3081dfa58d9b59f8c33dfe80712d732ac3048a2f8240f9a0f5448d9bfc83e222c1e08b8bb49779b84f685c3bec3060cc935c113a818b1ab8aa955f3df2238'}
On 07/12/2023 15:13:17-0800, Tim Orling wrote:
> We are increasingly seeing Rust extensions for Python added in the
> ecosystem. The current best practices approach has moved from using
> 'setuptools-rust' to using 'maturin'.
>
> * Add python3-maturin, including 'native' and 'nativesdk' support.
> * Add a 'python_maturin' bbclass for the PEP-517 backend.
> * Add recipetool support for the 'maturin' PEP-517 backend.
> * Add a very basic 'maturin list-python' smoke test added to oeqa for
> both 'runtime' (-c testimage) and 'sdk' (-c testsdk).
>
> The following changes since commit 70ad9b9b309575134834757468cb32c9e3b87448:
>
> bitbake: hashserv: sqlite: Ensure sync propagates to database connections (2023-12-04 22:36:09 +0000)
>
> are available in the Git repository at:
>
> https://git.yoctoproject.org/poky-contrib timo/maturin_1.3.2
> https://git.yoctoproject.org/poky-contrib/log/?h=timo/maturin_1.3.2
>
> Tim Orling (6):
> python3-setuptools-rust: BBCLASSEXTEND + nativesdk
> python3-maturin: add v1.3.2
> classes-recipe: add python_maturin.bbclass
> recipetool: add python_maturin support
> oe-selfest: add maturn runtime (testimage) test
> python3-maturin: add sdk (testsdk) test case
>
> meta/classes-recipe/python_maturin.bbclass | 17 +
> meta/conf/distro/include/maintainers.inc | 1 +
> meta/lib/oeqa/runtime/cases/maturin.py | 23 +
> meta/lib/oeqa/sdk/cases/maturin.py | 33 +
> meta/lib/oeqa/selftest/cases/recipetool.py | 34 ++
> .../python/python3-maturin-crates.inc | 572 ++++++++++++++++++
> .../python/python3-maturin_1.3.2.bb | 40 ++
> .../python/python3-setuptools-rust_1.8.1.bb | 2 +-
> .../lib/recipetool/create_buildsys_python.py | 1 +
> 9 files changed, 722 insertions(+), 1 deletion(-)
> create mode 100644 meta/classes-recipe/python_maturin.bbclass
> create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
> create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
> create mode 100644 meta/recipes-devtools/python/python3-maturin-crates.inc
> create mode 100644 meta/recipes-devtools/python/python3-maturin_1.3.2.bb
>
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#191981): https://lists.openembedded.org/g/openembedded-core/message/191981
> Mute This Topic: https://lists.openembedded.org/mt/103045095/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [OE-core] [PATCH 4/6] recipetool: add python_maturin support
2023-12-07 23:13 ` [PATCH 4/6] recipetool: add python_maturin support Tim Orling
@ 2023-12-08 23:38 ` Peter Kjellerstedt
2023-12-09 2:02 ` [PATCH v2 " Tim Orling
1 sibling, 0 replies; 15+ messages in thread
From: Peter Kjellerstedt @ 2023-12-08 23:38 UTC (permalink / raw)
To: Tim Orling, openembedded-core@lists.openembedded.org
> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Tim Orling
> Sent: den 8 december 2023 00:13
> To: openembedded-core@lists.openembedded.org
> Subject: [OE-core] [PATCH 4/6] recipetool: add python_maturin support
>
> Add the new python_maturin PEP-517 backend
>
> Add selftest for 'pydantic-core' pypi package.
>
> [YOCTO #15312]
>
> Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> ---
> meta/lib/oeqa/selftest/cases/recipetool.py | 34 +++++++++++++++++++
> .../lib/recipetool/create_buildsys_python.py | 1 +
> 2 files changed, 35 insertions(+)
>
> diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
> index 55cbba9ca74..ddcacaa73c7 100644
> --- a/meta/lib/oeqa/selftest/cases/recipetool.py
> +++ b/meta/lib/oeqa/selftest/cases/recipetool.py
> @@ -611,6 +611,40 @@ class RecipetoolCreateTests(RecipetoolBase):
>
> self._test_recipe_contents(recipefile, checkvars, inherits)
>
> + def test_recipetool_create_python3_pep517_maturin(self):
> + # This test require python 3.11 or above for the tomllib module
> + # or tomli module to be installed
> + try:
> + import tomllib
> + except ImportError:
> + try:
> + import tomli
> + except ImportError:
> + self.skipTest('Test requires python 3.11 or above for tomllib module or tomli module')
> +
> + # Test creating python3 package from tarball (using maturin class)
> + temprecipe = os.path.join(self.tempdir, 'recipe')
> + os.makedirs(temprecipe)
> + pn = 'pydantic-core'
> + pv = '2.14.5'
> + recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
> + srcuri = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz' % pv
> + result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
> + self.assertTrue(os.path.isfile(recipefile))
> + checkvars = {}
> + checkvars['HOMEPAGE'] = 'https://github.com/pydantic/pydantic-core'
> + checkvars['LICENSE'] = set(['MIT'])
> + checkvars['LIC_FILES_CHKSUM'] = 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
> + checkvars['SRC_URI'] = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-${PV}.tar.gz'
> + checkvars['SRC_URI[md5sum]'] = '1eb13c211147496c1c9484ff7f8ac438'
> + checkvars['SRC_URI[sha1sum]'] = '0803a731aa793f3eaf4d52f656d7300408ca0b36'
> + checkvars['SRC_URI[sha256sum]'] = '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
> + checkvars['SRC_URI[sha384sum]'] = 'cca6d9f0ba72ff92e16aaf3d6c628b8df33bdf244cc39c9d59cff9d541f35d4e87ec136e6 0e4b040ad73c5c69b27cec6'
> + checkvars['SRC_URI[sha512sum]'] = 'e6c3081dfa58d9b59f8c33dfe80712d732ac3048a2f8240f9a0f5448d9bfc83e222c1e08b8bb49779b84f685c3bec3060cc935c113a818b1ab8aa955f3df2238'
After my recent changes to recipetool, only the sha256sum shall be
present here.
> + inherits = ['python_maturin']
> +
> + self._test_recipe_contents(recipefile, checkvars, inherits)
> +
> def test_recipetool_create_github_tarball(self):
> # Basic test to ensure github URL mangling doesn't apply to release tarballs
> temprecipe = os.path.join(self.tempdir, 'recipe')
> diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> index 9312e4abf13..9bebb3061b1 100644
> --- a/scripts/lib/recipetool/create_buildsys_python.py
> +++ b/scripts/lib/recipetool/create_buildsys_python.py
> @@ -668,6 +668,7 @@ class
> PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
> "poetry.core.masonry.api": "python_poetry_core",
> "flit_core.buildapi": "python_flit_core",
> "hatchling.build": "python_hatchling",
> + "maturin": "python_maturin",
> }
>
> # setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
> --
> 2.34.1
//Peter
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH 0/6] Add 'maturin' python backend support
2023-12-08 22:50 ` [OE-core] [PATCH 0/6] Add 'maturin' python backend support Alexandre Belloni
@ 2023-12-08 23:58 ` Tim Orling
[not found] ` <179F00AD57313E1B.7956@lists.openembedded.org>
1 sibling, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-08 23:58 UTC (permalink / raw)
To: Alexandre Belloni; +Cc: openembedded-core
[-- Attachment #1: Type: text/plain, Size: 5537 bytes --]
On Fri, Dec 8, 2023 at 2:50 PM Alexandre Belloni <
alexandre.belloni@bootlin.com> wrote:
> Hello Tim,
>
> I got this failure, can you check?
>
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6166/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6159/steps/14/logs/stdio
>
> this is from Peter’s change which had not been merged when I sent this
series.
>
> 2023-12-08 22:03:18,822 - oe-selftest - INFO - FAIL:
> recipetool.RecipetoolCreateTests.test_recipetool_create_python3_pep517_maturin
> (subunit.RemotedTestCase)
> 2023-12-08 22:03:18,822 - oe-selftest - INFO -
> ----------------------------------------------------------------------
> 2023-12-08 22:03:18,823 - oe-selftest - INFO -
> testtools.testresult.real._StringException: Traceback (most recent call
> last):
> File
> "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/recipetool.py",
> line 698, in test_recipetool_create_python3_pep517_maturin
> self._test_recipe_contents(recipefile, checkvars, inherits)
> File
> "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/devtool.py",
> line 178, in _test_recipe_contents
> self.assertEqual(missingvars, {}, 'Some expected variables not found
> in recipe: %s' % checkvars)
> File "/usr/lib64/python3.11/unittest/case.py", line 873, in assertEqual
> assertion_func(first, second, msg=msg)
> File "/usr/lib64/python3.11/unittest/case.py", line 1172, in
> assertDictEqual
> self.fail(self._formatMessage(msg, standardMsg))
> File "/usr/lib64/python3.11/unittest/case.py", line 703, in fail
> raise self.failureException(msg)
> AssertionError: {'SRC_URI': 'https://files.pythonhosted.or[586
> chars]238'} != {}
> Diff is 656 characters long. Set self.maxDiff to None to see it. : Some
> expected variables not found in recipe: {'SRC_URI': '
> https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-${PV}.tar.gz',
> 'SRC_URI[md5sum]': '1eb13c211147496c1c9484ff7f8ac438', 'SRC_URI[sha1sum]':
> '0803a731aa793f3eaf4d52f656d7300408ca0b36', 'SRC_URI[sha256sum]':
> '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71',
> 'SRC_URI[sha384sum]':
> 'cca6d9f0ba72ff92e16aaf3d6c628b8df33bdf244cc39c9d59cff9d541f35d4e87ec136e60e4b040ad73c5c69b27cec6',
> 'SRC_URI[sha512sum]':
> 'e6c3081dfa58d9b59f8c33dfe80712d732ac3048a2f8240f9a0f5448d9bfc83e222c1e08b8bb49779b84f685c3bec3060cc935c113a818b1ab8aa955f3df2238'}
>
>
>
>
> On 07/12/2023 15:13:17-0800, Tim Orling wrote:
> > We are increasingly seeing Rust extensions for Python added in the
> > ecosystem. The current best practices approach has moved from using
> > 'setuptools-rust' to using 'maturin'.
> >
> > * Add python3-maturin, including 'native' and 'nativesdk' support.
> > * Add a 'python_maturin' bbclass for the PEP-517 backend.
> > * Add recipetool support for the 'maturin' PEP-517 backend.
> > * Add a very basic 'maturin list-python' smoke test added to oeqa for
> > both 'runtime' (-c testimage) and 'sdk' (-c testsdk).
> >
> > The following changes since commit
> 70ad9b9b309575134834757468cb32c9e3b87448:
> >
> > bitbake: hashserv: sqlite: Ensure sync propagates to database
> connections (2023-12-04 22:36:09 +0000)
> >
> > are available in the Git repository at:
> >
> > https://git.yoctoproject.org/poky-contrib timo/maturin_1.3.2
> > https://git.yoctoproject.org/poky-contrib/log/?h=timo/maturin_1.3.2
> >
> > Tim Orling (6):
> > python3-setuptools-rust: BBCLASSEXTEND + nativesdk
> > python3-maturin: add v1.3.2
> > classes-recipe: add python_maturin.bbclass
> > recipetool: add python_maturin support
> > oe-selfest: add maturn runtime (testimage) test
> > python3-maturin: add sdk (testsdk) test case
> >
> > meta/classes-recipe/python_maturin.bbclass | 17 +
> > meta/conf/distro/include/maintainers.inc | 1 +
> > meta/lib/oeqa/runtime/cases/maturin.py | 23 +
> > meta/lib/oeqa/sdk/cases/maturin.py | 33 +
> > meta/lib/oeqa/selftest/cases/recipetool.py | 34 ++
> > .../python/python3-maturin-crates.inc | 572 ++++++++++++++++++
> > .../python/python3-maturin_1.3.2.bb | 40 ++
> > .../python/python3-setuptools-rust_1.8.1.bb | 2 +-
> > .../lib/recipetool/create_buildsys_python.py | 1 +
> > 9 files changed, 722 insertions(+), 1 deletion(-)
> > create mode 100644 meta/classes-recipe/python_maturin.bbclass
> > create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
> > create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
> > create mode 100644
> meta/recipes-devtools/python/python3-maturin-crates.inc
> > create mode 100644 meta/recipes-devtools/python/
> python3-maturin_1.3.2.bb
> >
> > --
> > 2.34.1
> >
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#191981):
> https://lists.openembedded.org/g/openembedded-core/message/191981
> > Mute This Topic: https://lists.openembedded.org/mt/103045095/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
[-- Attachment #2: Type: text/html, Size: 8195 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH 0/6] Add 'maturin' python backend support
[not found] ` <179F00AD57313E1B.7956@lists.openembedded.org>
@ 2023-12-09 0:59 ` Tim Orling
0 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-09 0:59 UTC (permalink / raw)
To: ticotimo; +Cc: Alexandre Belloni, openembedded-core
[-- Attachment #1: Type: text/plain, Size: 6013 bytes --]
On Fri, Dec 8, 2023 at 3:58 PM Tim Orling via lists.openembedded.org
<ticotimo=gmail.com@lists.openembedded.org> wrote:
>
>
> On Fri, Dec 8, 2023 at 2:50 PM Alexandre Belloni <
> alexandre.belloni@bootlin.com> wrote:
>
>> Hello Tim,
>>
>> I got this failure, can you check?
>>
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6166/steps/14/logs/stdio
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6159/steps/14/logs/stdio
>>
>> this is from Peter’s change which had not been merged when I sent this
> series.
>
Correction: it is from Julien’s pypi recipetool change. The pypi.bbclass
does not create SRC_URI checksums. The inly test case other than mine with
SRC_URI checksums was for —no-pypi setuptools3 and do we have zero coverage.
>
>> 2023-12-08 22:03:18,822 - oe-selftest - INFO - FAIL:
>> recipetool.RecipetoolCreateTests.test_recipetool_create_python3_pep517_maturin
>> (subunit.RemotedTestCase)
>> 2023-12-08 22:03:18,822 - oe-selftest - INFO -
>> ----------------------------------------------------------------------
>> 2023-12-08 22:03:18,823 - oe-selftest - INFO -
>> testtools.testresult.real._StringException: Traceback (most recent call
>> last):
>> File
>> "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/recipetool.py",
>> line 698, in test_recipetool_create_python3_pep517_maturin
>> self._test_recipe_contents(recipefile, checkvars, inherits)
>> File
>> "/home/pokybuild/yocto-worker/oe-selftest-fedora/build/meta/lib/oeqa/selftest/cases/devtool.py",
>> line 178, in _test_recipe_contents
>> self.assertEqual(missingvars, {}, 'Some expected variables not found
>> in recipe: %s' % checkvars)
>> File "/usr/lib64/python3.11/unittest/case.py", line 873, in assertEqual
>> assertion_func(first, second, msg=msg)
>> File "/usr/lib64/python3.11/unittest/case.py", line 1172, in
>> assertDictEqual
>> self.fail(self._formatMessage(msg, standardMsg))
>> File "/usr/lib64/python3.11/unittest/case.py", line 703, in fail
>> raise self.failureException(msg)
>> AssertionError: {'SRC_URI': 'https://files.pythonhosted.or[586
>> chars]238'} != {}
>> Diff is 656 characters long. Set self.maxDiff to None to see it. : Some
>> expected variables not found in recipe: {'SRC_URI': '
>> https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-${PV}.tar.gz',
>> 'SRC_URI[md5sum]': '1eb13c211147496c1c9484ff7f8ac438', 'SRC_URI[sha1sum]':
>> '0803a731aa793f3eaf4d52f656d7300408ca0b36', 'SRC_URI[sha256sum]':
>> '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71',
>> 'SRC_URI[sha384sum]':
>> 'cca6d9f0ba72ff92e16aaf3d6c628b8df33bdf244cc39c9d59cff9d541f35d4e87ec136e60e4b040ad73c5c69b27cec6',
>> 'SRC_URI[sha512sum]':
>> 'e6c3081dfa58d9b59f8c33dfe80712d732ac3048a2f8240f9a0f5448d9bfc83e222c1e08b8bb49779b84f685c3bec3060cc935c113a818b1ab8aa955f3df2238'}
>>
>>
>>
>>
>> On 07/12/2023 15:13:17-0800, Tim Orling wrote:
>> > We are increasingly seeing Rust extensions for Python added in the
>> > ecosystem. The current best practices approach has moved from using
>> > 'setuptools-rust' to using 'maturin'.
>> >
>> > * Add python3-maturin, including 'native' and 'nativesdk' support.
>> > * Add a 'python_maturin' bbclass for the PEP-517 backend.
>> > * Add recipetool support for the 'maturin' PEP-517 backend.
>> > * Add a very basic 'maturin list-python' smoke test added to oeqa for
>> > both 'runtime' (-c testimage) and 'sdk' (-c testsdk).
>> >
>> > The following changes since commit
>> 70ad9b9b309575134834757468cb32c9e3b87448:
>> >
>> > bitbake: hashserv: sqlite: Ensure sync propagates to database
>> connections (2023-12-04 22:36:09 +0000)
>> >
>> > are available in the Git repository at:
>> >
>> > https://git.yoctoproject.org/poky-contrib timo/maturin_1.3.2
>> > https://git.yoctoproject.org/poky-contrib/log/?h=timo/maturin_1.3.2
>> >
>> > Tim Orling (6):
>> > python3-setuptools-rust: BBCLASSEXTEND + nativesdk
>> > python3-maturin: add v1.3.2
>> > classes-recipe: add python_maturin.bbclass
>> > recipetool: add python_maturin support
>> > oe-selfest: add maturn runtime (testimage) test
>> > python3-maturin: add sdk (testsdk) test case
>> >
>> > meta/classes-recipe/python_maturin.bbclass | 17 +
>> > meta/conf/distro/include/maintainers.inc | 1 +
>> > meta/lib/oeqa/runtime/cases/maturin.py | 23 +
>> > meta/lib/oeqa/sdk/cases/maturin.py | 33 +
>> > meta/lib/oeqa/selftest/cases/recipetool.py | 34 ++
>> > .../python/python3-maturin-crates.inc | 572 ++++++++++++++++++
>> > .../python/python3-maturin_1.3.2.bb | 40 ++
>> > .../python/python3-setuptools-rust_1.8.1.bb | 2 +-
>> > .../lib/recipetool/create_buildsys_python.py | 1 +
>> > 9 files changed, 722 insertions(+), 1 deletion(-)
>> > create mode 100644 meta/classes-recipe/python_maturin.bbclass
>> > create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
>> > create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
>> > create mode 100644
>> meta/recipes-devtools/python/python3-maturin-crates.inc
>> > create mode 100644 meta/recipes-devtools/python/
>> python3-maturin_1.3.2.bb
>> >
>> > --
>> > 2.34.1
>> >
>>
>> >
>> >
>> >
>>
>>
>> --
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
>>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192089):
> https://lists.openembedded.org/g/openembedded-core/message/192089
> Mute This Topic: https://lists.openembedded.org/mt/103045095/924729
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> ticotimo@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
[-- Attachment #2: Type: text/html, Size: 9635 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 4/6] recipetool: add python_maturin support
2023-12-07 23:13 ` [PATCH 4/6] recipetool: add python_maturin support Tim Orling
2023-12-08 23:38 ` [OE-core] " Peter Kjellerstedt
@ 2023-12-09 2:02 ` Tim Orling
2023-12-09 11:29 ` [OE-core] " Alexandre Belloni
[not found] ` <179F2663983D88F3.26830@lists.openembedded.org>
1 sibling, 2 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-09 2:02 UTC (permalink / raw)
To: openembedded-core; +Cc: Tim Orling
Add the new python_maturin PEP-517 backend
Add selftest for 'pydantic-core' pypi package.
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
Changes in v2:
- drop all SRC_URI checksums except sha256sum (Peter's change)
* requires "[PATCH v2] recipetool: pypi: do not clobber SRC_URI checksums"
- drop SRC_URI (Julien's change)
- add "inherit pypi" (Julien's change)
meta/lib/oeqa/selftest/cases/recipetool.py | 29 +++++++++++++++++++
.../lib/recipetool/create_buildsys_python.py | 1 +
2 files changed, 30 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
index d10d61bc5b0..8d39f639acf 100644
--- a/meta/lib/oeqa/selftest/cases/recipetool.py
+++ b/meta/lib/oeqa/selftest/cases/recipetool.py
@@ -663,6 +663,35 @@ class RecipetoolCreateTests(RecipetoolBase):
self._test_recipe_contents(recipefile, checkvars, inherits)
+ def test_recipetool_create_python3_pep517_maturin(self):
+ # This test require python 3.11 or above for the tomllib module
+ # or tomli module to be installed
+ try:
+ import tomllib
+ except ImportError:
+ try:
+ import tomli
+ except ImportError:
+ self.skipTest('Test requires python 3.11 or above for tomllib module or tomli module')
+
+ # Test creating python3 package from tarball (using maturin class)
+ temprecipe = os.path.join(self.tempdir, 'recipe')
+ os.makedirs(temprecipe)
+ pn = 'pydantic-core'
+ pv = '2.14.5'
+ recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
+ srcuri = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz' % pv
+ result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+ self.assertTrue(os.path.isfile(recipefile))
+ checkvars = {}
+ checkvars['HOMEPAGE'] = 'https://github.com/pydantic/pydantic-core'
+ checkvars['LICENSE'] = set(['MIT'])
+ checkvars['LIC_FILES_CHKSUM'] = 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
+ checkvars['SRC_URI[sha256sum]'] = '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
+ inherits = ['python_maturin', 'pypi']
+
+ self._test_recipe_contents(recipefile, checkvars, inherits)
+
def test_recipetool_create_github_tarball(self):
# Basic test to ensure github URL mangling doesn't apply to release tarballs
temprecipe = os.path.join(self.tempdir, 'recipe')
diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
index a2af41fdda8..60c59034504 100644
--- a/scripts/lib/recipetool/create_buildsys_python.py
+++ b/scripts/lib/recipetool/create_buildsys_python.py
@@ -735,6 +735,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
"poetry.core.masonry.api": "python_poetry_core",
"flit_core.buildapi": "python_flit_core",
"hatchling.build": "python_hatchling",
+ "maturin": "python_maturin",
}
# setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH v2 4/6] recipetool: add python_maturin support
2023-12-09 2:02 ` [PATCH v2 " Tim Orling
@ 2023-12-09 11:29 ` Alexandre Belloni
[not found] ` <179F2663983D88F3.26830@lists.openembedded.org>
1 sibling, 0 replies; 15+ messages in thread
From: Alexandre Belloni @ 2023-12-09 11:29 UTC (permalink / raw)
To: Tim Orling; +Cc: openembedded-core, Tim Orling
Hello,
maturin is not reproducible:
https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20231208-rfbproj4/packages/diff-html/
On 08/12/2023 18:02:24-0800, Tim Orling wrote:
> Add the new python_maturin PEP-517 backend
>
> Add selftest for 'pydantic-core' pypi package.
>
> Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> ---
> Changes in v2:
> - drop all SRC_URI checksums except sha256sum (Peter's change)
> * requires "[PATCH v2] recipetool: pypi: do not clobber SRC_URI checksums"
> - drop SRC_URI (Julien's change)
> - add "inherit pypi" (Julien's change)
>
> meta/lib/oeqa/selftest/cases/recipetool.py | 29 +++++++++++++++++++
> .../lib/recipetool/create_buildsys_python.py | 1 +
> 2 files changed, 30 insertions(+)
>
> diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
> index d10d61bc5b0..8d39f639acf 100644
> --- a/meta/lib/oeqa/selftest/cases/recipetool.py
> +++ b/meta/lib/oeqa/selftest/cases/recipetool.py
> @@ -663,6 +663,35 @@ class RecipetoolCreateTests(RecipetoolBase):
>
> self._test_recipe_contents(recipefile, checkvars, inherits)
>
> + def test_recipetool_create_python3_pep517_maturin(self):
> + # This test require python 3.11 or above for the tomllib module
> + # or tomli module to be installed
> + try:
> + import tomllib
> + except ImportError:
> + try:
> + import tomli
> + except ImportError:
> + self.skipTest('Test requires python 3.11 or above for tomllib module or tomli module')
> +
> + # Test creating python3 package from tarball (using maturin class)
> + temprecipe = os.path.join(self.tempdir, 'recipe')
> + os.makedirs(temprecipe)
> + pn = 'pydantic-core'
> + pv = '2.14.5'
> + recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
> + srcuri = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz' % pv
> + result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
> + self.assertTrue(os.path.isfile(recipefile))
> + checkvars = {}
> + checkvars['HOMEPAGE'] = 'https://github.com/pydantic/pydantic-core'
> + checkvars['LICENSE'] = set(['MIT'])
> + checkvars['LIC_FILES_CHKSUM'] = 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
> + checkvars['SRC_URI[sha256sum]'] = '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
> + inherits = ['python_maturin', 'pypi']
> +
> + self._test_recipe_contents(recipefile, checkvars, inherits)
> +
> def test_recipetool_create_github_tarball(self):
> # Basic test to ensure github URL mangling doesn't apply to release tarballs
> temprecipe = os.path.join(self.tempdir, 'recipe')
> diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> index a2af41fdda8..60c59034504 100644
> --- a/scripts/lib/recipetool/create_buildsys_python.py
> +++ b/scripts/lib/recipetool/create_buildsys_python.py
> @@ -735,6 +735,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
> "poetry.core.masonry.api": "python_poetry_core",
> "flit_core.buildapi": "python_flit_core",
> "hatchling.build": "python_hatchling",
> + "maturin": "python_maturin",
> }
>
> # setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192096): https://lists.openembedded.org/g/openembedded-core/message/192096
> Mute This Topic: https://lists.openembedded.org/mt/103067787/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
On 07/12/2023 15:13:22-0800, Tim Orling wrote:
> Basic smoke test for maturin to test the 'maturin list-python' case.
>
> [YOCTO #15312]
>
> Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> ---
> meta/lib/oeqa/runtime/cases/maturin.py | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
> create mode 100644 meta/lib/oeqa/runtime/cases/maturin.py
>
> diff --git a/meta/lib/oeqa/runtime/cases/maturin.py b/meta/lib/oeqa/runtime/cases/maturin.py
> new file mode 100644
> index 00000000000..b9a3b4acbcd
> --- /dev/null
> +++ b/meta/lib/oeqa/runtime/cases/maturin.py
> @@ -0,0 +1,23 @@
> +#
> +# Copyright OpenEmbedded Contributors
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +import os
> +
> +from oeqa.runtime.case import OERuntimeTestCase
> +from oeqa.core.decorator.depends import OETestDepends
> +from oeqa.runtime.decorator.package import OEHasPackage
> +
> +class MaturinTest(OERuntimeTestCase):
> + @OETestDepends(['ssh.SSHTest.test_ssh', 'python.PythonTest.test_python3'])
> + @OEHasPackage(['python3-maturin'])
> + def test_maturin_list_python(self):
> + status, output = self.target.run("maturin list-python")
> + self.assertEqual(status, 0)
> + _, py_major = self.target.run("python3 -c 'import sys; print(sys.version_info.major)'")
> + _, py_minor = self.target.run("python3 -c 'import sys; print(sys.version_info.minor)'")
> + python_version = "%s.%s" % (py_major, py_minor)
> + self.assertEqual(output, "🐍 1 python interpreter found:\n"
> + " - CPython %s at /usr/bin/python%s" % (python_version, python_version))
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#191986): https://lists.openembedded.org/g/openembedded-core/message/191986
> Mute This Topic: https://lists.openembedded.org/mt/103045102/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
On 07/12/2023 15:13:23-0800, Tim Orling wrote:
> We expect 'maturin' will be used in SDKs, so it makes sense to also
> test it in the testsdk environment.
>
> To run this test case, you can add the following to local.conf:
> TOOLCHAIN_HOST_TASK:append = " nativesdk-python3-maturin"
>
> And the build and test the SDK:
> bitbake -c populate_sdk core-image-full-cmdline
> bitbake -c testsdk core-image-full-cmdline
>
> You can substitute a different image recipe for "core-image-full-cmdline"
>
> [YOCTO #15312]
>
> Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> ---
> meta/lib/oeqa/sdk/cases/maturin.py | 33 ++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
> create mode 100644 meta/lib/oeqa/sdk/cases/maturin.py
>
> diff --git a/meta/lib/oeqa/sdk/cases/maturin.py b/meta/lib/oeqa/sdk/cases/maturin.py
> new file mode 100644
> index 00000000000..14245bc36e5
> --- /dev/null
> +++ b/meta/lib/oeqa/sdk/cases/maturin.py
> @@ -0,0 +1,33 @@
> +#
> +# Copyright OpenEmbedded Contributors
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +import unittest
> +from oeqa.sdk.case import OESDKTestCase
> +
> +from oeqa.utils.subprocesstweak import errors_have_output
> +
> +errors_have_output()
> +
> +
> +class MaturinTest(OESDKTestCase):
> + def setUp(self):
> + if not (
> + self.tc.hasHostPackage("nativesdk-python3-maturin")
> + or self.tc.hasHostPackage("python3-maturin-native")
> + ):
> + raise unittest.SkipTest("No python3-maturin package in the SDK")
> +
> + def test_maturin_list_python(self):
> + py_major = self._run("python3 -c 'import sys; print(sys.version_info.major)'")
> + py_minor = self._run("python3 -c 'import sys; print(sys.version_info.minor)'")
> + python_version = "%s.%s" % (py_major.strip(), py_minor.strip())
> + cmd = "maturin list-python"
> + output = self._run(cmd)
> + self.assertRegex(output, r"^🐍 1 python interpreter found:\n")
> + self.assertRegex(
> + output,
> + r" - CPython %s (.+)/usr/bin/python%s$" % (python_version, python_version),
> + )
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#191987): https://lists.openembedded.org/g/openembedded-core/message/191987
> Mute This Topic: https://lists.openembedded.org/mt/103045103/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH v2 4/6] recipetool: add python_maturin support
[not found] ` <179F2663983D88F3.26830@lists.openembedded.org>
@ 2023-12-09 11:59 ` Alexandre Belloni
2023-12-14 0:28 ` Tim Orling
0 siblings, 1 reply; 15+ messages in thread
From: Alexandre Belloni @ 2023-12-09 11:59 UTC (permalink / raw)
To: Tim Orling, openembedded-core, Tim Orling
On 09/12/2023 12:29:50+0100, Alexandre Belloni via lists.openembedded.org wrote:
> Hello,
>
> maturin is not reproducible:
>
> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20231208-rfbproj4/packages/diff-html/
Probably related:
WARNING: python3-maturin-1.3.2-r0 do_package_qa: QA Issue: File /usr/bin/.debug/maturin in package python3-maturin-dbg contains reference to TMPDIR
https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8267/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/81/builds/6018/steps/12/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/8141/steps/11/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/108/builds/5453/steps/11/logs/stdio
>
> On 08/12/2023 18:02:24-0800, Tim Orling wrote:
> > Add the new python_maturin PEP-517 backend
> >
> > Add selftest for 'pydantic-core' pypi package.
> >
> > Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> > ---
> > Changes in v2:
> > - drop all SRC_URI checksums except sha256sum (Peter's change)
> > * requires "[PATCH v2] recipetool: pypi: do not clobber SRC_URI checksums"
> > - drop SRC_URI (Julien's change)
> > - add "inherit pypi" (Julien's change)
> >
> > meta/lib/oeqa/selftest/cases/recipetool.py | 29 +++++++++++++++++++
> > .../lib/recipetool/create_buildsys_python.py | 1 +
> > 2 files changed, 30 insertions(+)
> >
> > diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
> > index d10d61bc5b0..8d39f639acf 100644
> > --- a/meta/lib/oeqa/selftest/cases/recipetool.py
> > +++ b/meta/lib/oeqa/selftest/cases/recipetool.py
> > @@ -663,6 +663,35 @@ class RecipetoolCreateTests(RecipetoolBase):
> >
> > self._test_recipe_contents(recipefile, checkvars, inherits)
> >
> > + def test_recipetool_create_python3_pep517_maturin(self):
> > + # This test require python 3.11 or above for the tomllib module
> > + # or tomli module to be installed
> > + try:
> > + import tomllib
> > + except ImportError:
> > + try:
> > + import tomli
> > + except ImportError:
> > + self.skipTest('Test requires python 3.11 or above for tomllib module or tomli module')
> > +
> > + # Test creating python3 package from tarball (using maturin class)
> > + temprecipe = os.path.join(self.tempdir, 'recipe')
> > + os.makedirs(temprecipe)
> > + pn = 'pydantic-core'
> > + pv = '2.14.5'
> > + recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
> > + srcuri = 'https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz' % pv
> > + result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
> > + self.assertTrue(os.path.isfile(recipefile))
> > + checkvars = {}
> > + checkvars['HOMEPAGE'] = 'https://github.com/pydantic/pydantic-core'
> > + checkvars['LICENSE'] = set(['MIT'])
> > + checkvars['LIC_FILES_CHKSUM'] = 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
> > + checkvars['SRC_URI[sha256sum]'] = '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
> > + inherits = ['python_maturin', 'pypi']
> > +
> > + self._test_recipe_contents(recipefile, checkvars, inherits)
> > +
> > def test_recipetool_create_github_tarball(self):
> > # Basic test to ensure github URL mangling doesn't apply to release tarballs
> > temprecipe = os.path.join(self.tempdir, 'recipe')
> > diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> > index a2af41fdda8..60c59034504 100644
> > --- a/scripts/lib/recipetool/create_buildsys_python.py
> > +++ b/scripts/lib/recipetool/create_buildsys_python.py
> > @@ -735,6 +735,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
> > "poetry.core.masonry.api": "python_poetry_core",
> > "flit_core.buildapi": "python_flit_core",
> > "hatchling.build": "python_hatchling",
> > + "maturin": "python_maturin",
> > }
> >
> > # setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
> > --
> > 2.34.1
> >
>
> >
> >
> >
>
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#192097): https://lists.openembedded.org/g/openembedded-core/message/192097
> Mute This Topic: https://lists.openembedded.org/mt/103071823/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [OE-core] [PATCH v2 4/6] recipetool: add python_maturin support
2023-12-09 11:59 ` Alexandre Belloni
@ 2023-12-14 0:28 ` Tim Orling
0 siblings, 0 replies; 15+ messages in thread
From: Tim Orling @ 2023-12-14 0:28 UTC (permalink / raw)
To: Alexandre Belloni; +Cc: Tim Orling, openembedded-core
[-- Attachment #1: Type: text/plain, Size: 5948 bytes --]
On Sat, Dec 9, 2023 at 3:59 AM Alexandre Belloni <
alexandre.belloni@bootlin.com> wrote:
> On 09/12/2023 12:29:50+0100, Alexandre Belloni via lists.openembedded.org
> wrote:
> > Hello,
> >
> > maturin is not reproducible:
> >
> >
> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20231208-rfbproj4/packages/diff-html/
>
>
> Probably related:
>
> WARNING: python3-maturin-1.3.2-r0 do_package_qa: QA Issue: File
> /usr/bin/.debug/maturin in package python3-maturin-dbg contains reference
> to TMPDIR
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8267/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/81/builds/6018/steps/12/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/8141/steps/11/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/108/builds/5453/steps/11/logs/stdio
>
> I think at least this part is sorted:
https://github.com/alexcrichton/bzip2-rs/pull/101
Thank you to khem for making me realize the options passed to the ‘cc’
crate were the issue in this case. (The Makefile is not used, nor are
CFLAGS from the environment)
The reordering bits might be a different problem. If anybody has any
thoughts on that I’m all ears.
>
> >
> > On 08/12/2023 18:02:24-0800, Tim Orling wrote:
> > > Add the new python_maturin PEP-517 backend
> > >
> > > Add selftest for 'pydantic-core' pypi package.
> > >
> > > Signed-off-by: Tim Orling <tim.orling@konsulko.com>
> > > ---
> > > Changes in v2:
> > > - drop all SRC_URI checksums except sha256sum (Peter's change)
> > > * requires "[PATCH v2] recipetool: pypi: do not clobber SRC_URI
> checksums"
> > > - drop SRC_URI (Julien's change)
> > > - add "inherit pypi" (Julien's change)
> > >
> > > meta/lib/oeqa/selftest/cases/recipetool.py | 29 +++++++++++++++++++
> > > .../lib/recipetool/create_buildsys_python.py | 1 +
> > > 2 files changed, 30 insertions(+)
> > >
> > > diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py
> b/meta/lib/oeqa/selftest/cases/recipetool.py
> > > index d10d61bc5b0..8d39f639acf 100644
> > > --- a/meta/lib/oeqa/selftest/cases/recipetool.py
> > > +++ b/meta/lib/oeqa/selftest/cases/recipetool.py
> > > @@ -663,6 +663,35 @@ class RecipetoolCreateTests(RecipetoolBase):
> > >
> > > self._test_recipe_contents(recipefile, checkvars, inherits)
> > >
> > > + def test_recipetool_create_python3_pep517_maturin(self):
> > > + # This test require python 3.11 or above for the tomllib
> module
> > > + # or tomli module to be installed
> > > + try:
> > > + import tomllib
> > > + except ImportError:
> > > + try:
> > > + import tomli
> > > + except ImportError:
> > > + self.skipTest('Test requires python 3.11 or above for
> tomllib module or tomli module')
> > > +
> > > + # Test creating python3 package from tarball (using maturin
> class)
> > > + temprecipe = os.path.join(self.tempdir, 'recipe')
> > > + os.makedirs(temprecipe)
> > > + pn = 'pydantic-core'
> > > + pv = '2.14.5'
> > > + recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' %
> (pn, pv))
> > > + srcuri = '
> https://files.pythonhosted.org/packages/64/26/cffb93fe9c6b5a91c497f37fae14a4b073ecbc47fc36a9979c7aa888b245/pydantic_core-%s.tar.gz'
> % pv
> > > + result = runCmd('recipetool create -o %s %s' % (temprecipe,
> srcuri))
> > > + self.assertTrue(os.path.isfile(recipefile))
> > > + checkvars = {}
> > > + checkvars['HOMEPAGE'] = '
> https://github.com/pydantic/pydantic-core'
> > > + checkvars['LICENSE'] = set(['MIT'])
> > > + checkvars['LIC_FILES_CHKSUM'] =
> 'file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c'
> > > + checkvars['SRC_URI[sha256sum]'] =
> '6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71'
> > > + inherits = ['python_maturin', 'pypi']
> > > +
> > > + self._test_recipe_contents(recipefile, checkvars, inherits)
> > > +
> > > def test_recipetool_create_github_tarball(self):
> > > # Basic test to ensure github URL mangling doesn't apply to
> release tarballs
> > > temprecipe = os.path.join(self.tempdir, 'recipe')
> > > diff --git a/scripts/lib/recipetool/create_buildsys_python.py
> b/scripts/lib/recipetool/create_buildsys_python.py
> > > index a2af41fdda8..60c59034504 100644
> > > --- a/scripts/lib/recipetool/create_buildsys_python.py
> > > +++ b/scripts/lib/recipetool/create_buildsys_python.py
> > > @@ -735,6 +735,7 @@ class
> PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
> > > "poetry.core.masonry.api": "python_poetry_core",
> > > "flit_core.buildapi": "python_flit_core",
> > > "hatchling.build": "python_hatchling",
> > > + "maturin": "python_maturin",
> > > }
> > >
> > > # setuptools.build_meta and flit declare project metadata into
> the "project" section of pyproject.toml
> > > --
> > > 2.34.1
> > >
> >
> > >
> > >
> > >
> >
> >
> >
> > --
> > Alexandre Belloni, co-owner and COO, Bootlin
> > Embedded Linux and Kernel engineering
> > https://bootlin.com
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#192097):
> https://lists.openembedded.org/g/openembedded-core/message/192097
> > Mute This Topic: https://lists.openembedded.org/mt/103071823/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
[-- Attachment #2: Type: text/html, Size: 9555 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2023-12-14 0:29 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-07 23:13 [PATCH 0/6] Add 'maturin' python backend support Tim Orling
2023-12-07 23:13 ` [PATCH 1/6] python3-setuptools-rust: BBCLASSEXTEND + nativesdk Tim Orling
2023-12-07 23:13 ` [PATCH 2/6] python3-maturin: add v1.3.2 Tim Orling
2023-12-07 23:13 ` [PATCH 3/6] classes-recipe: add python_maturin.bbclass Tim Orling
2023-12-07 23:13 ` [PATCH 4/6] recipetool: add python_maturin support Tim Orling
2023-12-08 23:38 ` [OE-core] " Peter Kjellerstedt
2023-12-09 2:02 ` [PATCH v2 " Tim Orling
2023-12-09 11:29 ` [OE-core] " Alexandre Belloni
[not found] ` <179F2663983D88F3.26830@lists.openembedded.org>
2023-12-09 11:59 ` Alexandre Belloni
2023-12-14 0:28 ` Tim Orling
2023-12-07 23:13 ` [PATCH 5/6] oe-selfest: add maturn runtime (testimage) test Tim Orling
2023-12-07 23:13 ` [PATCH 6/6] python3-maturin: add sdk (testsdk) test case Tim Orling
2023-12-08 22:50 ` [OE-core] [PATCH 0/6] Add 'maturin' python backend support Alexandre Belloni
2023-12-08 23:58 ` Tim Orling
[not found] ` <179F00AD57313E1B.7956@lists.openembedded.org>
2023-12-09 0:59 ` Tim Orling
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox