Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-maturin for openSUSE:Factory checked in at 2024-09-29 18:09:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-maturin (Old) and /work/SRC/openSUSE:Factory/.python-maturin.new.29891 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-maturin" Sun Sep 29 18:09:49 2024 rev:42 rq:1204352 version:1.7.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-maturin/python-maturin.changes 2024-08-26 22:06:47.589404709 +0200 +++ /work/SRC/openSUSE:Factory/.python-maturin.new.29891/python-maturin.changes 2024-09-29 18:10:21.596941735 +0200 @@ -1,0 +2,25 @@ +Sat Sep 28 12:41:34 UTC 2024 - Mia Herkt <m...@0x0.st> + +- Update to 1.7.4 + * Fix musllinux rpath for non-cffi bindings + gh#PyO3/maturin#2233 +- Changes in 1.7.3: + * Fix pypi/testpypi upload + gh#PyO3/maturin#2229 +- Changes in 1.7.2: + * Split out test-windows-cross to speed up ci + gh#PyO3/maturin#2188 + * Upgrade cargo-deny + gh#PyO3/maturin#2200 + * Cross building fixes + gh#PyO3/maturin#2204 + * UniFFI: supports bindings generated from multiple crates + gh#PyO3/maturin#2208 + * doc: add -r/--release flag info to tutorial + gh#PyO3/maturin#2211 + * Enable --all-features when building source distribution + gh#PyO3/maturin#2215 + * Replace "." with "/" in module_name + gh#PyO3/maturin#2219 + +------------------------------------------------------------------- Old: ---- maturin-1.7.1.tar.gz New: ---- maturin-1.7.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-maturin.spec ++++++ --- /var/tmp/diff_new_pack.cfIDNZ/_old 2024-09-29 18:10:23.581023707 +0200 +++ /var/tmp/diff_new_pack.cfIDNZ/_new 2024-09-29 18:10:23.581023707 +0200 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-maturin -Version: 1.7.1 +Version: 1.7.4 Release: 0 Summary: Rust/Python Interoperability License: Apache-2.0 OR MIT ++++++ maturin-1.7.1.tar.gz -> maturin-1.7.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/.pre-commit-config.yaml new/maturin-1.7.4/.pre-commit-config.yaml --- old/maturin-1.7.1/.pre-commit-config.yaml 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/.pre-commit-config.yaml 2024-09-26 05:07:15.000000000 +0200 @@ -56,12 +56,12 @@ ) - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.1 + rev: v0.6.7 hooks: - id: ruff-format - id: ruff - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.1 + rev: v1.11.2 hooks: - id: mypy entry: mypy maturin/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/Cargo.lock new/maturin-1.7.4/Cargo.lock --- old/maturin-1.7.1/Cargo.lock 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/Cargo.lock 2024-09-26 05:07:15.000000000 +0200 @@ -3,10 +3,10 @@ version = 3 [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -86,18 +86,9 @@ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" -dependencies = [ - "derive_arbitrary", -] +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "autocfg" @@ -113,17 +104,11 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" @@ -157,9 +142,9 @@ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -173,9 +158,9 @@ [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bytesize" @@ -218,9 +203,9 @@ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -234,7 +219,7 @@ "home", "serde", "serde_derive", - "toml_edit 0.22.14", + "toml_edit 0.22.16", ] [[package]] @@ -282,24 +267,27 @@ [[package]] name = "cargo-zigbuild" -version = "0.18.4" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65004153e67ac23be88a8e244304a872d727b2aa08654dcabfbecd1fdea4a488" +checksum = "e700178b11124560cdbabc8808e938fe6d77abde036b77a4c03a191b02bac854" dependencies = [ "anyhow", + "cargo-config2", "cargo-options", "cargo_metadata", "clap", + "crc", "dirs", "fs-err", "path-slash", "rustc_version", + "rustflags", "semver", "serde", "serde_json", "shlex", "target-lexicon", - "which 6.0.1", + "which 6.0.3", ] [[package]] @@ -336,9 +324,12 @@ [[package]] name = "cc" -version = "1.1.6" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +dependencies = [ + "shlex", +] [[package]] name = "cfb" @@ -359,11 +350,11 @@ [[package]] name = "charset" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" +checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "encoding_rs", ] @@ -439,7 +430,7 @@ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -518,6 +509,21 @@ ] [[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] name = "crc32fast" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -597,17 +603,6 @@ ] [[package]] -name = "derive_arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] name = "dialoguer" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -657,17 +652,6 @@ ] [[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] name = "dissimilar" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -675,9 +659,9 @@ [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" @@ -687,9 +671,9 @@ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -761,9 +745,9 @@ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -864,7 +848,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -932,9 +916,9 @@ [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -1019,9 +1003,9 @@ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", @@ -1045,9 +1029,9 @@ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1132,9 +1116,9 @@ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libmimalloc-sys" @@ -1216,7 +1200,7 @@ [[package]] name = "maturin" -version = "1.7.1" +version = "1.7.4" dependencies = [ "anyhow", "base64 0.21.7", @@ -1242,7 +1226,7 @@ "glob", "goblin", "ignore", - "indexmap 2.2.6", + "indexmap 2.5.0", "indoc", "itertools", "keyring", @@ -1277,17 +1261,17 @@ "textwrap", "thiserror", "time", - "toml 0.8.14", - "toml_edit 0.22.14", + "toml 0.8.15", + "toml_edit 0.22.16", "tracing", "tracing-subscriber", "trycmd", "unicode-xid", "ureq", "url", - "which 6.0.1", + "which 6.0.3", "wild", - "zip 0.6.6", + "zip", ] [[package]] @@ -1338,11 +1322,11 @@ [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -1429,27 +1413,6 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] -name = "num_enum" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] name = "number_prefix" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1484,7 +1447,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -1564,9 +1527,9 @@ [[package]] name = "pep440_rs" -version = "0.6.0" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0a570e7ec9171250cac57614e901f62408094b54b3798bb920d3cf0d4a0e09" +checksum = "466eada3179c2e069ca897b99006cbb33f816290eaeec62464eea907e22ae385" dependencies = [ "once_cell", "serde", @@ -1577,9 +1540,9 @@ [[package]] name = "pep508_rs" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c27e97a3f38c5d691962af7da93c2672b5227d59cf165b87a9b1fd53dd724" +checksum = "3f8877489a99ccc80012333123e434f84e645fe1ede3b30e9d3b815887a12979" dependencies = [ "derivative", "once_cell", @@ -1653,9 +1616,9 @@ [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -1694,18 +1657,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef7061023bcb58a0fc4a4bbe9819c13b0dca7c2abc14da14f5ecc1532ab3a36a" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "pep440_rs", "pep508_rs", "serde", - "toml 0.8.14", + "toml 0.8.15", ] [[package]] name = "python-pkginfo" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4320ca452fe003f8a07afb8e30c315bbd813ae8105f454ddefebf15a24021e1f" +checksum = "ba3f3f0d552c7efdde2b6898bf21b49c4e76b3e6071ff196dfe52109804db896" dependencies = [ "flate2", "fs-err", @@ -1713,7 +1676,7 @@ "rfc2047-decoder", "tar", "thiserror", - "zip 1.1.4", + "zip", ] [[package]] @@ -1812,9 +1775,9 @@ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -1891,9 +1854,9 @@ [[package]] name = "rstest" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682" +checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" dependencies = [ "futures", "futures-timer", @@ -1903,9 +1866,9 @@ [[package]] name = "rstest_macros" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d" +checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" dependencies = [ "cfg-if", "glob", @@ -1915,20 +1878,26 @@ "regex", "relative-path", "rustc_version", - "syn 2.0.66", + "syn 2.0.76", "unicode-ident", ] [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] +name = "rustflags" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fc92159fb50a431c5da366f7627751fe7263cf867f8a30f27fa6063ba02ac0" + +[[package]] name = "rustix" version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1957,9 +1926,9 @@ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -2033,7 +2002,7 @@ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -2059,7 +2028,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -2096,22 +2065,22 @@ [[package]] name = "serde" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -2122,16 +2091,17 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2206,9 +2176,9 @@ [[package]] name = "snapbox" -version = "0.6.10" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40e14d10e4c2b4331ac24c33baa5a03e1fbca81c045b285b53b2a612d28569fb" +checksum = "027c936207f85d10d015e21faf5c676c7e08c453ed371adf55c0874c443ca77a" dependencies = [ "anstream", "anstyle", @@ -2228,9 +2198,9 @@ [[package]] name = "snapbox-macros" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f4c14672714436c09254801c934b203196a51182a5107fb76591c7cc56424d" +checksum = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af" dependencies = [ "anstream", ] @@ -2296,9 +2266,9 @@ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" dependencies = [ "proc-macro2", "quote", @@ -2307,9 +2277,9 @@ [[package]] name = "tar" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" dependencies = [ "filetime", "libc", @@ -2318,18 +2288,19 @@ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", "windows-sys 0.52.0", ] @@ -2366,22 +2337,22 @@ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -2450,14 +2421,14 @@ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.16", ] [[package]] @@ -2475,18 +2446,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -2512,7 +2483,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -2569,9 +2540,9 @@ [[package]] name = "trycmd" -version = "0.15.4" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59709bd8eccada6a3fded26d22a7f2dcee406c18d3bd7ad2605ca3eeb8f6f6ec" +checksum = "3e8673f1dc45acdff8e25a06cc62f8e529563e8acd84237ce83d5a28e2befa12" dependencies = [ "automod", "glob", @@ -2581,7 +2552,7 @@ "serde", "shlex", "snapbox", - "toml_edit 0.22.14", + "toml_edit 0.22.16", ] [[package]] @@ -2645,9 +2616,9 @@ [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unscanny" @@ -2789,9 +2760,9 @@ [[package]] name = "which" -version = "6.0.1" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", @@ -3038,21 +3009,21 @@ "serde_json", "sha2", "tempfile", - "toml 0.8.14", + "toml 0.8.15", "tracing", "tracing-subscriber", "twox-hash", "ureq", "versions", "walkdir", - "zip 0.6.6", + "zip", ] [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" @@ -3071,7 +3042,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.76", ] [[package]] @@ -3093,21 +3064,3 @@ "flate2", "time", ] - -[[package]] -name = "zip" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" -dependencies = [ - "arbitrary", - "bzip2", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.2.6", - "num_enum", - "thiserror", - "time", -] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/Cargo.toml new/maturin-1.7.4/Cargo.toml --- old/maturin-1.7.1/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-1.7.4/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ [package] authors = ["konstin <kons...@mailbox.org>", "messense <messe...@icloud.com>"] name = "maturin" -version = "1.7.1" +version = "1.7.4" description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages" exclude = [ "test-crates/**/*", @@ -97,7 +97,7 @@ clap_complete_command = { version = "0.6.1", optional = true } # cross compile -cargo-zigbuild = { version = "0.18.4", default-features = false, optional = true } +cargo-zigbuild = { version = "0.19.3", default-features = false, optional = true } cargo-xwin = { version = "0.16.5", default-features = false, optional = true } # log @@ -135,7 +135,7 @@ [dev-dependencies] expect-test = "1.4.1" -rstest = "0.21.0" +rstest = "0.22.0" indoc = "2.0.3" pretty_assertions = "1.3.0" rustversion = "1.0.9" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/Changelog.md new/maturin-1.7.4/Changelog.md --- old/maturin-1.7.1/Changelog.md 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/Changelog.md 2024-09-26 05:07:15.000000000 +0200 @@ -1,5 +1,21 @@ # Changelog +## [1.7.4] + +* Fix musllinux rpath for non-cffi bindings in [#2233](https://github.com/PyO3/maturin/pull/2233) +* Add GitHub Actions attestation support to generate-ci in [#2234](https://github.com/PyO3/maturin/pull/2234) + +## [1.7.3] + +* Fix upload regression to pypi/testpypi in [#2229](https://github.com/PyO3/maturin/pull/2229) + +## [1.7.2] + +* Fix cross compilation issues for armv7l, mips64 and ppc in [#2204](https://github.com/PyO3/maturin/pull/2204) +* UniFFI: supports bindings generated from multiple crates in [#2208](https://github.com/PyO3/maturin/pull/2208) +* Enable `--all-features` when building source distribution in [#2215](https://github.com/PyO3/maturin/pull/2215) +* Fix rpath when module-name contains `.` in [#2219](https://github.com/PyO3/maturin/pull/2219) + ## [1.7.1] * Forward `cargo package --list` warnings in [#2186](https://github.com/PyO3/maturin/pull/2186) @@ -976,7 +992,11 @@ * Initial Release -[Unreleased]: https://github.com/pyo3/maturin/compare/v1.7.0...HEAD +[Unreleased]: https://github.com/pyo3/maturin/compare/v1.7.4...HEAD +[1.7.4]: https://github.com/pyo3/maturin/compare/v1.7.3...v1.7.4 +[1.7.3]: https://github.com/pyo3/maturin/compare/v1.7.2...v1.7.3 +[1.7.2]: https://github.com/pyo3/maturin/compare/v1.7.1...v1.7.2 +[1.7.1]: https://github.com/pyo3/maturin/compare/v1.7.0...v1.7.1 [1.7.0]: https://github.com/pyo3/maturin/compare/v1.6.0...v1.7.0 [1.6.0]: https://github.com/pyo3/maturin/compare/v1.5.1...v1.6.0 [1.5.1]: https://github.com/pyo3/maturin/compare/v1.5.0...v1.5.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/PKG-INFO new/maturin-1.7.4/PKG-INFO --- old/maturin-1.7.1/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-1.7.4/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.3 Name: maturin -Version: 1.7.1 +Version: 1.7.4 Classifier: Topic :: Software Development :: Build Tools Classifier: Programming Language :: Rust Classifier: Programming Language :: Python :: Implementation :: CPython @@ -66,6 +66,8 @@ The name of the package will be the name of the cargo project, i.e. the name field in the `[package]` section of `Cargo.toml`. The name of the module, which you are using when importing, will be the `name` value in the `[lib]` section (which defaults to the name of the package). For binaries, it's simply the name of the binary generated by cargo. +When using `maturin build` and `maturin develop` commands, you can compile a performance-optimized program by adding the `-r` or `--release` flag. + ## Python packaging basics Python packages come in two formats: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/README.md new/maturin-1.7.4/README.md --- old/maturin-1.7.1/README.md 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/README.md 2024-09-26 05:07:15.000000000 +0200 @@ -41,6 +41,8 @@ The name of the package will be the name of the cargo project, i.e. the name field in the `[package]` section of `Cargo.toml`. The name of the module, which you are using when importing, will be the `name` value in the `[lib]` section (which defaults to the name of the package). For binaries, it's simply the name of the binary generated by cargo. +When using `maturin build` and `maturin develop` commands, you can compile a performance-optimized program by adding the `-r` or `--release` flag. + ## Python packaging basics Python packages come in two formats: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/build_context.rs new/maturin-1.7.4/src/build_context.rs --- old/maturin-1.7.1/src/build_context.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/build_context.rs 2024-09-26 05:07:15.000000000 +0200 @@ -479,13 +479,17 @@ eprintln!(" {}", lib_path.display()); } - // Currently artifact .so file always resides at ${module_name}/${module_name}.so - let artifact_dir = Path::new(&self.module_name); + let artifact_dir = match self.bridge() { + // cffi bindings that contains '.' in the module name will be split into directories + BridgeModel::Cffi => self.module_name.split(".").collect::<PathBuf>(), + // For other bindings artifact .so file usually resides at ${module_name}/${module_name}.so + _ => PathBuf::from(&self.module_name), + }; for artifact in artifacts { let mut new_rpaths = patchelf::get_rpath(&artifact.path)?; // TODO: clean existing rpath entries if it's not pointed to a location within the wheel // See https://github.com/pypa/auditwheel/blob/353c24250d66951d5ac7e60b97471a6da76c123f/src/auditwheel/repair.py#L160 - let new_rpath = Path::new("$ORIGIN").join(relpath(&libs_dir, artifact_dir)); + let new_rpath = Path::new("$ORIGIN").join(relpath(&libs_dir, &artifact_dir)); new_rpaths.push(new_rpath.to_str().unwrap().to_string()); let new_rpath = new_rpaths.join(":"); patchelf::set_rpath(&artifact.path, &new_rpath)?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/ci.rs new/maturin-1.7.4/src/ci.rs --- old/maturin-1.7.1/src/ci.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/ci.rs 2024-09-26 05:07:15.000000000 +0200 @@ -576,23 +576,31 @@ r#" release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" + if: ${{{{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}}} needs: [{needs}] "#, needs = needs.join(", ") )); - if platforms.contains(&Platform::Emscripten) { - conf.push_str( - r#" permissions: + + conf.push_str( + r#" permissions: + # Use to sign the release artifacts + id-token: write # Used to upload release artifacts contents: write + # Used to generate artifact attestation + attestations: write "#, - ); - } + ); conf.push_str( r#" steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} @@ -798,11 +806,23 @@ release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} @@ -960,11 +980,23 @@ release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} @@ -1219,11 +1251,23 @@ release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} @@ -1383,11 +1427,23 @@ release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/main.rs new/maturin-1.7.4/src/main.rs --- old/maturin-1.7.1/src/main.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/main.rs 2024-09-26 05:07:15.000000000 +0200 @@ -311,6 +311,9 @@ out: Some(sdist_directory), cargo: CargoOptions { manifest_path, + // Enable all features to ensure all optional path dependencies are packaged + // into source distribution + all_features: true, ..Default::default() }, ..Default::default() @@ -417,6 +420,9 @@ out, cargo: CargoOptions { manifest_path, + // Enable all features to ensure all optional path dependencies are packaged + // into source distribution + all_features: true, ..Default::default() }, ..Default::default() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/module_writer.rs new/maturin-1.7.4/src/module_writer.rs --- old/maturin-1.7.1/src/module_writer.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/module_writer.rs 2024-09-26 05:07:15.000000000 +0200 @@ -984,7 +984,14 @@ .no_deps() .verbose(true) .exec()?; - let root_pkg = cargo_metadata.root_package(); + let root_pkg = match cargo_metadata.root_package() { + Some(pkg) => Some(pkg), + None => cargo_metadata + .packages + .iter() + .find(|p| p.manifest_path == manifest_path), + }; + let has_uniffi_bindgen_target = root_pkg .map(|pkg| { pkg.targets @@ -1093,7 +1100,6 @@ bail!("Command {:?} failed", cmd); } - let py_binding = binding_dir.join(&py_binding_name).with_extension("py"); // uniffi bindings hardcoded the extension filenames let cdylib_name = match cdylib_name { Some(name) => name, @@ -1108,7 +1114,7 @@ Ok(UniFfiBindings { name: py_binding_name, cdylib, - path: py_binding, + path: binding_dir, }) } @@ -1128,7 +1134,7 @@ let UniFfiBindings { name: binding_name, cdylib, - path: uniffi_binding, + path: binding_dir, } = generate_uniffi_bindings(crate_dir, target_dir, target_os, artifact)?; let py_init = format!("from .{binding_name} import * # NOQA\n"); @@ -1150,12 +1156,14 @@ ))?; File::create(base_path.join("__init__.py"))?.write_all(py_init.as_bytes())?; - let target = base_path.join(&binding_name).with_extension("py"); - fs::copy(&uniffi_binding, &target).context(format!( - "Failed to copy {} to {}", - uniffi_binding.display(), - target.display() - ))?; + if let Ok(read_dir) = fs::read_dir(&binding_dir) { + for binding_file in read_dir.flatten() { + let target: PathBuf = base_path.join(binding_file.file_name()); + fs::copy(binding_file.path(), &target).with_context(|| { + format!("Failed to copy {:?} to {:?}", binding_file.path(), target) + })?; + } + } } let relative = project_layout @@ -1181,10 +1189,11 @@ if !editable || project_layout.python_module.is_none() { writer.add_bytes(module.join("__init__.py"), None, py_init.as_bytes())?; - writer.add_file( - module.join(binding_name).with_extension("py"), - uniffi_binding, - )?; + if let Ok(read_dir) = fs::read_dir(binding_dir) { + for binding_file in read_dir.flatten() { + writer.add_file(module.join(binding_file.file_name()), binding_file.path())?; + } + } writer.add_file_with_permissions(module.join(cdylib), artifact, 0o755)?; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/python_interpreter/config.rs new/maturin-1.7.4/src/python_interpreter/config.rs --- old/maturin-1.7.1/src/python_interpreter/config.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/python_interpreter/config.rs 2024-09-26 05:07:15.000000000 +0200 @@ -47,26 +47,8 @@ // Python 2 is not supported return None; } - let python_arch = if matches!(target.target_arch(), Arch::Armv6L | Arch::Armv7L) { - "arm" - } else if matches!(target.target_arch(), Arch::Powerpc64Le) && python_impl == PyPy { - "ppc_64" - } else if matches!(target.target_arch(), Arch::X86) && python_impl == PyPy { - "x86" - } else { - target.get_python_arch() - }; - // See https://github.com/pypa/auditwheel/issues/349 - let target_env = match python_impl { - CPython => { - if python_version >= (3, 11) { - target.target_env().to_string() - } else { - target.target_env().to_string().replace("musl", "gnu") - } - } - PyPy | GraalPy => "gnu".to_string(), - }; + let python_ext_arch = target.get_python_ext_arch(python_impl); + let target_env = target.get_python_target_env(python_impl, python_version); match (target.target_os(), python_impl) { (Os::Linux, CPython) => { let abiflags = if python_version < (3, 8) { @@ -77,7 +59,7 @@ let ldversion = format!("{}{}{}", major, minor, abiflags); let ext_suffix = format!( ".cpython-{}-{}-linux-{}.so", - ldversion, python_arch, target_env + ldversion, python_ext_arch, target_env ); Some(Self { major, @@ -90,7 +72,8 @@ } (Os::Linux, PyPy) => { let abi_tag = format!("pypy{}{}-{}", major, minor, PYPY_ABI_TAG); - let ext_suffix = format!(".{}-{}-linux-{}.so", abi_tag, python_arch, target_env); + let ext_suffix = + format!(".{}-{}-linux-{}.so", abi_tag, python_ext_arch, target_env); Some(Self { major, minor, @@ -204,7 +187,8 @@ } (Os::Emscripten, CPython) => { let ldversion = format!("{}{}", major, minor); - let ext_suffix = format!(".cpython-{}-{}-emscripten.so", ldversion, python_arch); + let ext_suffix = + format!(".cpython-{}-{}-emscripten.so", ldversion, python_ext_arch); Some(Self { major, minor, @@ -300,19 +284,14 @@ }; let file_ext = if target.is_windows() { "pyd" } else { "so" }; let ext_suffix = if target.is_linux() || target.is_macos() { - // See https://github.com/pypa/auditwheel/issues/349 - let target_env = if (major, minor) >= (3, 11) { - target.target_env().to_string() - } else { - target.target_env().to_string().replace("musl", "gnu") - }; + let target_env = target.get_python_target_env(interpreter_kind, (major, minor)); match interpreter_kind { InterpreterKind::CPython => ext_suffix.unwrap_or_else(|| { // Eg: .cpython-38-x86_64-linux-gnu.so format!( ".cpython-{}-{}-{}-{}.{}", abi_tag, - target.get_python_arch(), + target.get_python_ext_arch(interpreter_kind), target.get_python_os(), target_env, file_ext, @@ -325,7 +304,7 @@ major, minor, abi_tag, - target.get_python_arch(), + target.get_python_ext_arch(interpreter_kind), target.get_python_os(), target_env, file_ext, @@ -336,7 +315,7 @@ format!( ".{}-{}-{}.{}", abi_tag.replace('_', "-"), - target.get_python_arch(), + target.get_python_ext_arch(interpreter_kind), target.get_python_os(), file_ext, ) @@ -347,7 +326,7 @@ format!( ".cpython-{}-{}-{}.{}", abi_tag, - target.get_python_arch(), + target.get_python_ext_arch(interpreter_kind), target.get_python_os(), file_ext ) @@ -446,6 +425,33 @@ ); let sysconfig = InterpreterConfig::lookup_one( + &Target::from_target_triple(Some("powerpc-unknown-linux-gnu".to_string())).unwrap(), + InterpreterKind::CPython, + (3, 10), + ) + .unwrap(); + assert_eq!(sysconfig.ext_suffix, ".cpython-310-powerpc-linux-gnu.so"); + + let sysconfig = InterpreterConfig::lookup_one( + &Target::from_target_triple(Some("mips64-unknown-linux-gnu".to_string())).unwrap(), + InterpreterKind::CPython, + (3, 10), + ) + .unwrap(); + assert_eq!( + sysconfig.ext_suffix, + ".cpython-310-mips64-linux-gnuabi64.so" + ); + + let sysconfig = InterpreterConfig::lookup_one( + &Target::from_target_triple(Some("mips-unknown-linux-gnu".to_string())).unwrap(), + InterpreterKind::CPython, + (3, 10), + ) + .unwrap(); + assert_eq!(sysconfig.ext_suffix, ".cpython-310-mips-linux-gnu.so"); + + let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("s390x-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/target.rs new/maturin-1.7.4/src/target.rs --- old/maturin-1.7.1/src/target.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/target.rs 2024-09-26 05:07:15.000000000 +0200 @@ -1,4 +1,6 @@ use crate::cross_compile::is_cross_compiling; +use crate::python_interpreter::InterpreterKind; +use crate::python_interpreter::InterpreterKind::{CPython, GraalPy, PyPy}; use crate::PlatformTag; use anyhow::{anyhow, bail, format_err, Result}; use platform_info::*; @@ -368,6 +370,44 @@ } } + /// Returns the extension architecture name python uses in `ext_suffix` for this architecture. + pub fn get_python_ext_arch(&self, python_impl: InterpreterKind) -> &str { + if matches!(self.target_arch(), Arch::Armv6L | Arch::Armv7L) { + "arm" + } else if matches!(self.target_arch(), Arch::Powerpc64Le) + && python_impl == InterpreterKind::PyPy + { + "ppc_64" + } else if matches!(self.target_arch(), Arch::X86) && python_impl == InterpreterKind::PyPy { + "x86" + } else if matches!(self.target_arch(), Arch::Powerpc) { + "powerpc" + } else { + self.get_python_arch() + } + } + + /// Returns the environment python uses in `ext_suffix` for this architecture. + pub fn get_python_target_env( + &self, + python_impl: InterpreterKind, + python_version: (usize, usize), + ) -> String { + match python_impl { + CPython => { + // For musl handling see https://github.com/pypa/auditwheel/issues/349 + if matches!(self.target_arch(), Arch::Mips64 | Arch::Mips64el) && self.is_linux() { + "gnuabi64".to_string() + } else if python_version >= (3, 11) { + self.target_env().to_string() + } else { + self.target_env().to_string().replace("musl", "gnu") + } + } + PyPy | GraalPy => "gnu".to_string(), + } + } + /// Returns the name python uses in `sys.platform` for this os pub fn get_python_os(&self) -> &str { match self.os { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.7.1/src/upload.rs new/maturin-1.7.4/src/upload.rs --- old/maturin-1.7.1/src/upload.rs 2024-08-22 00:02:56.000000000 +0200 +++ new/maturin-1.7.4/src/upload.rs 2024-09-26 05:07:15.000000000 +0200 @@ -59,8 +59,9 @@ } impl PublishOpt { - const DEFAULT_REPOSITORY_URL: &'static str = "https://upload.pypi.org/legacy/"; - const TEST_REPOSITORY_URL: &'static str = "https://test.pypi.org/legacy/"; + // Here we omit trailing slashes from the repository URL, which we'll add back in `complete_registry` + const DEFAULT_REPOSITORY_URL: &'static str = "https://upload.pypi.org/legacy"; + const TEST_REPOSITORY_URL: &'static str = "https://test.pypi.org/legacy"; /// Set to non interactive mode if we're running on CI pub fn non_interactive_on_ci(&mut self) { @@ -316,20 +317,33 @@ let pypirc = load_pypirc(); let (registry_name, registry_url) = if let Some(repository_url) = opt.repository_url.as_deref() { - let name = match repository_url { - PublishOpt::DEFAULT_REPOSITORY_URL => Some("pypi"), - PublishOpt::TEST_REPOSITORY_URL => Some("testpypi"), - _ => None, - }; - (name, repository_url.to_string()) + // to normalize URLs by removing trailing slashes + match repository_url.trim_end_matches('/') { + PublishOpt::DEFAULT_REPOSITORY_URL => ( + Some("pypi"), + // Add trailing slash back + format!("{}/", PublishOpt::DEFAULT_REPOSITORY_URL), + ), + PublishOpt::TEST_REPOSITORY_URL => ( + Some("testpypi"), + // Add trailing slash back + format!("{}/", PublishOpt::TEST_REPOSITORY_URL), + ), + _ => (None, repository_url.to_string()), + } } else if let Some(url) = pypirc.get(&opt.repository, "repository") { (Some(opt.repository.as_str()), url) } else if opt.repository == "pypi" { - (Some("pypi"), PublishOpt::DEFAULT_REPOSITORY_URL.to_string()) + ( + Some("pypi"), + // Add trailing slash back + format!("{}/", PublishOpt::DEFAULT_REPOSITORY_URL), + ) } else if opt.repository == "testpypi" { ( Some("testpypi"), - PublishOpt::TEST_REPOSITORY_URL.to_string(), + // Add trailing slash back + format!("{}/", PublishOpt::TEST_REPOSITORY_URL), ) } else { bail!( ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/python-maturin/vendor.tar.xz /work/SRC/openSUSE:Factory/.python-maturin.new.29891/vendor.tar.xz differ: char 15, line 1