switch to mason for deps - refs #2662
This commit is contained in:
parent
9cbf97f124
commit
e8628b2e21
2 changed files with 196 additions and 34 deletions
55
.travis.yml
55
.travis.yml
|
@ -1,43 +1,30 @@
|
|||
language: cpp
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
sudo: false
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- XMLPARSER="libxml2"
|
||||
- XMLPARSER="ptree"
|
||||
addons:
|
||||
postgresql: "9.3"
|
||||
|
||||
# travis + ubuntugis with gdal and postggis leads to many potential dead-end conflicts
|
||||
# the below is thanks to https://github.com/CartoDB/Windshaft/blob/d82fe08b32fc7907bbe907ab290f8a082215ae26/.travis.yml#L1
|
||||
before_install:
|
||||
- export PGUSER=postgres
|
||||
- sudo mv /etc/apt/sources.list.d/pgdg-source.list* /tmp
|
||||
- sudo apt-get -qq purge postgis* postgresql*
|
||||
- sudo apt-add-repository -y ppa:cartodb/postgresql-9.3
|
||||
- sudo apt-add-repository -y ppa:cartodb/gis
|
||||
- sudo rm -Rf /var/lib/postgresql /etc/postgresql
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -q postgresql-9.3-postgis-2.1
|
||||
- sudo apt-get install -q postgresql-contrib-9.3
|
||||
- sudo apt-get install -q gdal-bin libgdal-dev
|
||||
- echo -e "local\tall\tall\ttrust\nhost\tall\tall\t127.0.0.1/32\ttrust\nhost\tall\tall\t::1/128\ttrust" |sudo tee /etc/postgresql/9.3/main/pg_hba.conf
|
||||
- sudo service postgresql restart
|
||||
matrix:
|
||||
include:
|
||||
- os: osx
|
||||
compiler: clang
|
||||
env: JOBS=12
|
||||
- os: linux
|
||||
compiler: clang
|
||||
env: JOBS=12
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
env: JOBS=6
|
||||
|
||||
install:
|
||||
- sudo add-apt-repository -y ppa:boost-latest/ppa
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -y make valgrind boost1.55 python-nose libicu-dev libproj-dev libcairo-dev python-cairo-dev libcairo-dev python-cairo-dev libpng-dev libjpeg-dev libtiff-dev libwebp-dev libz-dev libfreetype6-dev libxml2-dev libsqlite3-dev
|
||||
# multi-face ttc font: https://github.com/mapnik/mapnik/issues/2274
|
||||
- sudo apt-get install ttf-wqy-microhei
|
||||
|
||||
before_script:
|
||||
- psql -U postgres -c 'create database template_postgis'
|
||||
- psql -U postgres -c 'create extension postgis' -d template_postgis
|
||||
- if [[ $(uname -s) == 'Linux' ]]; then psql -U postgres -c 'create database template_postgis;' -U postgres; psql -U postgres -c 'create extension postgis;' -d template_postgis -U postgres; fi;
|
||||
- if [[ $(uname -s) == 'Darwin' ]]; then brew install bash; export PATH="$(brew --prefix)/bin":${PATH}; fi;
|
||||
- echo `which bash`
|
||||
|
||||
script:
|
||||
- ./configure CXX=${CXX} CC=${CC} XML_PARSER=$XML_PARSER DEBUG=False DEMO=True BENCHMARK=False BINDINGS='python' CPP_TESTS=True CAIRO=True FAST=True
|
||||
- JOBS=6 make
|
||||
- source bootstrap.sh
|
||||
- ./configure
|
||||
- cat config.log
|
||||
- make
|
||||
- make test-local
|
||||
- sudo make install
|
||||
- make grind
|
||||
|
|
175
bootstrap.sh
Executable file
175
bootstrap.sh
Executable file
|
@ -0,0 +1,175 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
#set -eu
|
||||
|
||||
: '
|
||||
|
||||
todo
|
||||
|
||||
- clang debs to s3
|
||||
- docs for base setup: sudo apt-get -y install zlib1g-dev python-dev make git python-dev
|
||||
- boost_python_patch
|
||||
- shrink icu data
|
||||
- cairo/pycairo
|
||||
- clang + libc++
|
||||
- pkg-config-less
|
||||
- gdal shared lib?
|
||||
'
|
||||
|
||||
CPP11_TOOLCHAIN="$(pwd)/toolchain"
|
||||
|
||||
function dpack() {
|
||||
if [[ ! -f $2 ]]; then
|
||||
wget -q $1/$(echo $2 | sed 's/+/%2B/g')
|
||||
dpkg -x $2 ${CPP11_TOOLCHAIN}
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_cpp11_toolchain() {
|
||||
if [[ $(uname -s) == 'Linux' ]]; then
|
||||
local PPA="https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+files"
|
||||
# http://llvm.org/apt/precise/dists/llvm-toolchain-precise-3.5/main/binary-amd64/Packages
|
||||
# TODO: cache these for faster downloads
|
||||
local LLVM_DIST="http://llvm.org/apt/precise/pool/main/l/llvm-toolchain-3.5"
|
||||
dpack ${LLVM_DIST} clang-3.5_3.5~svn217304-1~exp1_amd64.deb
|
||||
dpack ${LLVM_DIST} libllvm3.5_3.5~svn217304-1~exp1_amd64.deb
|
||||
dpack ${LLVM_DIST} libclang-common-3.5-dev_3.5~svn215019-1~exp1_amd64.deb
|
||||
dpack ${PPA} libstdc++6_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
dpack ${PPA} libstdc++-4.8-dev_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
dpack ${PPA} libgcc-4.8-dev_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
export CPLUS_INCLUDE_PATH="${CPP11_TOOLCHAIN}/usr/include/c++/4.8:${CPP11_TOOLCHAIN}/usr/include/x86_64-linux-gnu/c++/4.8:${CPLUS_INCLUDE_PATH}"
|
||||
export LD_LIBRARY_PATH="${CPP11_TOOLCHAIN}/usr/lib/x86_64-linux-gnu:${CPP11_TOOLCHAIN}/usr/lib/gcc/x86_64-linux-gnu/4.8/:${LD_LIBRARY_PATH}"
|
||||
export LIBRARY_PATH="${LD_LIBRARY_PATH}"
|
||||
export PATH="${CPP11_TOOLCHAIN}/usr/bin":${PATH}
|
||||
export CXX="${CPP11_TOOLCHAIN}/usr/bin/clang++-3.5"
|
||||
export CC="${CPP11_TOOLCHAIN}/usr/bin/clang-3.5"
|
||||
else
|
||||
export CXX=clang++
|
||||
export CC=clang
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_mason() {
|
||||
if [[ -d ~/.mason ]]; then
|
||||
export PATH=~/.mason:$PATH
|
||||
else
|
||||
if [[ ! -d ./.mason ]]; then
|
||||
git clone --depth 1 https://github.com/mapbox/mason.git ./.mason
|
||||
fi
|
||||
export MASON_DIR=$(pwd)/.mason
|
||||
export PATH=$(pwd)/.mason:$PATH
|
||||
fi
|
||||
}
|
||||
|
||||
function ip() {
|
||||
if [[ ! -d ./mason_packages/${3}/${1}/ ]]; then
|
||||
echo ./mason_packages/${3}/${1}/
|
||||
mason install $1 $2
|
||||
mason link $1 $2
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mason_deps() {
|
||||
MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID)
|
||||
ip freetype 2.5.4 $MASON_PLATFORM_ID
|
||||
ip harfbuzz 2cd5323 $MASON_PLATFORM_ID
|
||||
ip jpeg_turbo 1.4.0 $MASON_PLATFORM_ID
|
||||
ip libxml2 2.9.2 $MASON_PLATFORM_ID
|
||||
ip libpng 1.6.13 $MASON_PLATFORM_ID
|
||||
ip webp 0.4.2 $MASON_PLATFORM_ID
|
||||
ip icu 54.1 $MASON_PLATFORM_ID
|
||||
ip proj 4.8.0 $MASON_PLATFORM_ID
|
||||
ip libtiff 4.0.4beta $MASON_PLATFORM_ID
|
||||
ip boost 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libsystem 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libthread 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libfilesystem 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libprogram_options 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libregex 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libpython 1.57.0 $MASON_PLATFORM_ID
|
||||
ip libpq 9.4.0 $MASON_PLATFORM_ID
|
||||
ip sqlite 3.8.6 $MASON_PLATFORM_ID
|
||||
ip gdal 1.11.1 $MASON_PLATFORM_ID
|
||||
ip expat 2.1.0 $MASON_PLATFORM_ID
|
||||
ip pixman 0.32.6 $MASON_PLATFORM_ID
|
||||
ip cairo 1.12.18 $MASON_PLATFORM_ID
|
||||
}
|
||||
|
||||
function setup_nose() {
|
||||
if [[ ! -d $(pwd)/nose-1.3.4 ]]; then
|
||||
wget -q https://pypi.python.org/packages/source/n/nose/nose-1.3.4.tar.gz
|
||||
tar -xzf nose-1.3.4.tar.gz
|
||||
fi
|
||||
export PYTHONPATH=$(pwd)/nose-1.3.4:${PYTHONPATH}
|
||||
}
|
||||
|
||||
function make_config() {
|
||||
local MASON_LINKED_REL=./mason_packages/.link
|
||||
export PKG_CONFIG_PATH="${MASON_LINKED_REL}/lib/pkgconfig"
|
||||
export C_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||
export CPLUS_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||
export LIBRARY_PATH="${MASON_LINKED_REL}/lib"
|
||||
export PATH="${MASON_LINKED_REL}/bin":${PATH}
|
||||
|
||||
echo "
|
||||
CXX = '$CXX'
|
||||
CC = '$CC'
|
||||
CUSTOM_CXXFLAGS = '-fvisibility-inlines-hidden -DU_CHARSET_IS_UTF8=1'
|
||||
CUSTOM_LDFLAGS = '-L${MASON_LINKED_REL}/lib'
|
||||
RUNTIME_LINK = 'static'
|
||||
INPUT_PLUGINS = 'all'
|
||||
PREFIX = '/opt/mapnik-3.x'
|
||||
PATH = '${MASON_LINKED_REL}/bin'
|
||||
PATH_REMOVE = '/usr:/usr/local'
|
||||
PATH_REPLACE = '/Users/travis/build/mapbox/mason/mason_packages:./mason_packages'
|
||||
MAPNIK_NAME = 'mapnik_3-0-0'
|
||||
BOOST_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
BOOST_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
ICU_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
ICU_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
HB_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
HB_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
PNG_INCLUDES = '${MASON_LINKED_REL}/include/libpng16'
|
||||
PNG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
JPEG_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
JPEG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
TIFF_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
TIFF_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
WEBP_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
WEBP_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
PROJ_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
PROJ_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
FREETYPE_INCLUDES = '${MASON_LINKED_REL}/include/freetype2'
|
||||
FREETYPE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
XML2_INCLUDES = '${MASON_LINKED_REL}/include/libxml2'
|
||||
XML2_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
SVG_RENDERER = True
|
||||
CAIRO_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
CAIRO_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
SQLITE_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
SQLITE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
FRAMEWORK_PYTHON = False
|
||||
BINDINGS = 'python'
|
||||
XMLPARSER = 'ptree'
|
||||
SVG2PNG = True
|
||||
SAMPLE_INPUT_PLUGINS = True
|
||||
" > ./config.py
|
||||
}
|
||||
|
||||
function setup_runtime_settings() {
|
||||
local MASON_LINKED_ABS=$(pwd)/mason_packages/.link
|
||||
export PROJ_LIB=${MASON_LINKED_ABS}/share/proj/
|
||||
export ICU_DATA=${MASON_LINKED_ABS}/share/icu/54.1/
|
||||
export GDAL_DATA=${MASON_LINKED_ABS}/share/gdal
|
||||
}
|
||||
|
||||
function main() {
|
||||
setup_mason
|
||||
install_mason_deps
|
||||
setup_nose
|
||||
setup_cpp11_toolchain
|
||||
make_config
|
||||
setup_runtime_settings
|
||||
}
|
||||
|
||||
main
|
Loading…
Add table
Reference in a new issue