diff --git a/CHANGELOG.md b/CHANGELOG.md index 5262c83..6a24212 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ - Test staged binaries on Travis -------------------------------------------------------------------------------- + +# 160 (2019-10-23) + +- Bugfix: Pipenv no longer installs twice in CI + +# 159 (2019-10-22) + +- Python 2.7.17 now available on Heroku 18 and 16. + # 158 (2019-10-21) - Python 3.7.5 and 3.8.0 now available on Heroku 18 and 16. diff --git a/README.md b/README.md index ad7a654..e3ea62a 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Supported runtime options include: - `python-3.7.4` - `python-3.6.9` -- `python-2.7.16` +- `python-2.7.17` ## Tests diff --git a/bin/default_pythons b/bin/default_pythons index ecc569c..16f044b 100755 --- a/bin/default_pythons +++ b/bin/default_pythons @@ -6,6 +6,6 @@ LATEST_37="python-3.7.5" LATEST_36="python-3.6.9" LATEST_35="python-3.5.7" LATEST_34="python-3.4.10" -LATEST_27="python-2.7.16" +LATEST_27="python-2.7.17" export DEFAULT_PYTHON_VERSION LATEST_38 LATEST_37 LATEST_36 LATEST_35 LATEST_34 LATEST_27 diff --git a/bin/steps/pipenv b/bin/steps/pipenv index a84d549..c799c7d 100755 --- a/bin/steps/pipenv +++ b/bin/steps/pipenv @@ -60,10 +60,16 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then # avoid this eager behavior. /app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade --upgrade-strategy only-if-needed &> /dev/null + # Install the test dependencies, for CI. + if [ "$INSTALL_TEST" ]; then + puts-step "Installing test dependencies…" + /app/.heroku/python/bin/pipenv install --dev --system --deploy 2>&1 | cleanup | indent + # Install the dependencies. - if [[ ! -f Pipfile.lock ]]; then + elif [[ ! -f Pipfile.lock ]]; then puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…" /app/.heroku/python/bin/pipenv install --system --skip-lock 2>&1 | indent + else pipenv-to-pip Pipfile.lock > requirements.txt "$BIN_DIR/steps/pip-uninstall" @@ -73,12 +79,6 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…" /app/.heroku/python/bin/pipenv install --system --deploy 2>&1 | indent fi - - # Install the test dependencies, for CI. - if [ "$INSTALL_TEST" ]; then - puts-step "Installing test dependencies…" - /app/.heroku/python/bin/pipenv install --dev --system --deploy 2>&1 | cleanup | indent - fi fi else export SKIP_PIP_INSTALL=1 diff --git a/builds/runtimes/python-2.7.17 b/builds/runtimes/python-2.7.17 new file mode 100755 index 0000000..6dada70 --- /dev/null +++ b/builds/runtimes/python-2.7.17 @@ -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.17/Python-2.7.17.tgz' +curl -L $SOURCE_TARBALL | tar xz +mv Python-2.7.17 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 '{}' + diff --git a/test/fixtures/python2/runtime.txt b/test/fixtures/python2/runtime.txt index d42956d..b334cca 100644 --- a/test/fixtures/python2/runtime.txt +++ b/test/fixtures/python2/runtime.txt @@ -1 +1 @@ -python-2.7.16 +python-2.7.17