File: fix-cargo-metadata-api-build-options

package info (click to toggle)
python-maturin 1.9.4-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,540 kB
  • sloc: python: 656; javascript: 93; sh: 55; makefile: 10
file content (98 lines) | stat: -rw-r--r-- 4,904 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Description: Fix cargo_metadata API compatibility in multiple files
 Add .as_str() calls when comparing PackageName and FeatureName with string literals.
 Convert PackageName to String when needed using .to_string().
 This adapts to cargo_metadata 0.23 API changes.
Author: Jelmer Vernooij <jelmer@debian.org>
Forwarded: not-needed
Last-Update: 2025-11-05
Index: maturin/src/build_options.rs
===================================================================
--- maturin.orig/src/build_options.rs
+++ maturin/src/build_options.rs
@@ -950,7 +950,7 @@ fn filter_cargo_targets(
                         && target
                             .required_features
                             .iter()
-                            .all(|f| resolved_features.contains(f))
+                            .all(|f| resolved_features.iter().any(|rf| rf.as_str() == f.as_str()))
                 }
             }
             _ => target.crate_types.contains(&CrateType::CDyLib),
@@ -1015,7 +1015,7 @@ fn has_abi3(deps: &HashMap<&str, &Node>)
         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().any(|x| x.as_str() == "abi3");
 
             let min_abi3_version = pyo3_crate
                 .features
@@ -1060,7 +1060,7 @@ fn is_generating_import_lib(cargo_metada
                 let generate_import_lib = pyo3_crate
                     .features
                     .iter()
-                    .any(|x| x == "generate-import-lib" || x == "generate-abi3-import-lib");
+                    .any(|x| x.as_str() == "generate-import-lib" || x.as_str() == "generate-abi3-import-lib");
                 return Ok(generate_import_lib);
             }
             _ => continue,
@@ -1161,7 +1161,7 @@ pub fn find_bridge(cargo_metadata: &Meta
         .iter()
         .filter_map(|pkg| {
             let name = &pkg.name;
-            if name == "pyo3" || name == "pyo3-ffi" || name == "cpython" || name == "uniffi" {
+            if name.as_str() == "pyo3" || name.as_str() == "pyo3-ffi" || name.as_str() == "cpython" || name.as_str() == "uniffi" {
                 Some((name.as_ref(), pkg))
             } else {
                 None
@@ -1226,7 +1226,7 @@ pub fn find_bridge(cargo_metadata: &Meta
         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().any(|f| f.as_str() == "extension-module") {
                 let version = cargo_metadata[&pyo3_node.id].version.to_string();
                 eprintln!(
                     "⚠️  Warning: You're building a library without activating {lib}'s \
Index: maturin/src/compile.rs
===================================================================
--- maturin.orig/src/compile.rs
+++ maturin/src/compile.rs
@@ -687,7 +687,7 @@ fn pyo3_version(cargo_metadata: &cargo_m
         .iter()
         .filter_map(|pkg| {
             let name = &pkg.name;
-            if name == "pyo3" || name == "pyo3-ffi" {
+            if name.as_str() == "pyo3" || name.as_str() == "pyo3-ffi" {
                 Some((name.as_ref(), pkg))
             } else {
                 None
Index: maturin/src/metadata.rs
===================================================================
--- maturin.orig/src/metadata.rs
+++ maturin/src/metadata.rs
@@ -478,7 +478,7 @@ impl Metadata24 {
                 }
             }
         };
-        let name = package.name.clone();
+        let name = package.name.to_string();
         let mut project_url = IndexMap::new();
         if let Some(repository) = package.repository.as_ref() {
             project_url.insert("Source Code".to_string(), repository.clone());
Index: maturin/src/build_context.rs
===================================================================
--- maturin.orig/src/build_context.rs
+++ maturin/src/build_context.rs
@@ -1319,10 +1319,7 @@ pub(crate) fn rustc_macosx_target_versio
             .context("llvm-target is not a string")?;
         let triple = llvm_target.parse::<target_lexicon::Triple>();
         let (major, minor) = match triple.map(|t| t.operating_system) {
-            Ok(
-                OperatingSystem::MacOSX(Some(deployment_target))
-                | OperatingSystem::Darwin(Some(deployment_target)),
-            ) => (deployment_target.major, u16::from(deployment_target.minor)),
+            Ok(OperatingSystem::MacOSX { major, minor, .. }) => (major, minor),
             _ => fallback_version,
         };
         Ok((major, minor))