blob: 9982be3035fd2cc734f8a00c7af694a195c90d09 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
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
|