Skip to content

Support Python 3.12 on Cygwin #1988

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Test both Python 3.9 and Python 3.12 on CI
Python 3.12 is currently marked "test" and should not be expected
to fully work. Assuming this successfully installs it, based on
local testing I expect two encounter two problems:

1. Currently, creating a venv with `pip` in Python 3.12 on Cygwin
   does not seem to be working, even though its own global `pip`
   exists. Running `python -m ensurepip` likewise does not work,
   reporting that the bundled `pip-24.3.1-py3-none-any.whl` does
   not exist. The https://bootstrap.pypa.io/get-pip.py script can
   be used as a workaround, assuming the problem also happens on
   CI (which I expect). Eventually, `pip` should be fully working.

2. Once that is worked around, there seem to be problems where
   Python processes terminate unexpectedly and wrongly report
   success, or where subprocess creation fails.

   When I ran `pytest` loading it as a module (`python -m pytest`),
   it collected tests and sometimes started running them, but then
   suddenly terminated with an exit status of 0. When I ran it via
   the `pytest` command (no `python -m`), that problem also usually
   happened, but one time I got an immediate termination instead,
   reporting the following errors, yet still with a 0 exit status:

       0 [main] python3.12 2724 C:\cygwin64\bin\python3.12.exe: *** fatal error in forked process - WFSO timed out performed fork fixups and dynamic dll loading
       0 [main] python3.12 2769 C:\cygwin64\bin\python3.12.exe: *** fatal error in forked process - WFSO timed out performed fork fixups and dynamic dll loading

   And one time I got an immediate termination reporting this
   slightly different error, also with an exit status of 0:

       0 [main] python3.12 3371 C:\cygwin64\bin\python3.12.exe: *** fatal error in forked process - WFSO timed out after longjmp

   This curious combination of errors (or the same error arising
   and being reported in different ways?) is my main motivation for
   testing GitPython on CI with Python 3.12 in Cygwin now, even
   though the Cygwin package `python312` and assocated packages are
   still marked "test". If the problems I observed locally can be
   reproduced, then this may help to find a minimal case that shows
   the problem (assuming that it is due to a Cygwin-related bug).

This commit contains no attempt to avoid or work around either of
those two anticipated problems.
  • Loading branch information
EliahKagan committed Feb 20, 2025
commit 93f29c20d8f9a2f7e32360155f7ae4a2c1aa0f19
14 changes: 12 additions & 2 deletions .github/workflows/cygwin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ jobs:
runs-on: windows-latest

strategy:
matrix:
python-version: ["3.9", "3.12"]
include:
- python-version: "3.9"
python-cygwin: python39
python-command: python3.9
- python-version: "3.12"
python-cygwin: python312
python-command: python3.12

fail-fast: false

env:
Expand All @@ -30,7 +40,7 @@ jobs:
- name: Set up Cygwin
uses: egor-tensin/setup-cygwin@v4
with:
packages: python39 python39-pip python39-virtualenv git
packages: ${{ matrix.python-cygwin }} ${{ matrix.python-cygwin }}-pip ${{ matrix.python-cygwin }}-virtualenv git

- name: Arrange for verbose output
run: |
Expand All @@ -57,7 +67,7 @@ jobs:

- name: Set up virtualenv
run: |
python -m venv .venv
${{ matrix.python-command }} -m venv .venv
echo 'BASH_ENV=.venv/bin/activate' >>"$GITHUB_ENV"

- name: Update PyPA packages
Expand Down