ICU-21104 Add build bots using Ubuntu 18.04 with C++14
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.
diff --git a/.ci-builds/.azure-pipelines.yml b/.ci-builds/.azure-pipelines.yml
index c992e14..d614dba 100644
--- a/.ci-builds/.azure-pipelines.yml
+++ b/.ci-builds/.azure-pipelines.yml
@@ -6,7 +6,7 @@
displayName: 'J: Linux OpenJDK (Ubuntu 16.04)'
timeoutInMinutes: 20
pool:
- vmImage: 'Ubuntu 16.04'
+ vmImage: 'ubuntu-16.04'
demands: ant
steps:
- checkout: self
@@ -26,7 +26,7 @@
displayName: 'C: Linux Clang (Ubuntu 16.04)'
timeoutInMinutes: 30
pool:
- vmImage: 'Ubuntu 16.04'
+ vmImage: 'ubuntu-16.04'
steps:
- checkout: self
lfs: true
@@ -42,7 +42,7 @@
displayName: 'C: Linux Clang WarningsAsErrors (Ubuntu 16.04)'
timeoutInMinutes: 30
pool:
- vmImage: 'Ubuntu 16.04'
+ vmImage: 'ubuntu-16.04'
steps:
- checkout: self
lfs: true
@@ -58,7 +58,7 @@
displayName: 'C: Linux Clang DataFilter (Ubuntu 16.04)'
timeoutInMinutes: 30
pool:
- vmImage: 'Ubuntu 16.04'
+ vmImage: 'ubuntu-16.04'
steps:
- checkout: self
lfs: true
@@ -74,6 +74,22 @@
CC: clang
CXX: clang++
#-------------------------------------------------------------------------
+- job: ICU4C_Clang_Cpp14_Debug_Ubuntu_1804
+ displayName: 'C: Linux Clang C++14 Debug (Ubuntu 18.04)'
+ timeoutInMinutes: 30
+ pool:
+ vmImage: 'ubuntu-18.04'
+ steps:
+ - checkout: self
+ lfs: true
+ fetchDepth: 1
+ - script: |
+ export CXXFLAGS="-std=c++14 -Winvalid-constexpr" && cd icu4c/source && ./runConfigureICU --enable-debug --disable-release Linux --disable-layout --disable-layoutex && make -j2 check
+ displayName: 'Build and Test C++14'
+ env:
+ CC: clang
+ CXX: clang++
+#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x64_Release_Distrelease
displayName: 'C: MSVC 64-bit Release (VS 2017) + Distrelease'
timeoutInMinutes: 30
diff --git a/.travis.yml b/.travis.yml
index c068b5a..e2df4e2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -67,7 +67,7 @@
#
# Invokes test/hdrtst to check public headers compliance.
- - name: "c: linux gcc"
+ - name: "c: linux gcc (debug)"
dist: xenial
language: cpp
compiler: gcc
@@ -118,10 +118,27 @@
# 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"
+ - name: "c: linux asan (debug)"
language: cpp
env:
- CPPFLAGS="-fsanitize=address"
@@ -140,7 +157,7 @@
# Clang Linux with thread sanitizer.
#
- - name: "c: linux tsan"
+ - name: "c: linux tsan (debug)"
language: cpp
env:
- INTLTEST_OPTS="utility/MultithreadTest"