diff --git a/bin/compile b/bin/compile index 035b36e4726937f1072f450f4df63b284ffd7237..898fc69552abce2168679ede1d0c452c8e6821ca 100755 --- a/bin/compile +++ b/bin/compile @@ -201,6 +201,9 @@ source $BIN_DIR/steps/pylibmc # Libffi support. source $BIN_DIR/steps/cryptography +# Support for Geo libraries. +sub-env $BIN_DIR/steps/geo-libs + # GDAL support. source $BIN_DIR/steps/gdal diff --git a/bin/steps/gdal b/bin/steps/gdal index 6f15f4c63e2e419c141ccdda8671fd22f66333ce..2ebe12ec574163b476318fb74bdb5fabc3e2b670 100755 --- a/bin/steps/gdal +++ b/bin/steps/gdal @@ -11,8 +11,6 @@ # The location of the pre-compiled cryptography binary. VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz" -VENDORED_GEOS="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/geos.tar.gz" -VENDORED_PROJ="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/proj.tar.gz" PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH" @@ -27,12 +25,10 @@ if (pip-grep -s requirements.txt GDAL gdal pygdal &> /dev/null) then if [ -f ".heroku/vendor/bin/gdalserver" ]; then export GDAL=$(pwd)/vendor else - echo "-----> Noticed GDAL. Bootstrapping gdal, geos, proj." + echo "-----> Noticed GDAL. Bootstrapping gdal." mkdir -p .heroku/vendor # Download and extract cryptography into target vendor directory. curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null - curl $VENDORED_GEOS -s | tar zxv -C .heroku/vendor &> /dev/null - curl $VENDORED_PROJ -s | tar zxv -C .heroku/vendor &> /dev/null export GDAL=$(pwd)/vendor fi diff --git a/bin/steps/geo-libs b/bin/steps/geo-libs new file mode 100755 index 0000000000000000000000000000000000000000..4a1148f19993f5b0d1b514741952fb68766dff68 --- /dev/null +++ b/bin/steps/geo-libs @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# This script serves as the GDAL build step of the +# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python) +# compiler. +# +# A [buildpack](https://devcenter.heroku.com/articles/buildpacks) is an +# adapter between a Python application and Heroku's runtime. +# +# This script is invoked by [`bin/compile`](/). + +# The location of the pre-compiled cryptography binary. +VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz" +VENDORED_GEOS="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/geos.tar.gz" +VENDORED_PROJ="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/proj.tar.gz" + +PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH" + +# Syntax sugar. +source $BIN_DIR/utils + +bpwatch start geo_libs_install + +# If GDAL exists within requirements, use vendored gdal. +if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then + + if [ -f ".heroku/vendor/bin/gdalserver" ]; then + export GDAL=$(pwd)/vendor + else + echo "-----> Bootstrapping gdal, geos, proj." + mkdir -p .heroku/vendor + # Download and extract cryptography into target vendor directory. + curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null + curl $VENDORED_GEOS -s | tar zxv -C .heroku/vendor &> /dev/null + curl $VENDORED_PROJ -s | tar zxv -C .heroku/vendor &> /dev/null + + export GDAL=$(pwd)/vendor + fi +fi + +bpwatch stop geo_libs_install