From ca8276ca5848daf758a7a49cde257fc5b8a2ea24 Mon Sep 17 00:00:00 2001 From: sydneyli Date: Mon, 4 Feb 2019 13:07:24 -0800 Subject: [PATCH] Pulling out strip_hashes and add --no-deps flag --- Dockerfile | 12 +++++------- tools/docker_constraints.py | 23 ----------------------- tools/pip_install.py | 16 ++++------------ tools/strip_hashes.py | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 42 deletions(-) delete mode 100755 tools/docker_constraints.py create mode 100755 tools/strip_hashes.py diff --git a/Dockerfile b/Dockerfile index da67626d2..17c871506 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,10 @@ WORKDIR /opt/certbot COPY CHANGELOG.md README.rst setup.py src/ # Generate constraints file to pin dependency versions -COPY letsencrypt-auto-source/pieces/dependency-requirements.txt hashed_requirements.txt +COPY letsencrypt-auto-source/pieces/dependency-requirements.txt . COPY tools /opt/certbot/tools -RUN /opt/certbot/tools/docker_constraints.py \ - hashed_requirements.txt unhashed_requirements.txt \ - tools/dev_constraints.txt docker_constraints.txt +RUN sh -c 'cat dependency-requirements.txt | /opt/certbot/tools/strip_hashes.py > unhashed_requirements.txt' +RUN sh -c 'cat tools/dev_constraints.txt unhashed_requirements.txt | /opt/certbot/tools/merge_requirements.py > docker_constraints.txt' COPY acme src/acme COPY certbot src/certbot @@ -29,9 +28,8 @@ RUN apk add --no-cache --virtual .build-deps \ openssl-dev \ musl-dev \ libffi-dev \ - && pip install --no-cache-dir \ - --requirement /opt/certbot/unhashed_requirements.txt \ - --constraint /opt/certbot/docker_constraints.txt \ + && pip install -r /opt/certbot/dependency-requirements.txt \ + && pip install --no-cache-dir --no-deps \ --editable /opt/certbot/src/acme \ --editable /opt/certbot/src \ && apk del .build-deps diff --git a/tools/docker_constraints.py b/tools/docker_constraints.py deleted file mode 100755 index b00bd12de..000000000 --- a/tools/docker_constraints.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -"""Generates constraints file to pin dependency versions in Docker images. - -Removes hashes from supplied requirements file and merges it with existing -constraints file. Versions in requirements take precedence over constraints. - -Generates interstitial with hashes stripped from requirements. -""" - -import sys - -import pip_install -import merge_requirements - -def main(hashed_reqs_in, unhashed_reqs_out, - constraints_in, constraints_out): - with open(unhashed_reqs_out, 'w') as fd: - fd.write(pip_install.remove_requirements_hashes(hashed_reqs_in)) - with open(constraints_out, 'w') as fd: - fd.write(merge_requirements.main(constraints_in, unhashed_reqs_out)) - -if __name__ == '__main__': - main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) diff --git a/tools/pip_install.py b/tools/pip_install.py index 255cee59f..475799eb1 100755 --- a/tools/pip_install.py +++ b/tools/pip_install.py @@ -19,6 +19,7 @@ import tempfile import merge_requirements as merge_module import readlink +import strip_hashes def find_tools_path(): @@ -40,23 +41,14 @@ def certbot_oldest_processing(tools_path, args, test_constraints): return requirements -def remove_requirements_hashes(filename): - out_lines = [] - with open(filename, 'r') as fd: - in_data = fd.readlines() - for line in in_data: - search = re.search(r'^(\S*==\S*).*$', line) - if search: - out_lines.append(search.group(1)) - return os.linesep.join(out_lines) - - def certbot_normal_processing(tools_path, test_constraints): repo_path = os.path.dirname(tools_path) certbot_requirements = os.path.normpath(os.path.join( repo_path, 'letsencrypt-auto-source/pieces/dependency-requirements.txt')) + with open(certbot_requirements, 'r') as fd: + data = fd.readlines() with open(test_constraints, 'w') as fd: - fd.write(remove_requirements_hashes(certbot_requirements)) + fd.write(strip_hashes.main(data)) def merge_requirements(tools_path, requirements, test_constraints, all_constraints): diff --git a/tools/strip_hashes.py b/tools/strip_hashes.py new file mode 100755 index 000000000..c5591e2f4 --- /dev/null +++ b/tools/strip_hashes.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +import os +import re +import sys + +def main(args): + out_lines = [] + for line in args: + search = re.search(r'^(\S*==\S*).*$', line) + if search: + out_lines.append(search.group(1)) + return os.linesep.join(out_lines) + +if __name__ == '__main__': + print(main(sys.argv[1:]))