Merge pull request #2780 from mapnik/issue_2779

make mapnik-config able to report relative paths to share/ data
This commit is contained in:
Blake Thompson 2015-04-29 08:54:24 -05:00
commit 14a56e2094
5 changed files with 111 additions and 6 deletions

View file

@ -5,6 +5,10 @@ sudo: false
git:
depth: 2
env:
global:
- secure: "N3a5nzzsgpuu45k8qWdYsHNxrSnqeAGLTOYpfYoAH7B94vuf7pa7XV1tQjXbxrnx2D6ryTdtUtyRKwy7zXbwXxGt4DpczWEo8f6DUd6+obAp3kdnXABg2Sj4oA7KMs0F0CmoADy0jdUZD5YyOJHu64LCIIgzEQ9q49PFMNbU3IE="
- secure: "iQYPNpMtejcgYeUkWZGIWz1msIco5qydJrhZTSCQOYahAQerdT7q5WZEpEo3G6IWOGgO1eo7GFuY8DvqQjw1+jC9b9mhkRNdo3LhGTKS9Gsbl5Q27k0rjlaFZmmQHrfPlQJwhfAIp+KLugHtQw5bCoLh+95E3j0F0DayF1tuJ3s="
addons:
postgresql: "9.4"
apt:
@ -23,16 +27,21 @@ matrix:
include:
- os: linux
compiler: clang
env: JOBS=8
env: JOBS=8 MASON_PUBLISH=true
- os: linux
compiler: gcc
env: JOBS=6
- os: osx
compiler: clang
env: JOBS=8 MASON_PUBLISH=true
- os: osx
compiler: clang
env: JOBS=8 COVERAGE=true
before_install:
- export COVERAGE=${COVERAGE:-false}
- export MASON_PUBLISH=${MASON_PUBLISH:-false}
- if [[ ${TRAVIS_BRANCH} != 'master' ]]; then export MASON_PUBLISH=false; fi;
install:
- if [[ $(uname -s) == 'Linux' ]]; then
@ -44,14 +53,37 @@ install:
else
export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python/site-packages;
fi;
- if [[ ${COVERAGE} == true ]]; then
PYTHONUSERBASE=$(pwd)/mason_packages/.link pip install --user cpp-coveralls;
fi;
script:
- source bootstrap.sh
- if [[ ${COVERAGE} == true ]]; then ./configure CUSTOM_LDFLAGS='--coverage' CUSTOM_CXXFLAGS='--coverage' CUSTOM_CFLAGS='--coverage' DEBUG=True; else ./configure; fi;
- if [[ ${COVERAGE} == true ]]; then
./configure 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 PREFIX=${MASON_PREFIX} PATH_REPLACE='' MAPNIK_BUNDLED_SHARE_DIRECTORY=True;
else
./configure;
fi;
- make
- git clone --depth=1 https://github.com/mapnik/test-data test-data
- git clone --depth=1 https://github.com/mapbox/mapnik-test-data tests/data/mapnik-test-data
- make test
- PYTHONUSERBASE=$(pwd)/mason_packages/.link pip install --user cpp-coveralls
- 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 [[ ${COVERAGE} != true ]]; then make bench; fi;
- 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 [[ ${COVERAGE} != true ]]; then
make bench;
fi;
after_success:
- if [[ ${MASON_PUBLISH} == true ]]; then
./mason_latest.sh build;
./mason_latest.sh link;
./mason_latest.sh publish;
fi;

View file

