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:
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 }}
@ -126,7 +116,7 @@ jobs:
make
mingw-w64-${{ matrix.env }}-gcc
pkg-config
python3
mingw-w64-${{ matrix.env }}-python3
git
diffutils
- uses: actions/checkout@v4
@ -138,8 +128,7 @@ jobs:
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 }}
run: make -C ports/windows test_full VARIANT=${{ matrix.variant }}
- name: Print failures
if: failure() && steps.test.conclusion == 'failure'
working-directory: tests

Wyświetl plik

@ -101,6 +101,9 @@ include $(TOP)/py/mkrules.mk
.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
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:
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:

Wyświetl plik

@ -3,6 +3,7 @@
import os
import subprocess
import sys
import sysconfig
import platform
import argparse
import inspect
@ -583,10 +584,6 @@ def run_tests(pyb, tests, args, result_dir, num_threads=1):
# fails with stack overflow on Debug builds
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:
skip_tests.add("extmod/uctypes_le_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
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
# Remove them from the below when they work