Skip to content

Mac OSX builds

Mac OSX builds #84

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: Mac OSX builds
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [master]
paths-ignore:
- '**/README.md'
# Stop checking osx build on pull request, one has to check is manually
pull_request:
branches-ignore:
- master
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
osx_build:
# The type of runner that the job will run on, macos-13 is x86_64
runs-on: ${{ matrix.distro }}
if: ${{ !contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]') }}
strategy:
fail-fast: true
matrix:
distro:
- 'macos-13'
- 'macos-14'
include:
- distro: 'macos-13'
pre: 'x86_64'
- distro: 'macos-14'
pre: 'arm64'
env:
GEODA_VER: '1.22.0'
GEODA_ARCH: ${{ matrix.pre }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: Install application certificate
uses: apple-actions/import-codesign-certs@v2
with:
keychain: ${{ github.run_id }}
keychain-password: ${{ github.run_id }}
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
- name: Install GDAL using Brew x86_64
if: ${{ matrix.pre == 'x86_64' }}
run: |
rm /usr/local/bin/2to3 || true
rm /usr/local/bin/idle3 || true
rm /usr/local/bin/pydoc3 || true
rm /usr/local/bin/python3 || true
rm /usr/local/bin/python3-config || true
brew install --force --overwrite --quiet gdal || true
- name: Install GDAL using Brew Arm64
if: ${{ matrix.pre == 'arm64' }}
run: |
arch
brew install gdal
sudo ln -s /opt/homebrew/opt/gdal /usr/local/opt/gdal
sudo ln -s /opt/homebrew/opt/proj /usr/local/opt/proj
- uses: actions/cache@v3
id: cache
with:
path: |
BuildTools/macosx/libraries
BuildTools/macosx/temp
key: ${{ runner.os }}-${{ matrix.pre }}-deps-cache-${{ hashFiles('BuildTools/macosx/install.sh') }}
- if: steps.cache.outputs.cache-hit != 'true'
name: Build Dependencies
run: |
cd BuildTools/macosx
export GEODA_HOME=$PWD
export GEODA_ARCH=${{ env.GEODA_ARCH }}
./install.sh
- name: Build GeoDa
run: |
mkdir -p o
cd BuildTools/macosx
export GEODA_HOME=$PWD
export GEODA_ARCH=${{ env.GEODA_ARCH }}
cp ../../GeoDamake.macosx.opt ../../GeoDamake.opt
echo "find identity"
security find-identity -v
VER_MAJOR=$(grep version_major $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g')
VER_MINOR=$(grep version_minor $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g')
VER_BUILD=$(grep version_build $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g')
GEODA_VERSION=$VER_MAJOR.$VER_MINOR.$VER_BUILD-$GEODA_ARCH
echo $GEODA_VERSION
make -j$(sysctl -n hw.ncpu)
make app
cd create-dmg
./geoda.sh $GEODA_VERSION
codesign --timestamp -s "Developer ID Application: Geodapress LLC (26M5NG43GP)" -i edu.uchicago.spatial GeoDa$GEODA_VERSION-Installer.dmg
# Upload artifact
- uses: actions/upload-artifact@v3
with:
name: GeoDa-${{ env.GEODA_VER }}-${{ env.GEODA_ARCH }}-MacOS
path: ${{ github.workspace }}/BuildTools/macosx/create-dmg/GeoDa${{ env.GEODA_VER }}-${{ env.GEODA_ARCH }}-Installer.dmg