Skip to content

Commit

Permalink
Use Python 3.9.16 on Cygwin CI
Browse files Browse the repository at this point in the history
The latest currently packaged version of Python 3.9 for Cygwin is
3.9.18 (provided by the Cygwin package python39 at version
3.9.18-1). That version, at least as we are using it, has a problem
where pip has begun to block on some PyPI package downloads.

In 73ebcfa (#2), I worked around this problem by
downgrading the minor version of Python to 3.8. But it is better to
use 3.9 if we can, since it is currently the latest minor version
of Python in the Cygwin repositories, and also because (relating to
that) it is used more often, and thus probably used more often with
GitPython, than 3.8.

This upgrades Python on Cygwin but not all the way. It upgrades it
to the latest (or latest currently available) patch version of 3.9
packaged for Cygwin of those that strictly precede 3.9.18 where the
problem occurs. That version is 3.9.16, provided by the Cygwin
package python39 at version 3.9.16-1.

This version may eventually no longer be available for download
from Cygwin's repositories, so hopefully a real solution or better
workaround will be found by then, or perhaps a future update to the
package itself will fix the problem.

I also tried some more other stuff since finding 3.8 to work in
73ebcfa. Changes since then are listed below. They can be examined
in full detail, with individual diffs and CI results, at
#3.

* Try Python 3.9 with other details the same

Changing it to Python 3.8 worked, but I want to check that it was
actually the use of Python 3.8, rather than other seemingly small
changes made to support using Python 3.8, that made the difference.

* Revert "Try Python 3.9 with other details the same"

This reverts commit b55cbfb.

* Try 3.9 again, with both python39=3.9.16-1 python39-pip=23.0.1-1

* Back to 3.8; try another GitHub Action

Python 3.8 worked with cygwin-install-action, but I want to make
the change to setup-cygwin by itself first before trying it with
3.9, in case I am using setup-cygwin incorrectly.

* Try 3.9 with this setup-cygwin action

* Try pinning with setup-cygwin

* Try not pinning, but no -U for PyPA, with setup-cygwin

Pinning and skipping -U for PyPA packages worked. Let's see if it
was really pinning that made the difference.

* Try pinning just python39-pip

Pinning works, and merely omitting the -U for PyPA package doesn't.
Examining the output of runs that used install-cygwin-action and
attemped pinning Cygwin package versions shows newer versions were
installed, whereas pinning is really happening with setup-cygwin.

This tries pinning just the Cygwin package for pip, rather than for
Python 3.9. I don't expect this to work.

* Try pinning just python39=3.9.16-1

And not pip, but this does not add back the -U for PyPA yet.

* Add back -U for PyPA packages

* Try pinning python39=3.9.16-1 with old action/everything

This is extremely unlikely to work, I just want to check.

* Try just setup-cygwin and pinning python39=3.9.16-1

That is, this puts back all the other stuff the way it was on the
main branch when the breakage occurred, besides changing from
cygwin-install-action to setup-cygwin to make pinning work and
using it to get version 3.9.16-1 of the Cygwin python39 package.
  • Loading branch information
EliahKagan committed Jan 28, 2024
1 parent 73ebcfa commit 8dc4cb0
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions .github/workflows/cygwin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:

defaults:
run:
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr "{0}"
shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr "{0}"

steps:
- name: Force LF line endings
Expand All @@ -27,11 +27,10 @@ jobs:
with:
fetch-depth: 0

- name: Install Cygwin
uses: cygwin/cygwin-install-action@v4
- name: Set up Cygwin
uses: egor-tensin/setup-cygwin@v4
with:
packages: python38 python38-pip python38-virtualenv git
add-to-path: false # No need to change $PATH outside the Cygwin environment.
packages: python39=3.9.16-1 python39-pip python39-virtualenv git

- name: Arrange for verbose output
run: |
Expand All @@ -55,23 +54,28 @@ jobs:
# and cause subsequent tests to fail
cat test/fixtures/.gitconfig >> ~/.gitconfig
- name: Ensure the "pip" command is available
run: |
# This is used unless, and before, an updated pip is installed.
ln -s pip3 /usr/bin/pip
- name: Update PyPA packages
run: |
# Get the latest pip, setuptools, and wheel.
python3.8 -m pip install -U pip setuptools wheel
# Get the latest pip, wheel, and prior to Python 3.12, setuptools.
python -m pip install -U pip $(pip freeze --all | grep -ow ^setuptools) wheel
- name: Install project and test dependencies
run: |
python3.8 -m pip install ".[test]"
pip install ".[test]"
- name: Show version and platform information
run: |
uname -a
command -v git python3.8
command -v git python
git version
python3.8 --version
python3.8 -c 'import os, sys; print(f"sys.platform={sys.platform!r}, os.name={os.name!r}")'
python --version
python -c 'import os, sys; print(f"sys.platform={sys.platform!r}, os.name={os.name!r}")'
- name: Test with pytest
run: |
python3.8 -m pytest --color=yes -p no:sugar --instafail -vv
pytest --color=yes -p no:sugar --instafail -vv

0 comments on commit 8dc4cb0

Please sign in to comment.