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 {} \;` - name: "c: linux gcc 8 Wextra" dist: bionic language: cpp addons: apt: packages: - g++-8 env: PREFIX=/tmp/icu-prefix CC=gcc-8 CXX=g++-8 CXXFLAGS="-Wextra" before_script: - mkdir build - cd build - ../icu4c/source/runConfigureICU Linux --disable-debug --enable-release --disable-layoutex --prefix="${PREFIX}" || (tail -100 config.log ; false) - make -j2 script: - make -j2 check - make install - PATH="${PREFIX}/bin:$PATH" make -C test/hdrtst check # 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_install: - sudo apt-get -y install doxygen # for make dist 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 ) - make dist # not sure if this is -j safe everywhere. - 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