language: cpp dist: bionic git: depth: false addons: apt: packages: - ninja-build - qt5-default - qtmultimedia5-dev - valgrind - g++-8 env: global: - DESTDIR="$TRAVIS_BUILD_DIR/install" - CMAKE_ARGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=$DESTDIR/usr" - VALGRIND="valgrind --tool=memcheck --leak-check=yes --gen-suppressions=all --suppressions=tests/.valgrind.supp $VALGRIND_OPTIONS" matrix: # TODO: consider parallel execution, this thing takes an hour to run include: - os: linux compiler: gcc - os: linux compiler: clang - os: osx osx_image: xcode10.1 env: [ 'E2EE=1', 'VALGRIND=' ] addons: homebrew: update: true packages: - qt5 before_cache: - brew cleanup cache: directories: - $HOME/Library/Caches/Homebrew # Check a few more advanced configurations - os: linux compiler: gcc env: [ E2EE=1, UPDATE_API=1 ] # Check UPDATE_API with one of fatter options - os: linux compiler: clang env: [ E2EE=1 ] - os: linux compiler: gcc env: [ E2EE=1 ] before_install: - if [ -f "$(which ninja)" ]; then export CMAKE_ARGS="$CMAKE_ARGS -GNinja"; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export PATH=/usr/local/opt/qt/bin:$PATH; fi # The recent GTAD uses std::filesystem that's not available in stock bionic - | if [ -n "$UPDATE_API" ]; then export CC=gcc-8 CXX=g++-8 export CMAKE_UPDATE_API_ARGS="-DMATRIX_DOC_PATH=../matrix-doc -DGTAD_PATH=../gtad/gtad" fi - | if [ -n "$E2EE" ]; then export CMAKE_E2EE_ARGS="-DQuotient_ENABLE_E2EE=ON" export QMAKE_E2EE_ARGS='"DEFINES += Quotient_E2EE_ENABLED USE_INTREE_LIBQOLM" "INCLUDEPATH += olm/include" "LIBS += -Lolm/build"' export LIB_PATH_E2EE=olm/build fi # RPM spec-style: swallow a command with default parameters into an alias # and add/override parameters further in the code if/as necessary - shopt -s expand_aliases - alias _cmake_config='cmake $CMAKE_ARGS . -Bbuild' - alias _cmake_build='cmake --build build' install: - pushd .. # Go out of libQuotient source tree - | if [ -n "$E2EE" ]; then git clone https://gitlab.matrix.org/matrix-org/olm.git pushd olm _cmake_config _cmake_build --target install popd fi - | if [ -n "$UPDATE_API" ]; then git clone https://github.com/matrix-org/matrix-doc.git git clone --recursive https://github.com/KitsuneRal/gtad.git pushd gtad cmake $CMAKE_ARGS . cmake --build . popd fi - popd # back to libQuotient source tree before_script: - _cmake_config $CMAKE_UPDATE_API_ARGS $CMAKE_E2EE_ARGS - if [ -n "$UPDATE_API" ]; then _cmake_build --target update-api; fi script: - _cmake_build --target install # Build quotest with the installed libQuotient - cmake $CMAKE_ARGS tests -Bbuild-test - cmake --build build-test --target all # Build with qmake - qmake -Wall quotest.pro "CONFIG += debug" "CONFIG -= app_bundle" "QMAKE_CC = $CC" "QMAKE_CXX = $CXX" -- $QMAKE_E2EE_ARGS - make all # Run the qmake-compiled quotest under valgrind - if [ "$TEST_USER" != "" ]; then LD_LIBRARY_PATH="$LIB_PATH_E2EE" $VALGRIND ./quotest "$TEST_USER" "$TEST_PWD" quotest-travis '#quotest:matrix.org' "Travis CI job $TRAVIS_JOB_NUMBER"; fi notifications: webhooks: urls: - "https://scalar.vector.im/api/neb/services/hooks/dHJhdmlzLWNpLyU0MGtpdHN1bmUlM0FtYXRyaXgub3JnLyUyMVBDelV0eHRPalV5U3hTZWxvZiUzQW1hdHJpeC5vcmc" on_success: change # always|never|change on_failure: always on_start: never