Compare commits

..

22 Commits

Author SHA1 Message Date
kennethreitz a41ddf6bd1 skip set if no path-links are found 2016-12-19 16:48:30 -05:00
kennethreitz 197b7bae3f Merge branch 'egg-links' 2016-12-19 16:45:16 -05:00
kennethreitz f468739cfb v89 2016-12-19 16:45:04 -05:00
kennethreitz 555d5bd2be cp the cache 2016-12-19 16:42:33 -05:00
kennethreitz 0a4d32c8a5 cache src 2016-12-19 16:39:34 -05:00
kennethreitz 1a1cedfc21 symlink eggs 2016-12-19 16:37:03 -05:00
kennethreitz d35ee2c14c Squashed commit of the following:
commit 554a8bbae6
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 16:26:18 2016 -0500

    comment out debugging line

commit 6572ad3d44
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 16:21:03 2016 -0500

    test

commit 35cabaeebc
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 16:09:21 2016 -0500

    try .

commit 300285a92d
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 16:05:22 2016 -0500

    find

commit 7a6f1eb010
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 16:02:24 2016 -0500

    find

commit 66d754978e
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 15:55:04 2016 -0500

    fix xargs

commit 9c222a9350
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 15:53:04 2016 -0500

    copy src

commit 7f4273f47f
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 15:45:20 2016 -0500

    new replace script

commit dd707c21e3
Author: Kenneth Reitz <me@kennethreitz.org>
Date:   Mon Dec 19 15:40:35 2016 -0500

    re-write egg-links
2016-12-19 16:31:29 -05:00
kennethreitz 554a8bbae6 comment out debugging line 2016-12-19 16:26:18 -05:00
kennethreitz 6572ad3d44 test 2016-12-19 16:21:03 -05:00
kennethreitz 35cabaeebc try . 2016-12-19 16:09:21 -05:00
kennethreitz 300285a92d find 2016-12-19 16:05:22 -05:00
kennethreitz 7a6f1eb010 find 2016-12-19 16:02:24 -05:00
kennethreitz 66d754978e fix xargs 2016-12-19 15:55:04 -05:00
kennethreitz 9c222a9350 copy src 2016-12-19 15:53:04 -05:00
kennethreitz 7f4273f47f new replace script 2016-12-19 15:45:20 -05:00
kennethreitz dd707c21e3 re-write egg-links 2016-12-19 15:40:35 -05:00
kennethreitz 7833743f96 don't change to /app 2016-12-19 15:19:32 -05:00
kennethreitz 5a9155e311 build dir for pip 2016-12-19 15:04:57 -05:00
kennethreitz 857c47ad66 /app for pip 2016-12-19 15:02:14 -05:00
kennethreitz 87cf6073dc add note about /app/.heroku/src 2016-12-18 13:58:22 -05:00
kennethreitz 36dd089808 cleanup indentation 2016-12-18 13:57:30 -05:00
kennethreitz c58f52e06e remove purging of old virtualenvs
since old stacks aren't supported
2016-12-18 13:56:16 -05:00
3 changed files with 37 additions and 25 deletions
+4
View File
@@ -1,5 +1,9 @@
# Python Buildpack Changelog
## v89
Improved cache functionality and fix egg-links regression.
## v88
Fixed bug with editable pip installations.
+26 -22
View File
@@ -27,9 +27,8 @@ BUILD_DIR=$1
CACHE_DIR=$2
ENV_DIR=$3
# Static configurations for virtualenv caches.
VIRTUALENV_LOC=".heroku/venv"
LEGACY_TRIGGER="lib/python2.7"
# Export path environment variables for sub-scripts.
export BIN_DIR ROOT_DIR BUILD_DIR CACHE_DIR ENV_DIR
DEFAULT_PYTHON_VERSION="python-2.7.13"
DEFAULT_PYTHON_STACK="cedar-14"
@@ -133,21 +132,20 @@ fi
# Prepare the cache.
mkdir -p $CACHE_DIR
# Purge "old-style" virtualenvs.
bpwatch start clear_old_venvs
[ -d $CACHE_DIR/$LEGACY_TRIGGER ] && rm -fr $CACHE_DIR/.heroku/bin $CACHE_DIR/.heroku/lib $CACHE_DIR/.heroku/include
[ -d $CACHE_DIR/$VIRTUALENV_LOC ] && rm -fr $CACHE_DIR/.heroku/venv $CACHE_DIR/.heroku/src
bpwatch stop clear_old_venvs
# Restore old artifacts from the cache.
bpwatch start restore_cache
mkdir -p .heroku
mkdir -p .heroku
cp -R $CACHE_DIR/.heroku/python .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/python-stack .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/python-version .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/vendor .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/venv .heroku/ &> /dev/null || true
if [[ -d $CACHE_DIR/.heroku/src ]]; then
cp -R $CACHE_DIR/.heroku/src .heroku/ &> /dev/null || true
fi
cp -R $CACHE_DIR/.heroku/python .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/python-stack .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/python-version .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/vendor .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/venv .heroku/ &> /dev/null || true
bpwatch stop restore_cache
@@ -157,11 +155,12 @@ mkdir -p $(dirname $PROFILE_PATH)
mkdir -p /app/.heroku/src
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
# 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
# NOTE: /app/.heroku/src also exists, but is copied manually later.
fi
# Install Python.
@@ -208,8 +207,11 @@ set-default-env PYTHONPATH /app/
# Install sane-default script for $WEB_CONCURRENCY and $FORWARDED_ALLOW_IPS.
cp $ROOT_DIR/vendor/python.gunicorn.sh $GUNICORN_PROFILE_PATH
# Deep copy the directory for -e pip installations
deep-cp /app/.heroku/src $BUILD_DIR/.heroku/src
# Symlink the directory for -e pip installations
if [[ $BUILD_DIR != '/app' ]]; then
mv /app/.heroku/src $BUILD_DIR/.heroku
ln -s /app/.heroku/src $BUILD_DIR/.heroku/src
fi
# Experimental post_compile hook.
bpwatch start post_compile
@@ -224,6 +226,7 @@ bpwatch start dump_cache
rm -rf $CACHE_DIR/.heroku/python-stack
rm -rf $CACHE_DIR/.heroku/vendor
rm -rf $CACHE_DIR/.heroku/venv
rm -rf $CACHE_DIR/.heroku/src
mkdir -p $CACHE_DIR/.heroku
cp -R .heroku/python $CACHE_DIR/.heroku/
@@ -231,6 +234,7 @@ bpwatch start dump_cache
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
cp -R .heroku/src $CACHE_DIR/.heroku/ &> /dev/null || true
bpwatch stop dump_cache
+7 -3
View File
@@ -4,10 +4,8 @@ puts-cmd "pip install -r requirements.txt"
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
set +e
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee $WARNINGS_LOG | cleanup | indent
/app/.heroku/python/bin/pip install -r $BUILD_DIR/requirements.txt --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee $WARNINGS_LOG | cleanup | indent
PIP_STATUS="${PIPESTATUS[0]}"
set -e
@@ -22,6 +20,12 @@ fi
cp requirements.txt .heroku/python/requirements-declared.txt
/app/.heroku/python/bin/pip freeze --disable-pip-version-check > .heroku/python/requirements-installed.txt
# Replace egg-links with new paths for /app.
# find .heroku/python/lib/python*/site-packages/ -name "*.egg-link" -print0 | xargs -0 cat
find .heroku/python/lib/python*/site-packages/ -name "*.egg-link" -print0 | xargs -r -0 -n 1 sed -i -e "s#$(pwd)/#./app/#"
find .heroku/python/lib/python*/site-packages/ -name "easy-install.pth" -print0 | xargs -r -0 -n 1 sed -i -e "s#$(pwd)/#/app/#"
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first