From e075b13bfe3666a73f82c12817bdf5f1d6c692e3 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 23 Mar 2022 19:32:47 +0100 Subject: [PATCH] Add fallback for Apple M1 (#46) --- src/babashka/pods/impl/resolver.clj | 38 +++++++++++++++++------------ 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/babashka/pods/impl/resolver.clj b/src/babashka/pods/impl/resolver.clj index ffec661..78e10a9 100644 --- a/src/babashka/pods/impl/resolver.clj +++ b/src/babashka/pods/impl/resolver.clj @@ -23,22 +23,28 @@ (binding [*out* *err*] (apply println strs))) -(defn match-artifacts [package] - (let [artifacts (:pod/artifacts package) - res (filter (fn [{os-name :os/name - os-arch :os/arch}] - (let [os-arch (normalize-arch os-arch)] - (and (re-matches (re-pattern os-name) (:os/name os)) - (re-matches (re-pattern os-arch) - (:os/arch os))))) - artifacts)] - (when (empty? res) - (throw (IllegalArgumentException. (format "No executable found for pod %s (%s) and OS %s/%s" - (:pod/name package) - (:pod/version package) - (:os/name os) - (:os/arch os))))) - res)) +(defn match-artifacts + ([package] (match-artifacts package (:os/arch os))) + ([package arch] + (let [artifacts (:pod/artifacts package) + res (filter (fn [{os-name :os/name + os-arch :os/arch}] + (let [os-arch (normalize-arch os-arch)] + (and (re-matches (re-pattern os-name) (:os/name os)) + (re-matches (re-pattern os-arch) + arch)))) + artifacts)] + (if (empty? res) + (if (and (= "Mac OS X" (:os/name os)) + (= "aarch64" (:os/arch os))) + ;; Rosetta2 fallback on Apple M1 machines + (match-artifacts package "x86_64") + (throw (IllegalArgumentException. (format "No executable found for pod %s (%s) and OS %s/%s" + (:pod/name package) + (:pod/version package) + (:os/name os) + (:os/arch os))))) + res)))) (defn unzip [{:keys [^java.io.File zip-file ^java.io.File destination-dir