PyPI "TLS<1.2 Brownout" is causing travis OS-X tests to fail #2913
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#2913
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
We're seeing some intermittent failures of the Travis-CI OS-X build, where the symptom is that tox is unable to install the "incremental" package (which is a dependency of Twisted):
https://travis-ci.org/tahoe-lafs/tahoe-lafs/jobs/359145018
http://pyfound.blogspot.com/2017/01/time-to-upgrade-your-python-tls-v12.html reports that PyPI is soon to be dropping support for TLS-1.0 and 1.1, requiring all clients to use TLS-1.2 or newer. To test this, they're conducting rolling brownouts: as of today, https://status.python.org/ reports that TLS-1.2 is being enforced for the first 15 minutes of each hour (clients speaking older versions get an HTTP 403 with an explanatory error message). Unfortunately many versions of pip/setuptools don't report these error messages very well, making them look like random network outages.
OS-X-10.12 (the not-most-recent-version, which is Travis's default) ships with an ancient OpenSSL which does not support TLS-1.2 . OS-X-10.13 (the current version) ships with a modern-ish version of libressl that can do TLS-1.2.
The system
/usr/bin/python
is linked against the system OpenSSL. Our Travis OS-X build appears to use that (although note that we don't havelanguage: python
turned on, for various reasons that need to be fixed, so we might get a different python if we told travis we wanted python).pip-9.0.3 knows how to use OpenTransport on a mac, instead of OpenSSL, and OT is nicely modern and speaks TLS-1.2 just fine. But setuptools does not.
So when TLS<=1.2 is turned off, the only way to install things on OS-X are:
In 4eac3ca, we modified our
setup_requires=
to needsetuptools >= 28.8.0
, since that's (roughly?) the oldest that understands thepython_requires=
syntax that we use in oursetup.py
. However upgrading setuptools from inside asetup_requires=
is pretty explody (https://tahoe-lafs.org/buildbot-tahoe-lafs/builders/OS-X%2010.13/builds/14/steps/tox/logs/stdio), so in 6f20dbc we changed travis to upgrade setuptools before running tox, and in 526b97c we changed tox to stop building sdists (which we didn't use, and which were built with the external python and it's old setuptools).But the remaining problem is that when Twisted says
setup_requires: ["incremental"]
, it's setuptools that attempts to do the install, not pip. Since Travis is using OS-X 10.12, and the system python, and it's not using pip, the setuptools attempt to installincremental
uses an old version of TLS, which gets blocked by the PyPI brownout, and unhelpfully reported as a lookup failure.To fix this, our workaround will be to pre-install/upgrade
incremental
, in our tox.ini. We're going to need to pre-install anything that is referenced bysetup_requires
in any dependency. We can probably remove this workaround when Travis moves their default to OS-X-10.13, or if setuptools acquires the same kind of workaround that pip has (not likely), or if we switch to telling travislanguage: python
and that happens to use something like Homebrew python.Travis is having other problems right now (OS-X builds are backed up pretty badly), but I think this TLS thing is what's biting us. It certainly makes it harder to experiment, though.
In acc2b57/trunk:
In 479588d/trunk: