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 2025-09-03 21:07:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-maturin (Old) and /work/SRC/openSUSE:Factory/.python-maturin.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-maturin" Wed Sep 3 21:07:07 2025 rev:53 rq:1302461 version:1.9.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-maturin/python-maturin.changes 2025-08-22 17:47:18.714770580 +0200 +++ /work/SRC/openSUSE:Factory/.python-maturin.new.1977/python-maturin.changes 2025-09-03 21:07:20.804422092 +0200 @@ -1,0 +2,14 @@ +Tue Sep 2 14:23:38 UTC 2025 - Nico Krapp <[email protected]> + +- Update to 1.9.4 + * downgrade manylinux version for riscv64 by @ffgan in #2709 + * Fix calculation of platform tag for FreeBSD by @michael-o in #2711 + * Add builtin sysconfigs for GraalPy by @msimacek in #2716 + * Add use-base-python option to pyproject.toml by @SquidDev in #2717 + * fix clippy warnings by @alex in #2724 + * Fix Target::get_python_arch comment (#2712) by @michael-o in #2726 + * Set PYO3_BUILD_EXTENSION_MODULE env var when building pyo3 extension + modules by @alex in #2723 +- regenerate vendor tarball to fix CVE-2025-58160 (bsc#1249011) + +------------------------------------------------------------------- Old: ---- maturin-1.9.3.tar.gz New: ---- maturin-1.9.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-maturin.spec ++++++ --- /var/tmp/diff_new_pack.RZ9Nee/_old 2025-09-03 21:07:21.900468406 +0200 +++ /var/tmp/diff_new_pack.RZ9Nee/_new 2025-09-03 21:07:21.904468576 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-maturin # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -23,7 +23,7 @@ %endif %{?sle15_python_module_pythons} Name: python-maturin -Version: 1.9.3 +Version: 1.9.4 Release: 0 Summary: Rust/Python Interoperability License: Apache-2.0 OR MIT ++++++ maturin-1.9.3.tar.gz -> maturin-1.9.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/.pre-commit-config.yaml new/maturin-1.9.4/.pre-commit-config.yaml --- old/maturin-1.9.3/.pre-commit-config.yaml 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/.pre-commit-config.yaml 2025-08-27 13:23:56.000000000 +0200 @@ -38,7 +38,7 @@ types: [rust] stages: [manual] # because it's slow - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: check-yaml - id: check-toml @@ -56,12 +56,12 @@ ) - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.5 + rev: v0.12.10 hooks: - id: ruff-format - id: ruff - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.17.0 + rev: v1.17.1 hooks: - id: mypy entry: mypy maturin/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/Cargo.lock new/maturin-1.9.4/Cargo.lock --- old/maturin-1.9.3/Cargo.lock 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/Cargo.lock 2025-08-27 13:23:56.000000000 +0200 @@ -1436,7 +1436,7 @@ [[package]] name = "maturin" -version = "1.9.3" +version = "1.9.4" dependencies = [ "anyhow", "base64 0.21.7", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/Cargo.toml new/maturin-1.9.4/Cargo.toml --- old/maturin-1.9.3/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-1.9.4/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ [package] authors = ["konstin <[email protected]>", "messense <[email protected]>"] name = "maturin" -version = "1.9.3" +version = "1.9.4" description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages" exclude = [ "test-crates/**/*", @@ -63,7 +63,7 @@ "deflate", "time", "zstd", - "lzma" + "lzma", ] } thiserror = "2.0.3" fs-err = "3.0.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/Changelog.md new/maturin-1.9.4/Changelog.md --- old/maturin-1.9.3/Changelog.md 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/Changelog.md 2025-08-27 13:23:56.000000000 +0200 @@ -1,6 +1,10 @@ # Changelog -## Unreleased +## [1.9.4] + +* Add a `use-base-python` option to `pyproject.toml` with the same behaviour as `MATURIN_PEP517_USE_BASE_PYTHON`. +* Add builtin sysconfigs for GraalPy +* Fix calculation of platform tag for FreeBSD ## [1.9.3] @@ -1094,7 +1098,10 @@ * Initial Release -[Unreleased]: https://github.com/pyo3/maturin/compare/v1.9.1...HEAD +[Unreleased]: https://github.com/pyo3/maturin/compare/v1.9.4...HEAD +[1.9.4]: https://github.com/pyo3/maturin/compare/v1.9.3...v1.9.4 +[1.9.3]: https://github.com/pyo3/maturin/compare/v1.9.2...v1.9.3 +[1.9.2]: https://github.com/pyo3/maturin/compare/v1.9.1...v1.9.2 [1.9.1]: https://github.com/pyo3/maturin/compare/v1.9.0...v1.9.1 [1.9.0]: https://github.com/pyo3/maturin/compare/v1.8.7...v1.9.0 [1.8.7]: https://github.com/pyo3/maturin/compare/v1.8.6...v1.8.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/PKG-INFO new/maturin-1.9.4/PKG-INFO --- old/maturin-1.9.3/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/maturin-1.9.4/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +1,11 @@ Metadata-Version: 2.4 Name: maturin -Version: 1.9.3 +Version: 1.9.4 Classifier: Topic :: Software Development :: Build Tools Classifier: Programming Language :: Rust Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Implementation :: GraalPy Requires-Dist: tomli>=1.1.0 ; python_full_version < '3.11' Requires-Dist: ziglang>=0.10.0,<0.13.0 ; extra == 'zig' Requires-Dist: patchelf ; extra == 'patchelf' @@ -254,6 +255,7 @@ ## Examples +- [agg-python-bindings](https://pypi.org/project/agg-python-bindings) - A Python Library that binds to Asciinema Agg terminal record renderer and Avt terminal emulator - [ballista-python](https://github.com/apache/arrow-ballista-python) - A Python library that binds to Apache Arrow distributed query engine Ballista - [bleuscore](https://github.com/shenxiangzhuang/bleuscore) - A BLEU score calculation library, written in pure Rust - [chardetng-py](https://github.com/john-parton/chardetng-py) - Python binding for the chardetng character encoding detector. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/README.md new/maturin-1.9.4/README.md --- old/maturin-1.9.3/README.md 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/README.md 2025-08-27 13:23:56.000000000 +0200 @@ -229,6 +229,7 @@ ## Examples +- [agg-python-bindings](https://pypi.org/project/agg-python-bindings) - A Python Library that binds to Asciinema Agg terminal record renderer and Avt terminal emulator - [ballista-python](https://github.com/apache/arrow-ballista-python) - A Python library that binds to Apache Arrow distributed query engine Ballista - [bleuscore](https://github.com/shenxiangzhuang/bleuscore) - A BLEU score calculation library, written in pure Rust - [chardetng-py](https://github.com/john-parton/chardetng-py) - Python binding for the chardetng character encoding detector. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/maturin/__init__.py new/maturin-1.9.4/maturin/__init__.py --- old/maturin-1.9.3/maturin/__init__.py 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/maturin/__init__.py 2025-08-27 13:23:56.000000000 +0200 @@ -50,7 +50,7 @@ def _get_sys_executable() -> str: executable = sys.executable - if os.getenv("MATURIN_PEP517_USE_BASE_PYTHON") in {"1", "true"}: + if os.getenv("MATURIN_PEP517_USE_BASE_PYTHON") in {"1", "true"} or get_config().get("use-base-python"): # Use the base interpreter path when running inside a venv to avoid recompilation # when switching between venvs base_executable = getattr(sys, "_base_executable") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/maturin.schema.json new/maturin-1.9.4/maturin.schema.json --- old/maturin-1.9.3/maturin.schema.json 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/maturin.schema.json 2025-08-27 13:23:56.000000000 +0200 @@ -202,6 +202,11 @@ "items": { "type": "string" } + }, + "use-base-python": { + "description": "Use base Python executable instead of venv Python executable in PEP 517 build.", + "default": false, + "type": "boolean" } }, "definitions": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/pyproject.toml new/maturin-1.9.4/pyproject.toml --- old/maturin-1.9.3/pyproject.toml 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/pyproject.toml 2025-08-27 13:23:56.000000000 +0200 @@ -24,6 +24,7 @@ "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", + "Programming Language :: Python :: Implementation :: GraalPy", ] dependencies = ["tomli>=1.1.0 ; python_version<'3.11'"] dynamic = ["version"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/build_context.rs new/maturin-1.9.4/src/build_context.rs --- old/maturin-1.9.3/src/build_context.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/build_context.rs 2025-08-27 13:23:56.000000000 +0200 @@ -624,7 +624,14 @@ } } // FreeBSD - (Os::FreeBsd, _) + | (Os::FreeBsd, _) => { + format!( + "{}_{}_{}", + target.target_os().to_string().to_ascii_lowercase(), + target.get_platform_release()?.to_ascii_lowercase(), + target.target_arch().machine(), + ) + } // NetBSD | (Os::NetBsd, _) // OpenBSD @@ -724,7 +731,7 @@ &self.out, &self.project_layout.project_root, &self.metadata24, - &[tag.clone()], + std::slice::from_ref(&tag), self.excludes(Format::Wheel)?, self.compression, )?; @@ -803,7 +810,7 @@ &self.out, &self.project_layout.project_root, &self.metadata24, - &[tag.clone()], + std::slice::from_ref(&tag), self.excludes(Format::Wheel)?, self.compression, )?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/compile.rs new/maturin-1.9.4/src/compile.rs --- old/maturin-1.9.3/src/compile.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/compile.rs 2025-08-27 13:23:56.000000000 +0200 @@ -411,6 +411,11 @@ } } + // Set PYO3_BUILD_EXTENSION_MODULE when building pyo3 extension modules + if bridge_model.is_pyo3() && !bridge_model.is_bin() { + build_command.env("PYO3_BUILD_EXTENSION_MODULE", "1"); + } + // Setup `PYO3_CONFIG_FILE` if we are cross compiling for pyo3 bindings if let Some(interpreter) = python_interpreter { // Target python interpreter isn't runnable when cross compiling diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/module_writer.rs new/maturin-1.9.4/src/module_writer.rs --- old/maturin-1.9.3/src/module_writer.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/module_writer.rs 2025-08-27 13:23:56.000000000 +0200 @@ -243,7 +243,7 @@ compression: CompressionOptions, } impl CompressionOptions { - fn get_file_options(&self) -> zip::write::FileOptions<()> { + fn get_file_options(&self) -> zip::write::FileOptions<'_, ()> { let method = if cfg!(feature = "faster-tests") { // Unlike users which can use the develop subcommand, the tests have to go through // packing a zip which pip than has to unpack. This makes this 2-3 times faster diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/pyproject_toml.rs new/maturin-1.9.4/src/pyproject_toml.rs --- old/maturin-1.9.3/src/pyproject_toml.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/pyproject_toml.rs 2025-08-27 13:23:56.000000000 +0200 @@ -223,6 +223,13 @@ pub unstable_flags: Option<Vec<String>>, /// Additional rustc arguments pub rustc_args: Option<Vec<String>>, + /// Use base Python executable instead of venv Python executable in PEP 517 build. + // + // This can help avoid unnecessary rebuilds, as the Python executable does not change + // every time. It should not be set when the sdist build requires packages installed + // in venv. + #[serde(default)] + pub use_base_python: bool, } /// A pyproject.toml as specified in PEP 517 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/python_interpreter/config.rs new/maturin-1.9.4/src/python_interpreter/config.rs --- old/maturin-1.9.3/src/python_interpreter/config.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/python_interpreter/config.rs 2025-08-27 13:23:56.000000000 +0200 @@ -12,7 +12,21 @@ use std::path::Path; const PYPY_ABI_TAG: &str = "pp73"; -const GRAALPY_ABI_TAG: &str = "graalpy230_310_native"; + +fn graalpy_version_for_python_version(major: usize, minor: usize) -> Option<(usize, usize)> { + match (major, minor) { + (3, 10) => Some((24, 0)), + (3, 11) => Some((24, 2)), + // Since 25.0, GraalPy should only change the major release number for feature releases. + // Additionally, it promises that only the autumn (oddly-numbered) releases are + // allowed to break ABI compatibility, so only those can change the Python version. + // The even-numbered releases will report the ABI version of the previous release. + // So assuming that GraalPy doesn't fall terribly behind on updating Python version, + // the version used in the ABI should follow this formula + (3, 12..) => Some((25 + (minor - 12) * 2, 0)), + (_, _) => None, + } +} /// Some of the sysconfigdata of Python interpreter we care about #[derive(Debug, Clone, Deserialize, Eq, PartialEq)] @@ -92,6 +106,20 @@ gil_disabled, }) } + (Os::Linux, GraalPy) => { + let (graalpy_major, graalpy_minor) = + graalpy_version_for_python_version(major, minor)?; + let ext_suffix = format!(".graalpy{graalpy_major}{graalpy_minor}-{major}{minor}-native-{python_ext_arch}-linux.so"); + Some(Self { + major, + minor, + interpreter_kind: GraalPy, + abiflags: String::new(), + ext_suffix, + pointer_width: Some(target.pointer_width()), + gil_disabled, + }) + } (Os::Macos, CPython) => { let abiflags = if python_version < (3, 8) { "m".to_string() @@ -122,6 +150,20 @@ gil_disabled, }) } + (Os::Macos, GraalPy) => { + let (graalpy_major, graalpy_minor) = + graalpy_version_for_python_version(major, minor)?; + let ext_suffix = format!(".graalpy{graalpy_major}{graalpy_minor}-{major}{minor}-native-{python_ext_arch}-darwin.so"); + Some(Self { + major, + minor, + interpreter_kind: GraalPy, + abiflags: String::new(), + ext_suffix, + pointer_width: Some(target.pointer_width()), + gil_disabled, + }) + } (Os::Windows, CPython) => { let abiflags = if python_version < (3, 8) { "m".to_string() @@ -319,7 +361,11 @@ } } InterpreterKind::PyPy => abi_tag.unwrap_or_else(|| PYPY_ABI_TAG.to_string()), - InterpreterKind::GraalPy => abi_tag.unwrap_or_else(|| GRAALPY_ABI_TAG.to_string()), + InterpreterKind::GraalPy => abi_tag.unwrap_or_else(|| { + let (graalpy_major, graalpy_minor) = + graalpy_version_for_python_version(major, minor).unwrap_or((23, 0)); + format!("graalpy{graalpy_major}{graalpy_minor}_{major}{minor}_native") + }), }; let file_ext = if target.is_windows() { "pyd" } else { "so" }; let ext_suffix = if target.is_linux() || target.is_macos() || target.is_hurd() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/python_interpreter/mod.rs new/maturin-1.9.4/src/python_interpreter/mod.rs --- old/maturin-1.9.3/src/python_interpreter/mod.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/python_interpreter/mod.rs 2025-08-27 13:23:56.000000000 +0200 @@ -325,7 +325,7 @@ match *self { InterpreterKind::CPython => write!(f, "CPython"), InterpreterKind::PyPy => write!(f, "PyPy"), - InterpreterKind::GraalPy => write!(f, "GraalPy"), + InterpreterKind::GraalPy => write!(f, "GraalVM"), } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maturin-1.9.3/src/target/mod.rs new/maturin-1.9.4/src/target/mod.rs --- old/maturin-1.9.3/src/target/mod.rs 2025-08-04 13:39:48.000000000 +0200 +++ new/maturin-1.9.4/src/target/mod.rs 2025-08-27 13:23:56.000000000 +0200 @@ -378,7 +378,7 @@ Ok(release) } - /// Returns the name python uses in `sys.platform` for this architecture. + /// Returns the name python uses in `platform.machine()` for this architecture. pub fn get_python_arch(&self) -> &str { match self.arch { Arch::Aarch64 => "aarch64", ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/python-maturin/vendor.tar.xz /work/SRC/openSUSE:Factory/.python-maturin.new.1977/vendor.tar.xz differ: char 15, line 1
