diff --git a/CHANGELOG.md b/CHANGELOG.md index b45a9c5e86c4f9e8f225407ebd7dd269824cce0b..9441c53437fa201e4004eca44ff741725cc8da8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Python Buildpack Changelog +# 136 + +Upgrade to 3.6.6 and support 3.7.0 on all runtimes. + # 135 Upgrade Pipenv to v2018.5.18. diff --git a/README.md b/README.md index 0a5aed1d59a50a6fd84ff0c5d848133e4c6cfbb4..a4a5bf962c754a35b2a72f13161181cf022f6de5 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Deploying a Python application couldn't be easier: $ git push heroku master … -----> Python app detected - -----> Installing python-3.6.5 + -----> Installing python-3.6.6 -----> Installing pip -----> Installing requirements with Pipenv 2018.5.18… ... @@ -58,5 +58,6 @@ Or, with a `runtime.txt` file: Runtime options include: -- `python-3.6.5` +- `python-3.7.0` +- `python-3.6.6` - `python-2.7.15` diff --git a/bin/compile b/bin/compile index 6f4caee0f84c997a379cc9596ce7702680eb2185..de41aa7477c53392e069cb4c1c839cb5703862c6 100755 --- a/bin/compile +++ b/bin/compile @@ -49,8 +49,8 @@ export VENDOR_URL # These variables are used to specify which versions of Python to install by default, # as well as prompt the user to upgrade if they are using an un–supported version. # Note: When 3.7 lands, I recommend switching to LATEST_36 and LATEST_37. -DEFAULT_PYTHON_VERSION="python-3.6.5" -LATEST_3="python-3.6.5" +DEFAULT_PYTHON_VERSION="python-3.6.6" +LATEST_3="python-3.6.6" LATEST_2="python-2.7.15" # Which stack is used (for binary downloading), if none is provided (e.g. outside of Heroku)? diff --git a/builds/runtimes/python-3.6.6 b/builds/runtimes/python-3.6.6 new file mode 100755 index 0000000000000000000000000000000000000000..6da9e250e2a81c35f66cea151aa08be089be40a2 --- /dev/null +++ b/builds/runtimes/python-3.6.6 @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Build Path: /app/.heroku/python/ +# Build Deps: libraries/sqlite + +OUT_PREFIX=$1 + +echo "Building Python…" +SOURCE_TARBALL='https://python.org/ftp/python/3.6.6/Python-3.6.6.tgz' +curl -L $SOURCE_TARBALL | tar xz +mv Python-3.6.6 src +cd src + +./configure --prefix=$OUT_PREFIX --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 '{}' + + +ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python diff --git a/builds/runtimes/python-3.7.0 b/builds/runtimes/python-3.7.0 new file mode 100755 index 0000000000000000000000000000000000000000..2046c4555e7927b574ca48ed0e8434e7901000a7 --- /dev/null +++ b/builds/runtimes/python-3.7.0 @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Build Path: /app/.heroku/python/ +# Build Deps: libraries/sqlite + +OUT_PREFIX=$1 + +echo "Building Python…" +SOURCE_TARBALL='https://python.org/ftp/python/3.7.0/Python-3.7.0.tgz' +curl -L $SOURCE_TARBALL | tar xz +mv Python-3.7.0 src +cd src + +./configure --prefix=$OUT_PREFIX --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 '{}' + + +ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python diff --git a/test/run b/test/run index 211f2a8fb839299de1768156fdfbf999c8f8e2d9..9117677aa9c7731950f4e5ca1df5a5bff15cf340 100755 --- a/test/run +++ b/test/run @@ -12,7 +12,7 @@ testPipenvLock() { testPipenvVersion() { compile "pipenv-version" - assertCaptured "3.6.5" + assertCaptured "3.6.6" assertCapturedSuccess } @@ -83,7 +83,7 @@ testPython2() { testPython3() { compile "python3" - assertCaptured "python-3.6.5" + assertCaptured "python-3.6.6" assertCapturedSuccess }