parent
b43ee6dd04
commit
efb06d2060
3 changed files with 135 additions and 49 deletions
74
.travis.yml
74
.travis.yml
|
@ -52,6 +52,7 @@ matrix:
|
|||
env: JOBS=8 COVERAGE=true HEAVY_JOBS=3
|
||||
|
||||
before_install:
|
||||
- source scripts/travis-common.sh
|
||||
- export PYTHONUSERBASE=$(pwd)/mason_packages/.link
|
||||
- export PATH=${PYTHONUSERBASE}/bin:${PATH}
|
||||
- export COVERAGE=${COVERAGE:-false}
|
||||
|
@ -59,57 +60,34 @@ before_install:
|
|||
- export BENCH=${BENCH:-false}
|
||||
- if [[ ${TRAVIS_BRANCH} != 'master' ]]; then export MASON_PUBLISH=false; fi
|
||||
- if [[ ${TRAVIS_PULL_REQUEST} != 'false' ]]; then export MASON_PUBLISH=false; fi
|
||||
- git submodule update --init --depth=10 ||
|
||||
git submodule foreach 'test "$sha1" = "`git rev-parse HEAD`" ||
|
||||
git ls-remote origin "refs/pull/*/head" |
|
||||
while read hash ref; do
|
||||
if test "$hash" = "$sha1"; then
|
||||
git config --add remote.origin.fetch "+$ref:$ref";
|
||||
fi
|
||||
done'
|
||||
- git submodule update --init --depth=10
|
||||
- git_submodule_update --init --depth=10
|
||||
|
||||
install:
|
||||
- if [[ $(uname -s) == 'Linux' ]]; then
|
||||
export PYTHONPATH=${PYTHONUSERBASE}/lib/python2.7/site-packages;
|
||||
else
|
||||
brew rm postgis --force;
|
||||
brew install postgis --force;
|
||||
pg_ctl -w start -l postgres.log --pgdata /usr/local/var/postgres;
|
||||
createuser -s postgres;
|
||||
export PYTHONPATH=${PYTHONUSERBASE}/lib/python/site-packages;
|
||||
fi
|
||||
- psql -c 'create database template_postgis;' -U postgres;
|
||||
- psql -c 'create extension postgis;' -d template_postgis -U postgres;
|
||||
- if [[ ${COVERAGE} == true ]]; then
|
||||
if [[ ! $(which pip) ]]; then easy_install --user pip && export PATH=/Users/travis/Library/Python/2.7/bin:${PATH}; fi;
|
||||
pip install --user cpp-coveralls;
|
||||
fi
|
||||
- on 'linux' export PYTHONPATH=${PYTHONUSERBASE}/lib/python2.7/site-packages
|
||||
- on 'osx' export PYTHONPATH=${PYTHONUSERBASE}/lib/python/site-packages
|
||||
- on 'osx' brew rm postgis --force
|
||||
- on 'osx' brew install postgis --force
|
||||
- on 'osx' pg_ctl -w start -l postgres.log --pgdata /usr/local/var/postgres
|
||||
- on 'osx' createuser -s postgres
|
||||
- psql -c 'create database template_postgis;' -U postgres
|
||||
- psql -c 'create extension postgis;' -d template_postgis -U postgres
|
||||
- enabled ${COVERAGE} pip install --user cpp-coveralls
|
||||
|
||||
before_script:
|
||||
- source bootstrap.sh
|
||||
- commit_message_parse
|
||||
|
||||
script:
|
||||
- source bootstrap.sh
|
||||
- if [[ ${COVERAGE} == true ]]; then
|
||||
./configure PGSQL2SQLITE=False SVG2PNG=False SAMPLE_INPUT_PLUGINS=False SVG_RENDERER=False BENCHMARK=${BENCH} CUSTOM_LDFLAGS='--coverage' CUSTOM_CXXFLAGS='--coverage' CUSTOM_CFLAGS='--coverage' DEBUG=True;
|
||||
elif [[ ${MASON_PUBLISH} == true ]]; then
|
||||
export MASON_NAME=mapnik;
|
||||
export MASON_VERSION=latest;
|
||||
export MASON_LIB_FILE=lib/libmapnik-wkt.a;
|
||||
source ./.mason/mason.sh;
|
||||
./configure BENCHMARK=${BENCH} PREFIX=${MASON_PREFIX} PATH_REPLACE='' MAPNIK_BUNDLED_SHARE_DIRECTORY=True RUNTIME_LINK='static';
|
||||
else
|
||||
./configure BENCHMARK=${BENCH};
|
||||
fi
|
||||
- SCONSFLAGS='--debug=time' make
|
||||
- make test || TEST_RESULT=$?
|
||||
- if [[ ${COVERAGE} == true ]]; then
|
||||
./mason_packages/.link/bin/cpp-coveralls --build-root . --gcov-options '\-lp' --exclude mason_packages --exclude .sconf_temp --exclude benchmark --exclude deps --exclude scons --exclude test --exclude demo --exclude docs --exclude fonts --exclude utils > /dev/null;
|
||||
fi
|
||||
- if [[ ${BENCH} == True ]]; then
|
||||
make bench;
|
||||
fi
|
||||
- if [[ ${TEST_RESULT:-0} != 0 ]]; then exit $TEST_RESULT ; fi;
|
||||
- if [[ ${MASON_PUBLISH} == true ]]; then
|
||||
./mason_latest.sh build;
|
||||
./mason_latest.sh link;
|
||||
- export SCONSFLAGS='--debug=time'
|
||||
- configure BENCHMARK=${BENCH}
|
||||
- make
|
||||
- make test
|
||||
- enabled ${COVERAGE} coverage
|
||||
- enabled ${BENCH} make bench
|
||||
|
||||
after_success:
|
||||
- if enabled ${MASON_PUBLISH}; then
|
||||
./mason_latest.sh build &&
|
||||
./mason_latest.sh link &&
|
||||
./mason_latest.sh publish;
|
||||
fi
|
||||
|
|
|
@ -112,7 +112,6 @@ CPP_TESTS = True
|
|||
PGSQL2SQLITE = True
|
||||
XMLPARSER = 'ptree'
|
||||
SVG2PNG = True
|
||||
SAMPLE_INPUT_PLUGINS = True
|
||||
"
|
||||
}
|
||||
|
||||
|
|
109
scripts/travis-common.sh
Normal file
109
scripts/travis-common.sh
Normal file
|
@ -0,0 +1,109 @@
|
|||
#! /bin/bash
|
||||
|
||||
# enabled VALUE
|
||||
# - if VALUE is empty or falsy, returns 1 (false)
|
||||
# - otherwise returns 0 (true)
|
||||
# enabled VALUE COMMAND ...
|
||||
# - if VALUE is empty or falsy, returns 0 (true)
|
||||
# - otherwise runs COMMAND and returns its result
|
||||
enabled () {
|
||||
local value="$1"; shift
|
||||
case $value in
|
||||
''|'0'|[Ff]alse|[Nn]o) test $# -ne 0;;
|
||||
*) test $# -eq 0 || "$@";;
|
||||
esac
|
||||
}
|
||||
|
||||
# on NAME
|
||||
# - if NAME == $TRAVIS_OS_NAME, returns 0 (true)
|
||||
# - otherwise returns 1 (false)
|
||||
# on NAME COMMAND ...
|
||||
# - if NAME == $TRAVIS_OS_NAME, runs COMMAND and returns its result
|
||||
# - otherwise returns 0 (true)
|
||||
on () {
|
||||
local name="$1"; shift
|
||||
case $name in
|
||||
$TRAVIS_OS_NAME) test $# -eq 0 || "$@";;
|
||||
*) test $# -ne 0;;
|
||||
esac
|
||||
}
|
||||
|
||||
git_submodule_update () {
|
||||
git submodule update "$@" && return
|
||||
# failed, search pull requests for matching commits
|
||||
git submodule foreach \
|
||||
'
|
||||
test "$sha1" = "`git rev-parse HEAD`" ||
|
||||
git ls-remote origin "refs/pull/*/head" |
|
||||
while read hash ref; do
|
||||
if test "$hash" = "$sha1"; then
|
||||
git config --add remote.origin.fetch "+$ref:$ref";
|
||||
fi
|
||||
done
|
||||
'
|
||||
# try again with added fetch refs
|
||||
git submodule update "$@"
|
||||
}
|
||||
|
||||
# install and call pip
|
||||
pip () {
|
||||
if ! which pip >/dev/null; then
|
||||
easy_install --user pip && \
|
||||
export PATH="$HOME/Library/Python/2.7/bin:$PATH"
|
||||
fi
|
||||
command pip "$@"
|
||||
}
|
||||
|
||||
# commit_message_contains TEXT
|
||||
# - returns 0 (true) if TEXT is found in commit message
|
||||
# - case-insensitive, plain-text search, not regex
|
||||
commit_message_contains () {
|
||||
git log -1 --pretty='%B' "$TRAVIS_COMMIT" | grep -qiFe "$*"
|
||||
}
|
||||
|
||||
commit_message_parse () {
|
||||
if commit_message_contains '[skip tests]'; then
|
||||
config_override "CPP_TESTS = False"
|
||||
fi
|
||||
if commit_message_contains '[skip utils]'; then
|
||||
config_override "MAPNIK_INDEX = False"
|
||||
config_override "MAPNIK_RENDER = False"
|
||||
config_override "PGSQL2SQLITE = False"
|
||||
config_override "SHAPEINDEX = False"
|
||||
config_override "SVG2PNG = False"
|
||||
fi
|
||||
}
|
||||
|
||||
config_override () {
|
||||
echo "Appending to config.py:" "$@"
|
||||
echo "$@" >> ./config.py
|
||||
}
|
||||
|
||||
configure () {
|
||||
if enabled ${COVERAGE}; then
|
||||
./configure "$@" PGSQL2SQLITE=False SVG2PNG=False SVG_RENDERER=False \
|
||||
CUSTOM_LDFLAGS='--coverage' CUSTOM_CXXFLAGS='--coverage' \
|
||||
CUSTOM_CFLAGS='--coverage' DEBUG=True
|
||||
elif enabled ${MASON_PUBLISH}; then
|
||||
export MASON_NAME=mapnik
|
||||
export MASON_VERSION=latest
|
||||
export MASON_LIB_FILE=lib/libmapnik-wkt.a
|
||||
source ./.mason/mason.sh
|
||||
./configure "$@" PREFIX=${MASON_PREFIX} \
|
||||
PATH_REPLACE='' MAPNIK_BUNDLED_SHARE_DIRECTORY=True \
|
||||
RUNTIME_LINK='static'
|
||||
else
|
||||
./configure "$@"
|
||||
fi
|
||||
# print final config values, sorted and indented
|
||||
sort -sk1,1 ./config.py | sed -e 's/^/ /'
|
||||
}
|
||||
|
||||
coverage () {
|
||||
./mason_packages/.link/bin/cpp-coveralls \
|
||||
--build-root . --gcov-options '\-lp' --exclude mason_packages \
|
||||
--exclude .sconf_temp --exclude benchmark --exclude deps \
|
||||
--exclude scons --exclude test --exclude demo --exclude docs \
|
||||
--exclude fonts --exclude utils \
|
||||
> /dev/null
|
||||
}
|
Loading…
Reference in a new issue