windows: Improve MSYS2-based CI builds.

Install the mingw variant of Python since it behaves more like a
'real' Windows CPython than the msys2 variant: os.name == 'nt',
not 'posix'.  Note that os.sep is still '/' though so we don't
actually need to skip the import_file test.
This way one single Python version can be used both for running
run-tests.py and getting the expected test output.

Signed-off-by: stijn <stijn@ignitron.net>
pull/14188/head
stijn 2024-03-26 16:09:15 +01:00
rodzic 57de9da352
commit 1513f4753c
4 zmienionych plików z 10 dodań i 19 usunięć

Wyświetl plik

@ -108,16 +108,6 @@ jobs:
run: run:
shell: msys2 {0} shell: msys2 {0}
steps: 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 - uses: msys2/setup-msys2@v2
with: with:
msystem: ${{ matrix.sys }} msystem: ${{ matrix.sys }}
@ -126,7 +116,7 @@ jobs:
make make
mingw-w64-${{ matrix.env }}-gcc mingw-w64-${{ matrix.env }}-gcc
pkg-config pkg-config
python3 mingw-w64-${{ matrix.env }}-python3
git git
diffutils diffutils
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -138,8 +128,7 @@ jobs:
run: make -C ports/windows -j2 VARIANT=${{ matrix.variant }} run: make -C ports/windows -j2 VARIANT=${{ matrix.variant }}
- name: Run tests - name: Run tests
id: test id: test
# msys python breaks tests so we need to use "real" windows python run: make -C ports/windows test_full VARIANT=${{ matrix.variant }}
run: MICROPY_CPYTHON3=$(cygpath "${{ steps.python_path.outputs.python }}") make -C ports/windows test_full VARIANT=${{ matrix.variant }}
- name: Print failures - name: Print failures
if: failure() && steps.test.conclusion == 'failure' if: failure() && steps.test.conclusion == 'failure'
working-directory: tests working-directory: tests

Wyświetl plik

@ -101,6 +101,9 @@ include $(TOP)/py/mkrules.mk
.PHONY: test test_full .PHONY: test test_full
# Note for recent gcc versions like 13.2:
# - mingw64-x86_64 gcc builds will pass the math_domain_special test
# - mingw64-ucrt64 gcc builds will pass all of the below tests
RUN_TESTS_SKIP += -e math_fun -e float2int_double -e float_parse -e math_domain_special RUN_TESTS_SKIP += -e math_fun -e float2int_double -e float_parse -e math_domain_special
test: $(BUILD)/$(PROG) $(TOP)/tests/run-tests.py test: $(BUILD)/$(PROG) $(TOP)/tests/run-tests.py

Wyświetl plik

@ -45,7 +45,7 @@ Install MSYS2 from http://repo.msys2.org/distrib, start the msys2.exe shell and
install the build tools: install the build tools:
pacman -Syuu pacman -Syuu
pacman -S make mingw-w64-x86_64-gcc pkg-config python3 pacman -S make mingw-w64-x86_64-gcc pkg-config mingw-w64-x86_64-python3
Start the mingw64.exe shell and build: Start the mingw64.exe shell and build:

Wyświetl plik

@ -3,6 +3,7 @@
import os import os
import subprocess import subprocess
import sys import sys
import sysconfig
import platform import platform
import argparse import argparse
import inspect import inspect
@ -583,10 +584,6 @@ def run_tests(pyb, tests, args, result_dir, num_threads=1):
# fails with stack overflow on Debug builds # fails with stack overflow on Debug builds
skip_tests.add("misc/sys_settrace_features.py") skip_tests.add("misc/sys_settrace_features.py")
if os.getenv("MSYSTEM") is not None:
# fails due to wrong path separator
skip_tests.add("import/import_file.py")
if upy_float_precision == 0: if upy_float_precision == 0:
skip_tests.add("extmod/uctypes_le_float.py") skip_tests.add("extmod/uctypes_le_float.py")
skip_tests.add("extmod/uctypes_native_float.py") skip_tests.add("extmod/uctypes_native_float.py")
@ -699,7 +696,9 @@ def run_tests(pyb, tests, args, result_dir, num_threads=1):
# Some tests use unsupported features on Windows # Some tests use unsupported features on Windows
if os.name == "nt": if os.name == "nt":
skip_tests.add("import/import_file.py") # works but CPython prints forward slashes if not sysconfig.get_platform().startswith("mingw"):
# Works but CPython uses '\' path separator
skip_tests.add("import/import_file.py")
# Some tests are known to fail with native emitter # Some tests are known to fail with native emitter
# Remove them from the below when they work # Remove them from the below when they work