Skip to content

Commit

Permalink
Fix aarch64-apple-darwin fallback to x86_64h (#1278)
Browse files Browse the repository at this point in the history
Run `arch -arch x86_64h /usr/bin/true` to decides whether fallback
is feasible.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
  • Loading branch information
NobodyXu committed Aug 11, 2023
1 parent ea1a34b commit a848449
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions crates/detect-targets/src/detect/macos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,20 @@ async fn is_arch_supported(arch_name: &str) -> bool {
pub(super) async fn detect_alternative_targets(target: &str) -> impl Iterator<Item = String> {
match target {
AARCH64 => {
let is_x86_64_supported = is_arch_supported("x86_64").await;
// Spawn `arch` in parallel (probably from different threads if
// mutlti-thread runtime is used).
//
// These two tasks are never cancelled, so it can only fail due to
// panic, in which cause we would propagate by also panic here.
let x86_64h_task = tokio::spawn(is_arch_supported("x86_64h"));
let x86_64_task = tokio::spawn(is_arch_supported("x86_64"));
[
// Prefer universal as it provides native arm executable
Some(UNIVERSAL),
Some(UNIVERSAL2),
// Prefer x86h since it is more optimized
is_x86_64_supported.then_some(X86H),
is_x86_64_supported.then_some(X86),
x86_64h_task.await.unwrap().then_some(X86H),
x86_64_task.await.unwrap().then_some(X86),
]
}
X86 => [
Expand Down

0 comments on commit a848449

Please sign in to comment.