-
-
Notifications
You must be signed in to change notification settings - Fork 673
Description
#26351 added an optional upstream_url
field to build/pkgs/*/checksums.ini
. It streamlines the procedure for testing upgrade tickets: Developers or automatic testing facilities can pass an extra flag -o
to sage-spkg
to allow downloading from upstream rather than from Sage mirrors (where the updated ticket will be made available later only).
Many upstream package URLs use the https
protocol - in contrast to the http
protocol used when downloading from the Sage mirrors. The downloading is done via build/bin/sage-download-file
, which uses the urllib
module. It supports the https protocol.
However, SSL certificate problems are common on test systems. For example, if one uses XCode's python3
as the system python, then urllib
does not automatically uses the standard system certificates. (This is apparently a known issue -- which is considered "wontfix" by Apple as reported here:
HandBrake/HandBrake#2216 (comment))
We add an option --no-check-certificate
to sage-download-file
, disabling certificate checking (https://stackoverflow.com/questions/36600583/python-3-urllib-ignore-ssl-certificate-verification).
Developers can set this option using the environment variable SAGE_DOWNLOAD_FILE_OPTIONS when installing packages (either by make
or by using sage -i
).
We note that even with SSL certificates disabled, there is still cryptographic protection because of the checksums recorded in checksums.ini
.
Other possible workarounds considered:
- switching from using urllib directly to the requests library
- passing cafile=..., capath=... to urllib, perhaps coming from an environment variable
- using python instead of python3 on macOS as system python
As of #29090 (sage-system-python fixup) prefers /usr/bin/python3
over /usr/bin/python
, leading to:
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
(see https://github.com/mkoeppe/sage/runs/538432620)
CC: @vbraun @dimpase @kiwifb @jhpalmieri @videlec @fchapoton @kliem
Component: build
Author: Matthias Koeppe
Branch: 90ea00b
Reviewer: Jonathan Kliem
Issue created by migration from https://trac.sagemath.org/ticket/29418