1language: minimal 2 3env: 4 global: 5 - BORINGSSL_HOME="$HOME/boringssl" 6 - CXXFLAGS="-std=c++11" 7 - GOOGLE_JAVA_FORMAT_VERSION=1.1 8 9cache: 10 directories: 11 - $HOME/.gradle/caches/ 12 - $HOME/.gradle/wrapper/dists/ 13 14matrix: 15 include: 16 ### 17 ### Linux build is the only platform that builds Android here. 18 ### 19 - os: linux 20 dist: xenial 21 22 env: 23 - ANDROID_TOOLS_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" 24 - ANDROID_HOME="$HOME/android-sdk-linux" 25 - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 26 - JAVA11_HOME=/usr/lib/jvm/java-11-openjdk-amd64 27 - CC=clang-5.0 28 - CXX=clang++-5.0 29 - PATH="$JAVA_HOME/bin:$PATH" 30 - TERM=dumb # to stop verbose build output 31 32 before_install: 33 - curl -L $ANDROID_TOOLS_URL -o $HOME/tools.zip 34 - unzip -q $HOME/tools.zip -d $ANDROID_HOME 35 # Accept all the license agreements 36 - yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses 37 # sdkmanager 26.1.1 produces an enormous amount of progress info 38 # Append tr '\r' '\n' | uniq to all the commands to suppress it 39 - $ANDROID_HOME/tools/bin/sdkmanager tools | tr '\r' '\n' | uniq 40 - $ANDROID_HOME/tools/bin/sdkmanager platform-tools | tr '\r' '\n' | uniq 41 - $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;28.0.3' | tr '\r' '\n' | uniq 42 - $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-26' | tr '\r' '\n' | uniq 43 - $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository' | tr '\r' '\n' | uniq 44 - $ANDROID_HOME/tools/bin/sdkmanager 'ndk;21.3.6528147' | tr '\r' '\n' | uniq 45 - $ANDROID_HOME/tools/bin/sdkmanager 'cmake;3.10.2.4988404' | tr '\r' '\n' | uniq 46 - gimme 1.13 # Needed for BoringSSL build 47 - source ~/.gimme/envs/go1.13.env 48 49 addons: 50 apt: 51 sources: 52 - llvm-toolchain-xenial-5.0 53 - openjdk-r-java 54 - ubuntu-toolchain-r-test 55 packages: 56 - clang-5.0 57 - clang-format-5.0 # for style checks 58 - g++-multilib 59 - gcc-multilib 60 - libc6-dev-i386 61 - libc6-dev:i386 62 - linux-libc-dev 63 - ninja-build 64 - openjdk-8-jdk # for building 65 - openjdk-11-jre # for running tests with Java 11 66 67before_cache: 68 - find $HOME/.gradle -name "*.lock" -exec rm {} \; 69 - rm -rf $HOME/.gradle/caches/[1-9]* 70 71before_script: 72 # Get Google Java Format 73 - curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.1/google-java-format-${GOOGLE_JAVA_FORMAT_VERSION}-all-deps.jar -o $HOME/gjf.jar 74 75 # get BoringSSL 76 - mkdir $BORINGSSL_HOME 77 - git clone --depth 1 https://boringssl.googlesource.com/boringssl $BORINGSSL_HOME 78 79 # Build BoringSSL for 64-bit 80 - mkdir $BORINGSSL_HOME/build64 && pushd $BORINGSSL_HOME/build64 81 - cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS=-Wa,--noexecstack -GNinja .. 82 - ninja 83 - popd 84 85 # Get git-clang-format 86 - if [ ! -d "$HOME/bin" ]; then mkdir $HOME/bin; fi 87 - curl -L https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/git-clang-format -o $HOME/bin/git-clang-format 88 - chmod 0755 $HOME/bin/git-clang-format 89 - export PATH="$HOME/bin:$PATH" 90 91 # We need this to find the merge-base 92 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 93 then 94 git fetch origin +refs/heads/${TRAVIS_BRANCH}:refs/remotes/origin/${TRAVIS_BRANCH}; 95 fi 96 97script: 98 # MacOS (BSD) xargs is missing some nice features that make this easy, so skip it. 99 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 100 then 101 git rev-list $(git merge-base HEAD origin/master)..HEAD | xargs -i git clang-format --binary=$(which clang-format-5.0) --style=file --diff {}^ {} | ( git apply; true ) && git diff --exit-code || { git reset --hard; false; } 102 fi 103 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 104 then 105 git rev-list $(git merge-base HEAD origin/master)..HEAD | xargs -i git diff-tree --no-commit-id --name-only -r {} | grep -E '\.java$' | xargs -r git ls-files | xargs -r java -jar $HOME/gjf.jar -a -i --fix-imports-only && git diff --exit-code || { git reset --hard; false; } 106 fi 107 108 - ./gradlew build -PcheckErrorQueue 109 110 # Also test with Java 11 on linux 111 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 112 then 113 ./gradlew check -DjavaExecutable64=${JAVA11_HOME}/bin/java -PcheckErrorQueue; 114 fi 115 116after_script: 117 - "[ -f android/build/outputs/lint-results-debug.xml ] && cat android/build/outputs/lint-results-debug.xml" 118