mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a00133892d | |||
| 5eb337b80d | |||
| d6212b46ce | |||
| 3558766ae8 | |||
| 34f4dc43d6 | |||
| 0024336558 | |||
| c60c5321df | |||
| 0ba69875f5 | |||
| c8812c7e15 | |||
| 7d4093795b | |||
| 628ad0cb8b | |||
| 77ddd7c8a6 | |||
| c53d54f203 | |||
| ed6fe287c4 | |||
| 4f5a88a05a | |||
| 347c0eba81 | |||
| 14b482603e | |||
| 58ce002d35 | |||
| 7fd3a047fd | |||
| 26b4bfbab6 | |||
| 9e00de4e56 | |||
| afa8a0f75f | |||
| 52b8ae82b8 | |||
| e6c339ebae | |||
| 3ea0735768 | |||
| 54b930bba3 | |||
| bf202224b7 | |||
| cead16eb57 | |||
| 5c91c81968 | |||
| 42594a47c1 | |||
| 9d20adca1a | |||
| 181c09cfb7 | |||
| 770947d6e6 | |||
| 0a78bd001e | |||
| 5a1ece3955 |
+7
-126
@@ -1,130 +1,11 @@
|
||||
## v14
|
||||
## v61
|
||||
|
||||
Features:
|
||||
- Setuptools updated to v18.0.1
|
||||
- Pip updated to v7.0.3
|
||||
|
||||
* Full removal of Django settings injection for new apps.
|
||||
* Support for profile.d
|
||||
* Fresh app detection.
|
||||
* Update to Virtualenv v1.7.2
|
||||
* Updated to Pip v1.1 (patched)
|
||||
## v60
|
||||
|
||||
Bugfixes:
|
||||
- Default Python version is v2.7.10
|
||||
- Setuptools updated to v16.0
|
||||
- Pip updated to v7.0.1
|
||||
|
||||
* Default pip path exists action.
|
||||
|
||||
## v13
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Fix pip quoting error.
|
||||
* Only talk about collectstatic in buildpack output when it's configured.
|
||||
|
||||
## v12
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Catch database setting corner case.
|
||||
|
||||
## v11
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Cleanup collectstatic output.
|
||||
|
||||
|
||||
## v10
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Check for collectstatic validity with --dry-run instead of --help for Django 1.4.
|
||||
|
||||
## v9
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Unset PYTHONHOME in buildpack for [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
||||
|
||||
## v8
|
||||
|
||||
Features:
|
||||
|
||||
* Disable Django collectstatic with `$DISABLE_COLLECTSTATIC` + [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Don't disbable injection for new Django apps.
|
||||
* Inform user of July 1, 2012 deprecation of Django injection.
|
||||
|
||||
## v7
|
||||
|
||||
Features:
|
||||
|
||||
* Full removal of Django setting injection for new apps.
|
||||
* Automatic execution of collectstatic.
|
||||
* Suppress collectstatic errors via env SILENCE_COLLECTSTATIC.
|
||||
* Increase settings.py search depth to 3.
|
||||
* Search recursively from included requirements.txt files.
|
||||
|
||||
|
||||
## v6 (03/23/2012)
|
||||
|
||||
Features:
|
||||
|
||||
* Dist packages (setup.py) support.
|
||||
* Move new virtualenvs to `/app/.heroku/venv`.
|
||||
* Heavily improved Django app detection, accounting for `Django` in `requirements.txt`.
|
||||
* Literate [documentation](http://python-buildpack.herokuapp.com).
|
||||
* Default `$PYTHONHOME`, `$PYTHONPATH`, and `$LANG` configurations.
|
||||
* Disable Django setting injection with `$DISABLE_INJECTION` + [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
||||
* General code refactor and improved messaging.
|
||||
* Unit tests.
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Django 1.4 startproject template layout support.
|
||||
* Django `manage.py` location can now be independent from `settings.py`.
|
||||
|
||||
## v5 (02/01/2012)
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Git requirements 100% work.
|
||||
|
||||
|
||||
## v4 (01/20/2012)
|
||||
|
||||
Features:
|
||||
|
||||
* Updated to virtualenv v1.7 with patched pip v1.2.
|
||||
* Actually activate created virtualenv within compile process.
|
||||
* Use distribute instead of deprecated setuptools.
|
||||
* Automatically destroy and rebuild corrupt virtualenvs.
|
||||
* Refactor django and pylibmc detection.
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Fixed `package==dev` in requirements with patched pip embedded within virtualenv. Patch upstreamed.
|
||||
* Minor curl/rm flag fixes (thanks, contributors!)
|
||||
|
||||
|
||||
## v3 (12/07/2011)
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Better django setup.py injection.
|
||||
|
||||
|
||||
## v2 (11/15/2011)
|
||||
|
||||
Features:
|
||||
|
||||
* Support for pylibmc and libmemcached +sasl.
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* Detect when virtualenv is checked in and alert user.
|
||||
|
||||
|
||||
## v1 (10/01/2011)
|
||||
|
||||
* Conception.
|
||||
|
||||
@@ -28,7 +28,7 @@ Example usage:
|
||||
|
||||
You can also add it to upcoming builds of an existing application:
|
||||
|
||||
$ heroku buildpack:set git://github.com/heroku/heroku-buildpack-python.git
|
||||
$ heroku buildpacks:set git://github.com/heroku/heroku-buildpack-python.git
|
||||
|
||||
The buildpack will detect your app as Python if it has the file `requirements.txt` in the root.
|
||||
|
||||
|
||||
+31
-16
@@ -7,6 +7,8 @@
|
||||
# Fail fast and fail hard.
|
||||
set -eo pipefail
|
||||
|
||||
[ "$BUILDPACK_XTRACE" ] && set -o xtrace
|
||||
|
||||
# Prepend proper path for virtualenv hackery. This will be deprecated soon.
|
||||
export PATH=:/usr/local/bin:$PATH
|
||||
|
||||
@@ -26,11 +28,11 @@ LEGACY_TRIGGER="lib/python2.7"
|
||||
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
||||
WEBCONCURRENCY_PROFILE_PATH="$BUILD_DIR/.profile.d/python.webconcurrency.sh"
|
||||
|
||||
DEFAULT_PYTHON_VERSION="python-2.7.9"
|
||||
DEFAULT_PYTHON_VERSION="python-2.7.10"
|
||||
DEFAULT_PYTHON_STACK="cedar"
|
||||
PYTHON_EXE="/app/.heroku/python/bin/python"
|
||||
PIP_VERSION="6.1.1"
|
||||
SETUPTOOLS_VERSION="15.2"
|
||||
PIP_VERSION="7.0.3"
|
||||
SETUPTOOLS_VERSION="18.0.1"
|
||||
|
||||
# Setup bpwatch
|
||||
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
|
||||
@@ -66,20 +68,25 @@ source $BIN_DIR/utils
|
||||
APP_DIR='/app'
|
||||
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
||||
|
||||
# Copy Anvil app dir to temporary storage...
|
||||
bpwatch start anvil_appdir_stage
|
||||
# Skip these steps for Docker.
|
||||
if [[ ! "$DOCKER_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
|
||||
bpwatch stop anvil_appdir_stage
|
||||
|
||||
# Copy Application code in.
|
||||
bpwatch start appdir_stage
|
||||
deep-mv $BUILD_DIR $APP_DIR
|
||||
bpwatch stop appdir_stage
|
||||
fi
|
||||
|
||||
# Copy Application code in.
|
||||
bpwatch start appdir_stage
|
||||
deep-mv $BUILD_DIR $APP_DIR
|
||||
bpwatch stop appdir_stage
|
||||
|
||||
# Set new context.
|
||||
ORIG_BUILD_DIR=$BUILD_DIR
|
||||
@@ -108,6 +115,7 @@ if [ ! -f requirements.txt ]; then
|
||||
echo "-e ." > requirements.txt
|
||||
fi
|
||||
|
||||
|
||||
# Sticky runtimes.
|
||||
if [ -f $CACHE_DIR/.heroku/python-version ]; then
|
||||
DEFAULT_PYTHON_VERSION=$(cat $CACHE_DIR/.heroku/python-version)
|
||||
@@ -166,6 +174,9 @@ source $BIN_DIR/steps/pylibmc
|
||||
# Libffi support.
|
||||
source $BIN_DIR/steps/cryptography
|
||||
|
||||
# GDAL support.
|
||||
source $BIN_DIR/steps/gdal
|
||||
|
||||
# Install dependencies with Pip.
|
||||
source $BIN_DIR/steps/pip-install
|
||||
|
||||
@@ -204,14 +215,18 @@ bpwatch start dump_cache
|
||||
bpwatch stop dump_cache
|
||||
|
||||
# ### Fin.
|
||||
bpwatch start appdir_commit
|
||||
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
||||
bpwatch stop appdir_commit
|
||||
if [[ ! "$DOCKER_BUILD" ]]; then
|
||||
|
||||
bpwatch start anvil_appdir_commit
|
||||
bpwatch start appdir_commit
|
||||
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
|
||||
bpwatch stop anvil_appdir_commit
|
||||
bpwatch stop compile
|
||||
fi
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ source $BIN_DIR/utils
|
||||
bpwatch start libffi_install
|
||||
|
||||
# If pylibmc exists within requirements, use vendored cryptography.
|
||||
if (pip-grep -s requirements.txt bcrypt cffi cryptography pyOpenSSL PyOpenSSL &> /dev/null) then
|
||||
if (pip-grep -s requirements.txt bcrypt cffi cryptography pyOpenSSL PyOpenSSL requests[security] &> /dev/null) then
|
||||
|
||||
if [ -d ".heroku/vendor/lib/libffi-3.1.1" ]; then
|
||||
export LIBFFI=$(pwd)/vendor
|
||||
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script serves as the GDAL build step of the
|
||||
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
|
||||
# compiler.
|
||||
#
|
||||
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an
|
||||
# adapter between a Python application and Heroku's runtime.
|
||||
#
|
||||
# This script is invoked by [`bin/compile`](/).
|
||||
|
||||
# The location of the pre-compiled cryptography binary.
|
||||
VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz"
|
||||
|
||||
PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
|
||||
# Syntax sugar.
|
||||
source $BIN_DIR/utils
|
||||
|
||||
bpwatch start gdal_install
|
||||
|
||||
# If GDAL exists within requirements, use vendored gdal.
|
||||
if (pip-grep -s requirements.txt GDAL &> /dev/null) then
|
||||
|
||||
if [ -f ".heroku/vendor/bin/gdalserver" ]; then
|
||||
export GDAL=$(pwd)/vendor
|
||||
else
|
||||
echo "-----> Noticed GDAL. Bootstrapping gdal."
|
||||
mkdir -p .heroku/vendor
|
||||
# Download and extract cryptography into target vendor directory.
|
||||
curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null
|
||||
|
||||
export GDAL=$(pwd)/vendor
|
||||
fi
|
||||
fi
|
||||
|
||||
bpwatch stop gdal_install
|
||||
@@ -4,7 +4,7 @@ puts-step "Installing dependencies with pip"
|
||||
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
|
||||
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
|
||||
|
||||
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --allow-all-external | cleanup | indent
|
||||
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --allow-all-external --disable-pip-version-check --no-cache-dir | cleanup | indent
|
||||
|
||||
# Smart Requirements handling
|
||||
cp requirements.txt .heroku/python/requirements-declared.txt
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build Path: /app/.heroku/vendor/
|
||||
|
||||
OUT_PREFIX=$1
|
||||
|
||||
# Use new path, containing autoconf.
|
||||
export PATH="/app/.heroku/python/bin/:$PATH"
|
||||
hash -r
|
||||
|
||||
|
||||
echo "Building gdal..."
|
||||
|
||||
SOURCE_TARBALL='http://download.osgeo.org/gdal/1.11.0/gdal-1.11.0.tar.gz'
|
||||
|
||||
curl -L $SOURCE_TARBALL | tar zx
|
||||
|
||||
cd gdal-1.11.0
|
||||
./configure --prefix=$OUT_PREFIX &&
|
||||
make
|
||||
make install
|
||||
|
||||
# Cleanup
|
||||
cd ..
|
||||
Executable
+14
@@ -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/pypy-2.6.0-linux64.tar.bz2'
|
||||
curl -L $SOURCE_TARBALL | tar jx
|
||||
cp -R pypy-2.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.10/Python-2.7.10.tgz'
|
||||
curl -L $SOURCE_TARBALL | tar xz
|
||||
mv Python-2.7.10 src
|
||||
cd src
|
||||
|
||||
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
|
||||
make
|
||||
make install
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
+8
-2
@@ -12,10 +12,16 @@ case $(ulimit -u) in
|
||||
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-4}
|
||||
;;
|
||||
|
||||
# IX DYNO
|
||||
16384)
|
||||
export DYNO_RAM=2560
|
||||
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-8}
|
||||
;;
|
||||
|
||||
# PX DYNO
|
||||
32768)
|
||||
export DYNO_RAM=6144
|
||||
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-9}
|
||||
export DYNO_RAM=6656
|
||||
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-11}
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user