blob: 5d955b6dc037bbb6c422b285cb0bdb09a50d73b9 [file] [log] [blame]
sudo: required
dist: trusty
language: c
os:
- linux
- osx
compiler:
- gcc
- clang
services:
- docker
env:
global:
- COVERITY_SCAN_BUILD_COMMAND="make"
- COVERITY_SCAN_PROJECT_NAME="Apache Celix"
- COVERITY_SCAN_NOTIFICATION_EMAIL="bpetri@apache.org"
- COVERITY_SCAN_BRANCH_PATTERN="develop"
- COVERITY_SCAN_TOKEN="iomLSuaE8KOZLDog-KK7Ug"
- COVERITY_SCAN_BUILD_URL="https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh"
- COVERITY_SCAN_BUILD="curl -s $COVERITY_SCAN_BUILD_URL | sed 's/https:\/\/scan.coverity.com\/builds/https:\/\/scan.coverity.com\/builds?project=Apache+Celix/g' | bash"
- COVERITY_SCAN_ALWAYS_ON="n"
matrix:
include:
- os: linux
compiler: gcc
env: SANITIZE=1
- os: linux
compiler: clang
env: ANDROID=1
before_install:
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ -z "$ANDROID" ]; then sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && sudo apt-get -qq update && sudo apt-get install -y uuid-dev libxml2-dev lcov libffi-dev gcc-4.8 g++-4.8; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew uninstall cmake; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update && brew install lcov libffi cmake && brew link --force libffi; fi
before_script:
- wget https://github.com/cpputest/cpputest.github.io/blob/master/releases/cpputest-3.7.1.tar.gz?raw=true -O /tmp/cpputest.tar.gz
- tar -xzvf /tmp/cpputest.tar.gz -C /tmp
- if [ "$CC" = "clang" ]; then export CXX="clang++"; fi && cd /tmp/cpputest-3.7.1 && ./configure --prefix=/usr/local && make && sudo make install && cd -
- cd /tmp/cpputest-3.7.1 && ./configure --prefix=/usr/local && make && sudo make install && cd -
- git clone https://github.com/akheron/jansson.git jansson-build
- cd jansson-build && git checkout 2.7
- cmake -DJANSSON_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local . && make
- sudo make install
- cd -
- mkdir build install
- export BUILD_OPTIONS=" \
-DBUILD_CONFIG_ADMIN=OFF \
-DBUILD_RSA_REMOTE_SERVICE_ADMIN_DFI=ON \
-DBUILD_DEPLOYMENT_ADMIN=ON \
-DBUILD_DEPENDENCY_MANAGER=ON \
-DBUILD_EXAMPLES=ON -DBUILD_LOG_SERVICE=ON \
-DBUILD_LOG_WRITER=ON \
-DBUILD_REMOTE_SERVICE_ADMIN=ON \
-DBUILD_RSA_DISCOVERY_CONFIGURED=ON \
-DBUILD_RSA_DISCOVERY_ETCD=ON \
-DBUILD_RSA_EXAMPLES=ON \
-DBUILD_RSA_REMOTE_SERVICE_ADMIN_HTTP=ON \
-DBUILD_REMOTE_SHELL=ON \
-DBUILD_SHELL=ON \
-DBUILD_SHELL_TUI=ON -DBUILD_DEVICE_ACCESS=ON \
-DBUILD_DEVICE_ACCESS_EXAMPLE=ON "
- export BUILD_OPTIONS_LINUX=" \
-DBUILD_RSA_REMOTE_SERVICE_ADMIN_SHM=ON \
-DBUILD_RSA_DISCOVERY_SHM=ON "
- export BUILD_OPTIONS_OSX=" \
-DBUILD_RSA_REMOTE_SERVICE_ADMIN_SHM=OFF \
-DBUILD_RSA_DISCOVERY_SHM=OFF "
- export BUILD_OPTIONS_SANITIZE=" -DENABLE_ADDRESS_SANITIZER=ON"
script:
#- if [ "$SANITIZE" == 1 ]; then export CC=/usr/bin/gcc-4.8 CXX=/usr/bin/g++-4.8 CFLAGS="-lasan -fsanitize=address" CXXFLAGS="-lasan -fsanitize=address" ASAN_OPTIONS="symbolize=1" ASAN_SYMBOLIZER_PATH="/usr/local/clang-3.4/bin/llvm-symbolizer"; fi
- if [ "$SANITIZE" == 1 ]; then export BUILD_OPTIONS="${BUILD_OPTIONS} ${BUILD_OPTIONS_SANITIZE}"; fi
# the following setup is broken:
# RSA_DISCOVERY_SHM is only working on linux, but both compilers (see CELIX-277)
# RSA_SHM is only working on linux, but both compilers (see CELIX-277)
- cd build
- if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then export BUILD_OPTS="${BUILD_OPTS} -DENABLE_CODE_COVERAGE=ON"; fi
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ -z "$ANDROID" ]; then cmake ${BUILD_OPTIONS} ${BUILD_OPTIONS_LINUX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then cmake ${BUILD_OPTIONS} ${BUILD_OPTIONS_OSX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON -DFFI_LIBRARY=/usr/local/opt/libffi/lib/libffi.dylib ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi
- if [ -z "$ANDROID" ]; then make all && make deploy && make install; else cd .. && docker build -t celixandroid - < Dockerfile.Android ; fi
- if [ -z "$ANDROID" ]; then export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH:`pwd`/utils:`pwd`/framework:`pwd`/dfi && make test ARGS="-V"; else docker run celixandroid; fi
after_success:
- if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then
cd ${TRAVIS_BUILD_DIR}/build;
gem install coveralls-lcov &&
make coverage &&
lcx="lcov --output-file=coverage.info " && for i in `find . -name "*.info.cleaned"`; do lcx+=" --add-tracefile=$i"; done && $lcx && coveralls-lcov --repo-token=9dpeTAjiGoQU5hgXFe0ezk65iu40oc3WY coverage.info;
if [ $(( $TRAVIS_BUILD_NUMBER % 5 )) -eq 0 -o ${COVERITY_SCAN_ALWAYS_ON} = "y" ]; then make clean & eval "$COVERITY_SCAN_BUILD"; fi
fi;