mirror of
https://github.com/licsber/micropython.git
synced 2024-09-20 09:00:23 +08:00
ff73683077
Signed-off-by: Damien George <damien@micropython.org>
156 lines
5.0 KiB
YAML
156 lines
5.0 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@v2
|
|
with:
|
|
vs-version: ${{ matrix.vs_version }}
|
|
- uses: actions/setup-python@v5
|
|
if: matrix.runner == 'windows-2019'
|
|
with:
|
|
python-version: '3.9'
|
|
- uses: actions/checkout@v4
|
|
- name: Build mpy-cross.exe
|
|
run: msbuild mpy-cross\mpy-cross.vcxproj -maxcpucount -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }}
|
|
- name: Update submodules
|
|
run: git submodule update --init lib/micropython-lib
|
|
- 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@v4
|
|
- 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
|