@ -324,6 +324,7 @@ opts.AddVariables(
('PATH_REMOVE', 'A path prefix to exclude from all known command and compile paths (create multiple excludes separated by :)', ''),
('PATH_REPLACE', 'Two path prefixes (divided with a :) to search/replace from all known command and compile paths', ''),
('MAPNIK_NAME', 'Name of library', 'mapnik'),
BoolVariable('MAPNIK_BUNDLED_SHARE_DIRECTORY', 'For portable packaging: instruct mapnik-config to report relative paths to bundled GDAL_DATA, PROJ_LIB, and ICU_DATA','False'),
# Boost variables
# default is '/usr/include', see FindBoost method below
@ -463,6 +464,7 @@ pickle_store = [# Scons internal variables
'MAPNIK_INPUT_PLUGINS_DEST',
'MAPNIK_FONTS',
'MAPNIK_FONTS_DEST',
'MAPNIK_BUNDLED_SHARE_DIRECTORY',
'MAPNIK_LIB_BASE',
'MAPNIK_LIB_BASE_DEST',
'EXTRA_FREETYPE_LIBS',

41
mason_latest.sh Executable file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env bash
MASON_NAME=mapnik
MASON_VERSION=latest
MASON_LIB_FILE=lib/libmapnik-wkt.a
. ${MASON_DIR:-~/.mason}/mason.sh
function mason_load_source {
export MASON_BUILD_PATH=$(pwd)
}
function mason_compile {
HERE=$(pwd)
make install
if [ $UNAME = 'Darwin' ]; then
install_name_tool -id @loader_path/libmapnik.dylib ${MASON_PREFIX}"/lib/libmapnik.dylib";
fi;
python -c "data=open('$MASON_PREFIX/bin/mapnik-config','r').read();open('$MASON_PREFIX/bin/mapnik-config','w').write(data.replace('$HERE','.'))"
mkdir -p ${MASON_PREFIX}/share/gdal
mkdir -p ${MASON_PREFIX}/share/proj
mkdir -p ${MASON_PREFIX}/share/icu
cp -r $GDAL_DATA/ ${MASON_PREFIX}/share/gdal/
cp -r $PROJ_LIB/ ${MASON_PREFIX}/share/proj/
cp -r $ICU_DATA/*dat ${MASON_PREFIX}/share/icu/
find ${MASON_PREFIX} -name "*.pyc" -exec rm {} \;
}
function mason_cflags {
""
}
function mason_ldflags {
""
}
function mason_clean {
echo "Done"
}
mason_run "$@"

View file

@ -50,6 +50,9 @@ CONFIG_MAPNIK_INCLUDE="${CONFIG_PREFIX}/include -I${CONFIG_PREFIX}/include/mapni
CONFIG_DEP_INCLUDES="%(dep_includes)s"
CONFIG_CXXFLAGS="%(cxxflags)s"
CONFIG_CXX='%(cxx)s'
CONFIG_MAPNIK_GDAL_DATA='%(mapnik_bundled_gdal_data)s'
CONFIG_MAPNIK_PROJ_LIB='%(mapnik_bundled_proj_data)s'
CONFIG_MAPNIK_ICU_DATA='%(mapnik_bundled_icu_data)s'
'''
@ -107,6 +110,15 @@ if lib_root in inputpluginspath:
lib_path = "${CONFIG_PREFIX}/" + config_env['LIBDIR_SCHEMA']
mapnik_bundled_gdal_data = ''
mapnik_bundled_proj_data = ''
mapnik_bundled_icu_data = ''
if config_env.get('MAPNIK_BUNDLED_SHARE_DIRECTORY'):
mapnik_bundled_gdal_data = 'lib/mapnik/share/gdal'
mapnik_bundled_proj_data = 'lib/mapnik/share/proj'
mapnik_bundled_icu_data = 'lib/mapnik/share/icu'
configuration = {
"git_revision": git_revision,
"git_describe": git_describe,
@ -121,7 +133,10 @@ configuration = {
"input_plugins": inputpluginspath,
"defines":defines,
"cxxflags":cxxflags,
"cxx":env['CXX']
"cxx":env['CXX'],
"mapnik_bundled_gdal_data":mapnik_bundled_gdal_data,
"mapnik_bundled_proj_data":mapnik_bundled_proj_data,
"mapnik_bundled_icu_data":mapnik_bundled_icu_data,
}
## if we are statically linking depedencies

View file

@ -27,6 +27,9 @@ Known values for OPTION are:
--cflags all include paths, compiler flags, and pre-processor defines (for back-compatibility)
--cxx c++ compiler used to build mapnik (new in 2.2.0)
--all-flags all compile and link flags (new in 2.2.0)
--gdal-data path to GDAL_DATA directory, if known (relevant only for packaged builds of Mapnik) (new in 3.0.0)
--proj-lib path to PROJ_LIB directory, if known (relevant only for packaged builds of Mapnik) (new in 3.0.0)
--icu-data path to ICU_DATA directory, if known (relevant only for packaged builds of Mapnik) (new in 3.0.0)
EOF
exit $1
@ -128,6 +131,18 @@ while test $# -gt 0; do
echo -I${CONFIG_MAPNIK_INCLUDE} ${CONFIG_DEP_INCLUDES} ${CONFIG_MAPNIK_DEFINES} ${CONFIG_CXXFLAGS} -L${CONFIG_MAPNIK_LIBPATH} -l${CONFIG_MAPNIK_LIBNAME} ${CONFIG_MAPNIK_LDFLAGS} ${CONFIG_DEP_LIBS}
;;
--gdal-data)
if [[ ${CONFIG_MAPNIK_GDAL_DATA:-unset} != "unset" ]]; then echo ${CONFIG_PREFIX}/${CONFIG_MAPNIK_GDAL_DATA}; fi;
;;
--proj-lib)
if [[ ${CONFIG_MAPNIK_PROJ_LIB:-unset} != "unset" ]]; then echo ${CONFIG_PREFIX}/${CONFIG_MAPNIK_PROJ_LIB}; fi;
;;
--icu-data)
if [[ ${CONFIG_MAPNIK_ICU_DATA:-unset} != "unset" ]]; then echo ${CONFIG_PREFIX}/${CONFIG_MAPNIK_ICU_DATA}; fi;
;;
*)
# push to stderr any invalid options
echo "unknown option $1" 1>&2;