Build libraries on Heroku without pain.
Vulcan has been deprecated and GCC is only available at build time on heroku-16
stack.
Even with heroku run bash
, compiling stuff on Heroku was painful, time consuming, and you needed a third-party cloud storage to move your compiled library in order to download it.
With Vesuvius, this is no longer the case. During the deploy, Vesuvius will run all scripts located in /scripts/libraries
and will move output files to a public directory.
It comes with PROJ and GEOS as examples.
Libraries build by Vesuvius are for demonstration purposes only. Do not use them in you production environment because they may change anytime.
- Heroku 20: https://vesuvius-20.herokuapp.com/
- Clone the repo
- Create a new Heroku application
- Set your buildpack to Heroku's apt buildpack
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-apt
- Add Heroku's Ruby buildpack
heroku buildpacks:add heroku/ruby
Deploy and navigate to your application's root path.
All you need to do is create a bash script to compile your library and save it
under the scripts/libraries
folder.
This is an example for the GEOS library:
#!/bin/bash
LIBRARY_VERSION=3.11.2
OUTPUT_LIBRARY_NAME="geos-${LIBRARY_VERSION}-heroku.tar.gz"
curl -O https://ftp.osuosl.org/pub/osgeo/download/geos/geos-${LIBRARY_VERSION}.tar.bz2 \
&& tar -xjvf geos-${LIBRARY_VERSION}.tar.bz2 \
&& mkdir build \
&& cd build \
&& cmake ../geos-${LIBRARY_VERSION} -DCMAKE_INSTALL_PREFIX=${HEROKU_VENDOR_DIR} -DBUILD_TESTING=false >&2 >&2 \
&& make -j4 >&2 \
&& make install \
&& tar -C ${HEROKU_VENDOR_DIR} -czvf ${TARGET_DIR}/${OUTPUT_LIBRARY_NAME} . \
&& (cd ${TARGET_DIR} && exec md5sum ${OUTPUT_LIBRARY_NAME} > ${OUTPUT_LIBRARY_NAME}.md5)
Take a look at heroku-buildpack-vendorbinaries.
RGeo-Sinatra uses Vesuvius
Geremia Taglialatela