Skip to content

Add missing pip in $PATH on Cygwin CI #1784

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

Merged
merged 2 commits into from
Dec 23, 2023
Merged
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
Add missing pip in $PATH on Cygwin CI
This makes a pip -> pip3 symlink in /usr/bin in a new step prior to
the first step that runs the pip command. Using "pip3", "pip3.9",
or a command like "python -m pip" would work, but this allows the
Cygwin workflow to continue using the same installation commands as
the main testing workflow.

Adding this fixes two problems:

1. When the pip version installed by the python39-pip Cygwin
   package is current, so that upgrading pip doesn't install any
   new commmand, no "pip" command is created in /usr/local. This
   has happened not to be the case for a long time, which is why
   the Cygwin workflow was able to pass. (That the recent failures
   started at the merge of #1783 turns out to be a coincidence:
   rerunning jobs on prior commits has the failure, as does
   experimentally reverting it.)

2. Even when the pip version installed by python39-pip is behind
   the latest available version, pip is still used before being
   upgraded to check if setuptools is installed, to decide whether
   to upgrade it. This is to keep similar steps in the two testing
   workflows similar, since the Cygwin workflow only uses Python
   3.9, which always has setuptools. Because pip was never in $PATH
   in that step, the Cygwin workflow wrongly refrained from trying
   to upgrade setuptools.

When the "Update PyPA packages" step does find a newer version of
pip to upgrade to, it installs it in /usr/local/bin, which we have
in $PATH before /usr/bin, so the upgraded version, when present,
will still be preferred in subsequent commands, as before.

Running "pip" on Cygwin when it may not be in $PATH -- and, for one
step, never is -- was a bug introduced in e8956e5 (#1709). Before
that, "pip" still was not always available, but it was not used.
This change fixes the bug by making sure "pip" is always available.
  • Loading branch information
EliahKagan committed Dec 23, 2023
commit c567f6fc2e2e15e5d0c1d854a1dc65651257265b
5 changes: 5 additions & 0 deletions .github/workflows/cygwin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ 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, wheel, and prior to Python 3.12, setuptools.
Expand Down