mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d7874d583b | |||
| d32dc82e1c | |||
| bd048d50b5 | |||
| 26b2eeee20 | |||
| e527457ba3 | |||
| 1b7bd02bf2 | |||
| de9b0b9383 | |||
| 991f4126d7 | |||
| 076a457ad9 | |||
| 264f74d159 | |||
| 9f89c4e744 | |||
| 8d2788094b | |||
| e2f4fd442a | |||
| 1bccc03b30 | |||
| adac27fa9c | |||
| d1c30fd24b | |||
| a1cfa41cb2 | |||
| 57e9bb0054 | |||
| 8e34179b1c | |||
| c03cb26961 | |||
| 28b67dd208 | |||
| 24f73fbc2d |
+24
-2
@@ -1,5 +1,27 @@
|
|||||||
# Python Buildpack Changelog
|
# Python Buildpack Changelog
|
||||||
|
|
||||||
|
## v87
|
||||||
|
|
||||||
|
Updated default Python 2.7.13.
|
||||||
|
|
||||||
|
- Python 2.7.13 uses UCS-4 build, more compatibile with linux wheels.
|
||||||
|
- Updated setuptools to v32.1.0.
|
||||||
|
|
||||||
|
## v86
|
||||||
|
|
||||||
|
Refactor and multi-buildpack compatibility.
|
||||||
|
|
||||||
|
## v85
|
||||||
|
|
||||||
|
Packaging fix.
|
||||||
|
|
||||||
|
## v84
|
||||||
|
|
||||||
|
Updated pip and setuptools.
|
||||||
|
|
||||||
|
- Updated pip to v9.0.1.
|
||||||
|
- Updated setuptools to v28.8.0.
|
||||||
|
|
||||||
## v83
|
## v83
|
||||||
|
|
||||||
Support for Heroku CI.
|
Support for Heroku CI.
|
||||||
@@ -16,8 +38,8 @@ Update to library detection mechnisms (pip-pop).
|
|||||||
|
|
||||||
Updated default Python to 2.7.11.
|
Updated default Python to 2.7.11.
|
||||||
|
|
||||||
- Updated setuptools to v8.1.2.
|
- Updated pip to v8.1.2.
|
||||||
- Updated pip to v23.1.0.
|
- Updated setuptools to v23.1.0.
|
||||||
|
|
||||||
## v80 (2016-04-05)
|
## v80 (2016-04-05)
|
||||||
|
|
||||||
|
|||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
FROM heroku/heroku:16-build
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
ENV WORKSPACE_DIR=/app/builds
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y python-pip
|
||||||
|
|
||||||
|
# Install bob-builder application
|
||||||
|
RUN pip install bob-builder==0.0.5
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
+20
-59
@@ -31,11 +31,11 @@ ENV_DIR=$3
|
|||||||
VIRTUALENV_LOC=".heroku/venv"
|
VIRTUALENV_LOC=".heroku/venv"
|
||||||
LEGACY_TRIGGER="lib/python2.7"
|
LEGACY_TRIGGER="lib/python2.7"
|
||||||
|
|
||||||
DEFAULT_PYTHON_VERSION="python-2.7.12"
|
DEFAULT_PYTHON_VERSION="python-2.7.13"
|
||||||
DEFAULT_PYTHON_STACK="cedar-14"
|
DEFAULT_PYTHON_STACK="cedar-14"
|
||||||
PYTHON_EXE="/app/.heroku/python/bin/python"
|
PYTHON_EXE="/app/.heroku/python/bin/python"
|
||||||
PIP_VERSION="8.1.2"
|
PIP_VERSION="9.0.1"
|
||||||
SETUPTOOLS_VERSION="25.2.0"
|
SETUPTOOLS_VERSION="32.1.0"
|
||||||
|
|
||||||
# Common Problem Warnings
|
# Common Problem Warnings
|
||||||
export WARNINGS_LOG=$(mktemp)
|
export WARNINGS_LOG=$(mktemp)
|
||||||
@@ -54,7 +54,6 @@ export PATH=$PATH:$ROOT_DIR/vendor/pip-pop
|
|||||||
[ ! "$SLUG_ID" ] && SLUG_ID="defaultslug"
|
[ ! "$SLUG_ID" ] && SLUG_ID="defaultslug"
|
||||||
[ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID
|
[ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID
|
||||||
[ ! "$STACK" ] && STACK=$DEFAULT_PYTHON_STACK
|
[ ! "$STACK" ] && STACK=$DEFAULT_PYTHON_STACK
|
||||||
[[ $BUILD_DIR == "/app" ]] && SKIP_MOVE_BUILD=1
|
|
||||||
|
|
||||||
# Sanitizing environment variables.
|
# Sanitizing environment variables.
|
||||||
unset GIT_DIR PYTHONHOME PYTHONPATH
|
unset GIT_DIR PYTHONHOME PYTHONPATH
|
||||||
@@ -64,7 +63,6 @@ unset CYTOKINE_LOG_FILE GEM_PATH
|
|||||||
# Setup buildpack instrumentation.
|
# Setup buildpack instrumentation.
|
||||||
bpwatch init $LOGPLEX_KEY
|
bpwatch init $LOGPLEX_KEY
|
||||||
bpwatch build python $BUILDPACK_VERSION $REQUEST_ID
|
bpwatch build python $BUILDPACK_VERSION $REQUEST_ID
|
||||||
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
|
||||||
|
|
||||||
bpwatch start compile
|
bpwatch start compile
|
||||||
|
|
||||||
@@ -74,33 +72,8 @@ source $BIN_DIR/utils
|
|||||||
# Import collection of warnings.
|
# Import collection of warnings.
|
||||||
source $BIN_DIR/warnings
|
source $BIN_DIR/warnings
|
||||||
|
|
||||||
# Directory Hacks for path consistency.
|
# we need to put a bunch of symlinks in there later
|
||||||
APP_DIR='/app'
|
mkdir -p /app/.heroku
|
||||||
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
|
||||||
|
|
||||||
# Skip these steps for Docker.
|
|
||||||
if [[ ! "$SKIP_MOVE_BUILD" ]]; then
|
|
||||||
|
|
||||||
# Copy Anvil app dir to temporary storage...
|
|
||||||
bpwatch start anvil_appdir_stage
|
|
||||||
if [ "$SLUG_ID" ]; then
|
|
||||||
mkdir -p $TMP_APP_DIR
|
|
||||||
deep-mv $APP_DIR $TMP_APP_DIR
|
|
||||||
else
|
|
||||||
deep-rm $APP_DIR
|
|
||||||
fi
|
|
||||||
bpwatch stop anvil_appdir_stage
|
|
||||||
|
|
||||||
# Copy Application code in.
|
|
||||||
bpwatch start appdir_stage
|
|
||||||
deep-cp $BUILD_DIR $APP_DIR
|
|
||||||
bpwatch stop appdir_stage
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Set new context.
|
|
||||||
ORIG_BUILD_DIR=$BUILD_DIR
|
|
||||||
BUILD_DIR=$APP_DIR
|
|
||||||
|
|
||||||
# Set up outputs under new context
|
# Set up outputs under new context
|
||||||
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
||||||
@@ -111,14 +84,14 @@ GUNICORN_PROFILE_PATH="$BUILD_DIR/.profile.d/python.gunicorn.sh"
|
|||||||
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH EXPORT_PATH
|
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH EXPORT_PATH
|
||||||
|
|
||||||
# Prepend proper environment variables for Python use.
|
# Prepend proper environment variables for Python use.
|
||||||
export PATH=$BUILD_DIR/.heroku/python/bin:$BUILD_DIR/.heroku/vendor/bin:$PATH
|
export PATH=/app/.heroku/python/bin:/app/.heroku/vendor/bin:$PATH
|
||||||
export PYTHONUNBUFFERED=1
|
export PYTHONUNBUFFERED=1
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
export C_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include:/app/.heroku/python/include:$C_INCLUDE_PATH
|
export C_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/python/include:$C_INCLUDE_PATH
|
||||||
export CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include:/app/.heroku/python/include:$CPLUS_INCLUDE_PATH
|
export CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/python/include:$CPLUS_INCLUDE_PATH
|
||||||
export LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PATH
|
export LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PATH
|
||||||
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH
|
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:$BUILD_DIR/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH
|
export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH
|
||||||
|
|
||||||
# Switch to the repo's context.
|
# Switch to the repo's context.
|
||||||
cd $BUILD_DIR
|
cd $BUILD_DIR
|
||||||
@@ -178,13 +151,16 @@ bpwatch start restore_cache
|
|||||||
|
|
||||||
bpwatch stop restore_cache
|
bpwatch stop restore_cache
|
||||||
|
|
||||||
set +e
|
|
||||||
# Create set-aside `.heroku` folder.
|
|
||||||
mkdir .heroku &> /dev/null
|
|
||||||
set -e
|
|
||||||
|
|
||||||
mkdir -p $(dirname $PROFILE_PATH)
|
mkdir -p $(dirname $PROFILE_PATH)
|
||||||
|
|
||||||
|
if [[ $BUILD_DIR != '/app' ]]; then
|
||||||
|
# python expects to reside in /app, so set up symlinks
|
||||||
|
# we will not remove these later so subsequent buildpacks can still invoke it
|
||||||
|
ln -s $BUILD_DIR/.heroku/python /app/.heroku/python
|
||||||
|
ln -s $BUILD_DIR/.heroku/vendor /app/.heroku/vendor
|
||||||
|
ln -s $BUILD_DIR/.heroku/venv /app/.heroku/venv
|
||||||
|
fi
|
||||||
|
|
||||||
# Install Python.
|
# Install Python.
|
||||||
source $BIN_DIR/steps/python
|
source $BIN_DIR/steps/python
|
||||||
|
|
||||||
@@ -254,19 +230,4 @@ bpwatch start dump_cache
|
|||||||
bpwatch stop dump_cache
|
bpwatch stop dump_cache
|
||||||
|
|
||||||
# Fin.
|
# Fin.
|
||||||
if [[ ! "$SKIP_MOVE_BUILD" ]]; then
|
bpwatch stop compile
|
||||||
|
|
||||||
bpwatch start appdir_commit
|
|
||||||
deep-rm $ORIG_BUILD_DIR
|
|
||||||
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
|
||||||
bpwatch stop appdir_commit
|
|
||||||
|
|
||||||
bpwatch start anvil_appdir_commit
|
|
||||||
if [ "$SLUG_ID" ]; then
|
|
||||||
deep-mv $TMP_APP_DIR $APP_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
bpwatch stop anvil_appdir_commit
|
|
||||||
bpwatch stop compile
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|||||||
Vendored
+5
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
# Skip the build for heroku-16.
|
||||||
|
if [[ $S3_PREFIX == "heroku-16" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Use new path, containing autoconf.
|
# Use new path, containing autoconf.
|
||||||
export PATH="/app/.heroku/python/bin/:$PATH"
|
export PATH="/app/.heroku/python/bin/:$PATH"
|
||||||
hash -r
|
hash -r
|
||||||
|
|||||||
Vendored
+5
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
# Skip the build for heroku-16.
|
||||||
|
if [[ $S3_PREFIX == "heroku-16" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# fail hard
|
# fail hard
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
# fail harder
|
# fail harder
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building PyPy..."
|
echo "Building PyPy..."
|
||||||
SOURCE_TARBALL='https://bbuseruploads.s3.amazonaws.com/54220cd1-b139-4188-9455-1e13e663f1ac/downloads/265504fc-8c03-4c1d-935a-2b8fbc6da51a/pypy2-v5.3.1-linux64.tar.bz2?Signature=F%2FnnB39QrCTPldSErIJoqzAt8YA%3D&Expires=1471612628&AWSAccessKeyId=AKIAIWY5XSVPZPDQYRQQ&versionId=kJjoDTh5eNcLrGrt5hYT0_5XGjg3.gl0&response-content-disposition=attachment%3B%20filename%3D%22pypy2-v5.3.1-linux64.tar.bz2%22'
|
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux64.tar.bz2'
|
||||||
curl -L $SOURCE_TARBALL | tar jx
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
cp -R pypy2-v5.3.1-linux64/* $OUT_PREFIX
|
cp -R pypy2-v5.3.1-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/python/
|
||||||
|
# Build Deps: libraries/sqlite
|
||||||
|
|
||||||
|
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
|
||||||
|
|
||||||
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
echo "Building PyPy..."
|
||||||
|
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.6.0-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy2-v5.6.0-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/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/2.7.13/Python-2.7.13.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-2.7.13 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --enable-unicode=ucs4 --with-ensurepip=no
|
||||||
|
make
|
||||||
|
make install
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user