From edf72d71f9019f2258234876330e6aa5730f6c55 Mon Sep 17 00:00:00 2001 From: messense Date: Sat, 12 Aug 2023 17:06:32 +0800 Subject: [PATCH 1/2] Query default macOS deployment target from `rustc --print deployment-target` --- src/build_context.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/build_context.rs b/src/build_context.rs index bc92c4619..c4051d0b5 100644 --- a/src/build_context.rs +++ b/src/build_context.rs @@ -1154,9 +1154,32 @@ fn macosx_deployment_target( } pub(crate) fn rustc_macosx_target_version(target: &str) -> (u16, u16) { - use std::process::Command; + use std::process::{Command, Stdio}; use target_lexicon::OperatingSystem; + // On rustc 1.71.0+ we can use `rustc --print deployment-target` + if let Ok(output) = Command::new("rustc") + .stderr(Stdio::piped()) + .stdout(Stdio::piped()) + .env_remove("MACOSX_DEPLOYMENT_TARGET") + .args(["--target", target]) + .args(["--print", "deployment-target"]) + .output() + { + if output.status.success() { + let target_version = std::str::from_utf8(&output.stdout) + .unwrap() + .split('=') + .last() + .and_then(|v| v.trim().split_once('.')); + if let Some((major, minor)) = target_version { + let major: u16 = major.parse().unwrap(); + let minor: u16 = minor.parse().unwrap(); + return (major, minor); + } + } + } + let fallback_version = if target == "aarch64-apple-darwin" { (11, 0) } else { From a6e988c3712a472fad801d3ad583c450ad3a0138 Mon Sep 17 00:00:00 2001 From: messense Date: Sat, 12 Aug 2023 17:10:22 +0800 Subject: [PATCH 2/2] Add latest tag to Cirrus CI arm64 macOS image --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 698f9afb0..66de0739c 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -35,7 +35,7 @@ freebsd_task: macos_arm64_task: name: Test (arm64 macOS) macos_instance: - image: ghcr.io/cirruslabs/macos-monterey-xcode + image: ghcr.io/cirruslabs/macos-monterey-xcode:latest env: PATH: $HOME/.cargo/bin:/opt/homebrew/opt/python@3.10/bin:$PATH target_cache: