diff --git a/bin/compile b/bin/compile index 005eb4de417433194eabb12b183b113f9535cb9a..1d9058af9b7653c15e3e3b5eff9bb4762bead4c9 100755 --- a/bin/compile +++ b/bin/compile @@ -148,11 +148,14 @@ bpwatch start restore_cache 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 bpwatch stop restore_cache mkdir -p $(dirname $PROFILE_PATH) -mkdir /app/.heroku/src +mkdir -p /app/.heroku/src if [[ $BUILD_DIR != '/app' ]]; then # python expects to reside in /app, so set up symlinks @@ -160,6 +163,7 @@ if [[ $BUILD_DIR != '/app' ]]; then 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: .heroku/src is copied in later. fi # Install Python. @@ -228,6 +232,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/ @@ -235,6 +240,9 @@ 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 + if [[ -d .heroku/src ]]; then + cp -R .heroku/src $CACHE_DIR/.heroku/ &> /dev/null || true + fi bpwatch stop dump_cache diff --git a/bin/steps/pip-install b/bin/steps/pip-install index 7dea3cea08e139646886b41bda308e265a7cc7ee..ab02c105f7d90ae87029f2c94ac3bd18019fdf7b 100755 --- a/bin/steps/pip-install +++ b/bin/steps/pip-install @@ -1,6 +1,10 @@ # Install dependencies with Pip. puts-cmd "pip install -r requirements.txt" +# rewrite any existing egg links to point to the build dir so pip does not fail with a mismatch error +find .heroku/python/lib/python*/site-packages/ -name "*.egg-link" -print0 | xargs -r -0 -n 1 sed -i -e "s#/app/#$(pwd)/#" +find .heroku/python/lib/python*/site-packages/ -name "*.pth" -print0 | xargs -r -0 -n 1 sed -i -e "s#/app/#/$(pwd)/#" + [ ! "$FRESH_PYTHON" ] && bpwatch start pip_install [ "$FRESH_PYTHON" ] && bpwatch start pip_install_first @@ -23,4 +27,9 @@ cp requirements.txt .heroku/python/requirements-declared.txt [ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install [ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first +# rewrite build dir in egg links to /app so things are found at runtime +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 "*.pth" -print0 | xargs -r -0 -n 1 sed -i -e "s#$(pwd)/#/app/#" + + echo