Add support for latest CPython and PyPy versions (#977)

Adds support for:
* CPython 2.7.18, 3.5.9, 3.7.7 and 3.8.3
* PyPy 2.7 and 3.6, version 7.3.1

The binaries will need generating and uploading before CI will pass.

Note: Whilst the build script for CPython 3.8.3 did already exist in the
repository, it appears to have been accidentally created in #920, which
predated the existence of that version of Python - so the binaries do
not exist on S3.

The Heroku-18 Docker image tag has also been unpinned, since the new
libssl version is now available at runtime in all environments, so we
don't need to force building against the older version of the headers.

Fixes W-7582174.
This commit is contained in:
Ed Morley
2020-05-19 14:16:59 +01:00
committed by GitHub
parent d3a60b21fe
commit 8cb379f83b
12 changed files with 57 additions and 12 deletions
+2
View File
@@ -2,6 +2,8 @@
# Master
- Python 2.7.18, 3.5.9, 3.7.7 and 3.8.3 are now available (CPython).
- PyPy 2.7 and 3.6, version 7.3.1 are now available (Note: PyPy support is in beta)
- Docs: Fix explanation of runtime.txt generation when using pipenv
- Bugfix: Correctly detect Python version when using a `python_version` of `3.8` in `Pipfile.lock`
+3 -3
View File
@@ -62,10 +62,10 @@ Specify a Python Runtime
Supported runtime options include:
- `python-3.8.2`
- `python-3.7.6`
- `python-3.8.3`
- `python-3.7.7`
- `python-3.6.10`
- `python-2.7.17`
- `python-2.7.18`
## Tests
+6 -6
View File
@@ -1,14 +1,14 @@
#!/usr/bin/env bash
DEFAULT_PYTHON_VERSION="python-3.6.10"
LATEST_38="python-3.8.2"
LATEST_37="python-3.7.6"
LATEST_38="python-3.8.3"
LATEST_37="python-3.7.7"
LATEST_36="python-3.6.10"
LATEST_35="python-3.5.7"
LATEST_35="python-3.5.9"
LATEST_34="python-3.4.10"
LATEST_27="python-2.7.17"
PYPY_36="pypy3.6-7.2.0"
PYPY_27="pypy2.7-7.2.0"
LATEST_27="python-2.7.18"
PYPY_36="pypy3.6-7.3.1"
PYPY_27="pypy2.7-7.3.1"
export DEFAULT_PYTHON_VERSION \
LATEST_38 \
+1 -1
View File
@@ -1,4 +1,4 @@
FROM heroku/heroku:18-build.v16
FROM heroku/heroku:18-build
WORKDIR /app
ENV WORKSPACE_DIR="/app/builds" \
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy2.7
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy3.6
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
export BIN_DIR
# shellcheck source=bin/utils
source "$BIN_DIR/steps/sqlite3"
sqlite3_version
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.18/Python-2.7.18.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.18 src
cd src
./configure --prefix=$OUT_PREFIX --enable-unicode=ucs4 --with-ensurepip=no
make
make install
# Remove unneeded test directories, similar to the official Docker Python images:
# https://github.com/docker-library/python
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
Regular → Executable
View File
+1 -1
View File
@@ -1 +1 @@
python-2.7.17
python-2.7.18
+1 -1
View File
@@ -1 +1 @@
python-3.5.7
python-3.5.9