mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 20:20:14 +01:00
By moving to GitHub actions, all MicroPython CI builds are now on GitHub actions. This allows faster parallel builds and saves time by not building when no relevant files changed. This reveals a few failing tests, so those are temporarily disabled until they can be fixed. Signed-off-by: David Lechner <david@pybricks.com> Signed-off-by: Damien George <damien@micropython.org>
154 lines
4.9 KiB
YAML
154 lines
4.9 KiB
YAML
name: windows port
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/*.yml'
|
|
- 'tools/**'
|
|
- 'py/**'
|
|
- 'extmod/**'
|
|
- 'shared/**'
|
|
- 'lib/**'
|
|
- 'ports/unix/**'
|
|
- 'ports/windows/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-vs:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform: [x86, x64]
|
|
configuration: [Debug, Release]
|
|
variant: [dev, standard]
|
|
visualstudio: ['2017', '2019', '2022']
|
|
include:
|
|
- visualstudio: '2017'
|
|
runner: windows-latest
|
|
vs_version: '[15, 16)'
|
|
- visualstudio: '2019'
|
|
runner: windows-2019
|
|
vs_version: '[16, 17)'
|
|
- visualstudio: '2022'
|
|
runner: windows-2022
|
|
vs_version: '[17, 18)'
|
|
# trim down the number of jobs in the matrix
|
|
exclude:
|
|
- variant: standard
|
|
configuration: Debug
|
|
- visualstudio: '2019'
|
|
configuration: Debug
|
|
runs-on: ${{ matrix.runner }}
|
|
steps:
|
|
- name: Install Visual Studio 2017
|
|
if: matrix.visualstudio == '2017'
|
|
run: |
|
|
choco install visualstudio2017buildtools
|
|
choco install visualstudio2017-workload-vctools
|
|
choco install windows-sdk-8.1
|
|
- uses: microsoft/setup-msbuild@v1
|
|
with:
|
|
vs-version: ${{ matrix.vs_version }}
|
|
- uses: actions/setup-python@v4
|
|
if: matrix.runner == 'windows-2019'
|
|
with:
|
|
python-version: '3.9'
|
|
- uses: actions/checkout@v3
|
|
- name: Build mpy-cross.exe
|
|
run: msbuild mpy-cross\mpy-cross.vcxproj -maxcpucount -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }}
|
|
- name: Build micropython.exe
|
|
run: msbuild ports\windows\micropython.vcxproj -maxcpucount -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }} -property:PyVariant=${{ matrix.variant }}
|
|
- name: Get micropython.exe path
|
|
id: get_path
|
|
run: |
|
|
$exePath="$(msbuild ports\windows\micropython.vcxproj -nologo -v:m -t:ShowTargetPath -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }} -property:PyVariant=${{ matrix.variant }})"
|
|
echo ("micropython=" + $exePath.Trim()) >> $env:GITHUB_OUTPUT
|
|
- name: Run tests
|
|
id: test
|
|
env:
|
|
MICROPY_MICROPYTHON: ${{ steps.get_path.outputs.micropython }}
|
|
working-directory: tests
|
|
run: python run-tests.py
|
|
- name: Print failures
|
|
if: failure() && steps.test.conclusion == 'failure'
|
|
working-directory: tests
|
|
run: python run-tests.py --print-failures
|
|
- name: Run mpy tests
|
|
id: test_mpy
|
|
env:
|
|
MICROPY_MICROPYTHON: ${{ steps.get_path.outputs.micropython }}
|
|
working-directory: tests
|
|
run: python run-tests.py --via-mpy -d basics float micropython
|
|
- name: Print mpy failures
|
|
if: failure() && steps.test_mpy.conclusion == 'failure'
|
|
working-directory: tests
|
|
run: python run-tests.py --print-failures
|
|
|
|
build-mingw:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
variant: [dev, standard]
|
|
sys: [mingw32, mingw64]
|
|
include:
|
|
- sys: mingw32
|
|
env: i686
|
|
- sys: mingw64
|
|
env: x86_64
|
|
runs-on: windows-2022
|
|
env:
|
|
CHERE_INVOKING: enabled_from_arguments
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- name: Get Python path
|
|
id: python_path
|
|
shell: python
|
|
run: |
|
|
import os
|
|
import sys
|
|
output = f"python={os.fspath(sys.executable)}"
|
|
print(output)
|
|
with open(os.environ["GITHUB_OUTPUT"], "w") as f:
|
|
f.write(output)
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.sys }}
|
|
update: true
|
|
install: >-
|
|
make
|
|
mingw-w64-${{ matrix.env }}-gcc
|
|
pkg-config
|
|
python3
|
|
git
|
|
diffutils
|
|
- uses: actions/checkout@v3
|
|
- name: Build mpy-cross.exe
|
|
run: make -C mpy-cross -j2
|
|
- name: Update submodules
|
|
run: make -C ports/windows VARIANT=${{ matrix.variant }} submodules
|
|
- name: Build micropython.exe
|
|
run: make -C ports/windows -j2 VARIANT=${{ matrix.variant }}
|
|
- name: Run tests
|
|
id: test
|
|
# msys python breaks tests so we need to use "real" windows python
|
|
run: MICROPY_CPYTHON3=$(cygpath "${{ steps.python_path.outputs.python }}") make -C ports/windows test_full VARIANT=${{ matrix.variant }}
|
|
- name: Print failures
|
|
if: failure() && steps.test.conclusion == 'failure'
|
|
working-directory: tests
|
|
run: python run-tests.py --print-failures
|
|
|
|
cross-build-on-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install packages
|
|
run: source tools/ci.sh && ci_windows_setup
|
|
- name: Build
|
|
run: source tools/ci.sh && ci_windows_build
|