Home | History | Annotate | Download | only in conscrypt
      1 language: android
      2 
      3 env:
      4   global:
      5     - BORINGSSL_HOME="$HOME/boringssl"
      6     - CC=clang
      7     - CXX=clang++
      8     - GOOGLE_JAVA_FORMAT_VERSION=1.1
      9 
     10 cache:
     11   directories:
     12     - $HOME/.gradle/caches/
     13     - $HOME/.gradle/wrapper/dists/
     14 
     15 matrix:
     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.3155560'
     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 
     69 before_cache:
     70   - find $HOME/.gradle -name "*.lock" -exec rm {} \;
     71   - rm -rf $HOME/.gradle/caches/[1-9]*
     72 
     73 before_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 
    110 script:
    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 
    123 after_script:
    124   - "[ -f android/build/outputs/lint-results-debug.xml ] && cat android/build/outputs/lint-results-debug.xml"
    125