matrix: | |
include: | |
# ICU4C Docs Build | |
# TODO: publish the latest built docs from master on GitHub pages. | |
# See https://gist.github.com/vidavidorra/548ffbcdae99d752da02 for ideas. | |
- name: "c: docs" | |
dist: xenial | |
language: cpp | |
addons: | |
apt: | |
update: true | |
packages: | |
- doxygen | |
before_script: | |
- cd icu4c/source | |
- ./runConfigureICU Linux --disable-renaming | |
script: | |
# fail if 'warning:' appears in doxygen's output, but ignore warnings from file Doxyfile. | |
# The Doxygen version from Travis is down-rev, and doesn't recognize some options | |
# in the Doxyfile config file. | |
# Regex note: (?! ... ) is a negative lookahead. Succeed if the pattern is not present. | |
- set +o pipefail && make doc 2>&1 | tee doxygen.log && ( ! grep -P 'warning:(?! .* file Doxyfile)' doxygen.log ) | |
- name: "j" | |
language: java | |
addons: | |
apt: | |
packages: | |
- ant | |
- ant-optional | |
env: BUILD=ICU4J | |
before_script: | |
- cd icu4j | |
- ant init | |
script: | |
- ant check | |
after_failure: | |
- cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;` | |
# gcc debug build. | |
# Includes dependency checker. | |
# Note - the dependency checker needs to be run on both a debug and an optimized build. | |
# This one (gcc) for debug, and linux clang (below) for optimized. | |
# | |
# Test both out-of-source and in-source builds. This one (gcc) for out-of-source, | |
# and linux clang (below) for in-source. | |
# | |
# Invokes test/hdrtst to check public headers compliance. | |
- name: "c: linux gcc" | |
dist: xenial | |
language: cpp | |
compiler: gcc | |
env: PREFIX=/tmp/icu-prefix | |
before_script: | |
- mkdir build | |
- cd build | |
- ../icu4c/source/runConfigureICU --enable-debug --disable-release Linux --prefix="${PREFIX}" --enable-tracing | |
- make -j2 | |
script: | |
- make -j2 check | |
- ( cd ../icu4c/source/test/depstest && ./depstest.py ../../../../build/ ) | |
- make install | |
- PATH="${PREFIX}/bin:$PATH" make -C test/hdrtst check | |
# clang release build with some options to enforce useful constraints. | |
# Includes dependency checker on an in-source, optimized build. | |
# Includes checking @draft etc. API tags vs. ifndef guards like | |
# U_HIDE_DRAFT_API and U_FORCE_HIDE_DRAFT_API. | |
# (FORCE guards make this tool pass but won't compile to working code. | |
# See the testtagsguards.sh script for details.) | |
- name: "c: linux clang" | |
dist: xenial | |
language: cpp | |
env: | |
- CPPFLAGS="-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1" | |
- CFLAGS="-Wimplicit-fallthrough" | |
- CXXFLAGS="-Wimplicit-fallthrough" | |
compiler: clang | |
before_script: | |
- cd icu4c/source | |
- ./runConfigureICU Linux | |
- make -j2 | |
script: | |
- make -j2 check | |
- ( cd test/depstest && python3 depstest.py ../../../source/ ) | |
- ( cd .. && source/test/hdrtst/testtagsguards.sh ) | |
- name: "c: osx clang" | |
language: cpp | |
env: BUILD=MACINTOSH | |
os: osx | |
compiler: clang | |
# Use the macOS target to test Python 2 in data build script. | |
# TODO(ICU-20301): Change this back to the default Python version 3. | |
script: cd icu4c/source && PYTHON=python2 ./runConfigureICU MacOSX && make -j2 check | |
# Clang Linux with address sanitizer. | |
# Note - the 'sudo: true' option forces Travis to use a Virtual machine on GCE instead of | |
# a Container on EC2 or Packet. Asan builds of ICU fail otherwise. | |
- name: "c: linux asan" | |
language: cpp | |
env: | |
- CPPFLAGS="-fsanitize=address" | |
- LDFLAGS="-fsanitize=address" | |
os: linux | |
dist: xenial | |
sudo: true | |
compiler: clang | |
before_script: | |
- cd icu4c/source | |
- ./runConfigureICU --enable-debug --disable-release Linux --disable-renaming --enable-tracing | |
- make -j2 | |
script: | |
- make -j2 check | |
# Clang Linux with thread sanitizer. | |
# | |
- name: "c: linux tsan" | |
language: cpp | |
env: | |
- INTLTEST_OPTS="utility/MultithreadTest" | |
- CPPFLAGS="-fsanitize=thread" | |
- LDFLAGS=-fsanitize=thread | |
os: linux | |
dist: xenial | |
sudo: true | |
compiler: clang | |
script: | |
- cd icu4c/source | |
- ./runConfigureICU --enable-debug --disable-release Linux --disable-renaming | |
- make -j2 | |
- make -j2 -C test | |
- make -j2 -C test/intltest check | |
# copyright scan / future linter | |
- name: "lint" | |
script: | |
- perl tools/scripts/cpysearch/cpyscan.pl | |
- name: "j: icu4c release tools" | |
language: "java" | |
script: | |
- mvn -f tools/release/java/pom.xml package dependency:analyze | |
cache: | |
directories: | |
- $HOME/.m2 |