BLD: Rework to have more control over highs build #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows tests | |
on: | |
push: | |
pull_request: | |
branches: | |
- main | |
- maintenance/** | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
get_commit_message: | |
name: Get commit message | |
uses: ./.github/workflows/commit_message.yml | |
fast_dev_py_fail_slow: | |
name: fail slow, fast, py3.12/npAny, dev.py | |
needs: get_commit_message | |
# Ensure (a) this doesn't run on forks by default, and | |
# (b) it does run with Act locally (`github` doesn't exist there) | |
if: > | |
needs.get_commit_message.outputs.message == 1 | |
&& (github.repository == 'HaoZeke/scipy' || github.repository == '') | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
architecture: 'x64' | |
cache: 'pip' | |
cache-dependency-path: 'environment.yml' | |
- name: Install rtools (mingw-w64) | |
run: | | |
choco install rtools -y --no-progress --force --version=4.0.0.20220206 | |
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH | |
- name: pip-packages | |
run: | | |
pip install numpy cython pybind11 pythran meson ninja pytest pytest-xdist pytest-timeout pytest-fail-slow pooch rich_click click doit pydevtool hypothesis | |
python -m pip install -r requirements/openblas.txt | |
- name: Build | |
run: | | |
python dev.py build --with-scipy-openblas | |
- name: Test | |
run: | | |
# test runner parallel clashes with OpenBLAS multithreading | |
$env:OPENBLAS_NUM_THREADS=1 | |
python dev.py test -j2 -- --durations=0 --durations-min=0.25 --fail-slow=1.0 | |
############################################################################# | |
full_dev_py_min_numpy_fail_slow: | |
name: fail slow, full, py3.10/npMin, dev.py | |
needs: get_commit_message | |
if: > | |
needs.get_commit_message.outputs.message == 1 | |
&& (github.repository == 'HaoZeke/scipy' || github.repository == '') | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
cache: 'pip' | |
cache-dependency-path: 'environment.yml' | |
- name: Install rtools (mingw-w64) | |
run: | | |
choco install rtools -y --no-progress --force --version=4.0.0.20220206 | |
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH | |
- name: pip-packages | |
run: | | |
# 1.23.5 is currently the oldest numpy usable on cp3.10 according | |
# to pyproject.toml | |
python -m pip install numpy==1.23.5 cython pybind11 pythran meson-python meson ninja pytest pytest-xdist pytest-timeout pytest-fail-slow pooch rich_click click doit pydevtool hypothesis | |
python -m pip install -r requirements/openblas.txt | |
- name: Build | |
run: | | |
python dev.py build --with-scipy-openblas | |
- name: Test | |
run: | | |
# test runner parallel clashes with OpenBLAS multithreading | |
$env:OPENBLAS_NUM_THREADS=1 | |
python dev.py test -j2 --mode full -- --durations=0 --durations-min=1.0 --timeout=60 --fail-slow=5.0 | |
############################################################################# | |
full_build_sdist_wheel: | |
# TODO: enable ILP64 once possible | |
name: no pythran & sdist+wheel, full, py3.11/npPre, pip+pytest | |
needs: get_commit_message | |
if: > | |
needs.get_commit_message.outputs.message == 1 | |
&& (github.repository == 'HaoZeke/scipy' || github.repository == '') | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
cache: 'pip' | |
cache-dependency-path: 'environment.yml' | |
- name: Win_amd64 - install rtools | |
run: | | |
# mingw-w64 | |
choco install rtools -y --no-progress --force --version=4.0.0.20220206 | |
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH | |
- name: Install OpenBLAS | |
shell: bash | |
run: | | |
set -xe | |
python -m pip install -r requirements/openblas.txt | |
bash tools/wheels/cibw_before_build_win.sh . | |
echo "PKG_CONFIG_PATH=${{ github.workspace }}" >> $GITHUB_ENV | |
- name: pip-packages | |
run: | | |
python -m pip install build delvewheel cython pybind11 meson-python meson ninja pytest pytest-xdist pytest-timeout pooch hypothesis | |
python -m pip install --pre --upgrade --timeout=60 -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy | |
- name: Build | |
shell: bash | |
run: | | |
python -m build --no-isolation -x -Csetup-args="-Duse-pythran=false" | |
# Vendor openblas.dll and the DLL's it depends on into the wheel | |
# Ignore `libsf_error_state.dll` for special function error handling; | |
# it will be loaded using ctypes in scipy/special/__init__.py. | |
wheel_name=$(ls dist/*.whl) | |
openblas_dir=$(python -c"import scipy_openblas32 as sop; print(sop.get_lib_dir())") | |
delvewheel repair --add-path $openblas_dir --no-dll libsf_error_state.dll -w wheelhouse $wheel_name | |
python -m pip install wheelhouse/* | |
- name: Test | |
run: | | |
cd $RUNNER_TEMP | |
# run full test suite | |
# test runner parallel clashes with OpenBLAS multithreading | |
$env:OPENBLAS_NUM_THREADS=1 | |
pytest --pyargs scipy |