Skip to content

MacOS M1

MacOS M1 #621

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:
fail-fast: false
matrix:
os: [m1]
python-version: ["3.11", "3.12"]
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 Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version:
${{ matrix.python-version }}
# Remove due usage of standard way to install python on action
#- 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}
python install.py devel --version ${BRANCH}
else
#$python install.py devel
python install.py devel
fi
source ~/openquake/bin/activate
pip3 install pytest pyshp flake8
oq engine --upgrade-db
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: |
curl -O https://downloads.openquake.org/test_data/exposure.hdf5
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