Skip to content

Cirrus

Cirrus #766

Workflow file for this run

name: Windows tests
on:
push:
branches:
- maintenance/**
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:
test:
name: cp310 (meson) fast
# Ensure (a) this doesn't run on forks by default, and
# (b) it does run with Act locally (`github` doesn't exist there)
if: "github.repository == 'scipy/scipy' || github.repository == ''"
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
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: show-gfortran
run: |
gcc --version
gfortran --version
- name: pip-packages
run: |
pip install numpy==1.22.4 cython pybind11 pythran meson ninja pytest pytest-xdist pytest-timeout pooch rich_click click doit pydevtool
- name: Install OpenBLAS
shell: bash
run: |
# same OpenBLAS install method as cibuildwheel
set -xe
bash tools/wheels/cibw_before_build_win.sh .
echo "PKG_CONFIG_PATH=c:\opt\64\lib\pkgconfig;" >> $GITHUB_ENV
- name: Build
run: |
echo "SCIPY_USE_PROPACK=1" >> $env:GITHUB_ENV
python dev.py build --win-cp-openblas
# Necessary because GitHub Actions checks out the repo to D:\ while OpenBLAS
# got installed to C:\ higher up. The copying with `--win-cp-openblas` fails
# when things are split over drives.
cp C:\opt\64\bin\*.dll $pwd\build-install\Lib\site-packages\scipy\.libs\
python tools\openblas_support.py --write-init $PWD\build-install\Lib\site-packages\scipy\
- name: Test
run: |
python dev.py test -j2
#############################################################################
full_dev_py_min_numpy:
name: cp39 (meson) full, dev.py, minimum numpy
if: "github.repository == 'scipy/scipy' || github.repository == ''"
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
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: Install OpenBLAS
shell: bash
run: |
set -xe
bash tools/wheels/cibw_before_build_win.sh .
echo "PKG_CONFIG_PATH=c:\opt\64\lib\pkgconfig;" >> $GITHUB_ENV
- name: pip-packages
run: |
# 1.22.4 is currently the oldest numpy usable on cp3.9 according
# to pyproject.toml
python -m pip install numpy==1.22.4 cython pybind11 pythran meson-python meson ninja pytest pytest-xdist pytest-timeout pooch rich_click click doit pydevtool
- name: Build
run: |
python dev.py build --win-cp-openblas
# Copy OpenBLAS DLL, write distributor-init (see first job in this file for why)
cp C:\opt\64\bin\*.dll $pwd\build-install\Lib\site-packages\scipy\.libs\
python tools\openblas_support.py --write-init $PWD\build-install\Lib\site-packages\scipy\
- name: Test
run: |
python dev.py test -j2 --mode full
#############################################################################
full_build_sdist_wheel:
# TODO: enable ILP64 once possible
name: cp311 (build sdist + wheel), full, no pythran
if: "github.repository == 'scipy/scipy' || github.repository == ''"
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
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
bash tools/wheels/cibw_before_build_win.sh .
echo "PKG_CONFIG_PATH=c:\opt\64\lib\pkgconfig;" >> $GITHUB_ENV
- name: pip-packages
run: |
python -m pip install build delvewheel numpy cython pybind11 meson-python meson ninja pytest pytest-xdist pytest-timeout pooch
- name: Build
run: |
python -m build -Csetup-args="-Duse-pythran=false"
# Vendor openblas.dll and the DLL's it depends on into the wheel
$env:wheel_name=Get-ChildItem -Path dist/* -Include *.whl
delvewheel repair --add-path c:\opt\openblas\openblas_dll -w dist $env:wheel_name
python -m pip install $env:wheel_name
- name: Test
run: |
cd $RUNNER_TEMP
# run full test suite
pytest --pyargs scipy
#############################################################################
fast_setup:
name: cp310 (setup.py bdist_wheel)
if: "github.repository == 'scipy/scipy' || github.repository == ''"
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
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
bash tools/wheels/cibw_before_build_win.sh .
# force static linking
pushd /c/opt/64/lib
rm *.dev.a *.dll.a *.lib
popd
# site.cfg.template currently distributed with
# multibuild-wheels-staging/openblas-libs
cp /c/opt/64/site.cfg.template site.cfg
sed -i 's/{openblas_root}/c:\\opt/g' site.cfg
- name: pip-packages
run: |
# pyproject.toml currently states this numpy minimum version.
python -m pip install --upgrade pip "setuptools==59.6.0" wheel
python -m pip install cython numpy==1.22.4 pybind11 pythran pytest pooch
- name: Build
run: |
python setup.py bdist_wheel
# Vendor openblas.dll and the DLL's it depends on into the wheel
$env:wheel_name=Get-ChildItem -Path dist/* -Include *.whl
delvewheel repair --add-path c:\opt\openblas\openblas_dll -w dist $env:wheel_name
python -m pip install $env:wheel_name
- name: Test
run: |
cd $RUNNER_TEMP
pytest --pyargs scipy -m "not slow"