Compare commits

...

34 Commits

Author SHA1 Message Date
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
7 changed files with 72 additions and 3 deletions
+5
View File
@@ -1,5 +1,10 @@
# Python Buildpack Changelog # Python Buildpack Changelog
## v72 (2015-12-03)
Added friendly warnings for common build failures.
## v70 (2015-10-29) ## v70 (2015-10-29)
Improved compatibility with multi and node.js buildpacks. Improved compatibility with multi and node.js buildpacks.
+2
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 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 Usage
----- -----
+7 -1
View File
@@ -29,6 +29,9 @@ PYTHON_EXE="/app/.heroku/python/bin/python"
PIP_VERSION="7.1.2" PIP_VERSION="7.1.2"
SETUPTOOLS_VERSION="18.3.2" SETUPTOOLS_VERSION="18.3.2"
# Common Problem Warnings
export WARNINGS_LOG=$(mktemp)
# Setup bpwatch # Setup bpwatch
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
LOGPLEX_KEY="t.b90d9d29-5388-4908-9737-b4576af1d4ce" LOGPLEX_KEY="t.b90d9d29-5388-4908-9737-b4576af1d4ce"
@@ -55,6 +58,9 @@ bpwatch start compile
# Syntax sugar. # Syntax sugar.
source $BIN_DIR/utils source $BIN_DIR/utils
# Import collection of warnings.
source $BIN_DIR/warnings
# Directory Hacks for path consistiency. # Directory Hacks for path consistiency.
APP_DIR='/app' APP_DIR='/app'
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
@@ -221,7 +227,7 @@ bpwatch start dump_cache
mkdir -p $CACHE_DIR/.heroku mkdir -p $CACHE_DIR/.heroku
cp -R .heroku/python $CACHE_DIR/.heroku/ cp -R .heroku/python $CACHE_DIR/.heroku/
cp -R .heroku/python-version $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/vendor $CACHE_DIR/.heroku/ &> /dev/null || true
cp -R .heroku/venv $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 cat <<EOF
addons: addons:
heroku-postgresql:hobby-dev heroku-postgresql
EOF EOF
fi 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
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first [ "$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 --allow-all-external --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 # Smart Requirements handling
cp requirements.txt .heroku/python/requirements-declared.txt cp requirements.txt .heroku/python/requirements-declared.txt
+11
View File
@@ -11,6 +11,16 @@ indent() {
sed "s/^/ /" sed "s/^/ /"
} }
# Log output for warning detection
log-output() (
while read LINE;
do
echo "$LINE"
echo "$LINE" >> "$WARNINGS_LOG"
done
)
# Clean up pip output # Clean up pip output
cleanup() { 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' 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
}