From 8e99ae44dd5bf72bc8bd844251e9d670095804ac Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Mon, 7 Nov 2016 10:54:38 +0200 Subject: [PATCH] [build] Use mesa-13.0.0-glx in CI builds --- .mason | 2 +- .travis.yml | 4 +- CMakeLists.txt | 7 +++ Makefile | 7 ++- cmake/benchmark.cmake | 6 --- cmake/test.cmake | 6 --- platform/linux/config.cmake | 46 +++++++++----------- scripts/travis_setup.sh | 8 +++- scripts/valgrind.sup | 86 +++++++++++++++++++++++++++++++++++++ 9 files changed, 127 insertions(+), 45 deletions(-) diff --git a/.mason b/.mason index 4279f5878..43933edab 160000 --- a/.mason +++ b/.mason @@ -1 +1 @@ -Subproject commit 4279f58787acba8286789f861cf7c3c4ce47d522 +Subproject commit 43933edabaca8f877f270466d20759fe84e62b21 diff --git a/.travis.yml b/.travis.yml index 86de437bf..6a8712d1e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,12 +16,12 @@ addons_shortcuts: addons_qt4: &qt4 apt: sources: [ 'ubuntu-toolchain-r-test', 'george-edison55-precise-backports' ] - packages: [ 'g++-5', 'gcc-5', 'libjemalloc-dev', 'cmake', 'cmake-data', + packages: [ 'g++-5', 'gcc-5', 'libllvm3.8v4', 'libjemalloc-dev', 'cmake', 'cmake-data', 'mesa-utils', 'qt4-default' ] addons_qt5: &qt5 apt: sources: [ 'ubuntu-toolchain-r-test', 'george-edison55-precise-backports' ] - packages: [ 'g++-5', 'gcc-5', 'cmake', 'cmake-data', + packages: [ 'g++-5', 'gcc-5', 'libllvm3.8v4', 'cmake', 'cmake-data', 'mesa-utils', 'libc6-dbg', 'qt5-default', 'libqt5opengl5-dev', 'qtdeclarative5-dev', 'qtpositioning5-dev', 'qtlocation5-dev' ] env: diff --git a/CMakeLists.txt b/CMakeLists.txt index c80e999a3..6c009b910 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ include(.mason/mason.cmake) option(WITH_CXX11ABI "Use cxx11abi mason packages" OFF) option(WITH_COVERAGE "Enable coverage reports" OFF) option(WITH_OSMESA "Use OSMesa headless backend" OFF) +option(IS_CI_BUILD "Continuous integration build" OFF) if(WITH_CXX11ABI) set(MASON_CXXABI_SUFFIX -cxx11abi) @@ -22,6 +23,12 @@ endif() if(WITH_OSMESA) add_compile_options(-D__OSMESA__) +else() + set(MASON_MESA_SUFFIX -glx) +endif() + +if(IS_CI_BUILD) + add_compile_options(-DCI_BUILD=1) endif() mason_use(geometry VERSION 0.8.0 HEADER_ONLY) diff --git a/Makefile b/Makefile index 29acc367f..5effbe819 100644 --- a/Makefile +++ b/Makefile @@ -292,6 +292,7 @@ $(LINUX_BUILD): $(BUILD_DEPS) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ -DWITH_COVERAGE=${WITH_COVERAGE} \ + -DIS_CI_BUILD=${CI} \ -DWITH_OSMESA=${WITH_OSMESA}) .PHONY: linux @@ -387,7 +388,8 @@ $(QT_BUILD): $(BUILD_DEPS) -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ -DWITH_QT_4=${WITH_QT_4} \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ - -DWITH_COVERAGE=${WITH_COVERAGE}) + -DWITH_COVERAGE=${WITH_COVERAGE} \ + -DIS_CI_BUILD=${CI}) ifeq ($(HOST_PLATFORM), macos) @@ -401,7 +403,8 @@ $(MACOS_QT_PROJ_PATH): $(BUILD_DEPS) -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ -DWITH_QT_4=${WITH_QT_4} \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ - -DWITH_COVERAGE=${WITH_COVERAGE}) + -DWITH_COVERAGE=${WITH_COVERAGE} \ + -DIS_CI_BUILD=${CI}) @# Create Xcode schemes so that we can use xcodebuild from the command line. CMake doesn't @# create these automatically. diff --git a/cmake/benchmark.cmake b/cmake/benchmark.cmake index 79da54459..0752647a2 100644 --- a/cmake/benchmark.cmake +++ b/cmake/benchmark.cmake @@ -14,12 +14,6 @@ target_include_directories(mbgl-benchmark PRIVATE platform/default ) -if(DEFINED ENV{CI}) - target_compile_definitions(mbgl-benchmark - PRIVATE -DCI_BUILD=1 - ) -endif() - target_link_libraries(mbgl-benchmark PRIVATE mbgl-core ) diff --git a/cmake/test.cmake b/cmake/test.cmake index c4d9dd9fa..2a83a633c 100644 --- a/cmake/test.cmake +++ b/cmake/test.cmake @@ -16,12 +16,6 @@ target_include_directories(mbgl-test PRIVATE platform/default ) -if(DEFINED ENV{CI}) - target_compile_definitions(mbgl-test - PRIVATE -DCI_BUILD=1 - ) -endif() - target_link_libraries(mbgl-test PRIVATE mbgl-core ) diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index 76be2dddc..b4bc03006 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -1,5 +1,7 @@ mason_use(glfw VERSION 3.2.1) -mason_use(mesa VERSION 13.0.0${MASON_CXXABI_SUFFIX}) +if (WITH_OSMESA OR IS_CI_BUILD) + mason_use(mesa VERSION 13.0.0${MASON_MESA_SUFFIX}${MASON_CXXABI_SUFFIX}) +endif() mason_use(boost_libprogram_options VERSION 1.60.0) mason_use(sqlite VERSION 3.14.2) mason_use(libuv VERSION 1.9.1) @@ -12,34 +14,26 @@ mason_use(benchmark VERSION 1.0.0) include(cmake/loop-uv.cmake) -macro(use_glx_backend _TARGET) - target_sources(${_TARGET} - PRIVATE platform/linux/src/headless_backend_glx.cpp - PRIVATE platform/linux/src/headless_display_glx.cpp - ) - - target_link_libraries(${_TARGET} - PUBLIC -lGL - PUBLIC -lX11 - ) -endmacro() - -macro(use_osmesa_backend _TARGET) - target_sources(${_TARGET} - PRIVATE platform/default/headless_backend_osmesa.cpp - PRIVATE platform/default/headless_display.cpp - ) - - target_add_mason_package(${_TARGET} - PUBLIC mesa - ) -endmacro() - macro(mbgl_platform_core) if (WITH_OSMESA) - use_osmesa_backend(mbgl-core) + target_sources(mbgl-core + PRIVATE platform/default/headless_backend_osmesa.cpp + PRIVATE platform/default/headless_display.cpp + ) + target_add_mason_package(mbgl-core PUBLIC mesa) else() - use_glx_backend(mbgl-core) + target_sources(mbgl-core + PRIVATE platform/linux/src/headless_backend_glx.cpp + PRIVATE platform/linux/src/headless_display_glx.cpp + ) + if (IS_CI_BUILD) + target_add_mason_package(mbgl-core PUBLIC mesa) + else() + target_link_libraries(mbgl-core + PUBLIC -lGL + PUBLIC -lX11 + ) + endif() endif() target_sources(mbgl-core diff --git a/scripts/travis_setup.sh b/scripts/travis_setup.sh index 47df36788..6c39b3f42 100755 --- a/scripts/travis_setup.sh +++ b/scripts/travis_setup.sh @@ -46,10 +46,14 @@ if [ -f /etc/init.d/xvfb ] && [ ! -z "${RUN_XVFB}" ]; then # Make sure we're connecting to xvfb export DISPLAY=:99.0 + CXX11ABI="" + if [ `scripts/check-cxx11abi.sh` = 'ON' ]; then + CXX11ABI="-cxx11abi" + fi # Install and set up to load a more recent version of mesa mapbox_time "install_mesa" \ - mason install mesa 11.2.2 - export LD_LIBRARY_PATH="`mason prefix mesa 11.2.2`/lib:${LD_LIBRARY_PATH:-}" + mason install mesa 13.0.0-glx${CXX11ABI} + export LD_LIBRARY_PATH="`mason prefix mesa 13.0.0-glx${CXX11ABI}`/lib:${LD_LIBRARY_PATH:-}" fi # Install and set up to load awscli diff --git a/scripts/valgrind.sup b/scripts/valgrind.sup index f21f54be5..ea3e3d635 100644 --- a/scripts/valgrind.sup +++ b/scripts/valgrind.sup @@ -180,3 +180,89 @@ fun:draw_wide_line ... } +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Leak + ... + obj:*/libQt5Core.* + ... +} +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Cond + ... + obj:*/libQt5Core.* + ... +} +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Value8 + ... + obj:*/libQt5Core.* + ... +} +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Leak + ... + obj:*/libQt5Gui.* + ... +} +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Cond + ... + obj:*/libQt5Gui.* + ... +} +{ + Ubuntu 14.04 - Travis + Qt5 + Memcheck:Value8 + ... + obj:*/libQt5Gui.* + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Cond + ... + obj:*/mesa/libGL.so.* + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Value8 + ... + obj:*/mesa/libGL.so.* + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Cond + ... + fun:do_rasterize_bin + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Value8 + ... + fun:do_rasterize_bin + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Cond + ... + fun:_ZN6mapbox10pixelmatchEPKhS1_mmPhdb + ... +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.0-glx + Memcheck:Param + write(buf) + ... + obj:*/libc-* + fun:_ZN4mbgl4util10write_fileERKSsS2_ + ... +}