681a7aa451
This change adds an Azure build bot that builds using Clang on Ubuntu 18.04 with C++14 in debug mode, and a build bot on Travis that builds using GCC with C++14. Note: The Ubuntu 18.04 image doesn't have HarfBuzz, so we need to disable building the layout engine.
189 lines
6.2 KiB
YAML
189 lines
6.2 KiB
YAML
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 (debug)"
|
|
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
|
|
|
|
# out of source gcc 8 build with c++14, runs icuinfo
|
|
- name: "c: linux gcc 8 c++14"
|
|
dist: bionic
|
|
language: cpp
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- g++-8
|
|
env: PREFIX=/tmp/icu-prefix CC=gcc-8 CXX=g++-8 CXXFLAGS="-std=c++14"
|
|
before_script:
|
|
- mkdir build && cd build
|
|
- ../icu4c/source/runConfigureICU Linux --disable-layout --disable-layoutex --prefix="${PREFIX}"
|
|
- make -j2
|
|
script:
|
|
- make -j2 check && make install
|
|
- cd "${PREFIX}/bin" && LD_LIBRARY_PATH=../lib ./icuinfo
|
|
|
|
# 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 (debug)"
|
|
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 (debug)"
|
|
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
|