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 2021-05-08 22:07:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-maturin (Old) and /work/SRC/openSUSE:Factory/.python-maturin.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-maturin" Sat May 8 22:07:51 2021 rev:2 rq:891567 version:0.10.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-maturin/python-maturin.changes 2021-04-22 18:06:09.446713953 +0200 +++ /work/SRC/openSUSE:Factory/.python-maturin.new.2988/python-maturin.changes 2021-05-08 22:09:08.049296589 +0200 @@ -1,0 +2,11 @@ +Sat May 8 17:06:53 UTC 2021 - Mia Herkt <[email protected]> + +- Update to 0.10.4 + * Interpreter search now uses python 3.6 to 3.12 + gh#PyO3/maturin#495 + * Consider requires-python when searching for interpreters + gh#PyO3/maturin#495 + * Support Rust extension as a submodule in mixed Python/Rust + project gh#PyO3/maturin#489 + +------------------------------------------------------------------- Old: ---- maturin-0.10.3.tar.gz New: ---- maturin-0.10.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-maturin.spec ++++++ --- /var/tmp/diff_new_pack.1RACe7/_old 2021-05-08 22:09:08.993292502 +0200 +++ /var/tmp/diff_new_pack.1RACe7/_new 2021-05-08 22:09:08.997292484 +0200 @@ -16,12 +16,13 @@ # +%define skip_python2 1 %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-maturin -Version: 0.10.3 +Version: 0.10.4 Release: 0 Summary: Rust/Python Interoperability -License: MIT OR Apache-2.0 +License: Apache-2.0 OR MIT URL: https://github.com/PyO3/maturin Source: https://files.pythonhosted.org/packages/source/m/maturin/maturin-%{version}.tar.gz Source1: vendor.tar.xz @@ -31,7 +32,7 @@ BuildRequires: python-rpm-macros BuildRequires: rust-packaging Requires(post): update-alternatives -Requires(postun): update-alternatives +Requires(postun):update-alternatives %python_subpackages %description ++++++ maturin-0.10.3.tar.gz -> maturin-0.10.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/.cirrus.yml new/maturin-0.10.4/.cirrus.yml --- old/maturin-0.10.3/.cirrus.yml 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/.cirrus.yml 2021-04-28 12:17:09.000000000 +0200 @@ -1,5 +1,5 @@ freebsd_instance: - image_family: freebsd-12-1 + image_family: freebsd-12-2 env: RUST_BACKTRACE: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/.github/workflows/lint.yml new/maturin-0.10.4/.github/workflows/lint.yml --- old/maturin-0.10.3/.github/workflows/lint.yml 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/.github/workflows/lint.yml 2021-04-28 12:17:09.000000000 +0200 @@ -40,6 +40,6 @@ steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - - uses: psf/[email protected] # https://github.com/psf/black/issues/2079 + - uses: psf/[email protected] with: args: ". --check" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/.github/workflows/test-docker.yml new/maturin-0.10.4/.github/workflows/test-docker.yml --- old/maturin-0.10.3/.github/workflows/test-docker.yml 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/.github/workflows/test-docker.yml 2021-04-28 12:17:09.000000000 +0200 @@ -17,7 +17,7 @@ python-version: 3.8 - name: Build Docker container run: | - docker pull konstin2/maturin - docker build --cache-from konstin2/maturin -t maturin . + docker pull konstin2/maturin:main + docker build --cache-from konstin2/maturin:main -t maturin . - name: Test the Docker container run: ./test-dockerfile.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/.github/workflows/update-docker-main.yml new/maturin-0.10.4/.github/workflows/update-docker-main.yml --- old/maturin-0.10.3/.github/workflows/update-docker-main.yml 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/.github/workflows/update-docker-main.yml 2021-04-28 12:17:09.000000000 +0200 @@ -16,7 +16,7 @@ with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - cache-from: konstin2/maturin:main + cache_froms: konstin2/maturin:main repository: konstin2/maturin tag_with_ref: false tags: main diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/Cargo.lock new/maturin-0.10.4/Cargo.lock --- old/maturin-0.10.3/Cargo.lock 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/Cargo.lock 2021-04-28 12:17:09.000000000 +0200 @@ -71,18 +71,6 @@ checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" [[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] name = "ascii" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -107,11 +95,12 @@ [[package]] name = "backtrace" -version = "0.3.56" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", @@ -130,12 +119,6 @@ [[package]] name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" @@ -147,17 +130,6 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - -[[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -261,9 +233,9 @@ [[package]] name = "cbindgen" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97449daf9b8c245bcad10bbc7c9f4a37c06172c18dd5f9fac340deefc309b957" +checksum = "38728c31b994e4b849cf59feefb4a8bf26acd299ee0b92c9fb35bd14ad4b8dfa" dependencies = [ "heck", "indexmap", @@ -351,15 +323,9 @@ [[package]] name = "configparser" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2616d8c1fbf887d76dd8e067ec1bc3be7669994378428b4415a8e4ad57baae1" - -[[package]] -name = "constant_time_eq" -version = "0.1.5" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "4aad39d76dbe45b809ef6d783b8c597732225b8f3d6c4d8ceb4a4f834a844ffe" [[package]] name = "core-foundation" @@ -393,17 +359,6 @@ ] [[package]] -name = "crossbeam-utils" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49" -dependencies = [ - "autocfg", - "cfg-if", - "lazy_static", -] - -[[package]] name = "crypto-mac" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -444,18 +399,18 @@ [[package]] name = "dirs" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", "redox_users", @@ -492,9 +447,9 @@ [[package]] name = "fat-macho" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3543f3e8d37aa0022a95f9984ff069cab35ff2bbec8996b99c99cb419a0319b6" +checksum = "7cea1ef4f3c3d80c52baa078f176033432c66260c687271007c6b95f33a424fa" dependencies = [ "goblin", "llvm-bitcode", @@ -508,7 +463,7 @@ dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.5", + "redox_syscall", "winapi", ] @@ -548,30 +503,30 @@ [[package]] name = "futures-channel" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" +checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" +checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" [[package]] name = "futures-io" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59" +checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" [[package]] name = "futures-macro" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7" +checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -581,21 +536,21 @@ [[package]] name = "futures-sink" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" +checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" [[package]] name = "futures-task" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" +checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" [[package]] name = "futures-util" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" +checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" dependencies = [ "futures-core", "futures-io", @@ -655,9 +610,9 @@ [[package]] name = "goblin" -version = "0.3.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "669cdc3826f69a51d3f8fc3f86de81c2378110254f678b8407977736122057a4" +checksum = "532a09cd3df2c6bbfc795fb0434bff8f22255d1d07328180e918a2e6ce122d4d" dependencies = [ "log", "plain", @@ -751,15 +706,15 @@ [[package]] name = "httparse" -version = "1.3.6" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc35c995b9d93ec174cf9a27d425c7892722101e14993cd227fdb51d70cf9589" +checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" [[package]] name = "human-panic" @@ -787,9 +742,9 @@ [[package]] name = "hyper" -version = "0.14.5" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf09f61b52cfcf4c00de50df88ae423d6c02354e385a86341133b5338630ad1" +checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" dependencies = [ "bytes", "futures-channel", @@ -826,9 +781,9 @@ [[package]] name = "idna" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -895,9 +850,9 @@ [[package]] name = "libc" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "linked-hash-map" @@ -925,11 +880,11 @@ [[package]] name = "mailparse" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31de1f9043c582efde7dbd93de56600df12b6c4488a67eeaefa74ea364019b22" +checksum = "62db73ff1a42b0e3a8858cf0d5c183bdfc23491f7294ae4a8200c83577457386" dependencies = [ - "base64 0.12.3", + "base64 0.13.0", "charset", "quoted_printable", ] @@ -942,7 +897,7 @@ [[package]] name = "maturin" -version = "0.10.3" +version = "0.10.4" dependencies = [ "anyhow", "base64 0.13.0", @@ -1197,18 +1152,18 @@ [[package]] name = "pin-project" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc174859768806e91ae575187ada95c91a29e96a98dc5d2cd9a1fed039501ba6" +checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a490329918e856ed1b083f244e3bfe2d8c4f336407e4ea9e1a9f479ff09049e5" +checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" dependencies = [ "proc-macro2", "quote", @@ -1256,12 +1211,6 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] -name = "podio" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b18befed8bc2b61abc79a457295e7e838417326da1586050b919414073977f19" - -[[package]] name = "ppv-lite86" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1435,35 +1384,28 @@ [[package]] name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041" dependencies = [ "bitflags", ] [[package]] name = "redox_users" -version = "0.3.5" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", + "getrandom 0.2.2", + "redox_syscall", ] [[package]] name = "regex" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19" +checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759" dependencies = [ "aho-corasick", "memchr", @@ -1487,9 +1429,9 @@ [[package]] name = "reqwest" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf12057f289428dbf5c591c74bf10392e4a8003f993405a902f20117019022d4" +checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" dependencies = [ "base64 0.13.0", "bytes", @@ -1547,18 +1489,6 @@ ] [[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", -] - -[[package]] name = "rustc-demangle" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1566,9 +1496,9 @@ [[package]] name = "rustls" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ "base64 0.13.0", "log", @@ -1614,9 +1544,9 @@ [[package]] name = "sct" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ "ring", "untrusted", @@ -1744,9 +1674,9 @@ [[package]] name = "slab" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" [[package]] name = "socket2" @@ -1802,9 +1732,9 @@ [[package]] name = "syn" -version = "1.0.69" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb" +checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" dependencies = [ "proc-macro2", "quote", @@ -1831,7 +1761,7 @@ "cfg-if", "libc", "rand 0.8.3", - "redox_syscall 0.2.5", + "redox_syscall", "remove_dir_all", "winapi", ] @@ -1901,9 +1831,9 @@ [[package]] name = "tokio" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134af885d758d645f0f0505c9a8b3f9bf8a348fd822e112ab5248138348f1722" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" dependencies = [ "autocfg", "bytes", @@ -1927,9 +1857,9 @@ [[package]] name = "tokio-util" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5143d049e85af7fbc36f5454d990e62c2df705b3589f123b71f441b6b59f443f" +checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" dependencies = [ "bytes", "futures-core", @@ -2289,13 +2219,14 @@ [[package]] name = "zip" -version = "0.5.6" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58287c28d78507f5f91f2a4cf1e8310e2c76fd4c6932f93ac60fd1ceb402db7d" +checksum = "9c83dc9b784d252127720168abd71ea82bf8c3d96b17dc565b5e2a02854f2b27" dependencies = [ + "byteorder", "bzip2", "crc32fast", "flate2", - "podio", + "thiserror", "time", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/Cargo.toml new/maturin-0.10.4/Cargo.toml --- old/maturin-0.10.3/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-0.10.4/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ [package] authors = ["konstin <[email protected]>"] name = "maturin" -version = "0.10.3" +version = "0.10.4" description = "Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages" exclude = ["test-crates/**/*", "sysconfig/*", "test-data/*", "ci/*", "tests/*"] readme = "Readme.md" @@ -37,9 +37,9 @@ bytesize = "1.0.1" glob = "0.3.0" cargo_metadata = "0.13.1" -cbindgen = { version = "0.18.0", default-features = false } +cbindgen = { version = "0.19.0", default-features = false } flate2 = "1.0.18" -goblin = "0.3.4" +goblin = "0.4.0" human-panic = { version = "1.0.3", optional = true } keyring = { version = "0.10.1", optional = true } platform-info = "0.1.0" @@ -63,7 +63,7 @@ configparser = { version = "2.0.0", optional = true } mailparse = "0.13.2" fs-err = "2.5.0" -fat-macho = "0.4.2" +fat-macho = "0.4.3" toml_edit = "0.2.0" once_cell = "1.7.2" scroll = "0.10.2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/Changelog.md new/maturin-0.10.4/Changelog.md --- old/maturin-0.10.3/Changelog.md 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/Changelog.md 2021-04-28 12:17:09.000000000 +0200 @@ -5,7 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) (for the cli, not for the crate). -## Unreleased +## 0.10.4 - 2021-04-28 + + * Interpreter search now uses python 3.6 to 3.12 in [#495](https://github.com/PyO3/maturin/pull/495) + * Consider requires-python when searching for interpreters in [#495](https://github.com/PyO3/maturin/pull/495) + * Support Rust extension as a submodule in mixed Python/Rust projects in [#489](https://github.com/PyO3/maturin/pull/489) ## 0.10.3 - 2021-04-13 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/Dockerfile new/maturin-0.10.4/Dockerfile --- old/maturin-0.10.3/Dockerfile 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/Dockerfile 2021-04-28 12:17:09.000000000 +0200 @@ -1,3 +1,26 @@ +FROM quay.io/pypa/manylinux2010_x86_64 as builder + +ENV PATH /root/.cargo/bin:$PATH + +RUN curl --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + +# Compile dependencies only for build caching +ADD Cargo.toml /maturin/Cargo.toml +ADD Cargo.lock /maturin/Cargo.lock +RUN mkdir /maturin/src && \ + touch /maturin/src/lib.rs && \ + echo 'fn main() { println!("Dummy") }' > /maturin/src/main.rs && \ + cargo rustc --bin maturin --manifest-path /maturin/Cargo.toml --release -- -C link-arg=-s + +ADD . /maturin/ + +# Manually update the timestamps as ADD keeps the local timestamps and cargo would then believe the cache is fresh +RUN touch /maturin/src/lib.rs /maturin/src/main.rs + +RUN cargo rustc --bin maturin --manifest-path /maturin/Cargo.toml --release -- -C link-arg=-s \ + && mv /maturin/target/release/maturin /usr/bin/maturin \ + && rm -rf /maturin + FROM quay.io/pypa/manylinux2010_x86_64 ENV PATH /root/.cargo/bin:$PATH @@ -10,11 +33,7 @@ && python3 -m pip install --no-cache-dir cffi \ && mkdir /io -ADD . /maturin/ - -RUN cargo rustc --bin maturin --manifest-path /maturin/Cargo.toml --release -- -C link-arg=-s \ - && mv /maturin/target/release/maturin /usr/bin/maturin \ - && rm -rf /maturin +COPY --from=builder /usr/bin/maturin /usr/bin/maturin WORKDIR /io diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/PKG-INFO new/maturin-0.10.4/PKG-INFO --- old/maturin-0.10.3/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-0.10.4/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: maturin -Version: 0.10.3 +Version: 0.10.4 Classifiers: Topic :: Software Development :: Build Tools Classifiers: Programming Language :: Rust Classifiers: Programming Language :: Python :: Implementation :: CPython diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/setup.py new/maturin-0.10.4/setup.py --- old/maturin-0.10.3/setup.py 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/setup.py 2021-04-28 12:17:09.000000000 +0200 @@ -60,16 +60,26 @@ "(https://www.rust-lang.org/tools/install) and try again" ) - cargo_args = [cargo, "rustc", "--bin", "maturin", "--message-format=json"] + cargo_args = [ + cargo, + "rustc", + "--release", + "--bin", + "maturin", + "--message-format=json", + ] if platform.machine() in ("ppc64le", "ppc64", "powerpc"): cargo_args.extend( ["--no-default-features", "--features=upload,log,human-panic"] ) - cargo_args.extend(["--", "-C", "link-arg=-s"]) - - metadata = json.loads(subprocess.check_output(cargo_args).splitlines()[-2]) + try: + metadata = json.loads( + subprocess.check_output(cargo_args).splitlines()[-2] + ) + except subprocess.CalledProcessError as exc: + raise RuntimeError("build maturin failed:\n" + exc.output.decode()) print(metadata) assert metadata["target"]["name"] == "maturin" source = metadata["filenames"][0] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/build_context.rs new/maturin-0.10.4/src/build_context.rs --- old/maturin-0.10.3/src/build_context.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/build_context.rs 2021-04-28 12:17:09.000000000 +0200 @@ -6,8 +6,9 @@ use crate::module_writer::write_python_part; use crate::module_writer::WheelWriter; use crate::module_writer::{write_bin, write_bindings_module, write_cffi_module}; -use crate::source_distribution::{get_pyproject_toml, source_distribution}; +use crate::source_distribution::source_distribution; use crate::Metadata21; +use crate::PyProjectToml; use crate::PythonInterpreter; use crate::Target; use anyhow::{anyhow, bail, Context, Result}; @@ -54,27 +55,63 @@ #[derive(Clone, Debug, PartialEq, Eq)] pub enum ProjectLayout { /// A rust crate compiled into a shared library with only some glue python for cffi - PureRust, - /// A python package that is extended by a native rust module. /// - /// Contains the canonicialized (i.e. absolute) path to the python part of the project - Mixed(PathBuf), + /// Contains the the rust extension name + PureRust(String), + /// A python package that is extended by a native rust module. + Mixed { + /// Contains the canonicialized (i.e. absolute) path to the python part of the project + python_module: PathBuf, + /// Contains the canonicialized (i.e. absolute) path to the rust part of the project + rust_module: PathBuf, + /// rust extension name + extension_name: String, + }, } impl ProjectLayout { /// Checks whether a python module exists besides Cargo.toml with the right name pub fn determine(project_root: impl AsRef<Path>, module_name: &str) -> Result<ProjectLayout> { - let python_package_dir = project_root.as_ref().join(module_name); - if python_package_dir.is_dir() { - if !python_package_dir.join("__init__.py").is_file() { + // A dot in the module name means the extension module goes into the module folder specified by the path + let parts: Vec<&str> = module_name.split('.').collect(); + let (python_module, rust_module, extension_name) = if parts.len() > 1 { + let mut rust_module = project_root.as_ref().to_path_buf(); + rust_module.extend(&parts[0..parts.len() - 1]); + ( + project_root.as_ref().join(parts[0]), + rust_module, + parts[parts.len() - 1].to_string(), + ) + } else { + ( + project_root.as_ref().join(module_name), + project_root.as_ref().join(module_name), + module_name.to_string(), + ) + }; + if python_module.is_dir() { + if !python_module.join("__init__.py").is_file() { bail!("Found a directory with the module name ({}) next to Cargo.toml, which indicates a mixed python/rust project, but the directory didn't contain an __init__.py file.", module_name) } println!("???? Building a mixed python/rust project"); - Ok(ProjectLayout::Mixed(python_package_dir)) + Ok(ProjectLayout::Mixed { + python_module, + rust_module, + extension_name, + }) } else { - Ok(ProjectLayout::PureRust) + Ok(ProjectLayout::PureRust(extension_name)) + } + } + + pub fn extension_name(&self) -> &str { + match *self { + ProjectLayout::PureRust(ref name) => name, + ProjectLayout::Mixed { + ref extension_name, .. + } => extension_name, } } } @@ -153,7 +190,7 @@ fs::create_dir_all(&self.out) .context("Failed to create the target directory for the source distribution")?; - match get_pyproject_toml(self.manifest_path.parent().unwrap()) { + match PyProjectToml::new(self.manifest_path.parent().unwrap()) { Ok(pyproject) => { let sdist_path = source_distribution( &self.out, @@ -397,11 +434,15 @@ WheelWriter::new(&tag, &self.out, &self.metadata21, &self.scripts, &tags)?; match self.project_layout { - ProjectLayout::Mixed(ref python_module) => { - write_python_part(&mut builder, python_module, &self.module_name) + ProjectLayout::Mixed { + ref python_module, + ref extension_name, + .. + } => { + write_python_part(&mut builder, python_module, extension_name) .context("Failed to add the python module to the package")?; } - ProjectLayout::PureRust => {} + ProjectLayout::PureRust(_) => {} } // I wouldn't know of any case where this would be the wrong (and neither do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/build_options.rs new/maturin-0.10.4/src/build_options.rs --- old/maturin-0.10.3/src/build_options.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/build_options.rs 2021-04-28 12:17:09.000000000 +0200 @@ -8,6 +8,7 @@ use crate::Target; use anyhow::{bail, format_err, Context, Result}; use cargo_metadata::{Metadata, MetadataCommand, Node}; +use regex::Regex; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; use std::env; @@ -99,10 +100,10 @@ impl BuildOptions { /// Tries to fill the missing metadata for a BuildContext by querying cargo and python pub fn into_build_context(self, release: bool, strip: bool) -> Result<BuildContext> { - let manifest_file = self - .manifest_path - .canonicalize() - .context(format_err!("Can't find {}", self.manifest_path.display()))?; + let manifest_file = &self.manifest_path; + if !manifest_file.exists() { + bail!("Can't find {}", self.manifest_path.display(),); + } if !manifest_file.is_file() { bail!( @@ -110,15 +111,16 @@ self.manifest_path.display(), manifest_file.display() ); - }; + } let cargo_toml = CargoToml::from_path(&manifest_file)?; let manifest_dir = manifest_file.parent().unwrap(); let metadata21 = Metadata21::from_cargo_toml(&cargo_toml, &manifest_dir) .context("Failed to parse Cargo.toml into python metadata")?; + let extra_metadata = cargo_toml.remaining_core_metadata(); let scripts = cargo_toml.scripts(); - let crate_name = cargo_toml.package.name; + let crate_name = &cargo_toml.package.name; // If the package name contains minuses, you must declare a module with // underscores as lib name @@ -128,8 +130,9 @@ .and_then(|lib| lib.name.as_ref()) .unwrap_or(&crate_name) .to_owned(); + let extension_name = extra_metadata.name.as_ref().unwrap_or(&module_name); - let project_layout = ProjectLayout::determine(manifest_dir, &module_name)?; + let project_layout = ProjectLayout::determine(manifest_dir, &extension_name)?; let mut cargo_extra_args = split_extra_args(&self.cargo_extra_args)?; if let Some(ref target) = self.target { @@ -176,9 +179,9 @@ // Only build a source distribution Some(ref interpreter) if interpreter.is_empty() => vec![], // User given list of interpreters - Some(interpreter) => find_interpreter(&bridge, &interpreter, &target)?, + Some(interpreter) => find_interpreter(&bridge, &interpreter, &target, None)?, // Auto-detect interpreters - None => find_interpreter(&bridge, &[], &target)?, + None => find_interpreter(&bridge, &[], &target, get_min_python_minor(&metadata21))?, }; let rustc_extra_args = split_extra_args(&self.rustc_extra_args)?; @@ -208,7 +211,7 @@ project_layout, metadata21, scripts, - crate_name, + crate_name: crate_name.to_string(), module_name, manifest_path: self.manifest_path, out: wheel_dir, @@ -225,6 +228,29 @@ } } +/// Uses very simple PEP 440 subset parsing to determine the +/// minimum supported python minor version for interpreter search +fn get_min_python_minor(metadata21: &Metadata21) -> Option<usize> { + if let Some(requires_python) = &metadata21.requires_python { + let regex = Regex::new(r#">=3\.(\d+)(?:\.\d)?"#).unwrap(); + if let Some(captures) = regex.captures(&requires_python) { + let min_python_minor = captures[1] + .parse::<usize>() + .expect("Regex must only match usize"); + Some(min_python_minor) + } else { + println!( + "??? Couldn't parse the value of requires-python, \ + not taking it into account when searching for python interpreter. \ + Note: Only `>=3.x.y` is currently supported." + ); + None + } + } else { + None + } +} + /// pyo3 supports building abi3 wheels if the unstable-api feature is not selected fn has_abi3(cargo_metadata: &Metadata) -> Result<Option<(u8, u8)>> { let resolve = cargo_metadata @@ -384,6 +410,7 @@ bridge: &BridgeModel, interpreter: &[PathBuf], target: &Target, + min_python_minor: Option<usize>, ) -> Result<Vec<PythonInterpreter>> { match bridge { BridgeModel::Bindings(_) => { @@ -391,7 +418,7 @@ PythonInterpreter::check_executables(&interpreter, &target, &bridge) .context("The given list of python interpreters is invalid")? } else { - PythonInterpreter::find_all(&target, &bridge) + PythonInterpreter::find_all(&target, &bridge, min_python_minor) .context("Finding python interpreters failed")? }; @@ -660,4 +687,13 @@ assert_eq!(extract_cargo_metadata_args(&args).unwrap(), expected); } + + #[test] + fn test_get_min_python_minor() { + // Nothing specified + let cargo_toml = CargoToml::from_path("test-crates/pyo3-pure/Cargo.toml").unwrap(); + let metadata21 = + Metadata21::from_cargo_toml(&cargo_toml, &"test-crates/pyo3-pure").unwrap(); + assert_eq!(get_min_python_minor(&metadata21), None); + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/lib.rs new/maturin-0.10.4/src/lib.rs --- old/maturin-0.10.3/src/lib.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/lib.rs 2021-04-28 12:17:09.000000000 +0200 @@ -36,13 +36,14 @@ pub use crate::module_writer::{ write_dist_info, ModuleWriter, PathWriter, SDistWriter, WheelWriter, }; +pub use crate::pyproject_toml::PyProjectToml; pub use crate::python_interpreter::PythonInterpreter; pub use crate::read_distribution::{ get_metadata_for_distribution, get_supported_version_for_distribution, }; pub use crate::target::Target; pub use auditwheel::Manylinux; -pub use source_distribution::{get_pyproject_toml, source_distribution}; +pub use source_distribution::source_distribution; #[cfg(feature = "upload")] pub use { crate::registry::Registry, @@ -57,6 +58,7 @@ mod develop; mod metadata; mod module_writer; +mod pyproject_toml; mod python_interpreter; mod read_distribution; #[cfg(feature = "upload")] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/main.rs new/maturin-0.10.4/src/main.rs --- old/maturin-0.10.3/src/main.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/main.rs 2021-04-28 12:17:09.000000000 +0200 @@ -15,10 +15,9 @@ #[cfg(feature = "password-storage")] use keyring::{Keyring, KeyringError}; use maturin::{ - develop, get_metadata_for_distribution, get_pyproject_toml, - get_supported_version_for_distribution, source_distribution, write_dist_info, BridgeModel, - BuildOptions, BuiltWheelMetadata, CargoToml, Manylinux, Metadata21, PathWriter, - PythonInterpreter, Target, + develop, get_metadata_for_distribution, get_supported_version_for_distribution, + source_distribution, write_dist_info, BridgeModel, BuildOptions, BuiltWheelMetadata, CargoToml, + Manylinux, Metadata21, PathWriter, PyProjectToml, PythonInterpreter, Target, }; use std::env; use std::path::PathBuf; @@ -530,7 +529,7 @@ Opt::ListPython => { let target = Target::from_target_triple(None)?; // We don't know the targeted bindings yet, so we use the most lenient - let found = PythonInterpreter::find_all(&target, &BridgeModel::Cffi)?; + let found = PythonInterpreter::find_all(&target, &BridgeModel::Cffi, None)?; println!("???? {} python interpreter found:", found.len()); for interpreter in found { println!(" - {}", interpreter); @@ -574,7 +573,7 @@ let manifest_dir = manifest_path.parent().unwrap(); // Ensure the project has a compliant pyproject.toml - let pyproject = get_pyproject_toml(&manifest_dir) + let pyproject = PyProjectToml::new(&manifest_dir) .context("A pyproject.toml with a PEP 517 compliant `[build-system]` table is required to build a source distribution")?; let cargo_toml = CargoToml::from_path(&manifest_path)?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/metadata.rs new/maturin-0.10.4/src/metadata.rs --- old/maturin-0.10.3/src/metadata.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/metadata.rs 2021-04-28 12:17:09.000000000 +0200 @@ -112,14 +112,22 @@ description = None; description_content_type = None; }; + let name = extra_metadata + .name + .map(|name| { + if let Some(pos) = name.find('.') { + name.split_at(pos).0.to_string() + } else { + name.clone() + } + }) + .unwrap_or_else(|| cargo_toml.package.name.clone()); Ok(Metadata21 { metadata_version: "2.1".to_owned(), // Mapped from cargo metadata - name: extra_metadata - .name - .unwrap_or_else(|| cargo_toml.package.name.clone()), + name, version: cargo_toml.package.version.clone(), summary: cargo_toml.package.description.clone(), description, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/module_writer.rs new/maturin-0.10.4/src/module_writer.rs --- old/maturin-0.10.3/src/module_writer.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/module_writer.rs 2021-04-28 12:17:09.000000000 +0200 @@ -572,26 +572,31 @@ target: &Target, develop: bool, ) -> Result<()> { + let ext_name = project_layout.extension_name(); let so_filename = match python_interpreter { - Some(python_interpreter) => python_interpreter.get_library_name(&module_name), + Some(python_interpreter) => python_interpreter.get_library_name(&ext_name), // abi3 None => { if target.is_unix() { - format!("{base}.abi3.so", base = module_name) + format!("{base}.abi3.so", base = ext_name) } else { // Apparently there is no tag for abi3 on windows - format!("{base}.pyd", base = module_name) + format!("{base}.pyd", base = ext_name) } } }; match project_layout { - ProjectLayout::Mixed(ref python_module) => { + ProjectLayout::Mixed { + ref python_module, + ref rust_module, + .. + } => { write_python_part(writer, python_module, &module_name) .context("Failed to add the python module to the package")?; if develop { - let target = python_module.join(&so_filename); + let target = rust_module.join(&so_filename); fs::copy(&artifact, &target).context(format!( "Failed to copy {} to {}", artifact.display(), @@ -599,13 +604,10 @@ ))?; } - writer.add_file_with_permissions( - Path::new(&module_name).join(&so_filename), - &artifact, - 0o755, - )?; + let relative = rust_module.strip_prefix(python_module.parent().unwrap())?; + writer.add_file_with_permissions(relative.join(&so_filename), &artifact, 0o755)?; } - ProjectLayout::PureRust => { + ProjectLayout::PureRust(_) => { writer.add_file_with_permissions(so_filename, &artifact, 0o755)?; } } @@ -628,7 +630,11 @@ let module; match project_layout { - ProjectLayout::Mixed(ref python_module) => { + ProjectLayout::Mixed { + ref python_module, + ref rust_module, + ref extension_name, + } => { write_python_part(writer, python_module, &module_name) .context("Failed to add the python module to the package")?; @@ -646,9 +652,10 @@ File::create(base_path.join("ffi.py"))?.write_all(cffi_declarations.as_bytes())?; } - module = PathBuf::from(module_name).join(module_name); + let relative = rust_module.strip_prefix(python_module.parent().unwrap())?; + module = relative.join(extension_name); } - ProjectLayout::PureRust => module = PathBuf::from(module_name), + ProjectLayout::PureRust(_) => module = PathBuf::from(module_name), }; writer.add_directory(&module)?; @@ -690,24 +697,24 @@ for absolute in WalkDir::new(&python_module) { let absolute = absolute?.into_path(); - let relaitve = absolute.strip_prefix(python_module.as_ref().parent().unwrap())?; + let relative = absolute.strip_prefix(python_module.as_ref().parent().unwrap())?; // Ignore the cffi folder from develop, if any - if relaitve.starts_with(module_name.as_ref().join(&module_name)) { + if relative.starts_with(module_name.as_ref().join(&module_name)) { continue; } if absolute.is_dir() { - writer.add_directory(relaitve)?; + writer.add_directory(relative)?; } else { // Ignore native libraries from develop, if any - if let Some(extension) = relaitve.extension() { + if let Some(extension) = relative.extension() { if extension.to_string_lossy() == "so" { continue; } } writer - .add_file(relaitve, &absolute) + .add_file(relative, &absolute) .context(format!("File to add file from {}", absolute.display()))?; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/pyproject_toml.rs new/maturin-0.10.4/src/pyproject_toml.rs --- old/maturin-0.10.3/src/pyproject_toml.rs 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-0.10.4/src/pyproject_toml.rs 2021-04-28 12:17:09.000000000 +0200 @@ -0,0 +1,56 @@ +use anyhow::{format_err, Context, Result}; +use serde::{Deserialize, Serialize}; +use std::fs; +use std::path::Path; + +/// The `[build-system]` section of a pyproject.toml as specified in PEP 517 +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(rename_all = "kebab-case")] +pub struct BuildSystem { + requires: Vec<String>, + build_backend: String, +} + +/// The `[tool]` section of a pyproject.toml +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(rename_all = "kebab-case")] +pub struct Tool { + maturin: Option<ToolMaturin>, +} + +/// The `[tool.maturin]` section of a pyproject.toml +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(rename_all = "kebab-case")] +pub struct ToolMaturin { + sdist_include: Option<Vec<String>>, +} + +/// A pyproject.toml as specified in PEP 517 +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(rename_all = "kebab-case")] +pub struct PyProjectToml { + build_system: BuildSystem, + tool: Option<Tool>, +} + +impl PyProjectToml { + /// Returns the contents of a pyproject.toml with a `[build-system]` entry or an error + /// + /// Does no specific error handling because it's only used to check whether or not to build + /// source distributions + pub fn new(project_root: impl AsRef<Path>) -> Result<PyProjectToml> { + let path = project_root.as_ref().join("pyproject.toml"); + let contents = fs::read_to_string(&path).context(format!( + "Couldn't find pyproject.toml at {}", + path.display() + ))?; + let cargo_toml = toml::from_str(&contents) + .map_err(|err| format_err!("pyproject.toml is not PEP 517 compliant: {}", err))?; + Ok(cargo_toml) + } + + /// Returns the value of `[maturin.sdist-include]` in pyproject.toml + pub fn sdist_include(&self) -> Option<&Vec<String>> { + self.tool.as_ref()?.maturin.as_ref()?.sdist_include.as_ref() + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/python_interpreter.rs new/maturin-0.10.4/src/python_interpreter.rs --- old/maturin-0.10.3/src/python_interpreter.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/python_interpreter.rs 2021-04-28 12:17:09.000000000 +0200 @@ -23,6 +23,7 @@ minor: usize, target_width: usize, pointer_width: usize, + min_python_minor: usize, ) -> bool { // Python 2 support has been dropped if major == 2 { @@ -30,7 +31,7 @@ } // Ignore python 3.0 - 3.5 - if major == 3 && minor < MINIMUM_PYTHON_MINOR { + if major == 3 && minor < min_python_minor { return true; } @@ -83,7 +84,7 @@ /// As well as the version numbers, etc. of the interpreters we also have to find the /// pointer width to make sure that the pointer width (32-bit or 64-bit) matches across /// platforms. -fn find_all_windows(target: &Target) -> Result<Vec<String>> { +fn find_all_windows(target: &Target, min_python_minor: usize) -> Result<Vec<String>> { let code = "import sys; print(sys.executable or '')"; let mut interpreter = vec![]; let mut versions_found = HashSet::new(); @@ -123,6 +124,7 @@ minor, target.pointer_width(), pointer_width, + min_python_minor, ) { continue; } @@ -201,6 +203,7 @@ minor, target.pointer_width(), pointer_width, + min_python_minor, ) { continue; } @@ -219,15 +222,6 @@ Ok(interpreter) } -/// Since there is no known way to list the installed python versions on unix -/// (or just generally to list all binaries in $PATH, which could then be -/// filtered down), we use this workaround. -fn find_all_unix() -> Vec<String> { - (MINIMUM_PYTHON_MINOR..MAXIMUM_PYTHON_MINOR) - .map(|minor| format!("python3.{}", minor)) - .collect() -} - #[derive(Debug, Clone, Eq, PartialEq)] pub enum InterpreterKind { CPython, @@ -482,11 +476,18 @@ /// Tries to find all installed python versions using the heuristic for the /// given platform - pub fn find_all(target: &Target, bridge: &BridgeModel) -> Result<Vec<PythonInterpreter>> { + pub fn find_all( + target: &Target, + bridge: &BridgeModel, + min_python_minor: Option<usize>, + ) -> Result<Vec<PythonInterpreter>> { + let min_python_minor = min_python_minor.unwrap_or(MINIMUM_PYTHON_MINOR); let executables = if target.is_windows() { - find_all_windows(&target)? + find_all_windows(&target, min_python_minor)? } else { - find_all_unix() + (min_python_minor..MAXIMUM_PYTHON_MINOR) + .map(|minor| format!("python3.{}", minor)) + .collect() }; let mut available_versions = Vec::new(); for executable in executables { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/src/source_distribution.rs new/maturin-0.10.4/src/source_distribution.rs --- old/maturin-0.10.3/src/source_distribution.rs 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/src/source_distribution.rs 2021-04-28 12:17:09.000000000 +0200 @@ -1,10 +1,9 @@ use crate::module_writer::ModuleWriter; use crate::{Metadata21, SDistWriter}; -use anyhow::{bail, format_err, Context, Result}; +use anyhow::{bail, Context, Result}; use cargo_metadata::Metadata; use fs_err as fs; use regex::Regex; -use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::process::Command; @@ -246,54 +245,3 @@ Ok(source_distribution_path) } - -/// The `[build-system]` section of a pyproject.toml as specified in PEP 517 -#[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] -pub struct BuildSystem { - requires: Vec<String>, - build_backend: String, -} - -/// The `[tool]` section of a pyproject.toml -#[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] -pub struct Tool { - maturin: Option<ToolMaturin>, -} - -/// The `[tool.maturin]` section of a pyproject.toml -#[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] -pub struct ToolMaturin { - sdist_include: Option<Vec<String>>, -} - -/// A pyproject.toml as specified in PEP 517 -#[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] -pub struct PyProjectToml { - build_system: BuildSystem, - tool: Option<Tool>, -} - -impl PyProjectToml { - pub fn sdist_include(&self) -> Option<&Vec<String>> { - self.tool.as_ref()?.maturin.as_ref()?.sdist_include.as_ref() - } -} - -/// Returns the contents of a pyproject.toml with a `[build-system]` entry or an error -/// -/// Does no specific error handling because it's only used to check whether or not to build -/// source distributions -pub fn get_pyproject_toml(project_root: impl AsRef<Path>) -> Result<PyProjectToml> { - let path = project_root.as_ref().join("pyproject.toml"); - let contents = fs::read_to_string(&path).context(format!( - "Couldn't find pyproject.toml at {}", - path.display() - ))?; - let cargo_toml = toml::from_str(&contents) - .map_err(|err| format_err!("pyproject.toml is not PEP 517 compliant: {}", err))?; - Ok(cargo_toml) -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-0.10.3/test-dockerfile.sh new/maturin-0.10.4/test-dockerfile.sh --- old/maturin-0.10.3/test-dockerfile.sh 2021-04-13 16:28:35.000000000 +0200 +++ new/maturin-0.10.4/test-dockerfile.sh 2021-04-28 12:17:09.000000000 +0200 @@ -13,7 +13,7 @@ venv-docker/bin/pip install -U pip cffi -docker run -e RUST_BACKTRACE=1 --rm -v $(pwd)/test-crates/hello-world:/io maturin build --no-sdist -b bin +docker run -e RUST_BACKTRACE=1 --rm -v $(pwd):/io -w /io/test-crates/hello-world maturin build --no-sdist -b bin venv-docker/bin/pip install hello-world --no-index --find-links test-crates/hello-world/target/wheels/ @@ -53,4 +53,12 @@ exit 1 fi +docker run -e RUST_BACKTRACE=1 --rm -v $(pwd)/test-crates/pyo3-mixed-submodule:/io maturin build --no-sdist -i python3.8 + +venv-docker/bin/pip install pyo3-mixed-submodule --find-links test-crates/pyo3-mixed-submodule/target/wheels/ + +if [[ $(venv-docker/bin/python test-crates/pyo3-mixed-submodule/check_installed/check_installed.py) != 'SUCCESS' ]]; then + exit 1 +fi + deactivate ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/python-maturin/vendor.tar.xz /work/SRC/openSUSE:Factory/.python-maturin.new.2988/vendor.tar.xz differ: char 26, line 1
