1dist: xenial 2language: cpp 3os: 4 - linux 5 - osx 6arch: 7 - amd64 8 - arm64 9 - ppc64le 10compiler: 11 - clang 12 - gcc 13osx_image: xcode9.4 14cache: 15 - ccache 16 17addons: 18 apt: 19 sources: 20 - ubuntu-toolchain-r-test 21 packages: 22 - libgflags-dev 23 - libbz2-dev 24 - liblz4-dev 25 - libsnappy-dev 26 - liblzma-dev # xv 27 - libzstd-dev 28 - zlib1g-dev 29 homebrew: 30 update: true 31 packages: 32 - ccache 33 - gflags 34 - lz4 35 - snappy 36 - xz 37 - zstd 38 39env: 40 - TEST_GROUP=platform_dependent # 16-18 minutes 41 - TEST_GROUP=1 # 33-35 minutes 42 - TEST_GROUP=2 # 18-20 minutes 43 - TEST_GROUP=3 # 20-22 minutes 44 - TEST_GROUP=4 # 12-14 minutes 45 # Run java tests 46 - JOB_NAME=java_test # 4-11 minutes 47 # Build ROCKSDB_LITE 48 - JOB_NAME=lite_build # 3-4 minutes 49 # Build examples 50 - JOB_NAME=examples # 5-7 minutes 51 - JOB_NAME=cmake # 3-5 minutes 52 - JOB_NAME=cmake-gcc8 # 3-5 minutes 53 - JOB_NAME=cmake-mingw # 3 minutes 54 55matrix: 56 exclude: 57 - os: osx 58 env: JOB_NAME=cmake-gcc8 59 - os: osx 60 env: JOB_NAME=cmake-mingw 61 - os: osx 62 arch: ppc64le 63 - os: osx 64 compiler: gcc 65 - os : linux 66 arch: arm64 67 env: JOB_NAME=cmake-mingw 68 - os: linux 69 arch: ppc64le 70 env: JOB_NAME=cmake-mingw 71 - os: linux 72 compiler: clang 73 # Exclude most osx, arm64 and ppc64le tests for pull requests, but build in branches 74 # NB: the cmake build is a partial java test 75 - if: type = pull_request 76 os: osx 77 env: TEST_GROUP=1 78 - if: type = pull_request 79 os : linux 80 arch: arm64 81 env: TEST_GROUP=1 82 - if: type = pull_request 83 os: linux 84 arch: ppc64le 85 env: TEST_GROUP=1 86 - if: type = pull_request 87 os: osx 88 env: TEST_GROUP=2 89 - if: type = pull_request 90 os : linux 91 arch: arm64 92 env: TEST_GROUP=2 93 - if: type = pull_request 94 os: linux 95 arch: ppc64le 96 env: TEST_GROUP=2 97 - if: type = pull_request 98 os: osx 99 env: TEST_GROUP=3 100 - if: type = pull_request 101 os : linux 102 arch: arm64 103 env: TEST_GROUP=3 104 - if: type = pull_request 105 os: linux 106 arch: ppc64le 107 env: TEST_GROUP=3 108 - if: type = pull_request 109 os: osx 110 env: TEST_GROUP=4 111 - if: type = pull_request 112 os : linux 113 arch: arm64 114 env: TEST_GROUP=4 115 - if: type = pull_request 116 os: linux 117 arch: ppc64le 118 env: TEST_GROUP=4 119 - if: type = pull_request 120 os : osx 121 env: JOB_NAME=java_test 122 - if: type = pull_request 123 os : linux 124 arch: arm64 125 env: JOB_NAME=java_test 126 - if: type = pull_request 127 os: linux 128 arch: ppc64le 129 env: JOB_NAME=java_test 130 - if: type = pull_request 131 os : osx 132 env: JOB_NAME=lite_build 133 - if: type = pull_request 134 os : linux 135 arch: arm64 136 env: JOB_NAME=lite_build 137 - if: type = pull_request 138 os: linux 139 arch: ppc64le 140 env: JOB_NAME=lite_build 141 - if: type = pull_request 142 os : osx 143 env: JOB_NAME=examples 144 - if: type = pull_request 145 os : linux 146 arch: arm64 147 env: JOB_NAME=examples 148 - if: type = pull_request 149 os: linux 150 arch: ppc64le 151 env: JOB_NAME=examples 152 - if: type = pull_request 153 os : linux 154 arch: arm64 155 env: JOB_NAME=cmake-gcc8 156 - if: type = pull_request 157 os: linux 158 arch: ppc64le 159 env: JOB_NAME=cmake-gcc8 160 161install: 162 - if [ "${TRAVIS_OS_NAME}" == osx ]; then 163 PATH=$PATH:/usr/local/opt/ccache/libexec; 164 fi 165 - if [ "${JOB_NAME}" == cmake-gcc8 ]; then 166 sudo apt-get install -y g++-8; 167 CC=gcc-8 && CXX=g++-8; 168 fi 169 - if [ "${JOB_NAME}" == cmake-mingw ]; then 170 sudo apt-get install -y mingw-w64 ; 171 fi 172 - if [[ "${JOB_NAME}" == cmake* ]] && [ "${TRAVIS_OS_NAME}" == linux ]; then 173 CMAKE_DIST_URL="https://rocksdb-deps.s3-us-west-2.amazonaws.com/cmake/cmake-3.14.5-Linux-$(uname -m).tar.bz2"; 174 TAR_OPT="--strip-components=1 -xj"; 175 if [ "aarch64" == "$(uname -m)" ]; then 176 sudo apt-get install -y libuv1 librhash0; 177 sudo apt-get upgrade -y libstdc++6; 178 fi; 179 mkdir cmake-dist && curl --silent --fail --show-error --location "${CMAKE_DIST_URL}" | tar -C cmake-dist ${TAR_OPT} && export PATH=$PWD/cmake-dist/bin:$PATH; 180 fi 181 - | 182 if [[ "${JOB_NAME}" == java_test || "${JOB_NAME}" == cmake* ]]; then 183 # Ensure JDK 8 184 if [ "${TRAVIS_OS_NAME}" == osx ]; then 185 brew tap AdoptOpenJDK/openjdk 186 brew cask install adoptopenjdk8 187 export JAVA_HOME=$(/usr/libexec/java_home) 188 else 189 sudo apt-get install -y openjdk-8-jdk 190 export PATH=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)/bin:$PATH 191 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture) 192 fi 193 echo "JAVA_HOME=${JAVA_HOME}" 194 which java && java -version 195 which javac && javac -version 196 fi 197 198before_script: 199 # Increase the maximum number of open file descriptors, since some tests use 200 # more FDs than the default limit. 201 - ulimit -n 8192 202 203script: 204 - ${CXX} --version 205 - if [ `command -v ccache` ]; then ccache -C; fi 206 - case $TEST_GROUP in 207 platform_dependent) 208 OPT=-DTRAVIS V=1 ROCKSDBTESTS_END=db_block_cache_test make -j4 all_but_some_tests check_some 209 ;; 210 1) 211 OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=db_block_cache_test ROCKSDBTESTS_END=db_iter_test make -j4 check_some 212 ;; 213 2) 214 OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" V=1 make -j4 tools && OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" V=1 ROCKSDBTESTS_START=db_iter_test ROCKSDBTESTS_END=options_file_test make -j4 check_some 215 ;; 216 3) 217 OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=options_file_test ROCKSDBTESTS_END=write_prepared_transaction_test make -j4 check_some 218 ;; 219 4) 220 OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=write_prepared_transaction_test make -j4 check_some 221 ;; 222 esac 223 - case $JOB_NAME in 224 java_test) 225 OPT=-DTRAVIS V=1 make rocksdbjava jtest 226 ;; 227 lite_build) 228 OPT='-DTRAVIS -DROCKSDB_LITE' V=1 make -j4 static_lib tools 229 ;; 230 examples) 231 OPT=-DTRAVIS V=1 make -j4 static_lib && cd examples && make -j4 232 ;; 233 cmake-mingw) 234 sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; 235 mkdir build && cd build && cmake -DJNI=1 -DWITH_GFLAGS=OFF .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows && make -j4 rocksdb rocksdbjni 236 ;; 237 cmake*) 238 mkdir build && cd build && cmake -DJNI=1 .. -DCMAKE_BUILD_TYPE=Release && make -j4 rocksdb rocksdbjni 239 ;; 240 esac 241notifications: 242 email: 243 - [email protected] 244