diff --git a/.github/workflows/compile_macos.yml b/.github/workflows/compile_macos.yml new file mode 100644 index 0000000000..2e9d5ecd57 --- /dev/null +++ b/.github/workflows/compile_macos.yml @@ -0,0 +1,61 @@ +name: MacOS build + +on: + push: + branches: + - 'master' + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: macos-10.15 + strategy: + matrix: + config: [ + px4_fmu-v5_default, + tests, # includes px4_sitl + ] + steps: + - uses: actions/checkout@v1 + with: + token: ${{secrets.ACCESS_TOKEN}} + + - uses: actions/cache@v2 + with: + path: ~/Library/Caches/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: setup + run: ./Tools/setup/OSX.sh + + - name: Prepare ccache timestamp + id: ccache_cache_timestamp + shell: cmake -P {0} + run: | + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) + message("::set-output name=timestamp::${current_date}") + - name: ccache cache files + uses: actions/cache@v2 + with: + path: ~/.ccache + key: ${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} + restore-keys: ${{matrix.config}}-ccache- + - name: setup ccache + run: | + mkdir -p ~/.ccache + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf + echo "compression = true" >> ~/.ccache/ccache.conf + echo "compression_level = 6" >> ~/.ccache/ccache.conf + echo "max_size = 400M" >> ~/.ccache/ccache.conf + ccache -s + ccache -z + + - name: make ${{matrix.config}} + run: | + ccache -z + make ${{matrix.config}} + ccache -s diff --git a/Tools/setup/OSX.sh b/Tools/setup/OSX.sh index 57e0e32995..eef3129311 100755 --- a/Tools/setup/OSX.sh +++ b/Tools/setup/OSX.sh @@ -19,28 +19,37 @@ do done # install Homebrew -/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null - -# confirm Homebrew installed correctly -brew doctor +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" # Install px4-dev formula -echo -echo "Installing PX4 general dependencies (homebrew px4-dev)" - if [[ $REINSTALL_FORMULAS == "--reinstall" ]]; then + echo "Re-installing PX4 general dependencies (homebrew px4-dev)" + + # confirm Homebrew installed correctly + brew doctor + brew tap PX4/px4 - brew reinstall px4-dev -elif brew ls --versions px4-dev > /dev/null; then - brew tap PX4/px4 - brew install px4-dev + brew reinstall px4-dev ccache + + # python dependencies + brew install python3 + sudo -H python3 -m pip install --upgrade pip +else + if brew ls --versions px4-dev > /dev/null; then + echo "px4-dev already installed" + else + echo "Installing PX4 general dependencies (homebrew px4-dev)" + brew tap PX4/px4 + brew install px4-dev ccache + + # python dependencies + brew install python3 + sudo -H python3 -m pip install --upgrade pip + fi fi # Python3 dependencies -echo echo "Installing PX4 Python3 dependencies" -brew install python3 -sudo -H python3 -m pip install --upgrade pip sudo -H python3 -m pip install -r ${DIR}/requirements.txt # Optional, but recommended additional simulation tools: