Make certbot constraint file independent from certbot-auto + update cryptography (#8649)

* Refactor to not depend on certbot-auto dependencies pinning anymore

* Update constraints

* Replaces references

* Upgrade AWS dependencies pinning

* Fix script

* Fix Windows installer builds

* Fixing sdists letstest script

* Pin cryptography on 3.1.1 specifically for RHEL/CentOS 7 to avoid build failures during test_sdists test.

* Finish fix

* Fix VERSION_ID in RHEL 7
This commit is contained in:
Adrien Ferrand
2021-02-23 15:29:52 -08:00
committed by GitHub
parent c43f4fe518
commit c3d6fca3eb
9 changed files with 325 additions and 53 deletions
+17 -1
View File
@@ -2,6 +2,7 @@
import contextlib
import ctypes
import os
import re
import shutil
import struct
import subprocess
@@ -52,6 +53,21 @@ def _compile_wheels(repo_path, build_path, venv_python):
command.extend(wheels_project)
subprocess.check_call(command, env=env)
# Cryptography uses now a unique wheel name "cryptography-VERSION-cpXX-abi3-win32.whl where
# cpXX is the lowest supported version of Python (eg. cp36 says that the wheel is compatible
# with Python 3.6+). While technically valid to describe a wheel compliant with the Stable
# Application Binary Interface, this naming convention makes pynsist falsely think that the
# wheel is compatible with Python 3.6 only.
# Let's trick pynsist by renaming the wheel until this is fixed upstream.
for file in os.listdir(wheels_path):
# Given that our Python version is 3.8, this rename files like
# cryptography-VERSION-cpXX-abi3-win32.whl into cryptography-VERSION-cp38-abi3-win32.whl
renamed = re.sub(r'^(.*)-cp\d+-abi3-(\w+)\.whl$', r'\1-cp{0}{1}-abi3-\2.whl'
.format(PYTHON_VERSION[0], PYTHON_VERSION[1]), file)
print(renamed)
if renamed != file:
os.replace(os.path.join(wheels_path, file), os.path.join(wheels_path, renamed))
def _prepare_build_tools(venv_path, venv_python, repo_path):
print('Prepare build tools')
@@ -63,7 +79,7 @@ def _prepare_build_tools(venv_path, venv_python, repo_path):
@contextlib.contextmanager
def _prepare_constraints(repo_path):
reqs_certbot = os.path.join(repo_path, 'letsencrypt-auto-source', 'pieces', 'dependency-requirements.txt')
reqs_certbot = os.path.join(repo_path, 'tools', 'certbot_constraints.txt')
reqs_pipstrap = os.path.join(repo_path, 'tools', 'pipstrap_constraints.txt')
constraints_certbot = subprocess.check_output(
[sys.executable, os.path.join(repo_path, 'tools', 'strip_hashes.py'), reqs_certbot],