• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1language: android
2
3env:
4  global:
5    - BORINGSSL_HOME="$HOME/boringssl"
6    - CC=clang
7    - CXX=clang++
8    - GOOGLE_JAVA_FORMAT_VERSION=1.1
9
10cache:
11  directories:
12    - $HOME/.gradle/caches/
13    - $HOME/.gradle/wrapper/dists/
14
15matrix:
16  include:
17    ###
18    ### Linux build is the only platform that builds Android here.
19    ###
20    - os: linux
21      jdk: oraclejdk8
22      sudo: false
23
24      env:
25        - ANDROID_TOOLS_URL="https://dl.google.com/android/repository/tools_r25.2.3-linux.zip"
26        - ANDROID_HOME="$HOME/android-sdk-linux"
27        - ANDROID_NDK_HOME="$ANDROID_HOME/ndk-bundle"
28
29      before_install:
30        - curl -L $ANDROID_TOOLS_URL -o $HOME/tools.zip
31        - unzip -q $HOME/tools.zip -d $ANDROID_HOME
32        - mkdir $ANDROID_HOME/licenses
33        - echo -ne "\n8933bad161af4178b1185d1a37fbf41ea5269c55" >> $ANDROID_HOME/licenses/android-sdk-license
34        - echo -ne "\n84831b9409646a918e30573bab4c9c91346d8abd\n504667f4c0de7af1a06de9f4b1727b84351f2910" >> $ANDROID_HOME/licenses/android-sdk-preview-license
35        - $ANDROID_HOME/tools/bin/sdkmanager tools
36        - $ANDROID_HOME/tools/bin/sdkmanager platform-tools
37        - $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;25.0.0'
38        - $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-25'
39        - $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository'
40        - $ANDROID_HOME/tools/bin/sdkmanager --channel=1 ndk-bundle
41        - $ANDROID_HOME/tools/bin/sdkmanager 'cmake;3.6.4111459'
42
43      addons:
44        apt:
45          sources:
46            - kalakris-cmake
47            - llvm-toolchain-precise-3.8  # for clang-format-3.8
48            - ubuntu-toolchain-r-test
49          packages:
50            - clang
51            - clang-format-3.8  # for style checks
52            - cmake
53            - g++-multilib
54            - gcc-multilib
55            - libc6-dev-i386
56            - libc6-dev:i386
57            - ninja-build
58
59    ###
60    ### MacOS build only does x86-64.
61    ###
62    - os: osx
63      osx_image: xcode8
64      before_install:
65        - brew update
66        - brew install ninja
67        - export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
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  - mkdir $HOME/bin
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  # TODO(nathanmittler): Need to figure out how to make 32-bit builds work
94  # Build BoringSSL for 32-bit
95  # - if [[ "$TRAVIS_OS_NAME" == "linux" ]];
96  #  then
97  #      mkdir $BORINGSSL_HOME/build32;
98  #      pushd $BORINGSSL_HOME/build32;
99  #      cmake -DCMAKE_TOOLCHAIN_FILE=../util/32-bit-toolchain.cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS="-Wa,--noexecstack -m32 -msse2" -GNinja ..;
100  #      ninja;
101  #      popd;
102  #  fi
103
104  # We need this to find the merge-base
105  - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]];
106    then
107        git fetch origin +refs/heads/${TRAVIS_BRANCH}:refs/remotes/origin/${TRAVIS_BRANCH};
108    fi
109
110script:
111  # MacOS (BSD) xargs is missing some nice features that make this easy, so skip it.
112  - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]];
113    then
114        git rev-list $(git merge-base HEAD origin/master)..HEAD | xargs -i git clang-format --binary=$(which clang-format-3.8) --style=file --diff {}^ {} | ( git apply; true ) && git diff --exit-code || { git reset --hard; false; }
115    fi
116  - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]];
117    then
118        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; }
119    fi
120
121  - ./gradlew build
122
123after_script:
124  - "[ -f android/build/outputs/lint-results-debug.xml ] && cat android/build/outputs/lint-results-debug.xml"
125