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))
|