Skip to content

MacOS M1

MacOS M1 #529

name: MacOS M1
'on':
workflow_dispatch:
inputs:
git-ref:
description: Git Ref
default: master
required: true
schedule:
- cron: "15 23 * * *"
push:
branches: [macos_test]
jobs:
install_and_test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [m1]
python-version: ["3.11.8"]
steps:
# This Checkout use git-ref keyword from dispatch
- name: Clone Repository (Master)
uses: actions/checkout@v4
if: github.event.inputs.git-ref == ''
- name: Clone Repository (Custom Ref)
uses: actions/checkout@v4
if: github.event.inputs.git-ref != ''
with:
ref: ${{ github.event.inputs.git-ref }}
- name: Set up Python3 with installer from python.org
run: |
macpython_py_prefix=/Library/Frameworks/Python.framework/Versions
macpython_url=https://www.python.org/ftp/python
downloads_dir=/tmp
py_version=${{ matrix.python-version }}
py_inst=$py_version.pkg
inst_path=$downloads_dir/$py_inst
retval=""
# exit early on curl errors, but don't let it exit the shell
# https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg
macpy_download=$macpython_url/$py_version/python-$py_version-macos11.pkg
curl -f $macpy_download > $inst_path || retval=$?
if [ ${retval:-0} -ne 0 ]; then
echo "Python download failed! "
exit $retval
fi
#
sudo installer -pkg $inst_path -target /
py_mm=${py_version%.*}
python=$macpython_py_prefix/$py_mm/bin/python$py_mm
# Install certificates for Python
inst_cmd="/Applications/Python ${py_mm}/Install Certificates.command"
if [ -e "$inst_cmd" ]; then
sh "$inst_cmd"
fi
- name: Install oq-engine in devel mode
env:
BRANCH: ${{ github.event.inputs.git-ref }}
run: |
set -x
export PIP_DEFAULT_TIMEOUT=100
macpython_py_prefix=/Library/Frameworks/Python.framework/Versions
py_version=${{ matrix.python-version }}
py_mm=${py_version%.*}
python=$macpython_py_prefix/$py_mm/bin/python$py_mm
$python -V
$python -m pip install -U pip wheel
#
echo "branch to test: ${BRANCH}"
if [[ "$BRANCH" != "" ]]
then
$python install.py devel --version ${BRANCH}
else
$python install.py devel
fi
source ~/openquake/bin/activate
pip3 install pytest pyshp flake8
oq dbserver upgrade
sleep 5
- name: Run tests for calculators to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
pytest --doctest-modules --disable-warnings --color=yes --durations=10 openquake/calculators
- name: Run tests for hazardlib, sep, commands, engine, hmtk, risklib, commonlib and baselib to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/openquake/
pytest --doctest-modules --disable-warnings --color=yes --durations=10 hazardlib sep commands engine hmtk risklib commonlib baselib
- name: Run tests for the engine server in public mode to test installation
if: always()
run: |
source ~/openquake/bin/activate
cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/
# -v 2 also logs the test names
OQ_APPLICATION_MODE=PUBLIC ./openquake/server/manage.py test -v 2 tests.test_public_mode
# NB: the demos are tested on linux; there is no reason a demo should
# not run on macos, so we can avoid running them
# - name: Run demos to test installation
# run: |
# set -x
# source ~/openquake/bin/activate
# oq info venv
# oq info cfg
# cd /Users/runner/runner-isolation/actions-runner/_work/oq-engine/oq-engine/demos
# ls -lrt
# # run demos with job_hazard.ini and job_risk.ini
# for demo_dir in $(find . -type d | sort); do
# if [ -f $demo_dir/job_hazard.ini ]; then
# oq engine --run $demo_dir/job_hazard.ini --exports csv,hdf5
# oq engine --run $demo_dir/job_risk.ini --exports csv,hdf5 --hc -1
# fi
# done
# # run the other demos
# for ini in $(find . -name job.ini | sort); do
# oq engine --run $ini --exports csv,hdf5
# done