public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Benjamin A. Beasley <code@musicinmybrain.net>
To: git-commits@fedoraproject.org
Subject: [rpms/maturin] epel10: Update to version 1.14.1; Fixes RHBZ#2413756
Date: Mon, 27 Jul 2026 11:07:49 GMT [thread overview]
Message-ID: <178515046918.1.12448369289380165430.rpms-maturin-aad8858c19e2@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/maturin
Branch : epel10
Commit : aad8858c19e2b1e6770fe85abf9724baf1bc9980
Author : Benjamin A. Beasley <code@musicinmybrain.net>
Date : 2026-07-21T09:23:33+01:00
Stats : +457/-466 in 13 file(s)
URL : https://src.fedoraproject.org/rpms/maturin/c/aad8858c19e2b1e6770fe85abf9724baf1bc9980?branch=epel10
Log:
Update to version 1.14.1; Fixes RHBZ#2413756
---
diff --git a/.gitignore b/.gitignore
index a5a4236..8b0d13d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/maturin-1.8.7.tar.gz
/maturin-1.9.4.tar.gz
/maturin-1.9.6.tar.gz
+/maturin-1.14.1.tar.gz
diff --git a/0001-drop-unavailable-features-and-unused-dev-dependencie.patch b/0001-drop-unavailable-features-and-unused-dev-dependencie.patch
deleted file mode 100644
index 36295eb..0000000
--- a/0001-drop-unavailable-features-and-unused-dev-dependencie.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From fb7b057a5e4a21c5010c8f4807063a51965f30e3 Mon Sep 17 00:00:00 2001
-From: Fabio Valentini <decathorpe@gmail.com>
-Date: Tue, 23 Sep 2025 22:46:35 +0200
-Subject: [PATCH 1/7] drop unavailable features and unused dev-dependencies
-
----
- Cargo.toml | 76 ++----------------------------------------------------
- 1 file changed, 2 insertions(+), 74 deletions(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index f950f92f..2c04871a 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -99,10 +99,6 @@ clap = { version = "4.0.0", features = [
- ] }
- clap_complete_command = { version = "0.6.1", optional = true }
-
--# cross compile
--cargo-zigbuild = { version = "0.20.0", default-features = false, optional = true }
--cargo-xwin = { version = "0.18.6", default-features = false, optional = true }
--
- # log
- tracing = "0.1.36"
- tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
-@@ -112,96 +108,28 @@ dialoguer = { version = "0.11.0", default-features = false, optional = true }
- console = { version = "0.16.0", optional = true }
- minijinja = { version = "2.5.0", optional = true }
-
--# upload
--bytesize = { version = "1.0.1", optional = true }
--configparser = { version = "3.0.3", optional = true }
--dirs = { version = "5.0.0", optional = true }
--multipart = { version = "0.18.0", features = [
-- "client",
--], default-features = false, optional = true }
--ureq = { version = "2.9.4", features = [
-- "gzip",
-- "json",
-- "socks-proxy",
--], default-features = false, optional = true }
--native-tls = { version = "0.2.8", optional = true }
--rustls = { version = "0.23", default-features = false, features = [
-- "logging",
-- "std",
-- "tls12",
--], optional = true }
--rustls-pemfile = { version = "2.1.0", optional = true }
--keyring = { version = "2.3.2", default-features = false, features = [
-- "linux-no-secret-service",
--], optional = true }
--wild = { version = "2.1.0", optional = true }
--
- # JSON schema
- schemars = { version = "0.8.16", optional = true }
- pretty_assertions = { version = "1.3.0", optional = true }
-
- [dev-dependencies]
- expect-test = "1.4.1"
--fs4 = { version = "0.12.0", features = ["fs-err3"] }
- indoc = "2.0.3"
--insta = "1.34.0"
- pretty_assertions = "1.3.0"
--rstest = "0.22.0"
--rustversion = "1.0.9"
- time = { version = "0.3.34", features = ["macros"] }
--trycmd = "0.15.0"
--which = "7.0.0"
-
- [features]
--default = ["full", "rustls"]
-+default = ["full"]
-
--full = ["cli-completion", "cross-compile", "scaffolding", "upload"]
-+full = ["cli-completion", "scaffolding"]
-
- cli-completion = ["dep:clap_complete_command"]
-
--upload = [
-- "ureq",
-- "multipart",
-- "configparser",
-- "bytesize",
-- "dialoguer/password",
-- "wild",
-- "dep:dirs",
--]
--
- schemars = ["dep:schemars", "dep:pretty_assertions"]
-
--# keyring doesn't support *BSD so it's not enabled in `full` by default
--password-storage = ["upload", "keyring"]
--
--rustls = [
-- "dep:rustls",
-- "ureq?/tls",
-- "cargo-xwin?/rustls-tls",
-- "dep:rustls-pemfile",
--]
--native-tls = [
-- "dep:native-tls",
-- "ureq?/native-tls",
-- "cargo-xwin?/native-tls",
-- "dep:rustls-pemfile",
--]
--
--# cross compile using zig or xwin
--cross-compile = ["zig", "xwin"]
--zig = ["cargo-zigbuild"]
--xwin = ["cargo-xwin"]
--
- # project scaffolding
- scaffolding = ["dialoguer", "console", "minijinja", "unicode-xid"]
-
--# Internal feature to speed up the tests significantly
--faster-tests = []
--
--# Deprecated features, keep them now for compatibility
--human-panic = []
--log = []
--
- [profile.profiling]
- inherits = "release"
- debug = true
---
-2.55.0
-
diff --git a/0001-drop-unavailable-features.patch b/0001-drop-unavailable-features.patch
new file mode 100644
index 0000000..17404c6
--- /dev/null
+++ b/0001-drop-unavailable-features.patch
@@ -0,0 +1,137 @@
+From ebe9330b089a50da2b2cbf65ef01c2123d166395 Mon Sep 17 00:00:00 2001
+From: Fabio Valentini <decathorpe@gmail.com>
+Date: Tue, 23 Sep 2025 22:46:35 +0200
+Subject: [PATCH 1/3] drop unavailable features
+
+---
+ Cargo.toml | 75 ++----------------------------------------------------
+ 1 file changed, 2 insertions(+), 73 deletions(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 53267721..80a2b099 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -100,11 +100,6 @@ clap = { version = "4.0.0", features = [
+ ] }
+ clap_complete_command = { version = "0.6.1", optional = true }
+
+-# cross compile
+-cargo-zigbuild = { version = "0.23.0", default-features = false, optional = true }
+-cargo-xwin = { version = "0.23.0", default-features = false, optional = true }
+-xz2 = { version = "0.1", optional = true }
+-
+ # log
+ tracing = "0.1.36"
+ tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
+@@ -115,30 +110,6 @@ dialoguer = { version = "0.12.0", default-features = false, optional = true }
+ console = { version = "0.16.0", optional = true }
+ minijinja = { version = "2.5.0", optional = true }
+
+-# upload
+-bytesize = { version = "2.2.0", optional = true }
+-configparser = { version = "3.0.3", optional = true }
+-dirs = { version = "6.0.0", optional = true }
+-ureq = { version = "3.2.0", features = [
+- "gzip",
+- "json",
+- "socks-proxy",
+- "multipart",
+-], default-features = false, optional = true }
+-native-tls = { version = "0.2.8", optional = true }
+-rustls = { version = "0.23", default-features = false, features = [
+- "logging",
+- "std",
+- "tls12",
+-], optional = true }
+-rustls-pki-types = { version = "1.14.0", optional = true }
+-keyring = { version = "3.6.3", default-features = false, features = [
+- "apple-native",
+- "windows-native",
+- "linux-native",
+-], optional = true }
+-wild = { version = "2.1.0", optional = true }
+-
+ # JSON schema
+ schemars = { version = "1.0.4", optional = true }
+
+@@ -150,9 +121,6 @@ which = { version = "8.0.0", optional = true }
+ memmap2 = "0.9.9"
+ reflink-copy = "0.1.29"
+
+-# auditwheel repair (macOS delocate)
+-arwen = { version = "0.0.5", optional = true }
+-
+ [dev-dependencies]
+ expect-test = "1.4.1"
+ fs4 = { version = "0.13.1", features = ["fs-err3"] }
+@@ -168,54 +136,19 @@ trycmd = "1.2.0"
+ which = "8.0.0"
+
+ [features]
+-default = ["full", "rustls"]
+-
+-full = ["cli-completion", "cross-compile", "scaffolding", "upload", "sbom", "auditwheel"]
++default = ["full"]
+
+-auditwheel = ["dep:arwen", "dep:arwen-codesign"]
++full = ["cli-completion", "scaffolding", "sbom"]
+
+ cli-completion = ["dep:clap_complete_command"]
+
+-upload = [
+- "ureq",
+- "configparser",
+- "bytesize",
+- "dialoguer/password",
+- "wild",
+- "dep:dirs",
+-]
+-
+ schemars = ["dep:schemars", "dep:pretty_assertions"]
+
+ sbom = ["dep:cargo-cyclonedx", "dep:which"]
+
+-# keyring doesn't support *BSD so it's not enabled in `full` by default
+-password-storage = ["upload", "keyring"]
+-
+-rustls = [
+- "dep:rustls",
+- "ureq?/rustls",
+- "cargo-xwin?/rustls-tls",
+- "dep:rustls-pki-types",
+-]
+-native-tls = [
+- "dep:native-tls",
+- "ureq?/native-tls",
+- "cargo-xwin?/native-tls",
+- "dep:rustls-pki-types",
+-]
+-
+-# cross compile using zig or xwin
+-cross-compile = ["zig", "xwin"]
+-zig = ["cargo-zigbuild"]
+-xwin = ["cargo-xwin", "xz2"]
+-
+ # project scaffolding
+ scaffolding = ["dialoguer", "console", "minijinja", "unicode-xid"]
+
+-# static linking dependencies
+-static = ["xz2/static"]
+-
+ # Internal feature to speed up the tests significantly
+ faster-tests = []
+
+@@ -223,10 +156,6 @@ faster-tests = []
+ human-panic = []
+ log = []
+
+-[target.'cfg(not(target_os = "macos"))'.dependencies]
+-# Pure-Rust ad-hoc codesigning, only needed for cross-compilation from non-macOS
+-arwen-codesign = { version = "0.0.1-alpha.1", optional = true }
+-
+ [profile.profiling]
+ inherits = "release"
+ debug = true
+--
+2.55.0
+
diff --git a/0002-drop-incompatible-cargo-flags-from-setuptools_rust.patch b/0002-drop-incompatible-cargo-flags-from-setuptools_rust.patch
index 8157707..d5f74ec 100644
--- a/0002-drop-incompatible-cargo-flags-from-setuptools_rust.patch
+++ b/0002-drop-incompatible-cargo-flags-from-setuptools_rust.patch
@@ -1,7 +1,7 @@
-From c603f36b9c8ae18d87dd9236f5258b43d94bd153 Mon Sep 17 00:00:00 2001
+From 2583e12639914bd443e734de21e4079d82028077 Mon Sep 17 00:00:00 2001
From: Fabio Valentini <decathorpe@gmail.com>
Date: Mon, 19 May 2025 21:57:43 +0200
-Subject: [PATCH 2/7] drop incompatible cargo flags from setuptools_rust
+Subject: [PATCH 2/3] drop incompatible cargo flags from setuptools_rust
---
setup.py | 18 +-----------------
diff --git a/0003-remove-shebang-from-non-executable-__init__.py-file.patch b/0003-remove-shebang-from-non-executable-__init__.py-file.patch
deleted file mode 100644
index 96f09c2..0000000
--- a/0003-remove-shebang-from-non-executable-__init__.py-file.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 2fe7ee57d69b7bd2c3b010e851525bd9c720e1ac Mon Sep 17 00:00:00 2001
-From: Fabio Valentini <decathorpe@gmail.com>
-Date: Tue, 12 Dec 2023 12:36:00 +0100
-Subject: [PATCH 3/7] remove shebang from non-executable __init__.py file
-
----
- maturin/__init__.py | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/maturin/__init__.py b/maturin/__init__.py
-index b8ee63eb..bf6c4103 100644
---- a/maturin/__init__.py
-+++ b/maturin/__init__.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python3
- """
- maturin's implementation of the PEP 517 interface. Calls maturin through subprocess
-
---
-2.55.0
-
diff --git a/0003-revert-to-using-setuptools-for-non-maturin-bootstrap.patch b/0003-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
new file mode 100644
index 0000000..be0a8c6
--- /dev/null
+++ b/0003-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
@@ -0,0 +1,30 @@
+From f219473474ec8ffc9f82fc3ec4799d16575ad75d Mon Sep 17 00:00:00 2001
+From: Fabio Valentini <decathorpe@gmail.com>
+Date: Tue, 23 Sep 2025 22:47:53 +0200
+Subject: [PATCH 3/3] revert to using setuptools for non-maturin bootstrap
+ build
+
+---
+ pyproject.toml | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index 05c67cc1..bf0641a0 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -3,10 +3,9 @@
+ requires = [
+ "setuptools",
+ "tomli>=1.1.0 ; python_version<'3.11'",
+- "setuptools-rust>=1.11.0",
++ "setuptools-rust>=1.4.0",
+ ]
+-backend-path = ["maturin"]
+-build-backend = "bootstrap"
++build-backend = "setuptools.build_meta"
+
+ [project]
+ name = "maturin"
+--
+2.55.0
+
diff --git a/0004-Bump-base64-from-0.21-to-0.22-and-itertools-from-0.1.patch b/0004-Bump-base64-from-0.21-to-0.22-and-itertools-from-0.1.patch
deleted file mode 100644
index bf48b9a..0000000
--- a/0004-Bump-base64-from-0.21-to-0.22-and-itertools-from-0.1.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From bed43f246fec955de89c255f82a9bbed0211da28 Mon Sep 17 00:00:00 2001
-From: Fabio Valentini <decathorpe@gmail.com>
-Date: Wed, 19 Mar 2025 15:49:22 +0100
-Subject: [PATCH 4/7] Bump base64 from 0.21 to 0.22 and itertools from 0.12 to
- 0.14
-
----
- Cargo.toml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 2c04871a..8c6ae4b6 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -40,7 +40,7 @@ name = "maturin"
-
- [dependencies]
- anyhow = "1.0.80"
--base64 = "0.21.0"
-+base64 = "0.22.0"
- glob = "0.3.0"
- cargo-config2 = "0.1.24"
- cargo_metadata = "0.19.0"
-@@ -77,7 +77,7 @@ pyproject-toml = { version = "0.13.5", features = ["pep639-glob"] }
- python-pkginfo = "0.6.5"
- textwrap = "0.16.1"
- ignore = "0.4.20"
--itertools = "0.12.1"
-+itertools = "0.14"
- lddtree = "0.3.7"
- cc = "1.0.88"
- dunce = "1.0.2"
---
-2.55.0
-
diff --git a/0005-revert-to-using-setuptools-for-non-maturin-bootstrap.patch b/0005-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
deleted file mode 100644
index cbc7e37..0000000
--- a/0005-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fe72c708b583e93c99a7e5dacfd2ff53f0555bd8 Mon Sep 17 00:00:00 2001
-From: Fabio Valentini <decathorpe@gmail.com>
-Date: Tue, 23 Sep 2025 22:47:53 +0200
-Subject: [PATCH 5/7] revert to using setuptools for non-maturin bootstrap
- build
-
----
- pyproject.toml | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/pyproject.toml b/pyproject.toml
-index a04b3bef..6c49d705 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -3,10 +3,9 @@
- requires = [
- "setuptools",
- "tomli>=1.1.0 ; python_version<'3.11'",
-- "setuptools-rust>=1.11.0",
-+ "setuptools-rust>=1.4.0",
- ]
--backend-path = ["maturin"]
--build-backend = "bootstrap"
-+build-backend = "setuptools.build_meta"
-
- [project]
- name = "maturin"
---
-2.55.0
-
diff --git a/0006-Update-cargo_metadata-to-0.20.0-2864.patch b/0006-Update-cargo_metadata-to-0.20.0-2864.patch
deleted file mode 100644
index 9ef96f8..0000000
--- a/0006-Update-cargo_metadata-to-0.20.0-2864.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 2ef2ec6ca9e1734d620c0d07a66feac10a301479 Mon Sep 17 00:00:00 2001
-From: Eashwar Ranganathan <eashwar@eashwar.com>
-Date: Thu, 20 Nov 2025 18:51:25 -0500
-Subject: [PATCH 6/7] Update cargo_metadata to 0.20.0 (#2864)
-
----
- Cargo.toml | 2 +-
- src/build_options.rs | 32 +++++++++++++++++++++-----------
- src/compile.rs | 6 +++---
- src/metadata.rs | 2 +-
- src/source_distribution.rs | 4 ++--
- 5 files changed, 28 insertions(+), 18 deletions(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 8c6ae4b6..7d0ffca5 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -43,7 +43,7 @@ anyhow = "1.0.80"
- base64 = "0.22.0"
- glob = "0.3.0"
- cargo-config2 = "0.1.24"
--cargo_metadata = "0.19.0"
-+cargo_metadata = ">=0.20.0, <0.24.0"
- cargo-options = "0.7.2"
- cbindgen = { version = "0.29.0", default-features = false }
- flate2 = "1.0.18"
-diff --git a/src/build_options.rs b/src/build_options.rs
-index f0a7c9e2..2a52e837 100644
---- a/src/build_options.rs
-+++ b/src/build_options.rs
-@@ -935,16 +935,16 @@ fn filter_cargo_targets(
- config_targets: Option<&[crate::pyproject_toml::CargoTarget]>,
- ) -> Result<Vec<CompileTarget>> {
- let root_pkg = cargo_metadata.root_package().unwrap();
-- let resolved_features = cargo_metadata
-+ let resolved_features: Vec<String> = cargo_metadata
- .resolve
- .as_ref()
-- .and_then(|resolve| resolve.nodes.iter().find(|node| node.id == root_pkg.id))
-- .map(|node| node.features.clone())
-+ .and_then(|resolve| resolve.nodes.iter().find(|&node| node.id == root_pkg.id))
-+ .map(|node| node.features.iter().map(|f| f.to_string()).collect())
- .unwrap_or_default();
- let mut targets: Vec<_> = root_pkg
- .targets
- .iter()
-- .filter(|target| match bridge {
-+ .filter(|&target| match bridge {
- BridgeModel::Bin(_) => {
- let is_bin = target.is_bin();
- if target.required_features.is_empty() {
-@@ -1017,15 +1017,19 @@ fn filter_cargo_targets(
- fn has_abi3(deps: &HashMap<&str, &Node>) -> Result<Option<Abi3Version>> {
- for &lib in PYO3_BINDING_CRATES.iter() {
- let lib = lib.as_str();
-- if let Some(pyo3_crate) = deps.get(lib) {
-+ if let Some(&pyo3_crate) = deps.get(lib) {
- // Find the minimal abi3 python version. If there is none, abi3 hasn't been selected
- // This parser abi3-py{major}{minor} and returns the minimal (major, minor) tuple
-- let abi3_selected = pyo3_crate.features.iter().any(|x| x == "abi3");
-+ let abi3_selected = pyo3_crate
-+ .features
-+ .iter()
-+ .map(AsRef::as_ref)
-+ .any(|x| x == "abi3");
-
- let min_abi3_version = pyo3_crate
- .features
- .iter()
-- .filter(|x| x.starts_with("abi3-py") && x.len() >= "abi3-pyxx".len())
-+ .filter(|&x| x.starts_with("abi3-py") && x.len() >= "abi3-pyxx".len())
- .map(|x| {
- Ok((
- (x.as_bytes()[7] as char).to_string().parse::<u8>()?,
-@@ -1061,10 +1065,11 @@ fn is_generating_import_lib(cargo_metadata: &Metadata) -> Result<bool> {
- .filter(|package| cargo_metadata[&package.id].name.as_str() == lib)
- .collect::<Vec<_>>();
- match pyo3_packages.as_slice() {
-- [pyo3_crate] => {
-+ &[pyo3_crate] => {
- let generate_import_lib = pyo3_crate
- .features
- .iter()
-+ .map(AsRef::as_ref)
- .any(|x| x == "generate-import-lib" || x == "generate-abi3-import-lib");
- return Ok(generate_import_lib);
- }
-@@ -1165,9 +1170,9 @@ pub fn find_bridge(cargo_metadata: &Metadata, bridge: Option<&str>) -> Result<Br
- .packages
- .iter()
- .filter_map(|pkg| {
-- let name = &pkg.name;
-+ let name = pkg.name.as_ref();
- if name == "pyo3" || name == "pyo3-ffi" || name == "cpython" || name == "uniffi" {
-- Some((name.as_ref(), pkg))
-+ Some((name, pkg))
- } else {
- None
- }
-@@ -1231,7 +1236,12 @@ pub fn find_bridge(cargo_metadata: &Metadata, bridge: Option<&str>) -> Result<Br
- if !bridge.is_bin() && bridge.is_pyo3_crate(lib) {
- let lib_name = lib.as_str();
- let pyo3_node = deps[lib_name];
-- if !pyo3_node.features.contains(&"extension-module".to_string()) {
-+ if !pyo3_node
-+ .features
-+ .iter()
-+ .map(AsRef::as_ref)
-+ .any(|f| f == "extension-module")
-+ {
- let version = cargo_metadata[&pyo3_node.id].version.to_string();
- eprintln!(
- "⚠️ Warning: You're building a library without activating {lib}'s \
-diff --git a/src/compile.rs b/src/compile.rs
-index 52812deb..75287d65 100644
---- a/src/compile.rs
-+++ b/src/compile.rs
-@@ -541,7 +541,7 @@ fn compile_target(
- };
-
- // Extract the location of the .so/.dll/etc. from cargo's json output
-- if crate_name == &context.crate_name {
-+ if crate_name.as_ref() == context.crate_name {
- let tuples = artifact
- .target
- .crate_types
-@@ -686,9 +686,9 @@ fn pyo3_version(cargo_metadata: &cargo_metadata::Metadata) -> Option<(u64, u64,
- .packages
- .iter()
- .filter_map(|pkg| {
-- let name = &pkg.name;
-+ let name = pkg.name.as_ref();
- if name == "pyo3" || name == "pyo3-ffi" {
-- Some((name.as_ref(), pkg))
-+ Some((name, pkg))
- } else {
- None
- }
-diff --git a/src/metadata.rs b/src/metadata.rs
-index f65dabb3..08646af5 100644
---- a/src/metadata.rs
-+++ b/src/metadata.rs
-@@ -528,7 +528,7 @@ impl Metadata24 {
- license: package.license.clone(),
- license_files,
- project_url,
-- ..Metadata24::new(name, version)
-+ ..Metadata24::new(name.to_string(), version)
- };
- Ok(metadata)
- }
-diff --git a/src/source_distribution.rs b/src/source_distribution.rs
-index 0dc7a2a5..d0ea47b9 100644
---- a/src/source_distribution.rs
-+++ b/src/source_distribution.rs
-@@ -342,7 +342,7 @@ pub fn find_path_deps(cargo_metadata: &Metadata) -> Result<HashMap<String, PathD
- let dependency = top
- .dependencies
- .iter()
-- .find(|package| {
-+ .find(|&package| {
- // Package ids are opaque and there seems to be no way to query their name.
- let dep_name = &cargo_metadata
- .packages
-@@ -350,7 +350,7 @@ pub fn find_path_deps(cargo_metadata: &Metadata) -> Result<HashMap<String, PathD
- .find(|package| &package.id == dep_id)
- .unwrap()
- .name;
-- &package.name == dep_name
-+ package.name == dep_name.as_ref()
- })
- .unwrap();
- if let Some(path) = &dependency.path {
---
-2.55.0
-
diff --git a/0007-Update-dialoguer-to-0.12.patch b/0007-Update-dialoguer-to-0.12.patch
deleted file mode 100644
index d7f46c6..0000000
--- a/0007-Update-dialoguer-to-0.12.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From c35ce6a0fded014e283cb576feba7b91003731c9 Mon Sep 17 00:00:00 2001
-From: "Benjamin A. Beasley" <code@musicinmybrain.net>
-Date: Thu, 9 Jul 2026 07:20:57 +0100
-Subject: [PATCH 7/7] Update dialoguer to 0.12
-
-https://github.com/PyO3/maturin/commit/a11e002b87806fc9825709154bca80fc10530fc7
----
- Cargo.toml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 7d0ffca5..916cef62 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -104,7 +104,7 @@ tracing = "0.1.36"
- tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
-
- # project scaffolding, maturin new/init/generate-ci
--dialoguer = { version = "0.11.0", default-features = false, optional = true }
-+dialoguer = { version = "0.12.0", default-features = false, optional = true }
- console = { version = "0.16.0", optional = true }
- minijinja = { version = "2.5.0", optional = true }
-
---
-2.55.0
-
diff --git a/3258.patch b/3258.patch
new file mode 100644
index 0000000..6c8d17c
--- /dev/null
+++ b/3258.patch
@@ -0,0 +1,128 @@
+From 78dfb8f76293ea6c6774b306afda3f878db0e827 Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code@musicinmybrain.net>
+Date: Sat, 11 Jul 2026 08:09:28 +0100
+Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20specify=20generate-import-lib?=
+ =?UTF-8?q?=20for=20PyO3=200.29?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since the `generate-import-lib` feature is deprecated in PyO3 0.29 and
+no longer has any effect, https://github.com/PyO3/pyo3/pull/5866, this
+commit stops asking for it in test crates.
+---
+ test-crates/pyo3-abi3-and-abi3t/Cargo.toml | 2 --
+ test-crates/pyo3-abi3t/Cargo.toml | 1 -
+ test-crates/pyo3-mixed-include-exclude/Cargo.toml | 2 +-
+ test-crates/pyo3-mixed-src/rust/Cargo.toml | 2 +-
+ .../rust/python/pyo3-mixed-workspace-py/Cargo.toml | 2 +-
+ test-crates/pyo3-mixed/Cargo.toml | 2 +-
+ test-crates/pyo3-pure/Cargo.toml | 1 -
+ tests/run/sdist.rs | 1 -
+ 8 files changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/test-crates/pyo3-abi3-and-abi3t/Cargo.toml b/test-crates/pyo3-abi3-and-abi3t/Cargo.toml
+index 67850096d..4984e8aed 100644
+--- a/test-crates/pyo3-abi3-and-abi3t/Cargo.toml
++++ b/test-crates/pyo3-abi3-and-abi3t/Cargo.toml
+@@ -13,12 +13,10 @@ default = ["abi3-and-abi3t-py315"]
+ abi3-and-abi3t-py315 = [
+ "pyo3/abi3-py38",
+ "pyo3/abi3t-py315",
+- "pyo3/generate-import-lib",
+ ]
+ abi3-and-current-abi3t = [
+ "pyo3/abi3-py38",
+ "pyo3/abi3t",
+- "pyo3/generate-import-lib",
+ ]
+
+ [lib]
+diff --git a/test-crates/pyo3-abi3t/Cargo.toml b/test-crates/pyo3-abi3t/Cargo.toml
+index e0963f727..7bf679c6a 100644
+--- a/test-crates/pyo3-abi3t/Cargo.toml
++++ b/test-crates/pyo3-abi3t/Cargo.toml
+@@ -8,7 +8,6 @@ license = "MIT"
+ [dependencies]
+ pyo3 = { version = "0.29.0", features = [
+ "abi3t-py315",
+- "generate-import-lib",
+ ] }
+
+ [lib]
+diff --git a/test-crates/pyo3-mixed-include-exclude/Cargo.toml b/test-crates/pyo3-mixed-include-exclude/Cargo.toml
+index 5379fc5a9..5027603e1 100644
+--- a/test-crates/pyo3-mixed-include-exclude/Cargo.toml
++++ b/test-crates/pyo3-mixed-include-exclude/Cargo.toml
+@@ -6,7 +6,7 @@ description = "Implements a dummy function combining rust and python"
+ edition = "2021"
+
+ [dependencies]
+-pyo3 = { version = "0.29.0", features = ["generate-import-lib"] }
++pyo3 = { version = "0.29.0" }
+
+ [lib]
+ name = "pyo3_mixed_include_exclude"
+diff --git a/test-crates/pyo3-mixed-src/rust/Cargo.toml b/test-crates/pyo3-mixed-src/rust/Cargo.toml
+index 3dd63e936..70ab4c502 100644
+--- a/test-crates/pyo3-mixed-src/rust/Cargo.toml
++++ b/test-crates/pyo3-mixed-src/rust/Cargo.toml
+@@ -6,7 +6,7 @@ description = "Implements a dummy function combining rust and python"
+ edition = "2021"
+
+ [dependencies]
+-pyo3 = { version = "0.29.0", features = ["generate-import-lib"] }
++pyo3 = { version = "0.29.0" }
+
+ [lib]
+ name = "pyo3_mixed_src"
+diff --git a/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/Cargo.toml b/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/Cargo.toml
+index cc6ecdae1..a19bd7e3a 100644
+--- a/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/Cargo.toml
++++ b/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/Cargo.toml
+@@ -7,7 +7,7 @@ edition = "2021"
+
+ [dependencies]
+ pyo3-mixed-workspace = { path = "../../pyo3-mixed-workspace" }
+-pyo3 = { version = "0.29.0", features = ["generate-import-lib", ] }
++pyo3 = { version = "0.29.0" }
+
+ [lib]
+ name = "pyo3_mixed_workspace_py"
+diff --git a/test-crates/pyo3-mixed/Cargo.toml b/test-crates/pyo3-mixed/Cargo.toml
+index 30146ed97..b83103943 100644
+--- a/test-crates/pyo3-mixed/Cargo.toml
++++ b/test-crates/pyo3-mixed/Cargo.toml
+@@ -6,7 +6,7 @@ description = "Implements a dummy function combining rust and python"
+ edition = "2021"
+
+ [dependencies]
+-pyo3 = { version = "0.29.0", features = ["generate-import-lib"] }
++pyo3 = { version = "0.29.0" }
+
+ [lib]
+ name = "pyo3_mixed"
+diff --git a/test-crates/pyo3-pure/Cargo.toml b/test-crates/pyo3-pure/Cargo.toml
+index b2240d582..77c49d381 100644
+--- a/test-crates/pyo3-pure/Cargo.toml
++++ b/test-crates/pyo3-pure/Cargo.toml
+@@ -9,7 +9,6 @@ license = "MIT"
+ [dependencies]
+ pyo3 = { version = "0.29.0", features = [
+ "abi3-py39",
+- "generate-import-lib",
+ ] }
+
+ [lib]
+diff --git a/tests/run/sdist.rs b/tests/run/sdist.rs
+index 2bbd54934..e945440f4 100644
+--- a/tests/run/sdist.rs
++++ b/tests/run/sdist.rs
+@@ -488,7 +488,6 @@ fn workspace_members_non_local_dep_sdist() {
+ [dependencies]
+ pyo3 = { version = "0.29.0", features = [
+ "abi3-py39",
+- "generate-import-lib",
+ ] }
+
+ [lib]
diff --git a/maturin.spec b/maturin.spec
index e7f4e06..23ec464 100644
--- a/maturin.spec
+++ b/maturin.spec
@@ -1,19 +1,22 @@
%bcond check 1
+# Fedora and EPEL have patchelf; RHEL/ELN don’t want it.
+%bcond patchelf %[ %{undefined rhel} || %{defined epel} ]
+
Name: maturin
-Version: 1.9.6
+Version: 1.14.1
Release: %autorelease
Summary: Build and publish Rust crates as Python packages
SourceLicense: MIT OR Apache-2.0
-%global pypi_version %(echo %{version} | tr -d "~")
-
# (Apache-2.0 OR MIT) AND BSD-3-Clause
+# (MIT OR Apache-2.0) AND Apache-2.0 AND CC0-1.0
# (MIT OR Apache-2.0) AND Unicode-3.0
# (MIT OR Apache-2.0) AND Unicode-DFS-2016
# 0BSD
# 0BSD OR MIT OR Apache-2.0
# Apache-2.0
+# Apache-2.0 AND MIT
# Apache-2.0 OR BSD-2-Clause
# Apache-2.0 OR MIT
# Apache-2.0 WITH LLVM-exception
@@ -22,23 +25,29 @@ SourceLicense: MIT OR Apache-2.0
# MIT
# MIT OR Apache-2.0
# MIT OR Zlib OR Apache-2.0
+# MIT-0
# MIT-0 OR Apache-2.0
# MPL-2.0
# Unicode-3.0
# Unlicense OR MIT
+# Zlib
# bzip2-1.0.6
License: %{shrink:
0BSD AND
Apache-2.0 AND
Apache-2.0 WITH LLVM-exception AND
BSD-3-Clause AND
+ CC0-1.0 AND
MIT AND
+ MIT-0 AND
MPL-2.0 AND
Unicode-3.0 AND
Unicode-DFS-2016 AND
+ Zlib AND
bzip2-1.0.6 AND
(0BSD OR MIT OR Apache-2.0) AND
(Apache-2.0 OR BSD-2-Clause) AND
+ (Apache-2.0 OR BSL-1.0) AND
(Apache-2.0 OR MIT) AND
(Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND
(BSD-2-Clause OR Apache-2.0 OR MIT) AND
@@ -49,46 +58,65 @@ License: %{shrink:
# LICENSE.dependencies contains a full license breakdown
URL: https://github.com/PyO3/maturin
-Source0: %{pypi_source maturin %{pypi_version}}
+Source: %{url}/archive/v%{version}/maturin-%{version}.tar.gz
# * avoid PEP 639 when building maturin itself:
# this allows relaxing the setuptools version required for the build
Patch: 0000-Avoid-PEP-639-when-building-maturin-itself.patch
-# * disable features with missing dependencies:
-# - cross (support for cross compiling with zig / xwin)
-# - upload (support for uploading wheels to PyPI)
-# * drop unused test dependencies
-Patch: 0001-drop-unavailable-features-and-unused-dev-dependencie.patch
+# * Remove unwanted feature groups and optional dependencies, and/or those with
+# missing dependencies:
+#
+# - “cross compile”: optional dependencies cargo-zigbuild, cargo-xwin, xz2.
+# Neither cargo-zigbuild nor cargo-xwin is packaged.
+# - “cross compile using zig or xwin”: features cross-compile, zig, xwin.
+# These would depend on “cross compile” optional dependencies. Note that
+# “cross-compile” is removed from the “full” feature, which is a default
+# feature.
+# - arwen-codesign, “Pure-Rust ad-hoc codesigning, only needed for
+# cross-compilation from non-macOS”, dropped with cross-compiling features
+# and not packaged anyway
+# - static feature: only applies to xz2, which we dropped, and we would not
+# want to link liblzma or any other system libraries statically anyway.
+#
+# - upload feature: The “maturin upload” command is deprecated since 1.11.0,
+# and we lack some dependencies. Note that upload is removed from the
+# full feature, which is a default feature.
+# - “upload”: optional dependencies bytesize, configparser, dirs, ureq,
+# native-tls, rustls, rustls-pki-types, keyring, wild. These all support
+# the upload feature.
+# - rustls, native-tls; also only needed for the upload feature. Note that
+# rustls is removed from the default features.
+# - password-storage feature; associated with and requires the upload feature
+#
+# - auditwheel feature: requires arwen, arwen-codesign, which we *could*
+# package but haven’t. Note that auditwheel is removed from the full
+# feature, which is a default feature.
+Patch: 0001-drop-unavailable-features.patch
# * drop incompatible arguments from setuptools_rust cargo invocations
Patch: 0002-drop-incompatible-cargo-flags-from-setuptools_rust.patch
-# * drop #!/usr/bin/env python3 shebang from maturin/__init__.py
-# https://github.com/PyO3/maturin/pull/2775
-Patch: 0003-remove-shebang-from-non-executable-__init__.py-file.patch
-
-# * Update base64 from 0.21 to 0.22
-# https://github.com/PyO3/maturin/pull/2776
-# * Update itertools dependency from 0.12 to 0.14
-# https://github.com/PyO3/maturin/pull/2779
-Patch: 0004-Bump-base64-from-0.21-to-0.22-and-itertools-from-0.1.patch
-
-# * revert to building maturin with setuptools instead of boostrapping maturin
-Patch: 0005-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
+# * revert to building maturin with setuptools instead of bootstrapping maturin
+Patch: 0003-revert-to-using-setuptools-for-non-maturin-bootstrap.patch
-# * Update cargo_metadata to 0.20.0: https://github.com/PyO3/maturin/pull/2864.
-# Further widen the allowed versions to permit cargo_metadata 0.23, which was
-# considered upstream in https://github.com/PyO3/maturin/pull/2817, but
-# rejected for now due (solely) to MSRV.
-Patch: 0006-Update-cargo_metadata-to-0.20.0-2864.patch
-
-# * Update dialoguer to 0.12:
-# https://github.com/PyO3/maturin/commit/a11e002b87806fc9825709154bca80fc10530fc7
-Patch: 0007-Update-dialoguer-to-0.12.patch
+# Don’t specify generate-import-lib for PyO3 0.29
+# https://github.com/PyO3/maturin/pull/3258
+Patch: %{url}/pull/3258.patch
BuildRequires: cargo-rpm-macros >= 24
-BuildRequires: python3-devel
+%if %{with patchelf}
+BuildRequires: tomcli
+%endif
+
+# Some sdist tests expect to see .gitignore files in the sdist, which only
+# happens when they are run from inside a git repository, which we create via
+# %%autosetup -S git, regardless of whether the check bcond is enabled or not.
+BuildRequires: git-core
+# Some tests need to create virtualenvs, preferring “uv venv” (which would be a
+# circular dependency) and falling back to “virtualenv.” It turns out that all
+# such tests would try to pip-install things from PyPI and therefore must be
+# skipped, so we don’t need either of these possible dependencies.
# maturin requires cargo to be available in $PATH
Requires: cargo
@@ -99,25 +127,83 @@ Requires: cargo
Build and publish crates with pyo3, rust-cpython and cffi bindings as
well as rust binaries as python packages.
+# There are two Python extras defined in pyproject.toml:
+# zig:
+# We do have zig in Fedora. We don’t have python3dist(ziglang), which is just
+# a hack for installing the zig toolchain via PyPI, but we could work around
+# that. More importantly, we have patched out support for cross-compiling
+# with cargo-zigbuild, so there is no point in exposing this extra.
+%if %{with patchelf}
+# Based on %%pyproject_extras_subpkg -n maturin -a patchelf, but we have added
+# a dependency on the patchelf command-line tool.
+%package -n maturin+patchelf
+Summary: Metapackage for maturin: patchelf extras
+
+BuildArch: noarch
+
+Requires: maturin = %{version}-%{release}
+Requires: /usr/bin/patchelf
+
+%description -n maturin+patchelf
+This is a metapackage bringing in patchelf extras requires for maturin.
+It makes sure the dependencies are installed.
+
+%files -n maturin+patchelf -f %{_pyproject_ghost_distinfo}
+%endif
+
%prep
-%autosetup -n maturin-%{pypi_version} -p1
+%autosetup -n maturin-%{version} -p1 -S git
%cargo_prep
+%if %{with patchelf}
+# We don’t have python3dist(patchelf), corresponding to
+# https://pypi.org/project/patchelf/, which is just a hack for installing the
+# patchelf tool via PyPI. We can still provide the extra by ensuring the
+# system-wide patchelf command-line tool is installed.
+tomcli set pyproject.toml lists delitem \
+ project.optional-dependencies.patchelf patchelf
+%endif
+
+# Ensure we don’t use Cargo.lock files from any of the test crates.
+find test-crates -type f -name Cargo.lock -print -delete
+
+# Remove pre-compiled Windows executable, “Mock for the windows python launcher
+# we can insert in path,” to prove it is unused.
+rm test-data/py.exe
+
%generate_buildrequires
-%pyproject_buildrequires
+%pyproject_buildrequires -x patchelf
%cargo_generate_buildrequires -f schemars
+%if %{with check}
+for toml in test-crates/*/Cargo.toml
+do
+ dir="$(dirname "${toml}")"
+ case "${dir}" in
+ # Relies on pinned PyO3 0.25; avoid a compat-package dependency.
+ test-crates/pyo3-no-extension-module) continue ;;
+ # We have no rust-uniffi package.
+ test-crates/uniffi-*) continue ;;
+ esac
+ pushd "${dir}" >/dev/null
+ %cargo_generate_buildrequires -a
+ popd >/dev/null
+done
+%endif
+
%build
+# No longer needs to be done manually in Fedora; needed in EPEL
export RUSTFLAGS="%{build_rustflags}"
-%pyproject_wheel
# write license summary and breakdown
%{cargo_license_summary}
%{cargo_license} > LICENSE.dependencies
+%pyproject_wheel
+
%install
%pyproject_install
-%pyproject_save_files maturin
+%pyproject_save_files -l maturin
# generate and install shell completions
target/rpm/maturin completions bash > maturin.bash
@@ -130,20 +216,43 @@ install -Dpm 0644 _maturin -t %{buildroot}/%{zsh_completions_dir}
%if %{with check}
%check
-# * skip tests for which fixtures are not included in published sources
-%{cargo_test -- -- --exact %{shrink:
- --skip build_options::test::test_find_bridge_bin
- --skip build_options::test::test_find_bridge_cffi
- --skip build_options::test::test_find_bridge_pyo3
- --skip build_options::test::test_find_bridge_pyo3_abi3
- --skip build_options::test::test_find_bridge_pyo3_feature
- --skip metadata::test::test_implicit_readme
- --skip metadata::test::test_merge_metadata_from_pyproject_dynamic_license_test
- --skip metadata::test::test_merge_metadata_from_pyproject_toml
- --skip metadata::test::test_merge_metadata_from_pyproject_toml_with_customized_python_source_dir
- --skip metadata::test::test_pep639
- --skip pyproject_toml::tests::test_warn_missing_maturin_version
-}}
+# We chose not to generate a dependency on a pinned PyO3 0.25 in order to avoid
+# an otherwise-unnecessary dependency on a rust-pyo3_0.25 compat package.
+skip="${skip-} --skip=errors::pyo3_no_extension_module"
+
+# These would try to install Python packages into virtualenvs from the network,
+# such as cffi, pip, or uv, even if they are already installed system-wide.
+# Some may also have other obstacles, e.g. no uniffi crate.
+skip="${skip-} --skip=develop::develop_backend_parameterized_cases::"
+skip="${skip-} --skip=develop::develop_cffi_cases::"
+skip="${skip-} --skip=develop::develop_pip_cases::"
+skip="${skip-} --skip=develop::develop_uv_cases::"
+skip="${skip-} --skip=integration::integration_cases::"
+skip="${skip-} --skip=integration::integration_cffi_cases::"
+skip="${skip-} --skip=integration::integration_pyo3_abi3t"
+skip="${skip-} --skip=integration::integration_pyo3_bin"
+skip="${skip-} --skip=integration::pyo3_cffi_build_script"
+skip="${skip-} --skip=pep517::pep517_default_profile"
+skip="${skip-} --skip=pep517::pep517_editable_profile"
+
+# Don’t attempt WASM-related tests.
+# (“Failed to build a native library through cargo”)
+skip="${skip-} --skip=integration::integration_wasm_hello_world"
+
+# We are not sure why this sdist has extra contents:
+# pyo3_pure-0.1.0+abc123de/.cargo/.global-cache
+# pyo3_pure-0.1.0+abc123de/.cargo/.package-cache
+# pyo3_pure-0.1.0+abc123de/.cargo/.package-cache-mutate
+# pyo3_pure-0.1.0+abc123de/.cargo/registry/CACHEDIR.TAG
+skip="${skip-} --skip=sdist::workspace_members_non_local_dep_sdist"
+
+# Unclear exactly what’s going wrong here (“`cargo metadata` exited with an
+# error:” with no further output), but this test is creating a local git
+# repository and then a dependency on it, and it is little surprise that this
+# turns out to be a bit brittle.
+skip="${skip-} --skip=sdist::lib_with_parent_workspace_git_dep_sdist"
+
+%{cargo_test -- -- ${skip-}}
%endif
%files -f %{pyproject_files}
diff --git a/sources b/sources
index 6891b1d..295b998 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (maturin-1.9.6.tar.gz) = 298b8f5f6679572044422b05514cc3987a93e24627ca905721b4fe5dd20b47b007171e8ed5ccb276391f680a9adbacf585dc91bf1ba18dd642c989918224566d
+SHA512 (maturin-1.14.1.tar.gz) = db2fd5fa98edafad85e42bd9a5eae45525a706b550604d49a62431211dc14a83841a851ce5a53bfd298ce4a14546efc62e8ef4349946e40d5f688ee16f6b2962
reply other threads:[~2026-07-27 11:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178515046918.1.12448369289380165430.rpms-maturin-aad8858c19e2@fedoraproject.org \
--to=code@musicinmybrain.net \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox