diff --git a/bin/compile b/bin/compile index 6de6509ecb41458514a4e9c27285f6b85df517ac..773766b37dea7e2fad41c4557639bfa66acde64d 100755 --- a/bin/compile +++ b/bin/compile @@ -30,13 +30,14 @@ PYTHON_EXE="/app/.heroku/python/bin/python" PIP_VERSION="1.3.1" DISTRIBUTE_VERSION="0.6.36" +# Setup bpwatch export PATH=$PATH:$ROOT_DIR/vendor/bpwatch - LOGPLEX_KEY="t.b396af7f-ad75-4643-8b9e-ebb288acc624" -BUILDPACK_VERSION=HEAD - export BPWATCH_STORE_PATH=$CACHE_DIR/bpwatch.json +# BUILDPACK_VERSION=v23 +BUILDPACK_VERSION=HEAD +# Support Anvil Build_IDs [ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID # Sanitizing environment variables. @@ -61,13 +62,15 @@ TMP_APP_DIR=$CACHE_DIR/tmp_app_dir # Copy Anvil app dir to temporary storage... bpwatch start anvil_appdir_stage -mkdir -p $TMP_APP_DIR -deep-mv $APP_DIR $TMP_APP_DIR + if [ "$SLUG_ID" ]; then + mkdir -p $TMP_APP_DIR + deep-mv $APP_DIR $TMP_APP_DIR + fi bpwatch stop anvil_appdir_stage # Copy Application code in. bpwatch start appdir_stage -deep-mv $BUILD_DIR $APP_DIR + deep-mv $BUILD_DIR $APP_DIR bpwatch stop appdir_stage # Set new context. @@ -86,7 +89,7 @@ cd $BUILD_DIR # Experimental pre_compile hook. bpwatch start pre_compile -source $BIN_DIR/steps/hooks/pre_compile + source $BIN_DIR/steps/hooks/pre_compile bpwatch stop pre_compile # If no requirements given, assume `setup.py develop`. @@ -106,15 +109,15 @@ 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 + [ -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 -for dir in $CACHED_DIRS; do - cp -R $CACHE_DIR/$dir . &> /dev/null || true -done + for dir in $CACHED_DIRS; do + cp -R $CACHE_DIR/$dir . &> /dev/null || true + done bpwatch stop restore_cache set +e @@ -131,8 +134,8 @@ PYTHON_VERSION=$(cat runtime.txt) if [ -f .heroku/python-version ]; then if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then bpwatch start uninstall_python - puts-step "Found $(cat .heroku/python-version), removing." - rm -fr .heroku/python + puts-step "Found $(cat .heroku/python-version), removing." + rm -fr .heroku/python bpwatch stop uninstall_python else SKIP_INSTALL=1 @@ -142,14 +145,14 @@ fi if [ ! "$SKIP_INSTALL" ]; then bpwatch start install_python - puts-step "Preparing Python runtime ($PYTHON_VERSION)" - curl http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2 -s | tar jx &> /dev/null - if [[ $? != 0 ]] ; then - puts-warn "Requested runtime ($PYTHON_VERSION) was not found." - puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support" - exit 1 - fi - mv python .heroku/python + puts-step "Preparing Python runtime ($PYTHON_VERSION)" + curl http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2 -s | tar jx &> /dev/null + if [[ $? != 0 ]] ; then + puts-warn "Requested runtime ($PYTHON_VERSION) was not found." + puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support" + exit 1 + fi + mv python .heroku/python bpwatch stop install_python # Record for future reference. @@ -168,18 +171,18 @@ if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then bpwatch start prepare_environment bpwatch start install_distribute - # Prepare it for the real world - puts-step "Installing Distribute ($DISTRIBUTE_VERSION)" - cd $ROOT_DIR/vendor/distribute-$DISTRIBUTE_VERSION/ - python setup.py install &> /dev/null - cd $WORKING_DIR + # Prepare it for the real world + puts-step "Installing Distribute ($DISTRIBUTE_VERSION)" + cd $ROOT_DIR/vendor/distribute-$DISTRIBUTE_VERSION/ + python setup.py install &> /dev/null + cd $WORKING_DIR bpwatch stop install_distribute bpwatch start install_pip - puts-step "Installing Pip ($PIP_VERSION)" - cd $ROOT_DIR/vendor/pip-$PIP_VERSION/ - python setup.py install &> /dev/null - cd $WORKING_DIR + puts-step "Installing Pip ($PIP_VERSION)" + cd $ROOT_DIR/vendor/pip-$PIP_VERSION/ + python setup.py install &> /dev/null + cd $WORKING_DIR bpwatch stop install_pip bpwatch stop prepare_environment @@ -191,13 +194,13 @@ hash -r # Pylibmc support. # See [`bin/steps/pylibmc`](pylibmc.html). bpwatch start pylibmc_install -source $BIN_DIR/steps/pylibmc + source $BIN_DIR/steps/pylibmc bpwatch stop pylibmc_install # Install Mercurial if it appears to be required. if (grep -Fiq "hg+" requirements.txt) then bpwatch start mercurial_install - /app/.heroku/python/bin/pip install --use-mirrors mercurial | cleanup | indent + /app/.heroku/python/bin/pip install --use-mirrors mercurial | cleanup | indent bpwatch stop mercurial_install fi @@ -215,7 +218,7 @@ puts-step "Installing dependencies using Pip ($PIP_VERSION)" # Django collectstatic support. bpwatch start collectstatic -source $BIN_DIR/steps/collectstatic + source $BIN_DIR/steps/collectstatic bpwatch stop collectstatic # ### Finalize @@ -234,24 +237,26 @@ set-default-env PYTHONPATH /app/ # Experimental post_compile hook. bpwatch start post_compile -source $BIN_DIR/steps/hooks/post_compile + source $BIN_DIR/steps/hooks/post_compile bpwatch stop post_compile # Store new artifacts in cache. bpwatch start dump_cache -for dir in $CACHED_DIRS; do - rm -rf $CACHE_DIR/$dir - cp -R $dir $CACHE_DIR/ -done + for dir in $CACHED_DIRS; do + rm -rf $CACHE_DIR/$dir + cp -R $dir $CACHE_DIR/ + done bpwatch stop dump_cache # ### Fin. bpwatch start appdir_commit -deep-mv $BUILD_DIR $ORIG_BUILD_DIR + deep-mv $BUILD_DIR $ORIG_BUILD_DIR bpwatch stop appdir_commit bpwatch start anvil_appdir_commit -deep-mv $TMP_APP_DIR $APP_DIR + if [ "$SLUG_ID" ]; then + deep-mv $TMP_APP_DIR $APP_DIR + fi bpwatch stop anvil_appdir_commit bpwatch stop compile