Skip to content

Fix order of initialization for threading on Windows with libxml2 2.1… #285

Fix order of initialization for threading on Windows with libxml2 2.1…

Fix order of initialization for threading on Windows with libxml2 2.1… #285

Workflow file for this run

name: CI
on:
push:
paths:
- '**'
- '!.github/**'
- '.github/workflows/ci.yml'
pull_request:
paths:
- '**'
- '!.github/**'
- '.github/workflows/ci.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
ci:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
# MATRIX:
# =======
# Required parameters:
# os the os to run on
# python-version the python version to use
# backend the backend to use
# env any additional env variables. Set to '{}' for none
# Optional parameters:
# allowed_failure whether the job is allowed to fail
# extra_hash extra hash str to differentiate from other caches with similar name (must always start with '-')
matrix:
# Tests [amd64]
#
os: [ubuntu-latest, macos-latest, windows-2019]
python-version:
- "2.7"
- "3.6"
- "3.7"
- "3.8"
- "3.9"
- "3.10" # quotes to avoid being interpreted as the number 3.1
- "3.11"
- "3.12-dev"
env: [{ STATIC_DEPS: true }, { STATIC_DEPS: false }]
include:
#- os: windows-2016
# python-version: 2.7
# env: { STATIC_DEPS: true } # always static
- python-version: "3.12-dev"
allowed_failure: true
- os: ubuntu-latest
python-version: "3.9"
env: {STATIC_DEPS: true, WITH_REFNANNY: true}
extra_hash: "-refnanny"
allowed_failure: true
- os: ubuntu-latest
python-version: "3.11"
env: {STATIC_DEPS: true, WITH_REFNANNY: true}
extra_hash: "-refnanny"
allowed_failure: true
# Coverage setup
- os: ubuntu-latest
python-version: "3.9"
env: { COVERAGE: true }
extra_hash: "-coverage"
allowed_failure: true # shouldn't fail but currently does...
- os: ubuntu-latest
python-version: "3.9"
env: { STATIC_DEPS: false, EXTRA_DEPS: "docutils pygments sphinx sphinx-rtd-theme" }
extra_hash: "-docs"
allowed_failure: true # shouldn't fail but currently does...
# Old library setup with minimum version requirements
- os: ubuntu-latest
python-version: "3.9"
env: {
STATIC_DEPS: true,
LIBXML2_VERSION: 2.9.2,
LIBXSLT_VERSION: 1.1.27,
}
extra_hash: "-oldlibs"
allowed_failure: true # shouldn't fail but currently does...
# Ubuntu sub-jobs:
# ================
# Pypy
- os: ubuntu-latest
python-version: pypy-2.7
env: { STATIC_DEPS: false }
allowed_failure: true
- os: ubuntu-latest
python-version: pypy-3.7
env: { STATIC_DEPS: false }
allowed_failure: true
- os: ubuntu-latest
python-version: pypy-3.8
env: { STATIC_DEPS: false }
allowed_failure: true
# MacOS sub-jobs
# ==============
#- os: macos-latest
# allowed_failure: true # Unicode parsing fails in Py3
exclude:
- os: ubuntu-latest
python-version: "3.6"
# Windows sub-jobs
# ==============
- os: windows-2019
python-version: 2.7 # needs older image
- os: windows-2019
env: { STATIC_DEPS: false } # always static
# This defaults to 360 minutes (6h) which is way too long and if a test gets stuck, it can block other pipelines.
# From testing, the runs tend to take ~3 minutes, so a limit of 20 minutes should be enough. This can always be
# changed in the future if needed.
timeout-minutes: 20
runs-on: ${{ matrix.os }}
env:
OS_NAME: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
MACOSX_DEPLOYMENT_TARGET: 11.0
LIBXML2_VERSION: 2.10.3
LIBXSLT_VERSION: 1.1.37
COVERAGE: false
GCC_VERSION: 9
USE_CCACHE: 1
CCACHE_SLOPPINESS: "pch_defines,time_macros"
CCACHE_COMPRESS: 1
CCACHE_MAXSIZE: "100M"
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install MacOS dependencies
if: startsWith(runner.os, 'mac')
run: |
brew install automake libtool ccache
ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
- name: Cache [ccache]
uses: pat-s/always-upload-cache@v3.0.11
if: startsWith(runner.os, 'Linux') || startsWith(runner.os, 'mac')
with:
path: ~/.ccache
key: ${{ runner.os }}-ccache${{ matrix.extra_hash }}-${{ matrix.python-version }}-${{ hashFiles('.github/workflows/ci.yml', 'tools/ci-run.sh') }}
- name: Cache [libs]
uses: actions/cache@v3
if: ${{ matrix.env.STATIC_DEPS == 'true' }}
with:
path: |
libs/*.xz
libs/*.gz
libs/*.zip
key: libs-${{ runner.os }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}${{ matrix.extra_hash }}
- name: Run CI
continue-on-error: ${{ matrix.allowed_failure || false }}
env: ${{ matrix.env }}
run: bash -c 'GITHUB_API_TOKEN="${{ secrets.GITHUB_TOKEN }}" bash ./tools/ci-run.sh'
- name: Build docs
if: contains( matrix.env.EXTRA_DEPS, 'sphinx')
run: make html
- name: Upload docs
uses: actions/upload-artifact@v3
if: ${{ matrix.extra_hash == '-docs' }}
with:
name: website_html
path: doc/html
if-no-files-found: ignore
- name: Upload Coverage Report
uses: actions/upload-artifact@v3
with:
name: pycoverage_html
path: coverage*
if-no-files-found: ignore
- name: Upload Wheel
uses: actions/upload-artifact@v3
if: ${{ matrix.env.STATIC_DEPS == 'true' }}
with:
name: wheels-${{ runner.os }}
path: dist/*.whl
if-no-files-found: ignore