name: Windows
on: [push, pull_request, workflow_dispatch]
jobs:
build-msvc:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: microsoft/setup-msbuild@v2
- name: Clone dependencies
run: |
git clone https://github.com/AviSynth/AviSynthPlus.git --depth 1
git clone https://github.com/vapoursynth/vsrepo.git --depth 1
git clone https://github.com/sekrit-twc/libp2p.git --depth 1
git clone https://github.com/sekrit-twc/zimg.git --depth 1 --recurse-submodules --shallow-submodules
- name: Setup Python 3.8
uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Install Python 3.8 packages
run: |
python -m pip install -U pip
pip install -U setuptools wheel
pip install -U --pre cython
- name: Get Python 3.8 install path
run: |
$py_install_path = (Split-Path -Path (Get-Command python.exe).Path)
echo "PYTHON38_PATH=$py_install_path" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Python 3.13 packages
run: |
python -m pip install -U pip
pip install -U setuptools wheel
pip install -U --pre cython
- name: Get Python 3.13 install path
run: |
$py_install_path = (Split-Path -Path (Get-Command python.exe).Path)
echo "PYTHON_PATH=$py_install_path" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Get version number
run: |
echo "VS_CURRENT_RELEASE=$(python -c "from pathlib import Path; print((Path.cwd() / 'VAPOURSYNTH_VERSION').resolve().read_text().split(' ')[-1].strip().split('-')[0])")" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Build
run: |
$env:VSPYTHON38_PATH="${{ env.PYTHON38_PATH }}"
$env:VSPYTHON_PATH="${{ env.PYTHON_PATH }}"
msbuild msvc_project/VapourSynth.sln /t:Build /p:Configuration=Release /p:Platform=x64 /p:CurrentVersion=${{ env.VS_CURRENT_RELEASE }} /m
- name: Package for Python 3.13
run: |
python setup.py bdist_wheel
python setup.py sdist --formats=zip
- name: Run test with Python 3.13
run: |
pip install .
python -m unittest discover -s test -p "*test.py"
- name: Setup Python 3.8 a second time
uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Package for Python 3.8
run: |
python setup.py bdist_wheel
- name: Run test with Python 3.8
run: |
pip install .
python -m unittest discover -s test -p "*test.py"
- uses: actions/upload-artifact@v4
with:
name: vapoursynth
path: dist
test-windows:
runs-on: windows-latest
needs: build-msvc
strategy:
matrix:
python: ["3.8", "3.13"]
steps:
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- uses: actions/download-artifact@v4
with:
name: vapoursynth
- name: Try installing
run: |
pip install vapoursynth --no-index --find-links .
python -c "from vapoursynth import core; print(core.std.BlankClip())"
publish:
runs-on: ubuntu-latest
needs: test-windows
if: startsWith(github.event.ref, 'refs/tags/R') && !(contains(github.event.ref, 'RC'))
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
name: vapoursynth
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1