Compare commits

...

49 Commits

Author SHA1 Message Date
kennethreitz 97834d305a v75 2016-01-26 16:57:54 -05:00
kennethreitz 86a53e6479 also exclude wheel from uninstalls 2016-01-26 16:52:11 -05:00
kennethreitz 8c746e3e17 no more --allow-all-external 2016-01-26 16:51:59 -05:00
kennethreitz b1d1a7cca5 update pip/setuptools 2016-01-26 16:51:44 -05:00
kennethreitz f172a83d48 Update release 2016-01-18 13:48:20 -05:00
kennethreitz 4346b41c70 v74 2015-12-29 18:32:08 -05:00
kennethreitz 195ed4ae15 warn for lack of procfile 2015-12-29 18:24:38 -05:00
kennethreitz 4f10a7e14a Merge pull request #266 from cclauss/patch-2
Update readme to Python 2.7.11 and 3.5.1
2015-12-17 14:26:20 -06:00
kennethreitz a637ec3d11 v72 2015-12-07 16:26:18 -05:00
kennethreitz 1dd7be4250 2.7.11 2015-12-07 16:25:26 -05:00
kennethreitz c2b9121436 New Pythons! 2015-12-07 16:12:24 -05:00
cclauss 567120b4bc Update Readme.md 2015-12-07 07:18:50 +01:00
cclauss b61a395cd0 Update to Python 2.7.11 2015-12-06 02:11:06 +01:00
kennethreitz 2a3962aea7 Python-2.7.11rc1 2015-12-04 17:16:59 -05:00
kennethreitz 364ddc98b7 update setuptools 2015-12-04 17:16:41 -05:00
kennethreitz d93d283be2 v72 2015-12-03 14:57:53 -05:00
kennethreitz 42141c2bf9 v71 2015-12-03 14:57:03 -05:00
kennethreitz d82c898509 remove exit 2015-12-03 14:01:51 -05:00
kennethreitz 6545d71b46 remove debugging statements 2015-12-03 14:01:51 -05:00
kennethreitz 93b707eae5 let's try pipestatus 2015-12-03 14:01:51 -05:00
kennethreitz 8d358218f8 change order 2015-12-03 14:01:51 -05:00
kennethreitz b84b168be8 easier to debug 2015-12-03 14:01:51 -05:00
kennethreitz 35c810e46d debugging 2015-12-03 14:01:51 -05:00
kennethreitz e1ea2f9354 appears to be working now :D 2015-12-03 14:01:51 -05:00
kennethreitz 7db6ea33ac try another approach 2015-12-03 14:01:51 -05:00
kennethreitz a53826a673 try something else 2015-12-03 14:01:51 -05:00
kennethreitz b7ecb49a96 debugging step 2015-12-03 14:01:51 -05:00
kennethreitz 911140b3ac cleanup whitespace 2015-12-03 14:01:51 -05:00
kennethreitz f1c4efb464 distribute warning 2015-12-03 14:01:51 -05:00
kennethreitz 5a979874ad scipy-included 2015-12-03 14:01:51 -05:00
kennethreitz a32ca25520 pretty error message 2015-12-03 14:01:51 -05:00
kennethreitz e304089c3e grep it 2015-12-03 14:01:51 -05:00
kennethreitz 5d8932e5ee remove debugging 2015-12-03 14:01:51 -05:00
kennethreitz 7770ab8ff2 debugging 2015-12-03 14:01:51 -05:00
kennethreitz 277294817a show-warnings 2015-12-03 14:01:51 -05:00
kennethreitz 25b17d51c3 this isn't python 2015-12-03 14:01:51 -05:00
kennethreitz ac103519f8 cleanup cleanup
everybody everywhere
2015-12-03 14:01:51 -05:00
kennethreitz e8b8af045f new warnings file 2015-12-03 14:01:51 -05:00
kennethreitz 0bb6d6e2bd emit a warning 2015-12-03 14:01:51 -05:00
kennethreitz 0184dcac24 let's try exiting one 2015-12-03 14:01:51 -05:00
kennethreitz 558e748e9e trying something else 2015-12-03 14:01:51 -05:00
kennethreitz dec86fbc2e explicitly error out on bad pip install 2015-12-03 14:01:51 -05:00
kennethreitz ddc310084b add loging to pip-install 2015-12-03 14:01:51 -05:00
kennethreitz bc754f402b Merge pull request #260 from craigkerstiens/plan-agnostic-database-selection
Update heroku-postgresql to be plan agnostic
2015-11-23 13:07:51 -06:00
Craig Kerstiens ea5bc23a76 Update heroku-postgresql to be plan agnostic
This will result in selecting the lowest level plan for the add-on as opposed to a hard coded one which may change.
2015-11-19 12:05:36 -08:00
kennethreitz 46ecf15337 Merge pull request #259 from heroku/nsamsami-readme-note
Updated Readme
2015-11-18 13:53:35 -06:00
Nahid Samsami d020d20bde Changed "the buildpack" to "this buildpack" 2015-11-17 16:46:26 -08:00
Nahid Samsami 01ff4269f2 Updated Readme
Included a note that the build pack supports running Django and Flask apps.
2015-11-12 17:12:52 -08:00
kennethreitz f507bb0c05 bugfix for python customer 2015-10-29 15:48:16 -04:00
15 changed files with 145 additions and 11 deletions
+16
View File
@@ -1,5 +1,21 @@
# Python Buildpack Changelog
## v75 (2016-01-29)
Updated pip and Setuptools.
## v74 (2015-12-29)
Added warnings for lack of Procfile.
## v72 (2015-12-07)
Updated default Python to 2.7.11.
## v72 (2015-12-03)
Added friendly warnings for common build failures.
## v70 (2015-10-29)
Improved compatibility with multi and node.js buildpacks.
+6 -4
View File
@@ -3,6 +3,8 @@
This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](http://www.pip-installer.org/).
This buildpack supports running Django and Flask apps.
Usage
-----
@@ -17,7 +19,7 @@ Example usage:
$ git push heroku master
...
-----> Python app detected
-----> Installing runtime (python-2.7.10)
-----> Installing runtime (python-2.7.11)
-----> Installing dependencies using pip
Downloading/unpacking requests (from -r requirements.txt (line 1))
Installing collected packages: requests
@@ -44,9 +46,9 @@ You can also provide arbitrary releases Python with a `runtime.txt` file.
Runtime options include:
- python-2.7.10
- python-3.5.0
- pypy-2.6.1 (unsupported, experimental)
- python-2.7.11
- python-3.5.1
- pypy-4.0.1 (unsupported, experimental)
- pypy3-2.4.0 (unsupported, experimental)
Other [unsupported runtimes](https://github.com/heroku/heroku-buildpack-python/tree/master/builds/runtimes) are available as well.
+16 -4
View File
@@ -23,11 +23,14 @@ ENV_DIR=$3
VIRTUALENV_LOC=".heroku/venv"
LEGACY_TRIGGER="lib/python2.7"
DEFAULT_PYTHON_VERSION="python-2.7.10"
DEFAULT_PYTHON_VERSION="python-2.7.11"
DEFAULT_PYTHON_STACK="cedar"
PYTHON_EXE="/app/.heroku/python/bin/python"
PIP_VERSION="7.1.2"
SETUPTOOLS_VERSION="18.3.2"
PIP_VERSION="8.0.2"
SETUPTOOLS_VERSION="19.6"
# Common Problem Warnings
export WARNINGS_LOG=$(mktemp)
# Setup bpwatch
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
@@ -55,6 +58,9 @@ bpwatch start compile
# Syntax sugar.
source $BIN_DIR/utils
# Import collection of warnings.
source $BIN_DIR/warnings
# Directory Hacks for path consistiency.
APP_DIR='/app'
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
@@ -103,6 +109,12 @@ export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:$BUILD_DIR/.heroku/ven
# Switch to the repo's context.
cd $BUILD_DIR
# Warn for lack of Procfile.
if [[ ! -f Procfile ]]; then
puts-warn 'Warning: Your application is missing a Procfile. This file tells Heroku how to run your application.'
puts-warn 'Learn more: https://devcenter.heroku.com/articles/procfile'
fi
# Experimental pre_compile hook.
bpwatch start pre_compile
source $BIN_DIR/steps/hooks/pre_compile
@@ -221,7 +233,7 @@ bpwatch start dump_cache
mkdir -p $CACHE_DIR/.heroku
cp -R .heroku/python $CACHE_DIR/.heroku/
cp -R .heroku/python-version $CACHE_DIR/.heroku/
cp -R .heroku/python-stack $CACHE_DIR/.heroku/
cp -R .heroku/python-stack $CACHE_DIR/.heroku/ &> /dev/null || true
cp -R .heroku/vendor $CACHE_DIR/.heroku/ &> /dev/null || true
cp -R .heroku/venv $CACHE_DIR/.heroku/ &> /dev/null || true
+1 -1
View File
@@ -18,6 +18,6 @@ if [[ $MANAGE_FILE ]]; then
cat <<EOF
addons:
heroku-postgresql:hobby-dev
- heroku-postgresql
EOF
fi
+11 -1
View File
@@ -4,7 +4,17 @@ 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 --disable-pip-version-check --no-cache-dir | cleanup | indent
set +e
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --disable-pip-version-check --no-cache-dir | cleanup | log-output | indent
PIP_STATUS="${PIPESTATUS[0]}"
set -e
if [[ ! $PIP_STATUS -eq 0 ]]; then
echo
show-warnings
exit 1
fi
# Smart Requirements handling
cp requirements.txt .heroku/python/requirements-declared.txt
+1 -1
View File
@@ -5,7 +5,7 @@ if [[ -f .heroku/python/requirements-declared.txt ]]; then
cp .heroku/python/requirements-declared.txt requirements-declared.txt
pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip > .heroku/python/requirements-stale.txt
pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip wheel > .heroku/python/requirements-stale.txt
rm -fr requirements-declared.txt
+11
View File
@@ -11,6 +11,16 @@ indent() {
sed "s/^/ /"
}
# Log output for warning detection
log-output() (
while read LINE;
do
echo "$LINE"
echo "$LINE" >> "$WARNINGS_LOG"
done
)
# Clean up pip output
cleanup() {
sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
@@ -91,3 +101,4 @@ sub-env() {
)
}
Executable
+35
View File
@@ -0,0 +1,35 @@
shopt -s extglob
pylibmc-missing() {
if grep -qi 'fatal error: libmemcached/memcached.h: No such file or directory' "$WARNINGS_LOG"; then
puts-warn "Hello! There was a problem with your build related to libmemcache."
puts-warn "The Python library 'pylibmc' must be explicitly specified in 'requirements.txt' in order to build correctly."
puts-warn "Once you do that, everything should work as expected. -- Much Love, Heroku."
fi
}
scipy-included() {
if grep -qi 'running setup.py install for scipy' "$WARNINGS_LOG"; then
puts-warn "Hello! It looks like you're trying to use scipy on Heroku."
puts-warn "Unfortunately, at this time, we do not directly support this library."
puts-warn "There is, however, a buildpack available that makes it possible to use it on Heroku."
puts-warn "You can learn more here: https://devcenter.heroku.com/articles/python-c-deps"
puts-warn "Sorry for the inconvenience. -- Much Love, Heroku."
fi
}
distribute-included() {
if grep -qi 'Running setup.py install for distribute' "$WARNINGS_LOG"; then
puts-warn "Hello! Your requirements.txt file contains the distribute package."
puts-warn "This library is automatically installed by Heroku and shouldn't be in"
puts-warn "Your requirements.txt file. This can cause unexpected behavior."
puts-warn "-- Much Love, Heroku."
fi
}
show-warnings() {
pylibmc-missing
scipy-included
distribute-included
}
+15
View File
@@ -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.11/Python-2.7.11.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.11 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+15
View File
@@ -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://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.11rc1 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+18
View File
@@ -0,0 +1,18 @@
#!/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.5.1/Python-3.5.1.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.5.1 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no --enable-shared
make
make install
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.