[build] add ccache + Circle CI caching
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -33,3 +33,4 @@ xcuserdata
|
||||
/documentation
|
||||
test/fixtures/api/assets.zip
|
||||
test/fixtures/storage/assets.zip
|
||||
/.circle-week
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
cmake_minimum_required(VERSION 3.4)
|
||||
project(mbgl LANGUAGES CXX C)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
|
||||
@@ -86,6 +86,34 @@ elseif(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals")
|
||||
endif()
|
||||
|
||||
# Technique from https://crascit.com/2016/04/09/using-ccache-with-cmake/
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if(CCACHE_PROGRAM)
|
||||
set(C_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
set(CXX_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
configure_file(scripts/launch-c.in launch-c)
|
||||
configure_file(scripts/launch-cxx.in launch-cxx)
|
||||
execute_process(COMMAND chmod a+rx "${CMAKE_BINARY_DIR}/launch-c" "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
|
||||
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
# Set Xcode project attributes to route compilation and linking through our scripts
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
else()
|
||||
# Support Unix Makefiles and Ninja
|
||||
set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
# ccache splits up the compile steps, so we end up with unused arguments in some steps.
|
||||
# Clang also thinks that ccache isn't interactive, so we explicitly need to enable color.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/platform/${MBGL_PLATFORM}/config.cmake)
|
||||
message(ERROR "Can't find config.cmake file for platform ${MBGL_PLATFORM}")
|
||||
endif()
|
||||
|
||||
543
circle.yml
543
circle.yml
@@ -19,27 +19,118 @@ workflows:
|
||||
- linux-gcc5-release-qt4
|
||||
- linux-gcc5-release-qt5
|
||||
|
||||
jobs:
|
||||
step-library:
|
||||
- &generate-cache-key
|
||||
run:
|
||||
name: Generate cache key
|
||||
command: |
|
||||
echo "$(date +"%Y-%V")" > .circle-week
|
||||
ccache --clear
|
||||
ccache --max-size=5G
|
||||
- &restore-cache
|
||||
restore_cache:
|
||||
keys:
|
||||
- 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
|
||||
- 'v3/{{ .Environment.CIRCLE_JOB }}/master/{{ checksum ".circle-week" }}'
|
||||
- &save-cache
|
||||
save_cache:
|
||||
key: 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
|
||||
paths: [ "node_modules", "/root/.ccache", "mason_packages/.binaries" ]
|
||||
|
||||
|
||||
- &reset-ccache-stats
|
||||
run:
|
||||
name: Clear ccache statistics
|
||||
command: |
|
||||
ccache --zero-stats
|
||||
ccache --show-stats
|
||||
- &show-ccache-stats
|
||||
run:
|
||||
name: Show ccache statistics
|
||||
command: ccache --show-stats
|
||||
|
||||
|
||||
- &setup-llvm-symbolizer
|
||||
run:
|
||||
name: Environment Setup
|
||||
command: |
|
||||
# LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables
|
||||
ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer
|
||||
# We'll use tee to redirect stderr to a file so we can check for sanitiziation
|
||||
# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947
|
||||
sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run
|
||||
|
||||
|
||||
- &build-node
|
||||
run:
|
||||
name: Build node
|
||||
command: make node
|
||||
- &build-linux
|
||||
run:
|
||||
name: Build linux
|
||||
command: make linux
|
||||
- &build-benchmark
|
||||
run:
|
||||
name: Build benchmark
|
||||
command: make benchmark
|
||||
- &build-test
|
||||
run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- &build-qt-app
|
||||
run:
|
||||
name: Build qt-app
|
||||
command: make qt-app
|
||||
- &build-qt-test
|
||||
run:
|
||||
name: Build qt-test
|
||||
command: make qt-test
|
||||
|
||||
|
||||
- &run-node-tests
|
||||
run:
|
||||
name: Run node tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
logbt -- apitrace trace --api=egl -v make test-node
|
||||
- &run-unit-tests
|
||||
run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-test
|
||||
|
||||
|
||||
- &publish-node-package
|
||||
run:
|
||||
name: Publish node package
|
||||
when: on_success
|
||||
command: platform/node/scripts/after_success.sh
|
||||
|
||||
|
||||
- &upload-render-tests
|
||||
store_artifacts:
|
||||
path: mapbox-gl-js/test/integration/render-tests/index.html
|
||||
destination: render-tests
|
||||
|
||||
jobs:
|
||||
# ------------------------------------------------------------------------------
|
||||
clang-tidy:
|
||||
docker:
|
||||
- image: mbgl/ci:r4-linux-clang-3.9
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Debug
|
||||
branches:
|
||||
ignore:
|
||||
- master
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-clang-tidy
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- run:
|
||||
name: Fetch 'origin/master' branch
|
||||
command: git fetch origin master:refs/remotes/origin/master
|
||||
@@ -49,28 +140,23 @@ jobs:
|
||||
- run:
|
||||
name: Run Clang checks
|
||||
command: make check
|
||||
- save_cache:
|
||||
key: v1-clang-tidy
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *show-ccache-stats
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
android-debug-arm-v7:
|
||||
docker:
|
||||
- image: mbgl/ci:r4-android-ndk-r15-gradle
|
||||
- image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Debug
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-android-debug-arm-v7
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- run:
|
||||
name: Build libmapbox-gl.so for arm-v7
|
||||
command: make android-lib-arm-v7
|
||||
@@ -94,6 +180,8 @@ jobs:
|
||||
command: |
|
||||
echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml
|
||||
make android-ui-test-arm-v7
|
||||
- *show-ccache-stats
|
||||
- *save-cache
|
||||
- run:
|
||||
name: Log in to Google Cloud Platform
|
||||
shell: /bin/bash -euo pipefail
|
||||
@@ -122,11 +210,6 @@ jobs:
|
||||
xargs -0 -I '{}' ${ANDROID_NDK_HOME}/ndk-stack -sym build/android-arm-v7/Debug -dump {}
|
||||
|
||||
exit ${EXIT_CODE:-0}
|
||||
- save_cache:
|
||||
key: v1-android-debug-arm-v7
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- store_artifacts:
|
||||
path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
|
||||
destination: .
|
||||
@@ -134,19 +217,17 @@ jobs:
|
||||
# ------------------------------------------------------------------------------
|
||||
android-release-all:
|
||||
docker:
|
||||
- image: mbgl/ci:r4-android-ndk-r15-gradle
|
||||
- image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Release
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-android-release-all
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- run:
|
||||
name: Generate Maven credentials
|
||||
shell: /bin/bash -euo pipefail
|
||||
@@ -160,6 +241,8 @@ jobs:
|
||||
- run:
|
||||
name: Build package
|
||||
command: make apackage
|
||||
- *show-ccache-stats
|
||||
- *save-cache
|
||||
- store_artifacts:
|
||||
path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
|
||||
destination: .
|
||||
@@ -172,11 +255,7 @@ jobs:
|
||||
name: Publish to Maven
|
||||
command: |
|
||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then make run-android-upload-archives ; fi
|
||||
- save_cache:
|
||||
key: v1-android-release-all
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
node4-clang39-release:
|
||||
@@ -184,39 +263,23 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-3.9-node-4
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Release
|
||||
WITH_EGL: 1
|
||||
PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)")
|
||||
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-node4-clang39-release
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build node
|
||||
command: make node
|
||||
- run:
|
||||
name: Run node tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
logbt -- apitrace trace --api=egl -v make test-node
|
||||
- run:
|
||||
name: Publish node package
|
||||
when: on_success
|
||||
command: platform/node/scripts/after_success.sh
|
||||
- save_cache:
|
||||
key: v1-node4-clang39-release
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- store_artifacts:
|
||||
path: mapbox-gl-js/test/integration/render-tests/index.html
|
||||
destination: render-tests
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-node
|
||||
- *show-ccache-stats
|
||||
- *run-node-tests
|
||||
- *publish-node-package
|
||||
- *save-cache
|
||||
- *upload-render-tests
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
node6-clang39-release:
|
||||
@@ -224,39 +287,23 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-3.9
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Release
|
||||
WITH_EGL: 1
|
||||
PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)")
|
||||
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-node6-clang39-release
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build node
|
||||
command: make node
|
||||
- run:
|
||||
name: Run node tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
logbt -- apitrace trace --api=egl -v make test-node
|
||||
- run:
|
||||
name: Publish node package
|
||||
when: on_success
|
||||
command: platform/node/scripts/after_success.sh
|
||||
- save_cache:
|
||||
key: v1-node6-clang39-release
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- store_artifacts:
|
||||
path: mapbox-gl-js/test/integration/render-tests/index.html
|
||||
destination: render-tests
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-node
|
||||
- *show-ccache-stats
|
||||
- *run-node-tests
|
||||
- *publish-node-package
|
||||
- *save-cache
|
||||
- *upload-render-tests
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
node6-clang39-debug:
|
||||
@@ -264,39 +311,23 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-3.9
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)")
|
||||
PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true)
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-node6-clang39-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build node
|
||||
command: make node
|
||||
- run:
|
||||
name: Run node tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
logbt -- apitrace trace --api=egl -v make test-node
|
||||
- run:
|
||||
name: Publish node package
|
||||
when: on_success
|
||||
command: platform/node/scripts/after_success.sh
|
||||
- save_cache:
|
||||
key: v1-node6-clang39-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- store_artifacts:
|
||||
path: mapbox-gl-js/test/integration/render-tests/index.html
|
||||
destination: render-tests
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-node
|
||||
- *show-ccache-stats
|
||||
- *run-node-tests
|
||||
- *publish-node-package
|
||||
- *save-cache
|
||||
- *upload-render-tests
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang39-debug:
|
||||
@@ -304,37 +335,21 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-3.9
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-clang39-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build linux
|
||||
command: make linux
|
||||
- run:
|
||||
name: Build benchmark
|
||||
command: make benchmark
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-test
|
||||
- save_cache:
|
||||
key: v1-linux-clang39-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-linux
|
||||
- *build-benchmark
|
||||
- *build-test
|
||||
- *show-ccache-stats
|
||||
- *run-unit-tests
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang4-sanitize-address:
|
||||
@@ -342,44 +357,29 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-4
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Sanitize
|
||||
WITH_EGL: 1
|
||||
GDB: '' # Do not run with GDB
|
||||
CXXFLAGS: -fsanitize=address
|
||||
LDFLAGS: -fsanitize=address
|
||||
ASAN_OPTIONS: detect_leaks=0:color=always
|
||||
ASAN_OPTIONS: detect_leaks=0:color=always:print_summary=1
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-clang4-sanitize-address
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Environment Setup
|
||||
command: |
|
||||
# LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables
|
||||
ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer
|
||||
# We'll use tee to redirect stderr to a file so we can check for sanitiziation
|
||||
# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947
|
||||
sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *setup-llvm-symbolizer
|
||||
- *build-test
|
||||
- *show-ccache-stats
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
||||
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
||||
[ -z "$(sed -n '/^SUMMARY: AddressSanitizer:/p' sanitizer)" ]
|
||||
- save_cache:
|
||||
key: v1-linux-clang4-sanitize-address
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang4-sanitize-undefined:
|
||||
@@ -387,46 +387,29 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-4
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Sanitize
|
||||
WITH_EGL: 1
|
||||
GDB: '' # Do not run with GDB
|
||||
CXXFLAGS: -fsanitize=undefined
|
||||
LDFLAGS: -fsanitize=undefined
|
||||
UBSAN_OPTIONS: print_stacktrace=1:color=always
|
||||
UBSAN_OPTIONS: print_stacktrace=1:color=always:print_summary=1
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-clang4-sanitize-undefined
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Environment Setup
|
||||
command: |
|
||||
# LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables
|
||||
ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer
|
||||
# We'll use tee to redirect stderr to a file so we can check for sanitiziation
|
||||
# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947
|
||||
sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *setup-llvm-symbolizer
|
||||
- *build-test
|
||||
- *show-ccache-stats
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
||||
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
||||
# Uncomment this once we've fixed all thread behavior to make new thread behavior
|
||||
# fail on CircleCI.
|
||||
# [ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ]
|
||||
- save_cache:
|
||||
key: v1-linux-clang4-sanitize-address-undefined
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
|
||||
[ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ]
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-clang4-sanitize-thread:
|
||||
@@ -434,52 +417,37 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-clang-4
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
JOBS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 4
|
||||
BUILDTYPE: Sanitize
|
||||
WITH_EGL: 1
|
||||
GDB: '' # Do not run with GDB
|
||||
CXXFLAGS: -fsanitize=thread
|
||||
LDFLAGS: -fsanitize=thread
|
||||
TSAN_OPTIONS: color=always
|
||||
TSAN_OPTIONS: color=always:print_summary=1
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-clang4-sanitize-thread
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Environment Setup
|
||||
command: |
|
||||
# LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables
|
||||
ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer
|
||||
# We'll use tee to redirect stderr to a file so we can check for sanitiziation
|
||||
# https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947
|
||||
sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *setup-llvm-symbolizer
|
||||
- *build-test
|
||||
- *show-ccache-stats
|
||||
- *save-cache
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2)
|
||||
# Unfortunately, Google Test eats the status code, so we'll have to check the output.
|
||||
[ -z "$(sed -n '/^SUMMARY: ThreadSanitizer:/p' sanitizer)" ]
|
||||
- save_cache:
|
||||
key: v1-linux-clang4-sanitize-thread
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-gcc4.9-debug:
|
||||
docker:
|
||||
- image: mbgl/ci:r3-linux-gcc-4.9
|
||||
- image: mbgl/ci:r4-linux-gcc-4.9
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 2
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
@@ -487,32 +455,15 @@ jobs:
|
||||
DISPLAY: :0
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-gcc4.9-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build linux
|
||||
command: make linux
|
||||
- run:
|
||||
name: Build benchmark
|
||||
command: make benchmark
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
source scripts/circle_setup.sh
|
||||
mapbox_export_mesa_library_path
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-test
|
||||
- save_cache:
|
||||
key: v1-linux-gcc4.9-debug
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-linux
|
||||
- *build-benchmark
|
||||
- *build-test
|
||||
- *show-ccache-stats
|
||||
- *save-cache
|
||||
- *run-unit-tests
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-gcc5-debug-coverage:
|
||||
@@ -520,41 +471,25 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-gcc-5
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 2
|
||||
BUILDTYPE: Debug
|
||||
WITH_EGL: 1
|
||||
WITH_COVERAGE: 1
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-gcc5-debug-coverage
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build linux
|
||||
command: make linux
|
||||
- run:
|
||||
name: Build benchmark
|
||||
command: make benchmark
|
||||
- run:
|
||||
name: Build test
|
||||
command: make test
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-linux
|
||||
- *build-benchmark
|
||||
- *build-test
|
||||
- *run-unit-tests
|
||||
- run:
|
||||
name: Upload coverage results to coveralls
|
||||
command: |
|
||||
platform/linux/scripts/coveralls.sh
|
||||
- save_cache:
|
||||
key: v1-linux-gcc5-debug-coverage
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-gcc5-release-qt4:
|
||||
@@ -562,36 +497,26 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-gcc-5-qt-4
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 2 # OOM, causing the compiler to crash.
|
||||
BUILDTYPE: Release
|
||||
GTEST_OUTPUT: xml
|
||||
LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libjemalloc.so
|
||||
DISPLAY: 0
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-gcc5-release-qt4
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build qt-app
|
||||
command: make qt-app
|
||||
- run:
|
||||
name: Build qt-test
|
||||
command: make qt-test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-qt-app
|
||||
- *build-qt-test
|
||||
- *show-ccache-stats
|
||||
- run:
|
||||
name: Run memory-load tests
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
make run-qt-test-Memory.*:*.Load
|
||||
scripts/log_memory_benchmarks.sh test_detail.xml "Platform=Linux,Compiler=${_CC},Arch=$(uname -m)"
|
||||
- save_cache:
|
||||
key: v1-linux-gcc5-release-qt4
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *save-cache
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
linux-gcc5-release-qt5:
|
||||
@@ -599,27 +524,21 @@ jobs:
|
||||
- image: mbgl/ci:r4-linux-gcc-5-qt-5
|
||||
working_directory: /src
|
||||
environment:
|
||||
LIBSYSCONFCPUS: 6
|
||||
LIBSYSCONFCPUS: 4
|
||||
JOBS: 2 # OOM, causing the compiler to crash.
|
||||
BUILDTYPE: Release
|
||||
WITH_QT_I18N: 1
|
||||
DISPLAY: 0
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: v1-linux-gcc5-release-qt5
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- run:
|
||||
name: Build qt-app
|
||||
command: make qt-app
|
||||
- run:
|
||||
name: Build qt-test
|
||||
command: make qt-test
|
||||
- *generate-cache-key
|
||||
- *restore-cache
|
||||
- *reset-ccache-stats
|
||||
- *build-qt-app
|
||||
- *build-qt-test
|
||||
- run:
|
||||
name: Build qt-docs
|
||||
command: make qt-docs
|
||||
- *show-ccache-stats
|
||||
- run:
|
||||
name: Run valgrind-backed tests
|
||||
environment:
|
||||
@@ -627,8 +546,4 @@ jobs:
|
||||
command: |
|
||||
xvfb-run --server-args="-screen 0 1024x768x24" \
|
||||
scripts/valgrind.sh build/qt-linux-x86_64/Release/mbgl-test --gtest_filter=-*.Load --gtest_filter=-Memory.Vector
|
||||
- save_cache:
|
||||
key: v1-linux-gcc5-release-qt5
|
||||
paths:
|
||||
- node_modules
|
||||
- /root/.ccache
|
||||
- *save-cache
|
||||
|
||||
10
scripts/launch-c.in
Normal file
10
scripts/launch-c.in
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Xcode generator doesn't include the compiler as the
|
||||
# first argument, Ninja and Makefiles do. Handle both cases.
|
||||
if [ "$1" = "${CMAKE_C_COMPILER}" ] ; then
|
||||
shift
|
||||
fi
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "${C_LAUNCHER}" "${CMAKE_C_COMPILER}" "$@"
|
||||
10
scripts/launch-cxx.in
Normal file
10
scripts/launch-cxx.in
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Xcode generator doesn't include the compiler as the
|
||||
# first argument, Ninja and Makefiles do. Handle both cases.
|
||||
if [ "$1" = "${CMAKE_CXX_COMPILER}" ] ; then
|
||||
shift
|
||||
fi
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "${CXX_LAUNCHER}" "${CMAKE_CXX_COMPILER}" "$@"
|
||||
Reference in New Issue
Block a user