Skip to content

Merge pull request #272 from ltog/master #222

Merge pull request #272 from ltog/master

Merge pull request #272 from ltog/master #222

Workflow file for this run

name: CI
on: [ push, pull_request ]
jobs:
build-default:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install packages
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libproj-dev libgeos-dev liblz4-dev
- name: Set up Python 3.7
uses: actions/setup-python@v5
with:
python-version: 3.7
- name: Build package 3.7
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build package 3.8
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Build package 3.9
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build package 3.10
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build package 3.11
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build package 3.12
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
allow-prereleases: true
- name: Build package 3.13
run: |
pip install build wheel
python -m build
shell: bash
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: pyosmium-linux-x64-dist
path: dist
test-default:
runs-on: ubuntu-22.04
needs: build-default
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-linux-x64-dist
- name: Install osmium
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}*.whl`
./osmium-test/bin/pip install ${WHEEL}[tests]
shell: bash
env:
PYVER: ${{ matrix.python-version }}
- name: Run tests
run: ./osmium-test/bin/pytest test
shell: bash
- name: Check tool availability
run: |
./osmium-test/bin/pyosmium-get-changes -h
./osmium-test/bin/pyosmium-up-to-date -h
build-platform:
runs-on: ${{ matrix.platform }}
strategy:
matrix:
compiler: [gcc-old, clang-old, gcc, clang, macos-intel, macos-arm]
include:
- compiler: gcc-old
cc: gcc-10
cxx: g++-10
platform: ubuntu-20.04
python: 3.7
deps: release
flavour: linux
- compiler: clang-old
cc: clang-10
cxx: clang++-10
platform: ubuntu-20.04
python: 3.7
deps: release
flavour: linux
- compiler: gcc
cc: gcc-14
cxx: g++-14
platform: ubuntu-24.04
python: "3.13"
deps: develop
flavour: linux
- compiler: clang
cc: clang-18
cxx: clang++-18
platform: ubuntu-24.04
python: "3.13"
deps: develop
flavour: linux
- compiler: macos-intel
platform: macos-13
python: "3.10"
deps: develop
flavour: macos
- compiler: macos-arm
platform: macos-14
python: "3.13"
deps: develop
flavour: macos
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
# Workaround for github/brew problem. Python is already install
# on the Github action runner and then homebrew comes along...
# See also: https://github.com/Homebrew/homebrew-core/issues/173191
rm -f /usr/local/bin/2to3* /usr/local/bin/idle3* /usr/local/bin/pydoc3* /usr/local/bin/python3*
if: ${{ matrix.flavour == 'macos' }}
- uses: ./.github/actions/install-dependencies
with:
version: ${{ matrix.deps }}
- uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python }}"
allow-prereleases: true
- name: Install packages
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libproj-dev libgeos-dev liblz4-dev
if: ${{ matrix.flavour == 'linux' }}
- name: Install packages
run: brew install boost geos
shell: bash
if: ${{ matrix.flavour == 'macos' }}
- name: Install prerequisites
run: |
python -m pip install --upgrade pip
pip install -U pytest pytest-httpserver shapely setuptools requests
shell: bash
- name: Build package
run: python setup.py build
shell: bash
- name: Run tests
run: |
pytest test
shell: bash
build-windows:
runs-on: windows-2022
env:
VCPKG_DEFAULT_BINARY_CACHE: C:/vcpkg_binary_cache
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
C:/vcpkg_binary_cache
key: vcpkg-binary-cache-windows-2022
- name: Prepare cache
run: if [ ! -d C:/vcpkg_binary_cache ]; then mkdir C:/vcpkg_binary_cache; fi
shell: bash
- name: Install packages
run: vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows boost-variant:x64-windows boost-iterator:x64-windows lz4:x86-windows
shell: bash
- name: Set up Python 3.7
uses: actions/setup-python@v5
with:
python-version: 3.7
- name: Build package 3.7
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build package 3.8
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Build package 3.9
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build package 3.10
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build package 3.11
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build package 3.12
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
allow-prereleases: true
- name: Build package 3.13
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
with:
name: pyosmium-win64-dist
path: dist
test-windows:
runs-on: windows-2022
needs: build-windows
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
env:
PYTEST_ADDOPTS: ${{ matrix.test-args }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-win64-dist
- name: Install osmium
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}*.whl`
./osmium-test/Scripts/pip install ${WHEEL}[tests]
shell: bash
env:
PYVER: ${{ matrix.python-version }}
- name: Run tests
run: ./osmium-test/Scripts/pytest test
shell: bash
- name: Check tool availability
run: |
./osmium-test/Scripts/pyosmium-get-changes -h
./osmium-test/Scripts/pyosmium-up-to-date -h