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 - JAVA7_HOME=/usr/lib/jvm/java-7-openjdk-amd64 27 - JAVA11_HOME=/usr/lib/jvm/java-11-openjdk-amd64 28 - CC=clang-5.0 29 - CXX=clang++-5.0 30 - PATH="$JAVA_HOME/bin:$PATH" 31 - TERM=dumb # to stop verbose build output 32 33 before_install: 34 - curl -L $ANDROID_TOOLS_URL -o $HOME/tools.zip 35 - unzip -q $HOME/tools.zip -d $ANDROID_HOME 36 # Accept all the license agreements 37 - yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses 38 # sdkmanager 26.1.1 produces an enormous amount of progress info 39 # Append tr '\r' '\n' | uniq to all the commands to suppress it 40 - $ANDROID_HOME/tools/bin/sdkmanager tools | tr '\r' '\n' | uniq 41 - $ANDROID_HOME/tools/bin/sdkmanager platform-tools | tr '\r' '\n' | uniq 42 - $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;28.0.3' | tr '\r' '\n' | uniq 43 - $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-26' | tr '\r' '\n' | uniq 44 - $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository' | tr '\r' '\n' | uniq 45 - $ANDROID_HOME/tools/bin/sdkmanager ndk-bundle | tr '\r' '\n' | uniq 46 - $ANDROID_HOME/tools/bin/sdkmanager 'cmake;3.10.2.4988404' | tr '\r' '\n' | uniq 47 - gimme 1.13 # Needed for BoringSSL build 48 - source ~/.gimme/envs/go1.13.env 49 50 addons: 51 apt: 52 sources: 53 - llvm-toolchain-xenial-5.0 54 - openjdk-r-java 55 - ubuntu-toolchain-r-test 56 packages: 57 - clang-5.0 58 - clang-format-5.0 # for style checks 59 - g++-multilib 60 - gcc-multilib 61 - libc6-dev-i386 62 - libc6-dev:i386 63 - linux-libc-dev 64 - ninja-build 65 - openjdk-7-jre # for running tests with Java 7 66 - openjdk-8-jdk # for building 67 - openjdk-11-jre # for running tests with Java 11 68 69before_cache: 70 - find $HOME/.gradle -name "*.lock" -exec rm {} \; 71 - rm -rf $HOME/.gradle/caches/[1-9]* 72 73before_script: 74 # Get Google Java Format 75 - 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 76 77 # get BoringSSL 78 - mkdir $BORINGSSL_HOME 79 - git clone --depth 1 https://boringssl.googlesource.com/boringssl $BORINGSSL_HOME 80 81 # Build BoringSSL for 64-bit 82 - mkdir $BORINGSSL_HOME/build64 && pushd $BORINGSSL_HOME/build64 83 - cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS=-Wa,--noexecstack -GNinja .. 84 - ninja 85 - popd 86 87 # Get git-clang-format 88 - if [ ! -d "$HOME/bin" ]; then mkdir $HOME/bin; fi 89 - curl -L https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/git-clang-format -o $HOME/bin/git-clang-format 90 - chmod 0755 $HOME/bin/git-clang-format 91 - export PATH="$HOME/bin:$PATH" 92 93 # We need this to find the merge-base 94 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 95 then 96 git fetch origin +refs/heads/${TRAVIS_BRANCH}:refs/remotes/origin/${TRAVIS_BRANCH}; 97 fi 98 99script: 100 # MacOS (BSD) xargs is missing some nice features that make this easy, so skip it. 101 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 102 then 103 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; } 104 fi 105 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 106 then 107 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; } 108 fi 109 110 - ./gradlew build -PcheckErrorQueue 111 112 # Also test with Java 7 and 11 on linux 113 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 114 then 115 ${JAVA7_HOME}/bin/java -version; 116 fi 117 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 118 then 119 ./gradlew check -DjavaExecutable64=${JAVA7_HOME}/bin/java -PcheckErrorQueue; 120 fi 121 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 122 then 123 ./gradlew check -DjavaExecutable64=${JAVA11_HOME}/bin/java -PcheckErrorQueue; 124 fi 125 126after_script: 127 - "[ -f android/build/outputs/lint-results-debug.xml ] && cat android/build/outputs/lint-results-debug.xml" 128