Skip to content

Commit aa7cbdd

Browse files
committed
chore: add workaround for installing and using shellcheck on Apple M1
This commit reverts to a global installation when developing on Apple M1/M2, as shellcheck does not provide prebuilt binaries for the host architecture. Ref: koalaman/shellcheck#2714
1 parent a3030a5 commit aa7cbdd

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

tools/make/common.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,9 @@ deps_shellcheck_version_slug := $(subst .,_,$(DEPS_SHELLCHECK_VERSION))
595595
# Define the output path when building shellcheck:
596596
DEPS_SHELLCHECK_BUILD_OUT ?= $(DEPS_BUILD_DIR)/shellcheck_$(deps_shellcheck_version_slug)
597597

598+
# Host architecture:
599+
DEPS_SHELLCHECK_ARCH := $(shell command -v $(NODE) >/dev/null 2>&1 && $(NODE_HOST_ARCH))
600+
598601
# Host platform:
599602
DEPS_SHELLCHECK_PLATFORM := $(shell command -v $(NODE) >/dev/null 2>&1 && $(NODE_HOST_PLATFORM))
600603

tools/make/lib/install/shellcheck.mk

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ifeq ($(OS), WINNT)
2323
DEPS_SHELLCHECK_URL ?= https://github.com/koalaman/shellcheck/releases/download/v$(DEPS_SHELLCHECK_VERSION)/shellcheck-v$(DEPS_SHELLCHECK_VERSION).zip
2424
else
2525
ifeq ($(DEPS_SHELLCHECK_PLATFORM), darwin)
26+
# TODO: handle arm64; currently, binaries for M1/M2 are not provided. See https://github.com/koalaman/shellcheck/issues/2714
2627
DEPS_SHELLCHECK_URL ?= https://github.com/koalaman/shellcheck/releases/download/v$(DEPS_SHELLCHECK_VERSION)/shellcheck-v$(DEPS_SHELLCHECK_VERSION).darwin.x86_64.tar.xz
2728
else
2829
DEPS_SHELLCHECK_URL ?= https://github.com/koalaman/shellcheck/releases/download/v$(DEPS_SHELLCHECK_VERSION)/shellcheck-v$(DEPS_SHELLCHECK_VERSION).linux.x86_64.tar.xz
@@ -44,9 +45,18 @@ deps_shellcheck_extract_out := $(DEPS_BUILD_DIR)/shellcheck-v$(DEPS_SHELLCHECK_V
4445
# Define the path to the `shellcheck` executable...
4546
ifeq ($(DEPS_SHELLCHECK_PLATFORM), win32)
4647
SHELLCHECK ?= $(DEPS_SHELLCHECK_BUILD_OUT)/shellcheck.exe
48+
else
49+
ifeq ($(DEPS_SHELLCHECK_PLATFORM), darwin)
50+
ifeq ($(DEPS_SHELLCHECK_ARCH), arm64)
51+
# FIXME: this is a temporary workaround until M1/M2 shellcheck binaries can be installed locally
52+
SHELLCHECK ?= shellcheck
53+
else
54+
SHELLCHECK ?= $(DEPS_SHELLCHECK_BUILD_OUT)/shellcheck
55+
endif
4756
else
4857
SHELLCHECK ?= $(DEPS_SHELLCHECK_BUILD_OUT)/shellcheck
4958
endif
59+
endif
5060

5161
# Define rule prerequisites based on the host platform...
5262
deps_shellcheck_test_prereqs := $(DEPS_SHELLCHECK_BUILD_OUT)

0 commit comments

Comments
 (0)