From 552ddb48cfdae7a6ff8ca5340ae3d8b73e6103be Mon Sep 17 00:00:00 2001 From: Tronje Krop Date: Wed, 30 Oct 2024 16:48:54 +0100 Subject: [PATCH] fix: macos compatibility (#111) Signed-off-by: Tronje Krop --- .github/workflows/build.yaml | 28 +++++++++++++++++++++++++--- config/Makefile.base | 18 ++++++++++-------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index fea9c11..71f68b0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -62,11 +62,32 @@ jobs: version: 9 - name: Run Bash compatibility tests + run: |- + make --version; + make --file=config/Makefile.base --trace test-self; + + macos: + runs-on: macos-latest + steps: + # - name: Set up Docker + # uses: crazy-max/ghaction-setup-docker@v3 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.23.2 + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run MacOS compatibility tests + env: + BASH_COMPAT: 3.2 run: |- make --version - make --file=config/Makefile.base --trace test-self + make --file=config/Makefile.base test-self - macos: + macos-brew: runs-on: macos-latest steps: # - name: Set up Docker @@ -87,7 +108,8 @@ jobs: brew install make; export PATH="/opt/homebrew/opt/make/libexec/gnubin:${PATH}"; make --version; - make --file=config/Makefile.base --trace test-self + make --file=config/Makefile.base --trace test-self; + release: runs-on: ubuntu-latest diff --git a/config/Makefile.base b/config/Makefile.base index 26ec690..8015549 100644 --- a/config/Makefile.base +++ b/config/Makefile.base @@ -2,10 +2,9 @@ SHELL := /bin/bash # Setup variables for special purposes. -NULL := COMMA := , -SPACE := $(NULL) $(NULL) -TAB := $(NULL) $(NULL) +SPACE := $(SPACE) $(SPACE) +TAB := $(TAB) $(TAB) define NEWLINE @@ -46,23 +45,25 @@ endif # System depdendent helper functions. ifeq ("$(shell uname)","Linux") - MAKESHELL := PATH=$(PATH) /bin/bash else ifeq ($(shell uname),Darwin) path-setup = $(shell \ if [ "$(1)" == "opt" ]; then \ XPATH="$(shell brew --prefix)/$(1)/$(2)/libexec/gnubin"; \ else XPATH="$(shell brew --prefix)/$(1)"; fi; \ test ! -e "$${XPATH}/$(3)" && brew install $(2) >&2; \ - echo -n "$${XPATH}:$(4)") + if [ -n "$(4)" ]; then echo -n "$${XPATH}:$(4)"; \ + else echo -n "$${XPATH}"; fi) export PATH := $(call path-setup,opt,coreutils,ls,$(PATH)) export PATH := $(call path-setup,opt,findutils,find,$(PATH)) export PATH := $(call path-setup,bin,bash,bash,$(PATH)) -# export PATH := $(call path-setup,bin,curl,curl,$(PATH)) + export PATH := $(call path-setup,bin,curl,curl,$(PATH)) export PATH := $(call path-setup,opt,gawk,awk,$(PATH)) export PATH := $(call path-setup,opt,gsed,sed,$(PATH)) export PATH := $(call path-setup,opt,make,make,$(PATH)) # Ensure export of path to $(shell ...) in gmake 3.81. - MAKESHELL := PATH=$(PATH) /bin/bash +# ifeq (3.81,$(MAKE_VERSION)) + export SHELL := $(shell brew --prefix)/bin/bash +# endif else $(call cerror,unsupported operating system [$(shell uname --all)]) endif @@ -70,7 +71,8 @@ endif # Log execution environment for debugging. $(call cdebug,$(shell uname --all)) $(call cdebug,using BASH [$${0} - $${BASH_VERSION}]) -$(call cdebug,using PATH [$(shell echo -n "$${PATH}")]) +$(call cdebug,using PATH [$${PATH}]) +$(call cdebug,using SHELL [$${SHELL}]) # Helper function to find and remove source files. find-all = find $(1) ! -path "./run/*" ! -path "./build/*" \( $(2) \) 2>/dev/null | \