From ff018a9a5dcb2c5a74056f2fb59262779cc8de44 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 13 May 2020 16:51:31 -0700 Subject: [PATCH] Improve Travis coverage. Our official builds use clang-3.4 (for macOS) and clang-3.8 for Linux. Linux uses libstdc++-4.9. Make sure these two compilers are being tested and that libstdc++-4.9 is being used for STL. Add a macOS builder to get coverage there. This will use a newer clang than we actually use, but as opposed to the linux builder will test the platform-specific bits. Finally, use the latest GCC and clang versions from a bionic image, so we have some coverage of a popular distribution. --- .travis.yml | 128 ++++++++++++++++------------------------- AMBuildScript | 6 +- tools/checkout-deps.sh | 2 +- 3 files changed, 54 insertions(+), 82 deletions(-) diff --git a/.travis.yml b/.travis.yml index 83c5b2cf..8459a9df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,110 +3,80 @@ git: sudo: false language: cpp -os: linux -dist: trusty -addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-3.9 - - llvm-toolchain-trusty-4.0 - - llvm-toolchain-trusty-5.0 - packages: - - lib32stdc++6 - - lib32z1-dev - - libc6-dev-i386 - - linux-libc-dev - - g++-multilib -# - clang-3.6 -# - clang-3.8 -# - clang-4.0 -# - clang-5.0 -# - g++-6 -# - g++-6-multilib - - clang-3.9 - - g++-4.8-multilib - - g++-4.8 - - g++-4.9-multilib - - g++-4.9 - - g++-5-multilib - - g++-5 - - g++-7-multilib - - g++-7 - cache: - directories: - - ../mysql-5.0 -env: - - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9" - - MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8" - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" matrix: fast_finish: true include: - os: linux + dist: trusty sudo: false language: cpp addons: apt: - packages: ['clang-3.6', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] + sources: + - ubuntu-toolchain-r-test + packages: ['clang-3.8', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev:i386', 'g++-4.9-multilib'] cache: directories: ['../mysql-5.0'] - env: ['MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"'] + env: + - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" + - SDKS=episode1,css,tf2,l4d2,csgo,dota + - MODE=optimize - os: linux + dist: trusty sudo: false language: cpp addons: apt: - packages: ['clang-3.8', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] + sources: + - ubuntu-toolchain-r-test + packages: ['clang-3.4', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev:i386', 'g++-4.9-multilib'] cache: directories: ['../mysql-5.0'] - env: ['MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"'] + env: + - MATRIX_EVAL="CC=clang && CXX=clang++" + - SDKS=episode1,css,tf2,l4d2,csgo,dota + - MODE=optimize + - os: osx + osx_image: xcode7.2 + language: cpp + env: + - MATRIX_EVAL="CC=clang && CXX=clang++" + - SDKS=episode1,css,tf2,l4d2,csgo,dota + - MODE=optimize + + # # This is a faster test for the latest g++. + # - os: linux + # dist: bionic + # sudo: false + # language: cpp + # addons: + # apt: + # packages: ['lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev:i386', 'g++-multilib', 'g++'] + # cache: + # directories: ['../mysql-5.0'] + # env: + # - MATRIX_EVAL="CC=gcc && CXX=g++" + # - SDKS=csgo + # # GCC currently fails in opt builds trying to inline stuff in sqlite3.c. + # - MODE=debug + + # This is a faster test for the latest clang. - os: linux + dist: bionic sudo: false language: cpp addons: apt: - sources: ['llvm-toolchain-trusty-4.0'] - packages: ['clang-4.0', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] + packages: ['lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev:i386', 'g++-multilib', 'clang'] cache: directories: ['../mysql-5.0'] - env: ['MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"'] - - - os: linux - sudo: false - language: cpp - addons: - apt: - sources: ['llvm-toolchain-trusty-5.0'] - packages: ['clang-5.0', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] - cache: - directories: ['../mysql-5.0'] - env: ['MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"'] - - - os: linux - sudo: false - language: cpp - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['g++-6', 'g++-6-multilib', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] - cache: - directories: ['../mysql-5.0'] - env: ['MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"'] - - allow_failures: - - env: MATRIX_EVAL="CC=clang-3.7 && CXX=clang++-3.7" - - env: MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9" - - env: MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8" - - env: MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" - - env: MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - - env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" - + env: + - MATRIX_EVAL="CC=clang && CXX=clang++" + - SDKS=csgo + - MODE=optimize before_script: - CHECKOUT_DIR=$PWD && cd .. && $CHECKOUT_DIR/tools/checkout-deps.sh && cd $CHECKOUT_DIR @@ -114,5 +84,7 @@ script: - mkdir build && cd build - PATH="~/.local/bin:$PATH" - eval "${MATRIX_EVAL}" - - python ../configure.py --enable-optimize --sdks=episode1,css,tf2,l4d2,csgo,dota + - eval "${CC} --version" + - eval "${CXX} --version" + - python ../configure.py --enable-${MODE} --sdks=${SDKS} - ambuild diff --git a/AMBuildScript b/AMBuildScript index 8977f342..5d0fb201 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -282,7 +282,7 @@ class SMConfig(object): '-fvisibility=hidden', ] - if cxx.version == 'apple-clang-6.0': + if cxx.version == 'apple-clang-6.0' or cxx.version == 'clang-3.4': cxx.cxxflags += ['-std=c++1y'] else: cxx.cxxflags += ['-std=c++14'] @@ -297,11 +297,11 @@ class SMConfig(object): have_gcc = cxx.family == 'gcc' have_clang = cxx.family == 'clang' - if cxx.version >= 'clang-3.9': + if cxx.version >= 'clang-3.9' or cxx.version == 'clang-3.4' or cxx.version > 'apple-clang-6.0': cxx.cxxflags += ['-Wno-expansion-to-defined'] if cxx.version == 'clang-3.9' or cxx.version == 'apple-clang-8.0': cxx.cflags += ['-Wno-varargs'] - if cxx.version >= 'clang-3.6' or cxx.version >= 'apple-clang-7.0': + if cxx.version >= 'clang-3.4' or cxx.version >= 'apple-clang-7.0': cxx.cxxflags += ['-Wno-inconsistent-missing-override'] if cxx.version >= 'clang-2.9' or cxx.version >= 'apple-clang-3.0': cxx.cxxflags += ['-Wno-null-dereference'] diff --git a/tools/checkout-deps.sh b/tools/checkout-deps.sh index d2b10332..e1d93451 100755 --- a/tools/checkout-deps.sh +++ b/tools/checkout-deps.sh @@ -136,7 +136,7 @@ if [ $? -eq 1 ]; then checkout cd ambuild - if [ $iswin -eq 1 ]; then + if [ $iswin -eq 1 ] || [ $ismac -eq 1 ]; then python setup.py install else python setup.py build