From c5810ebe1c1f260625381a06582e216688b9568a Mon Sep 17 00:00:00 2001 From: messense Date: Sun, 5 Jun 2022 19:34:05 +0800 Subject: [PATCH 01/13] Fix incompatibility with cibuildwheel for 32-bit Windows --- Changelog.md | 3 +++ maturin/__init__.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/Changelog.md b/Changelog.md index a508b0b96..f288b76f4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +* **Breaking Change**: Drop support for python 3.6, which is end of life +* Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) + ## [0.12.19] - 2022-06-05 * Fix Windows Store install detection in [#949](https://github.com/PyO3/maturin/pull/949) diff --git a/maturin/__init__.py b/maturin/__init__.py index 36c4eb967..496b97fb1 100644 --- a/maturin/__init__.py +++ b/maturin/__init__.py @@ -10,10 +10,12 @@ """ import os +import platform import shlex import shutil import subprocess import sys +import struct from subprocess import SubprocessError from typing import Dict @@ -34,6 +36,15 @@ def get_maturin_pep517_args(): return args +def _additional_pep517_args(): + # Support building for 32-bit Python on x64 Windows + if platform.system().lower() == "windows" and platform.machine().lower() == "amd64": + pointer_width = struct.calcsize("P") * 8 + if pointer_width == 32: + return ["--target", "i686-pc-windows-msvc"] + return [] + + # noinspection PyUnusedLocal def _build_wheel( wheel_directory, config_settings=None, metadata_directory=None, editable=False @@ -49,8 +60,10 @@ def _build_wheel( "--compatibility", "off", ] + command.extend(_additional_pep517_args()) if editable: command.append("--editable") + pep517_args = get_maturin_pep517_args() if pep517_args: command.extend(pep517_args) @@ -151,6 +164,7 @@ def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None): "--interpreter", sys.executable, ] + command.extend(_additional_pep517_args()) pep517_args = get_maturin_pep517_args() if pep517_args: command.extend(pep517_args) From 67aef5fc05d080141af705227ed95a206785710d Mon Sep 17 00:00:00 2001 From: messense Date: Mon, 6 Jun 2022 17:32:48 +0800 Subject: [PATCH 02/13] Don't require `pip` error messages to be utf-8 encoding --- Changelog.md | 1 + src/develop.rs | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Changelog.md b/Changelog.md index f288b76f4..121e5fb43 100644 --- a/Changelog.md +++ b/Changelog.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **Breaking Change**: Drop support for python 3.6, which is end of life * Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) +* Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) ## [0.12.19] - 2022-06-05 diff --git a/src/develop.rs b/src/develop.rs index 7c00d373c..d3549c952 100644 --- a/src/develop.rs +++ b/src/develop.rs @@ -5,7 +5,6 @@ use crate::Target; use anyhow::{anyhow, bail, Context, Result}; use std::path::Path; use std::process::Command; -use std::str; use tempfile::TempDir; /// Installs a crate by compiling it and copying the shared library to site-packages. @@ -91,15 +90,15 @@ pub fn develop( venv_dir.display(), &command, output.status, - str::from_utf8(&output.stdout)?.trim(), - str::from_utf8(&output.stderr)?.trim(), + String::from_utf8_lossy(&output.stdout).trim(), + String::from_utf8_lossy(&output.stderr).trim(), ); } if !output.stderr.is_empty() { eprintln!( "⚠️ Warning: pip raised a warning running {:?}:\n{}", &command, - str::from_utf8(&output.stderr)?.trim(), + String::from_utf8_lossy(&output.stderr).trim(), ); } println!( From a444fb940f01df9a8d3ac8adbc9427cc57376b01 Mon Sep 17 00:00:00 2001 From: messense Date: Tue, 7 Jun 2022 00:31:35 +0800 Subject: [PATCH 03/13] Compare minimum python version requirement between `requires-python` and bindings crate --- Changelog.md | 1 + src/python_interpreter/mod.rs | 26 ++++++++++++++++++++++---- src/templates/Cargo.toml.j2 | 2 +- src/templates/pyproject.toml.j2 | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Changelog.md b/Changelog.md index 121e5fb43..157bbae23 100644 --- a/Changelog.md +++ b/Changelog.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **Breaking Change**: Drop support for python 3.6, which is end of life * Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) * Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) +* Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) ## [0.12.19] - 2022-06-05 diff --git a/src/python_interpreter/mod.rs b/src/python_interpreter/mod.rs index 9db27a229..89a2a8f0c 100644 --- a/src/python_interpreter/mod.rs +++ b/src/python_interpreter/mod.rs @@ -626,10 +626,28 @@ impl PythonInterpreter { bridge: &BridgeModel, min_python_minor: Option, ) -> Result> { - let min_python_minor = min_python_minor.unwrap_or(match bridge { - BridgeModel::Bindings(_, minor) => *minor, - _ => MINIMUM_PYTHON_MINOR, - }); + let min_python_minor = match min_python_minor { + Some(requires_python_minor) => match bridge { + BridgeModel::Bindings(bridge_name, minor) + | BridgeModel::Bin(Some((bridge_name, minor))) => { + // requires-python minor version might be lower than bridge crate required minor version + if requires_python_minor >= *minor { + requires_python_minor + } else { + eprintln!( + "⚠️ Warning: 'requires-python' (3.{}) is lower than the requirement of {} crate (3.{}).", + requires_python_minor, bridge_name, *minor + ); + *minor + } + } + _ => requires_python_minor, + }, + None => match bridge { + BridgeModel::Bindings(_, minor) | BridgeModel::Bin(Some((_, minor))) => *minor, + _ => MINIMUM_PYTHON_MINOR, + }, + }; let executables = if target.is_windows() { find_all_windows(target, min_python_minor)? } else { diff --git a/src/templates/Cargo.toml.j2 b/src/templates/Cargo.toml.j2 index 369be4c16..86c240aef 100644 --- a/src/templates/Cargo.toml.j2 +++ b/src/templates/Cargo.toml.j2 @@ -13,7 +13,7 @@ crate-type = ["cdylib"] [dependencies] {%- if bindings == "pyo3" -%} -pyo3 = { version = "0.16.3", features = ["extension-module"] } +pyo3 = { version = "0.16.5", features = ["extension-module"] } {%- elif bindings == "rust-cpython" -%} cpython = { version = "0.7.0", features = ["extension-module"] } {%- endif -%} diff --git a/src/templates/pyproject.toml.j2 b/src/templates/pyproject.toml.j2 index d955a5e0d..4664e50eb 100644 --- a/src/templates/pyproject.toml.j2 +++ b/src/templates/pyproject.toml.j2 @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "{{ name }}" -requires-python = ">=3.6" +requires-python = ">=3.7" classifiers = [ "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", From 685ce68d483fe4c502c06262b327e37a7ffd67ec Mon Sep 17 00:00:00 2001 From: messense Date: Tue, 7 Jun 2022 16:23:55 +0800 Subject: [PATCH 04/13] CI: stop using maturin prerelease --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 76ccebed9..461a374fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -172,7 +172,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheel run: | - sudo python3 -m pip install --pre maturin + sudo python3 -m pip install maturin maturin build --release -b bin -o dist --no-sdist \ --target ${{ matrix.platform.target }} \ --manylinux ${{ matrix.platform.manylinux }} musllinux_1_1 \ @@ -219,7 +219,7 @@ jobs: target: ${{ matrix.platform.target }} - name: Build wheel run: | - sudo python3 -m pip install --pre maturin + sudo python3 -m pip install maturin maturin build --release -b bin -o dist --no-sdist \ --target ${{ matrix.platform.target }} \ --manylinux ${{ matrix.platform.manylinux }} ${{ matrix.platform.musllinux }} \ From 13da738be6b51e8f9692b7a2ef2a8668ee3eb5e6 Mon Sep 17 00:00:00 2001 From: messense Date: Wed, 8 Jun 2022 20:53:13 +0800 Subject: [PATCH 05/13] Update cbindgen to 0.24.2 --- Cargo.lock | 14 +++++++------- Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ca2bf897..1e7749082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "cbindgen" -version = "0.23.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6d248e3ca02f3fbfabcb9284464c596baec223a26d91bbf44a5a62ddb0d900" +checksum = "30d7a0c9cbd32a86bd907051146240f6c69a96fa2a837ac84ad884b791cf1d37" dependencies = [ "heck", "indexmap", @@ -1008,9 +1008,9 @@ dependencies = [ [[package]] name = "goblin" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c955ab4e0ad8c843ea653a3d143048b87490d9be56bd7132a435c2407846ac8f" +checksum = "cfeb764aa29a0774d290c2df134a37ab2e3c1ba59009162626658aabefda321a" dependencies = [ "log", "plain", @@ -2440,11 +2440,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" +checksum = "7709595b8878a4965ce5e87ebf880a7d39c9afc6837721b21a5a816a8117d921" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] diff --git a/Cargo.toml b/Cargo.toml index bc978ef20..b6bdac07c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,7 @@ glob = "0.3.0" cargo_metadata = "0.14.0" cargo-zigbuild = "0.9.0" cargo-xwin = { version = "0.8.6", default-features = false } -cbindgen = { version = "0.23.0", default-features = false } +cbindgen = { version = "0.24.2", default-features = false } flate2 = "1.0.18" goblin = "0.5.1" human-panic = { version = "1.0.3", optional = true } From 9ab7cac6b00bbb9340eda6bea2a22441fec4600d Mon Sep 17 00:00:00 2001 From: messense Date: Thu, 9 Jun 2022 20:42:59 +0800 Subject: [PATCH 06/13] Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled --- Changelog.md | 1 + src/compile.rs | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 157bbae23..7e0e69c98 100644 --- a/Changelog.md +++ b/Changelog.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) * Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) * Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) +* Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled in [#960](https://github.com/PyO3/maturin/pull/960) ## [0.12.19] - 2022-06-05 diff --git a/src/compile.rs b/src/compile.rs index f9efb77be..c579856aa 100644 --- a/src/compile.rs +++ b/src/compile.rs @@ -265,7 +265,11 @@ fn compile_target( if let Some(interpreter) = python_interpreter { // Target python interpreter isn't runnable when cross compiling if interpreter.runnable { - if bindings_crate.is_bindings("pyo3") || bindings_crate.is_bindings("pyo3-ffi") { + if bindings_crate.is_bindings("pyo3") + || bindings_crate.is_bindings("pyo3-ffi") + || (matches!(bindings_crate, BridgeModel::BindingsAbi3(_, _)) + && matches!(interpreter.interpreter_kind, InterpreterKind::PyPy)) + { build_command.env("PYO3_PYTHON", &interpreter.executable); } From cb5aabafdc588063cde554776bd5740fa045f520 Mon Sep 17 00:00:00 2001 From: messense Date: Fri, 10 Jun 2022 13:42:03 +0800 Subject: [PATCH 07/13] Add sysconfigs for x64 Windows PyPy --- Changelog.md | 1 + src/python_interpreter/sysconfig-windows.json | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/Changelog.md b/Changelog.md index 7e0e69c98..c535fde0e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) * Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) * Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled in [#960](https://github.com/PyO3/maturin/pull/960) +* Add sysconfigs for x64 Windows PyPy in [#962](https://github.com/PyO3/maturin/pull/962) ## [0.12.19] - 2022-06-05 diff --git a/src/python_interpreter/sysconfig-windows.json b/src/python_interpreter/sysconfig-windows.json index 67bfa38bf..1ca236903 100644 --- a/src/python_interpreter/sysconfig-windows.json +++ b/src/python_interpreter/sysconfig-windows.json @@ -53,6 +53,33 @@ "ext_suffix": ".cp311-win_amd64.pyd", "abi_tag": null, "pointer_width": 64 + }, + { + "major": 3, + "minor": 7, + "abiflags": "", + "interpreter": "pypy", + "ext_suffix": ".pypy37-pp73-win_amd64.pyd", + "abi_tag": "pp73", + "pointer_width": 64 + }, + { + "major": 3, + "minor": 8, + "abiflags": "", + "interpreter": "pypy", + "ext_suffix": ".pypy38-pp73-win_amd64.pyd", + "abi_tag": "pp73", + "pointer_width": 64 + }, + { + "major": 3, + "minor": 9, + "abiflags": "", + "interpreter": "pypy", + "ext_suffix": ".pypy39-pp73-win_amd64.pyd", + "abi_tag": "pp73", + "pointer_width": 64 } ], "i686": [ From 7d472470b18c317f0edf2271dde251fd18a4d6b3 Mon Sep 17 00:00:00 2001 From: messense Date: Fri, 10 Jun 2022 21:19:34 +0800 Subject: [PATCH 08/13] Update `actions/checkout` and `actions/setup-python` versions --- .github/workflows/docker.yml | 2 +- .github/workflows/lint.yml | 12 +++++++----- .github/workflows/release.yml | 10 +++++----- .github/workflows/test.yml | 37 +++++++++++++++++++++++------------ src/templates/CI.yml.j2 | 6 +++--- 5 files changed, 40 insertions(+), 27 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7bf80fc77..dd5217345 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,7 @@ jobs: name: Docker Hub url: https://ghcr.io/pyo3/maturin steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: crazy-max/ghaction-docker-meta@v2 id: meta with: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a438f7530..4cd0973dd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal @@ -31,7 +31,7 @@ jobs: name: Clippy runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal @@ -46,12 +46,14 @@ jobs: black: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' - uses: psf/black@22.3.0 spellcheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: codespell-project/actions-codespell@master diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 461a374fc..9a4fe0bd4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: name: crates.io url: ${{ steps.set_url.outputs.env_url }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal @@ -62,7 +62,7 @@ jobs: runs-on: ${{ matrix.os }} steps: # Largely inspired by https://github.com/starship/starship/blob/35a0a20f5c4fea6a08e1b91ff631b089eef8fc50/.github/workflows/deploy.yml - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal @@ -169,7 +169,7 @@ jobs: RUSTUP_HOME: /root/.rustup CARGO_HOME: /root/.cargo steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Build wheel run: | sudo python3 -m pip install maturin @@ -208,7 +208,7 @@ jobs: container: image: docker://${{ matrix.platform.image }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # powerpc64le-unknown-linux-musl doesn't have official std library release - uses: actions-rs/toolchain@v1 if: matrix.platform.target == 's390x-unknown-linux-gnu' @@ -250,7 +250,7 @@ jobs: - uses: actions/download-artifact@v2 with: name: wheels - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: 3.9 - name: Publish diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b0436ebec..2ade684f5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,17 +20,17 @@ jobs: os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: "3.7" - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "3.8" - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "3.9" - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "3.10.0" - name: Install cffi and virtualenv @@ -51,6 +51,7 @@ jobs: if: matrix.os == 'macos-latest' shell: bash run: | + set -ex sudo xcode-select -s /Applications/Xcode.app bindir="$(xcode-select --print-path)/Toolchains/XcodeDefault.xctoolchain/usr/bin" echo "CC=${bindir}/clang" >> "${GITHUB_ENV}" @@ -80,28 +81,34 @@ jobs: with: command: test args: --features password-storage - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "pypy-3.7" - name: test build pypy wheel + shell: bash run: | + set -ex cargo run -- build --no-sdist -i pypy3 -m test-crates/pyo3-mixed-submodule/Cargo.toml pypy3 -m pip install --force-reinstall --no-index --find-links test-crates/pyo3-mixed-submodule/target/wheels pyo3-mixed-submodule pypy3 -m pip install pytest pypy3 -m pytest test-crates/pyo3-mixed-submodule/tests/ - name: test build pypy wheel with abi3 + shell: bash run: | + set -ex cargo run -- build --no-sdist -i pypy3 -m test-crates/pyo3-pure/Cargo.toml --cargo-extra-args="-vv" pypy3 -m pip install --force-reinstall --no-index --find-links test-crates/pyo3-pure/target/wheels pyo3-pure pypy3 -m pip install pytest pypy3 -m pytest test-crates/pyo3-pure/test_pyo3_pure.py cargo run -- pep517 build-wheel -i pypy3 -m test-crates/pyo3-pure/Cargo.toml --cargo-extra-args="-vv" - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: "3.10.0" - name: test cross compiling with zig + shell: bash run: | + set -ex rustup target add aarch64-unknown-linux-gnu rustup target add aarch64-unknown-linux-musl rustup target add aarch64-apple-darwin @@ -121,6 +128,7 @@ jobs: - name: test cross compiling windows wheel if: matrix.os == 'ubuntu-latest' run: | + set -ex sudo apt-get install -y mingw-w64 rustup component add llvm-tools-preview rustup target add x86_64-pc-windows-gnu @@ -135,6 +143,7 @@ jobs: - name: test compiling with PYO3_CONFIG_FILE shell: bash run: | + set -ex rustup target add x86_64-unknown-linux-gnu export PYO3_CONFIG_FILE=$(pwd)/test-crates/pyo3-mixed/pyo3-config.txt cargo run -- build --no-sdist -m test-crates/pyo3-mixed/Cargo.toml --target x86_64-unknown-linux-gnu --zig @@ -144,9 +153,10 @@ jobs: runs-on: ubuntu-latest container: alpine:edge steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install build requirements run: | + set -ex apk add cargo python3-dev libffi-dev py3-pip pip3 install cffi virtualenv - name: Cache cargo build @@ -176,7 +186,7 @@ jobs: manylinux: [ 'manylinux_2_24' ] container: quay.io/pypa/${{ matrix.manylinux }}_x86_64 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 id: rustup with: @@ -204,8 +214,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v1 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: "3.8" - uses: docker/setup-buildx-action@v1 @@ -273,10 +283,11 @@ jobs: abi: pp38-pypy38_pp73 python: pypy3.8 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Build Wheels run: | - echo 'curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal + echo 'set -ex + curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal source ~/.cargo/env rustup target add ${{ matrix.platform.target }} diff --git a/src/templates/CI.yml.j2 b/src/templates/CI.yml.j2 index 330f2582a..93d1bedd8 100644 --- a/src/templates/CI.yml.j2 +++ b/src/templates/CI.yml.j2 @@ -8,7 +8,7 @@ jobs: linux: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: messense/maturin-action@v1 with: manylinux: auto @@ -23,7 +23,7 @@ jobs: windows: runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: messense/maturin-action@v1 with: command: build @@ -37,7 +37,7 @@ jobs: macos: runs-on: macos-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: messense/maturin-action@v1 with: command: build From 15e0db776de7ce6c7e4097d1a66dbc190f68aa60 Mon Sep 17 00:00:00 2001 From: messense Date: Sun, 12 Jun 2022 14:20:47 +0800 Subject: [PATCH 09/13] Add support for Linux armv6l --- Changelog.md | 1 + src/auditwheel/policy.rs | 1 + src/target.rs | 21 +++++++++++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Changelog.md b/Changelog.md index c535fde0e..960a9733b 100644 --- a/Changelog.md +++ b/Changelog.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) * Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled in [#960](https://github.com/PyO3/maturin/pull/960) * Add sysconfigs for x64 Windows PyPy in [#962](https://github.com/PyO3/maturin/pull/962) +* Add support for Linux armv6l in [#966](https://github.com/PyO3/maturin/pull/966) ## [0.12.19] - 2022-06-05 diff --git a/src/auditwheel/policy.rs b/src/auditwheel/policy.rs index ff2212b0a..3d72b2aa1 100644 --- a/src/auditwheel/policy.rs +++ b/src/auditwheel/policy.rs @@ -97,6 +97,7 @@ impl Policy { if self.name.starts_with("musllinux") && self.lib_whitelist.remove("libc.so") { let new_soname = match target_arch { Arch::Aarch64 => "libc.musl-aarch64.so.1", + Arch::Armv6L => "libc.musl-armhf.so.1", Arch::Armv7L => "libc.musl-armv7.so.1", Arch::Powerpc64Le => "libc.musl-ppc64le.so.1", Arch::Powerpc64 => "", // musllinux doesn't support ppc64 diff --git a/src/target.rs b/src/target.rs index a41821b8c..6e3481fc1 100644 --- a/src/target.rs +++ b/src/target.rs @@ -47,6 +47,7 @@ impl fmt::Display for Os { #[serde(rename_all = "lowercase")] pub enum Arch { Aarch64, + Armv6L, Armv7L, #[serde(alias = "ppc64le")] Powerpc64Le, @@ -62,6 +63,7 @@ impl fmt::Display for Arch { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Arch::Aarch64 => write!(f, "aarch64"), + Arch::Armv6L => write!(f, "armv6l"), Arch::Armv7L => write!(f, "armv7l"), Arch::Powerpc64Le => write!(f, "ppc64le"), Arch::Powerpc64 => write!(f, "ppc64"), @@ -77,6 +79,7 @@ fn get_supported_architectures(os: &Os) -> Vec { match os { Os::Linux => vec![ Arch::Aarch64, + Arch::Armv6L, Arch::Armv7L, Arch::Powerpc64, Arch::Powerpc64Le, @@ -120,6 +123,8 @@ impl Target { /// /// Fails if the target triple isn't supported pub fn from_target_triple(target_triple: Option) -> Result { + use target_lexicon::ArmArchitecture; + let host_triple = get_host_target()?; let (platform, triple) = if let Some(ref target_triple) = target_triple { let platform: Triple = target_triple @@ -150,7 +155,10 @@ impl Target { let arch = match platform.architecture { target_lexicon::Architecture::X86_64 => Arch::X86_64, target_lexicon::Architecture::X86_32(_) => Arch::X86, - target_lexicon::Architecture::Arm(_) => Arch::Armv7L, + target_lexicon::Architecture::Arm(arm_arch) => match arm_arch { + ArmArchitecture::Arm | ArmArchitecture::Armv6 => Arch::Armv6L, + _ => Arch::Armv7L, + }, target_lexicon::Architecture::Aarch64(_) => Arch::Aarch64, target_lexicon::Architecture::Powerpc64 => Arch::Powerpc64, target_lexicon::Architecture::Powerpc64le => Arch::Powerpc64Le, @@ -309,6 +317,7 @@ impl Target { pub fn get_python_arch(&self) -> &str { match self.arch { Arch::Aarch64 => "aarch64", + Arch::Armv6L => "armv6l", Arch::Armv7L => "armv7l", Arch::Powerpc64Le => "powerpc64le", Arch::Powerpc64 => "powerpc64", @@ -340,19 +349,15 @@ impl Target { PlatformTag::manylinux2014() } Arch::X86 | Arch::X86_64 => PlatformTag::manylinux2010(), + Arch::Armv6L => PlatformTag::Linux, } } /// Returns whether the platform is 64 bit or 32 bit pub fn pointer_width(&self) -> usize { match self.arch { - Arch::Aarch64 => 64, - Arch::Armv7L => 32, - Arch::Powerpc64 => 64, - Arch::Powerpc64Le => 64, - Arch::X86 => 32, - Arch::X86_64 => 64, - Arch::S390X => 64, + Arch::Aarch64 | Arch::Powerpc64 | Arch::Powerpc64Le | Arch::X86_64 | Arch::S390X => 64, + Arch::Armv6L | Arch::Armv7L | Arch::X86 => 32, } } From 85c080497d6d52a7433e3a44b694a39fd7146f32 Mon Sep 17 00:00:00 2001 From: messense Date: Mon, 13 Jun 2022 14:41:02 +0800 Subject: [PATCH 10/13] Add sysconfigs for Linux armv6l --- src/python_interpreter/sysconfig-linux.json | 65 +++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/python_interpreter/sysconfig-linux.json b/src/python_interpreter/sysconfig-linux.json index 6e1d1f28e..57c103a52 100644 --- a/src/python_interpreter/sysconfig-linux.json +++ b/src/python_interpreter/sysconfig-linux.json @@ -424,5 +424,70 @@ "abi_tag": "pp73", "pointer_width": 32 } + ], + "armv6l": [ + { + "major": 3, + "minor": 6, + "abiflags": "m", + "interpreter": "cpython", + "ext_suffix": ".cpython-36m-arm-linux-gnueabihf.so", + "abi_tag": "36m", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 7, + "abiflags": "m", + "interpreter": "cpython", + "ext_suffix": ".cpython-37m-arm-linux-gnueabihf.so", + "abi_tag": "37m", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 8, + "abiflags": "", + "interpreter": "cpython", + "ext_suffix": ".cpython-38-arm-linux-gnueabihf.so", + "abi_tag": "38", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 9, + "abiflags": "", + "interpreter": "cpython", + "ext_suffix": ".cpython-39-arm-linux-gnueabihf.so", + "abi_tag": "39", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 10, + "abiflags": "", + "interpreter": "cpython", + "ext_suffix": ".cpython-310-arm-linux-gnueabihf.so", + "abi_tag": "310", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 11, + "abiflags": "", + "interpreter": "cpython", + "ext_suffix": ".cpython-311-arm-linux-gnueabihf.so", + "abi_tag": "311", + "pointer_width": 32 + }, + { + "major": 3, + "minor": 8, + "abiflags": "", + "interpreter": "pypy", + "ext_suffix": ".pypy38-pp73-arm-linux-gnueabihf.so", + "abi_tag": "pp73", + "pointer_width": 32 + } ] } \ No newline at end of file From 1a763a7f0bc237b7ebbe5dd773a40cd150c1fe32 Mon Sep 17 00:00:00 2001 From: messense Date: Wed, 15 Jun 2022 14:26:43 +0800 Subject: [PATCH 11/13] Recommend setting `package.metadata.maturin.python-source` --- Readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Readme.md b/Readme.md index 5ee2e022a..3f518f550 100644 --- a/Readme.md +++ b/Readme.md @@ -130,6 +130,9 @@ my-project    └── lib.rs ``` +> **Note** +> This structure is recommended to avoid [a common `ImportError` pitfall](https://github.com/PyO3/maturin/issues/490) + maturin will add the native extension as a module in your python folder. When using develop, maturin will copy the native library and for cffi also the glue code to your python folder. You should add those files to your gitignore. With cffi you can do `from .my_project import lib` and then use `lib.my_native_function`, with pyo3/rust-cpython you can directly `from .my_project import my_native_function`. From 9ab2880b8dd00174983b2a2d9666ae8da68ca0d3 Mon Sep 17 00:00:00 2001 From: messense Date: Wed, 15 Jun 2022 17:14:33 +0800 Subject: [PATCH 12/13] Fix auditwheel bundled shared libs directory name Previous the `pyo3-mixed-py-subdir` crate would produce `_pyo3_mixed.libs`, now it produces `pyo3_mixed_py_subdir.libs`. --- Changelog.md | 1 + src/build_context.rs | 11 +++++++++-- test-crates/pyo3-mixed-py-subdir/Cargo.toml | 1 + .../python/pyo3_mixed_py_subdir/__init__.py | 2 +- test-crates/pyo3-mixed-py-subdir/src/lib.rs | 2 +- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Changelog.md b/Changelog.md index 960a9733b..dbf742424 100644 --- a/Changelog.md +++ b/Changelog.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled in [#960](https://github.com/PyO3/maturin/pull/960) * Add sysconfigs for x64 Windows PyPy in [#962](https://github.com/PyO3/maturin/pull/962) * Add support for Linux armv6l in [#966](https://github.com/PyO3/maturin/pull/966) +* Fix auditwheel bundled shared libs directory name in [#969](https://github.com/PyO3/maturin/pull/969) ## [0.12.19] - 2022-06-05 diff --git a/src/build_context.rs b/src/build_context.rs index da1875fdc..ca051f3e3 100644 --- a/src/build_context.rs +++ b/src/build_context.rs @@ -102,7 +102,7 @@ impl ProjectLayout { Cow::Owned(project_root.join(py_src)) }); let (python_module, rust_module, extension_name) = if parts.len() > 1 { - let mut rust_module = project_root.to_path_buf(); + let mut rust_module = python_root.to_path_buf(); rust_module.extend(&parts[0..parts.len() - 1]); ( python_root.join(parts[0]), @@ -338,7 +338,14 @@ impl BuildContext { } // Put external libs to ${module_name}.libs directory // See https://github.com/pypa/auditwheel/issues/89 - let libs_dir = PathBuf::from(format!("{}.libs", self.module_name)); + let mut libs_dir = self + .project_layout + .python_module + .as_ref() + .and_then(|py| py.file_name().map(|s| s.to_os_string())) + .unwrap_or_else(|| self.module_name.clone().into()); + libs_dir.push(".libs"); + let libs_dir = PathBuf::from(libs_dir); writer.add_directory(&libs_dir)?; let temp_dir = tempfile::tempdir()?; diff --git a/test-crates/pyo3-mixed-py-subdir/Cargo.toml b/test-crates/pyo3-mixed-py-subdir/Cargo.toml index 9a4d64532..ad749d416 100644 --- a/test-crates/pyo3-mixed-py-subdir/Cargo.toml +++ b/test-crates/pyo3-mixed-py-subdir/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["cdylib"] [package.metadata.maturin] python-source = "python" +name = "pyo3_mixed_py_subdir._pyo3_mixed" diff --git a/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/__init__.py b/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/__init__.py index fd165e408..76661a975 100644 --- a/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/__init__.py +++ b/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/__init__.py @@ -1,5 +1,5 @@ from .python_module.double import double -from .pyo3_mixed_py_subdir import get_21 +from ._pyo3_mixed import get_21 def get_42() -> int: diff --git a/test-crates/pyo3-mixed-py-subdir/src/lib.rs b/test-crates/pyo3-mixed-py-subdir/src/lib.rs index e52a7d921..b5f56a239 100644 --- a/test-crates/pyo3-mixed-py-subdir/src/lib.rs +++ b/test-crates/pyo3-mixed-py-subdir/src/lib.rs @@ -6,7 +6,7 @@ fn get_21() -> usize { } #[pymodule] -fn pyo3_mixed_py_subdir(_py: Python, m: &PyModule) -> PyResult<()> { +fn _pyo3_mixed(_py: Python, m: &PyModule) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; Ok(()) From 0df149362916a8c311960892d38b3ff0b806743c Mon Sep 17 00:00:00 2001 From: messense Date: Wed, 15 Jun 2022 23:41:03 +0800 Subject: [PATCH 13/13] Release v0.12.20 --- .github/workflows/test.yml | 1 + Cargo.lock | 88 +++++++++++++++++++------------------- Cargo.toml | 2 +- Changelog.md | 6 ++- 4 files changed, 51 insertions(+), 46 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2ade684f5..7d7012b5b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - release-0.12 pull_request: workflow_dispatch: diff --git a/Cargo.lock b/Cargo.lock index 1e7749082..ebf4099a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "cbindgen" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a0c9cbd32a86bd907051146240f6c69a96fa2a837ac84ad884b791cf1d37" +checksum = "a6358dedf60f4d9b8db43ad187391afe959746101346fe51bb978126bec61dfb" dependencies = [ "heck", "indexmap", @@ -341,7 +341,7 @@ checksum = "25f6cc832d96f9961bfe67da666f1fb96387305d385db5222cbb7bce21121016" dependencies = [ "byteorder", "fnv", - "uuid 1.1.1", + "uuid 1.1.2", ] [[package]] @@ -383,16 +383,16 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.18" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +checksum = "6d20de3739b4fb45a17837824f40aa1769cc7655d7a83e68739a77fe7b30c87a" dependencies = [ "atty", "bitflags", "clap_derive", "clap_lex", "indexmap", - "lazy_static", + "once_cell", "strsim", "termcolor", "terminal_size", @@ -401,18 +401,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "3.1.4" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da92e6facd8d73c22745a5d3cbb59bdf8e46e3235c923e516527d8e81eec14a4" +checksum = "0f6ebaab5f25e4f0312dfa07cb30a755204b96e6531457c2cfdecfdf5f2adf40" dependencies = [ "clap", ] [[package]] name = "clap_complete_fig" -version = "3.1.5" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3918ed0e233c37ab6055a2dc4b2bad2e113d44f56675e0140936b9bd253e4505" +checksum = "1b699eac6317ff40f7126e1e32e670dd797f2452f2ea0b20821b74b9f71870c9" dependencies = [ "clap", "clap_complete", @@ -420,9 +420,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.1.18" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +checksum = "026baf08b89ffbd332836002ec9378ef0e69648cbfadd68af7cd398ca5bf98f7" dependencies = [ "heck", "proc-macro-error", @@ -433,9 +433,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613" dependencies = [ "os_str_bytes", ] @@ -972,9 +972,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if 1.0.0", "libc", @@ -995,9 +995,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "globset" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" +checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" dependencies = [ "aho-corasick", "bstr", @@ -1164,9 +1164,9 @@ checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "js-sys" -version = "0.3.57" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" dependencies = [ "wasm-bindgen", ] @@ -1259,7 +1259,7 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "maturin" -version = "0.12.19" +version = "0.12.20" dependencies = [ "anyhow", "base64", @@ -1371,7 +1371,7 @@ dependencies = [ "byteorder", "cfb", "encoding", - "uuid 1.1.1", + "uuid 1.1.2", ] [[package]] @@ -2108,9 +2108,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd" +checksum = "a41d061efea015927ac527063765e73601444cdc344ba855bc7bd44578b25e1c" dependencies = [ "serde", ] @@ -2417,9 +2417,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" dependencies = [ "cfg-if 1.0.0", "pin-project-lite", @@ -2510,9 +2510,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" [[package]] name = "unicode-linebreak" @@ -2586,9 +2586,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d5d669b51467dcf7b2f1a796ce0f955f05f01cafda6c19d6e95f730df29238" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" [[package]] name = "valuable" @@ -2633,15 +2633,15 @@ dependencies = [ [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2649,9 +2649,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" dependencies = [ "bumpalo", "lazy_static", @@ -2664,9 +2664,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2674,9 +2674,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" dependencies = [ "proc-macro2", "quote", @@ -2687,15 +2687,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index b6bdac07c..753f11b87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ["konstin ", "messense "] name = "maturin" -version = "0.12.19" +version = "0.12.20" 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/*"] homepage = "https://github.com/pyo3/maturin" diff --git a/Changelog.md b/Changelog.md index dbf742424..8b554e626 100644 --- a/Changelog.md +++ b/Changelog.md @@ -8,6 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] * **Breaking Change**: Drop support for python 3.6, which is end of life + +## [0.12.20] - 2022-06-15 + * Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) * Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) * Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) @@ -627,7 +630,8 @@ points-0.1.0-py2.py3-none-manylinux1_x86_64.whl | 2,8M | 752K | 85K * Initial Release -[Unreleased]: https://github.com/pyo3/maturin/compare/v0.12.19...HEAD +[Unreleased]: https://github.com/pyo3/maturin/compare/v0.12.20...HEAD +[0.12.20]: https://github.com/pyo3/maturin/compare/v0.12.19...v0.12.20 [0.12.19]: https://github.com/pyo3/maturin/compare/v0.12.18...v0.12.19 [0.12.18]: https://github.com/pyo3/maturin/compare/v0.12.17...v0.12.18 [0.12.17]: https://github.com/pyo3/maturin/compare/v0.12.16...v0.12.17