Sfoglia il codice sorgente

chore: check dependenies before building on Mac OSX

Shawn 3 anni fa
parent
commit
d80b7c720b

+ 1 - 1
.github/workflows/build_packages.yaml

@@ -139,7 +139,7 @@ jobs:
     - name: prepare
     - name: prepare
       run: |
       run: |
         brew update
         brew update
-        brew install curl zip unzip gnu-sed kerl unixodbc freetds automake bison
+        brew install curl zip unzip kerl
         echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
         echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
         echo "/usr/local/bin" >> $GITHUB_PATH
         echo "/usr/local/bin" >> $GITHUB_PATH
         git config --global credential.helper store
         git config --global credential.helper store

+ 1 - 1
.github/workflows/build_slim_packages.yaml

@@ -151,7 +151,7 @@ jobs:
     - name: prepare
     - name: prepare
       run: |
       run: |
         brew update
         brew update
-        brew install curl zip unzip gnu-sed kerl unixodbc freetds automake bison
+        brew install curl zip unzip kerl
         echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
         echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
         echo "/usr/local/bin" >> $GITHUB_PATH
         echo "/usr/local/bin" >> $GITHUB_PATH
         echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV
         echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV

+ 4 - 1
Makefile

@@ -111,7 +111,7 @@ cover: $(REBAR)
 coveralls: $(REBAR)
 coveralls: $(REBAR)
 	@ENABLE_COVER_COMPILE=1 $(REBAR) as test coveralls send
 	@ENABLE_COVER_COMPILE=1 $(REBAR) as test coveralls send
 
 
-COMMON_DEPS := $(REBAR) get-dashboard conf-segs
+COMMON_DEPS := $(REBAR) prepare-build-deps get-dashboard conf-segs
 ELIXIR_COMMON_DEPS := ensure-hex ensure-mix-rebar3 ensure-mix-rebar
 ELIXIR_COMMON_DEPS := ensure-hex ensure-mix-rebar3 ensure-mix-rebar
 
 
 .PHONY: $(REL_PROFILES)
 .PHONY: $(REL_PROFILES)
@@ -219,6 +219,9 @@ conf-segs:
 	@scripts/merge-config.escript
 	@scripts/merge-config.escript
 	@scripts/merge-i18n.escript
 	@scripts/merge-i18n.escript
 
 
+prepare-build-deps:
+	@scripts/prepare-build-deps.sh
+
 ## elixir target is to create release packages using Elixir's Mix
 ## elixir target is to create release packages using Elixir's Mix
 .PHONY: $(REL_PROFILES:%=%-elixir) $(PKG_PROFILES:%=%-elixir)
 .PHONY: $(REL_PROFILES:%=%-elixir) $(PKG_PROFILES:%=%-elixir)
 $(REL_PROFILES:%=%-elixir) $(PKG_PROFILES:%=%-elixir): $(COMMON_DEPS) $(ELIXIR_COMMON_DEPS) mix-deps-get
 $(REL_PROFILES:%=%-elixir) $(PKG_PROFILES:%=%-elixir): $(COMMON_DEPS) $(ELIXIR_COMMON_DEPS) mix-deps-get

+ 41 - 0
scripts/prepare-build-deps.sh

@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+AUTO_INSTALL_BUILD_DEPS="${AUTO_INSTALL_BUILD_DEPS:-0}"
+
+required_packages_mac_osx="freetds unixodbc"
+required_cmds_mac_osx="curl zip unzip autoconf automake bison cmake openssl"
+
+dependency_missing() {
+    echo "error: $1 is not found in the system"
+    if [ "${AUTO_INSTALL_BUILD_DEPS}" = "1" ]; then
+        echo "brew install $1"
+        brew install $1
+    else
+        echo "You can install it by running:"
+        echo "  brew install $1"
+        exit 1
+    fi
+}
+
+prepare_mac_osx() {
+    current_packages=$(brew list)
+    for package in ${required_packages_mac_osx}
+    do
+        if ! echo ${current_packages} | grep -q "${package}"; then
+            dependency_missing ${package}
+        fi
+    done
+    for cmd in ${required_cmds_mac_osx}
+    do
+        if ! command -v "${cmd}" &> /dev/null; then
+            dependency_missing ${cmd}
+        fi
+    done
+}
+
+case $(uname) in
+    *Darwin*) prepare_mac_osx;;
+    *) exit 0;;
+esac