osrm-backend/third_party/mason/scripts/postgis/2.2.2/script.sh

141 lines
5.6 KiB
Bash
Executable File

#!/usr/bin/env bash
MASON_NAME=postgis
MASON_VERSION=2.2.2
MASON_LIB_FILE=bin/shp2pgsql
. ${MASON_DIR}/mason.sh
function mason_load_source {
mason_download \
http://download.osgeo.org/postgis/source/postgis-${MASON_VERSION}.tar.gz \
e3a740fc6d9af5d567346f2729ee86af2b6da88c
mason_extract_tar_gz
export MASON_BUILD_PATH=${MASON_ROOT}/.build/postgis-${MASON_VERSION}
}
function mason_prepare_compile {
cd $(dirname ${MASON_ROOT})
${MASON_DIR}/mason install postgres 9.5.2
MASON_POSTGRES=$(${MASON_DIR}/mason prefix postgres 9.5.2)
${MASON_DIR}/mason install proj 4.9.2
MASON_PROJ=$(${MASON_DIR}/mason prefix proj 4.9.2)
${MASON_DIR}/mason install libxml2 2.9.3
MASON_XML2=$(${MASON_DIR}/mason prefix libxml2 2.9.3)
${MASON_DIR}/mason install geos 3.5.0
MASON_GEOS=$(${MASON_DIR}/mason prefix geos 3.5.0)
if [[ $(uname -s) == 'Darwin' ]]; then
FIND="\/Users\/travis\/build\/mapbox\/mason"
else
FIND="\/home\/travis\/build\/mapbox\/mason"
fi
REPLACE="$(pwd)"
REPLACE=${REPLACE////\\/}
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_PROJ}/lib/libproj.la
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_XML2}/lib/libxml2.la
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_XML2}/bin/xml2-config
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_GEOS}/lib/libgeos.la
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_GEOS}/lib/libgeos_c.la
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_GEOS}/bin/geos-config
${MASON_DIR}/mason install gdal 2.0.2
MASON_GDAL=$(${MASON_DIR}/mason prefix gdal 2.0.2)
ln -sf ${MASON_GDAL}/include ${MASON_GDAL}/include/gdal
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_GDAL}/lib/libgdal.la
${MASON_DIR}/mason install libtiff 4.0.6
MASON_TIFF=$(${MASON_DIR}/mason prefix libtiff 4.0.6)
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_TIFF}/lib/libtiff.la
${MASON_DIR}/mason install jpeg_turbo 1.4.2
MASON_JPEG=$(${MASON_DIR}/mason prefix jpeg_turbo 1.4.2)
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_JPEG}/lib/libjpeg.la
${MASON_DIR}/mason install libpng 1.6.21
MASON_PNG=$(${MASON_DIR}/mason prefix libpng 1.6.21)
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_PNG}/lib/libpng.la
${MASON_DIR}/mason install expat 2.1.1
MASON_EXPAT=$(${MASON_DIR}/mason prefix expat 2.1.1)
perl -i -p -e "s/${FIND}/${REPLACE}/g;" ${MASON_EXPAT}/lib/libexpat.la
${MASON_DIR}/mason install zlib system
MASON_ZLIB=$(${MASON_DIR}/mason prefix zlib system)
#${MASON_DIR}/mason install iconv system
#MASON_ICONV=$(${MASON_DIR}/mason prefix iconv system)
}
function mason_compile {
export LDFLAGS="${LDFLAGS} \
-L${MASON_GDAL}/lib -lgdal \
-L${MASON_GEOS}/lib -lgeos_c -lgeos\
-L${MASON_ZLIB}/lib -lz \
-L${MASON_TIFF}/lib -ltiff \
-L${MASON_JPEG}/lib -ljpeg \
-L${MASON_PROJ}/lib -lproj \
-L${MASON_PNG}/lib -lpng \
-L${MASON_EXPAT}/lib -lexpat \
-L${MASON_PROJ}/lib -lproj \
-L${MASON_XML2}/lib -lxml2"
export CFLAGS="${CFLAGS} -I$(pwd)/liblwgeom/ \
-I$(pwd)/raster/ -I$(pwd)/raster/rt_core/ \
-I${MASON_TIFF}/include \
-I${MASON_JPEG}/include \
-I${MASON_PROJ}/include \
-I${MASON_PNG}/include \
-I${MASON_EXPAT}/include \
-I${MASON_GDAL}/include \
-I${MASON_POSTGRES}/include/server \
-I${MASON_GEOS}/include \
-I${MASON_PROJ}/include \
-I${MASON_XML2}/include/libxml2"
if [[ $(uname -s) == 'Darwin' ]]; then
export LDFLAGS="${LDFLAGS} -Wl,-lc++ -Wl,${MASON_GDAL}/lib/libgdal.a -Wl,${MASON_POSTGRES}/lib/libpq.a -liconv"
else
export LDFLAGS="${LDFLAGS} ${MASON_GDAL}/lib/libgdal.a -lgeos_c -lgeos -lxml2 -lproj -lexpat -lpng -ltiff -ljpeg ${MASON_POSTGRES}/lib/libpq.a -pthread -ldl -lz -lstdc++ -lm"
fi
MASON_LIBPQ_PATH=${MASON_POSTGRES}/lib/libpq.a
MASON_LIBPQ_PATH2=${MASON_LIBPQ_PATH////\\/}
perl -i -p -e "s/\-lpq/${MASON_LIBPQ_PATH2} -pthread/g;" configure
perl -i -p -e "s/librtcore\.a/librtcore\.a \.\.\/\.\.\/liblwgeom\/\.libs\/liblwgeom\.a/g;" raster/loader/Makefile.in
if [[ $(uname -s) == 'Linux' ]]; then
# help initGEOS configure check
perl -i -p -e "s/\-lgeos_c /\-lgeos_c \-lgeos \-lstdc++ \-lm /g;" configure
# help GDALAllRegister configure check
CMD="data=open('./configure','r').read();open('./configure','w')"
CMD="${CMD}.write(data.replace('\`\$GDAL_CONFIG --libs\`','\"-lgdal -lgeos_c -lgeos -lxml2 -lproj -lexpat -lpng -ltiff -ljpeg ${MASON_POSTGRES}/lib/libpq.a -pthread -ldl -lz -lstdc++ -lm\"'))"
python -c "${CMD}"
fi
./configure \
--enable-static --disable-shared \
--prefix=$(mktemp -d) \
${MASON_HOST_ARG} \
--with-projdir=${MASON_PROJ} \
--with-geosconfig=${MASON_GEOS}/bin/geos-config \
--with-pgconfig=${MASON_POSTGRES}/bin/pg_config \
--with-xml2config=${MASON_XML2}/bin/xml2-config \
--with-gdalconfig=${MASON_GDAL}/bin/gdal-config \
--without-json \
--without-gui \
--with-topology \
--with-raster \
--with-sfcgal=no \
--without-sfcgal \
--disable-nls || (cat config.log && exit 1)
# -j${MASON_CONCURRENCY} disabled due to https://trac.osgeo.org/postgis/ticket/3345
make LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS"
make install LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS"
# the meat of postgis installs into postgres directory
# so we actually want to package postgres with the postgis stuff
# inside, so here we symlink it
mkdir -p $(dirname $MASON_PREFIX)
ln -sf ${MASON_POSTGRES} ${MASON_PREFIX}
}
function mason_clean {
make clean
}
mason_run "$@"