From fc6698e5971688726326fc5281094dbf0609f4b1 Mon Sep 17 00:00:00 2001 From: Ed Morley <501702+edmorley@users.noreply.github.com> Date: Mon, 3 Aug 2020 19:45:41 +0100 Subject: [PATCH] Update pip to 20.1.1 (#1030) Updates pip from 20.0.2 to 20.1.1 for Python 2.7 and Python 3.5+: https://pip.pypa.io/en/stable/news/#id40 The version used for Python 3.4 remains unchanged at 19.1.1, since it's the last version of pip that supports it. Pip has been updated to 20.1.1 rather than the recently released 20.2, since the latter has a few regressions and even though these will be fixed shortly in 20.2.1, we should let the changes soak for longer before picking them up. The `PIP_NO_PYTHON_VERSION_WARNING` environment variable has been set (equivalent to passing `--no-python-version-warning`) to prevent the Python 2.7 EOL warnings added in pip 20.1 from spamming the build log: https://github.com/pypa/pip/blob/20.1.1/src/pip/_internal/cli/base_command.py#L139-L154 This was set via environment variable rather than CLI flag, since: * otherwise we'd have to pass it to every pip invocation * older pip (such as the 19.1.1 used by Python 3.4) doesn't support this option and would error out due to an unknown CLI flag being passed, unless we added conditional flags throughout. The new pip wheel was uploaded to S3 using: ``` $ pip download --no-cache pip==20.1.1 Collecting pip==20.1.1 Downloading pip-20.1.1-py2.py3-none-any.whl (1.5 MB) Saved ./pip-20.1.1-py2.py3-none-any.whl Successfully downloaded pip $ aws s3 sync . s3://lang-python/common/ --exclude "*" --include "*.whl" --acl public-read --dryrun (dryrun) upload: ./pip-20.1.1-py2.py3-none-any.whl to s3://lang-python/common/pip-20.1.1-py2.py3-none-any.whl $ aws s3 sync . s3://lang-python/common/ --exclude "*" --include "*.whl" --acl public-read upload: ./pip-20.1.1-py2.py3-none-any.whl to s3://lang-python/common/pip-20.1.1-py2.py3-none-any.whl ``` Fixes #1005. @W-7659489@ --- CHANGELOG.md | 1 + bin/compile | 4 ++++ bin/steps/python | 2 +- test/run-features | 1 + test/run-versions | 16 ++++++++-------- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index acde55e..1e51962 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ # Unreleased +- Update pip from 20.0.2 to 20.1.1 for Python 2.7 and Python 3.5+ (#1030). - Update setuptools from 39.0.1 to: (#1024) - 44.1.1 for Python 2.7 - 43.0.0 for Python 3.4 diff --git a/bin/compile b/bin/compile index 9a0a2d6..40369cc 100755 --- a/bin/compile +++ b/bin/compile @@ -137,6 +137,10 @@ export LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PAT export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH +# Global pip options (https://pip.pypa.io/en/stable/user_guide/#environment-variables). +# Disable pip's warnings about EOL Python since we show our own. +export PIP_NO_PYTHON_VERSION_WARNING=1 + # The Application Code # -------------------- diff --git a/bin/steps/python b/bin/steps/python index 71406dd..e95b7fc 100755 --- a/bin/steps/python +++ b/bin/steps/python @@ -137,7 +137,7 @@ fi set -e -PIP_VERSION='20.0.2' +PIP_VERSION='20.1.1' # Must use setuptools <47.2.0 until we fix: # https://github.com/heroku/heroku-buildpack-python/issues/1006 SETUPTOOLS_VERSION='47.1.1' diff --git a/test/run-features b/test/run-features index 69080e3..fb30eb8 100755 --- a/test/run-features +++ b/test/run-features @@ -108,6 +108,7 @@ testHooks() { LIBRARY_PATH OLDPWD PATH + PIP_NO_PYTHON_VERSION_WARNING PKG_CONFIG_PATH PROFILE_PATH PWD diff --git a/test/run-versions b/test/run-versions index a6b6186..c491748 100755 --- a/test/run-versions +++ b/test/run-versions @@ -9,7 +9,7 @@ testPythonDefault() { compile "pythonDefault" assertCaptured $DEFAULT_PYTHON_VERSION assertNotCaptured "security update" - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess } @@ -25,7 +25,7 @@ testPython2() { assertNotCaptured "python-2-7-eol-faq"; fi assertNotCaptured "security update" - assertCaptured "Installing pip 20.0.2, setuptools 44.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 44.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess } @@ -89,7 +89,7 @@ testPython3_5() { compile "python3_5" assertCaptured $LATEST_35 assertNotCaptured "security update" - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess } @@ -112,7 +112,7 @@ testPython3_6() { compile "python3_6" assertCaptured $LATEST_36 assertNotCaptured "security update" - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess } @@ -139,7 +139,7 @@ testPython3_7() { else assertNotCaptured "security update" assertCaptured $LATEST_37 - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess fi @@ -183,7 +183,7 @@ testPython3_8() { else assertNotCaptured "security update" assertCaptured $LATEST_38 - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCaptured "Installing SQLite3" assertCapturedSuccess fi @@ -202,7 +202,7 @@ testPypy3_6() { else assertCaptured "Installing pypy" assertCaptured "$PYPY_36" - assertCaptured "Installing pip 20.0.2, setuptools 47.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2" assertCapturedSuccess fi } @@ -214,7 +214,7 @@ testPypy2_7() { else assertCaptured "Installing pypy" assertCaptured "$PYPY_27" - assertCaptured "Installing pip 20.0.2, setuptools 44.1.1 and wheel 0.34.2" + assertCaptured "Installing pip 20.1.1, setuptools 44.1.1 and wheel 0.34.2" assertCapturedSuccess fi }