Skip to content

Commit

Permalink
windows: Improve MSYS2-based CI builds.
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
stinos committed Mar 26, 2024
1 parent 57de9da commit 1513f47
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 19 deletions.
15 changes: 2 additions & 13 deletions .github/workflows/ports_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand All @@ -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
Expand All @@ -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
Expand Down
3 changes: 3 additions & 0 deletions ports/windows/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion ports/windows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
9 changes: 4 additions & 5 deletions tests/run-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import os
import subprocess
import sys
import sysconfig
import platform
import argparse
import inspect
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 1513f47

Please sign in to comment.