From e573602f811fda1bd783c19d2f876b88ec861d61 Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Fri, 27 Jul 2018 22:03:33 -0700 Subject: [PATCH] Add additional test coverage to Travis-CI. (#50) * NPOTB: clang clang clang goes the trolly, gcc7 goes the bell. * Update AMBuildScript * Initialize engine_path when abspath fails. * Fix lptr being uninitialized when getcwd fails. * Remove GCC6; deeper issues than this PR will cover --- .travis.yml | 109 ++++++++++++++++++++++++++++++++++++++------- AMBuildScript | 2 + core/metamod.cpp | 8 +++- loader/gamedll.cpp | 6 ++- 4 files changed, 105 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index d538be5..226a672 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,32 +1,107 @@ +git: + depth: 3 + +sudo: false +language: cpp +os: linux +dist: trusty addons: apt: - packages: - - clang-3.7 - - lib32stdc++6 - - lib32z1-dev - - libc6-dev-i386 - - linux-libc-dev - - g++-multilib - - g++-4.8 sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test -language: cpp -sudo: false -compiler: - - clang + - 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 + sudo: false + language: cpp + addons: + apt: + packages: ['clang-3.6', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] + env: ['MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"'] + + - os: linux + sudo: false + language: cpp + addons: + apt: + packages: ['clang-3.8', 'lib32stdc++6', 'lib32z1-dev', 'libc6-dev-i386', 'linux-libc-dev', 'g++-multilib'] + env: ['MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"'] + + - os: linux + 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'] + 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'] + env: ['MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"'] + + 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" + + before_script: - CHECKOUT_DIR=$PWD && cd .. && $CHECKOUT_DIR/support/checkout-deps.sh && cd $CHECKOUT_DIR script: - mkdir build && cd build - PATH="~/.local/bin:$PATH" - - CC=clang-3.7 CXX=clang-3.7 python ../configure.py --enable-optimize --sdks=episode1,tf2,l4d2,csgo,dota + - eval "${MATRIX_EVAL}" + - python ../configure.py --enable-optimize --sdks=episode1,tf2,l4d2,csgo,dota - ambuild - cd .. && mkdir build-sh-opt && cd build-sh-opt - - CC=clang-3.7 CXX=clang-3.7 python ../configure.py --enable-optimize --enable-tests --sdks= + - python ../configure.py --enable-optimize --enable-tests --sdks= - ambuild - ./core/sourcehook/test/test_sourcehook/test_sourcehook -v - cd .. && mkdir build-sh-debug && cd build-sh-debug - - CC=clang-3.7 CXX=clang-3.7 python ../configure.py --enable-debug --enable-tests --sdks= + - python ../configure.py --enable-debug --enable-tests --sdks= - ambuild - ./core/sourcehook/test/test_sourcehook/test_sourcehook -v diff --git a/AMBuildScript b/AMBuildScript index 2dbd838..13064b1 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -202,6 +202,8 @@ class MMSConfig(object): cxx.cflags += ['-mfpmath=sse'] if cxx.family == 'clang': cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] + if cxx.version >= 'clang-3.9': + cxx.cxxflags += ['-Wno-expansion-to-defined'] if cxx.version >= 'clang-3.6' or cxx.version >= 'apple-clang-7.0': cxx.cxxflags += ['-Wno-inconsistent-missing-override'] if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4': diff --git a/core/metamod.cpp b/core/metamod.cpp index 0ce0bd3..4ef9988 100644 --- a/core/metamod.cpp +++ b/core/metamod.cpp @@ -375,7 +375,13 @@ void InitializeVSP() break; } } - abspath(engine_path, engine_file); + + /* If this fails the file either does not exist or + * on Windows the buffer may be too small. */ + if (abspath(engine_path, engine_file) == NULL) + { + engine_path[0] = '\0'; + } const char *usepath = metamod_path.c_str(); if (UTIL_Relatize(rel_path, sizeof(rel_path), engine_path, metamod_path.c_str())) diff --git a/loader/gamedll.cpp b/loader/gamedll.cpp index b110a12..66b9c5d 100644 --- a/loader/gamedll.cpp +++ b/loader/gamedll.cpp @@ -130,7 +130,6 @@ mm_DetectGameInformation() char temp_path[PLATFORM_MAX_PATH]; char cur_path[PLATFORM_MAX_PATH]; - getcwd(cur_path, sizeof(cur_path)); char *ptr; const char *lptr; @@ -162,7 +161,10 @@ mm_DetectGameInformation() else { ptr = val; - lptr = cur_path; + if (getcwd(cur_path, sizeof(cur_path))) + lptr = cur_path; + else + lptr = ""; } const char *pRelPath = is_source2 ? "../../" : "";