From ca2c817350548ffac5c95abbfb8b193b93366b9a Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Sat, 21 Mar 2020 12:30:04 -0400 Subject: [PATCH 1/5] DO NOT CHECK IN: try to repro i#4126 hang in a pull request build that pretends to be a cron build --- .appveyor.yml | 132 -------------------------------------------------- .travis.yml | 92 ++++++++++++++++++----------------- 2 files changed, 48 insertions(+), 176 deletions(-) delete mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 742e02e076c..00000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,132 +0,0 @@ -# ********************************************************** -# Copyright (c) 2017-2020 Google, Inc. All rights reserved. -# ********************************************************** - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * Neither the name of Google, Inc. nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -# DAMAGE. - -# AppVeyor CI configuration: - -notifications: - - provider: Email - to: - - dynamorio-devs@googlegroups.com - on_build_success: false - on_build_failure: true - # Unfortunately there's no way to disable emails on pull requests, - # like Travis does, so we try to cut down on the noise by only - # sending out failures. - on_build_status_changed: false - -# We don't do a shallow clone of just the source archive as we want to get -# the diff for source file checks. -# We do limit to the last few commits to speed things up: -clone_depth: 10 - -# Don't run on pushes to feature branches: pull requests cover those. -branches: - only: - - master - -platform: x64 - -image: Visual Studio 2017 - -build: - verbosity: detailed - -# i#2406: Appveyor's global serialization makes it painful to use more than -# one configuration. We thus officially only support a single VS version. -configuration: - - 2017 - -install: - ################################################## - # Install ninja so we have readable output. - - mkdir c:\projects\install - - cd c:\projects\install - - appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip - - 7z x ninja-win.zip -oc:\projects\install\ninja > nul - - set PATH=c:\projects\install\ninja;%PATH% - - ################################################## - # Install packages for docs. - # i#4000: choco fails to download doxygen.portable so we install ourselves: - - appveyor DownloadFile http://doxygen.nl/files/doxygen-1.8.17.windows.x64.bin.zip - - 7z x doxygen-1.8.17.windows.x64.bin.zip -oc:\projects\install\doxygen > nul - - set PATH=c:\projects\install\doxygen;%PATH% - - ################################################## - # XXX i#2145: point at Qt5 for testing drgui build. - - # Include Dr. Memory in cronbuild packages. - # We're in C:/projects/install now while we'll be in C:/projects/dynamorio to build. - # We do shallow clones and assume DrM will update its DR at least once - # every 250 DR commits. - - ps: >- - If ($env:APPVEYOR_REPO_TAG -Match "true") { - cd ..\dynamorio - git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory - cd drmemory - git submodule update --init --depth 250 - cd ..\..\install - } - -before_build: - - if "%configuration%"=="2017" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" - - cd c:\projects\dynamorio - -build_script: - - mkdir build - - cd build - - echo %PATH% - # The perl in c:\perl can't open a pipe so we use cygwin perl. - - c:\cygwin\bin\perl ../suite/runsuite_wrapper.pl travis use_ninja %EXTRA_ARGS% - -# Automated deployment of builds to GitHub Releases. -# We rely on a Travis cron job to push a tag to the repo which then -# triggers this deployment. -# We switch to package.cmake for these builds in runsuite_wrapper.pl by looking -# for $APPVEYOR_REPO_TAG=="true". -artifacts: - - path: 'build\DynamoRIO*.zip' - name: DR.zip - type: zip -deploy: - provider: GitHub - auth_token: - secure: mfNFJ47dV/0CNpg156CiHuK3t6VUNCVhAIYNVkJfwjwY0dbhD1kIdMPfTMdarCnz - artifact: DR.zip - draft: false - prerelease: false - # We want to use the same release as Travis. - force_update: true - # Using the default "release:" name (the tag) to match Travis. - # This description replaces the one provided by Travis. - description: 'Auto-generated periodic build.' - on: - branch: master - appveyor_repo_tag: true diff --git a/.travis.yml b/.travis.yml index 27fd0d31735..05e7f3a6ab4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,51 +62,55 @@ jobs: ####################################################################### # Regular test jobs: - # 32-bit Linux build with gcc and run tests: - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: linux - compiler: gcc - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="32_only" - # 64-bit Linux build with gcc and run tests: - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: linux - compiler: gcc - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only" - # AArchXX cross-compile with gcc, no tests: - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: linux - compiler: gcc - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=yes DEPLOY=no - # Android ARM cross-compile with gcc, no tests: - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: linux + # Linux x86 + amd64 to repro i#4126: + - os: linux compiler: gcc - env: DYNAMORIO_CROSS_ANDROID_ONLY=yes DEPLOY=no DYNAMORIO_ANDROID_TOOLCHAIN='/tmp/android-gcc-arm-ndk-10e' - # 64-bit Linux build with clang, no tests (runsuite.cmake disables the tests), - # install and require clang-format. - # We used to build 32-bit with clang but have decided that is not worth - # the Travis resources: 64-bit hits most clang-only warnings and 64-bit - # is the primary target these days. - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: linux - compiler: clang - # We need clang 9.0 to avoid a compiler bug: i#3989. - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only require_format" CC=clang-9 && CXX=clang++-9 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main' - key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' - packages: - - clang-9 - - clang-format-6.0 - # 64-bit OSX build with clang and run tests: - - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron - os: osx - # gcc on Travis claims to not be CMAKE_COMPILER_IS_GNUCC so we only run clang. - compiler: clang - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS=64_only + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=yes DEPLOY_DOCS=yes TRAVIS_EVENT_TYPE=cron +#DISABLED # 32-bit Linux build with gcc and run tests: +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: linux +#DISABLED compiler: gcc +#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="32_only" +#DISABLED # 64-bit Linux build with gcc and run tests: +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: linux +#DISABLED compiler: gcc +#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only" +#DISABLED # AArchXX cross-compile with gcc, no tests: +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: linux +#DISABLED compiler: gcc +#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=yes DEPLOY=no +#DISABLED # Android ARM cross-compile with gcc, no tests: +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: linux +#DISABLED compiler: gcc +#DISABLED env: DYNAMORIO_CROSS_ANDROID_ONLY=yes DEPLOY=no DYNAMORIO_ANDROID_TOOLCHAIN='/tmp/android-gcc-arm-ndk-10e' +#DISABLED # 64-bit Linux build with clang, no tests (runsuite.cmake disables the tests), +#DISABLED # install and require clang-format. +#DISABLED # We used to build 32-bit with clang but have decided that is not worth +#DISABLED # the Travis resources: 64-bit hits most clang-only warnings and 64-bit +#DISABLED # is the primary target these days. +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: linux +#DISABLED compiler: clang +#DISABLED # We need clang 9.0 to avoid a compiler bug: i#3989. +#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only require_format" CC=clang-9 && CXX=clang++-9 +#DISABLED addons: +#DISABLED apt: +#DISABLED sources: +#DISABLED - ubuntu-toolchain-r-test +#DISABLED - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main' +#DISABLED key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' +#DISABLED packages: +#DISABLED - clang-9 +#DISABLED - clang-format-6.0 +#DISABLED # 64-bit OSX build with clang and run tests: +#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron +#DISABLED os: osx +#DISABLED # gcc on Travis claims to not be CMAKE_COMPILER_IS_GNUCC so we only run clang. +#DISABLED compiler: clang +#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS=64_only ####################################################################### # Package jobs From d718abb01085f36fa9a96b1c6daa7eb97eaf9222 Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Sat, 21 Mar 2020 12:36:38 -0400 Subject: [PATCH 2/5] Remove stale comment about i#2861 --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 05e7f3a6ab4..561a6a18be5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -181,8 +181,6 @@ script: # We switch to package.cmake for these builds in runsuite_wrapper.pl by looking # for $TRAVIS_EVENT_TYPE=="cron". -# Longer-term we may want to use package.cmake instead and even make official -# builds on Travis (i#2861). # The before_deploy commands are run before each deployer, so they are also # run for DEPLOY_DOCS. We'll just have a git tag failure since it exists. before_deploy: From 9f2f7b6c1755fbb6fd3bd10e43c2711eae014c1f Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Sat, 21 Mar 2020 14:12:06 -0400 Subject: [PATCH 3/5] Try disabling perl alarm signal --- suite/runsuite_wrapper.pl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/suite/runsuite_wrapper.pl b/suite/runsuite_wrapper.pl index 688d6f72229..402b46e92a4 100755 --- a/suite/runsuite_wrapper.pl +++ b/suite/runsuite_wrapper.pl @@ -84,11 +84,11 @@ # i#4126: We include extra printing to help diagnose hangs on Travis. if ($^O ne 'cygwin') { print "Parent tee-ing child stdout...\n"; - local $SIG{ALRM} = sub { - print "\nxxxxxxxxxx 30s elapsed xxxxxxxxxxx\n"; - alarm(30); - }; - alarm(30); +# local $SIG{ALRM} = sub { +# print "\nxxxxxxxxxx 30s elapsed xxxxxxxxxxx\n"; +# alarm(30); +# }; +# alarm(30); while () { print STDOUT $_; $res .= $_; From e775b78105936e473e5e0da308e6b6da7d1c9ad3 Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Sat, 21 Mar 2020 14:40:09 -0400 Subject: [PATCH 4/5] Try travis_wait; re-instate perl signals --- .travis.yml | 2 +- suite/runsuite_wrapper.pl | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 561a6a18be5..e72b082e756 100644 --- a/.travis.yml +++ b/.travis.yml @@ -177,7 +177,7 @@ install: fi script: - - suite/runsuite_wrapper.pl travis $EXTRA_ARGS + - travis_wait 45 suite/runsuite_wrapper.pl travis $EXTRA_ARGS # We switch to package.cmake for these builds in runsuite_wrapper.pl by looking # for $TRAVIS_EVENT_TYPE=="cron". diff --git a/suite/runsuite_wrapper.pl b/suite/runsuite_wrapper.pl index 402b46e92a4..688d6f72229 100755 --- a/suite/runsuite_wrapper.pl +++ b/suite/runsuite_wrapper.pl @@ -84,11 +84,11 @@ # i#4126: We include extra printing to help diagnose hangs on Travis. if ($^O ne 'cygwin') { print "Parent tee-ing child stdout...\n"; -# local $SIG{ALRM} = sub { -# print "\nxxxxxxxxxx 30s elapsed xxxxxxxxxxx\n"; -# alarm(30); -# }; -# alarm(30); + local $SIG{ALRM} = sub { + print "\nxxxxxxxxxx 30s elapsed xxxxxxxxxxx\n"; + alarm(30); + }; + alarm(30); while () { print STDOUT $_; $res .= $_; From 837d38b7f372c6e98d2cdfa78c9240b9aa1db5c1 Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Sat, 21 Mar 2020 15:33:09 -0400 Subject: [PATCH 5/5] Restore appveyor and regular travis job matrix --- .appveyor.yml | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 96 ++++++++++++++++++------------------ 2 files changed, 180 insertions(+), 48 deletions(-) create mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 00000000000..742e02e076c --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,132 @@ +# ********************************************************** +# Copyright (c) 2017-2020 Google, Inc. All rights reserved. +# ********************************************************** + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of Google, Inc. nor the names of its contributors may be +# used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +# DAMAGE. + +# AppVeyor CI configuration: + +notifications: + - provider: Email + to: + - dynamorio-devs@googlegroups.com + on_build_success: false + on_build_failure: true + # Unfortunately there's no way to disable emails on pull requests, + # like Travis does, so we try to cut down on the noise by only + # sending out failures. + on_build_status_changed: false + +# We don't do a shallow clone of just the source archive as we want to get +# the diff for source file checks. +# We do limit to the last few commits to speed things up: +clone_depth: 10 + +# Don't run on pushes to feature branches: pull requests cover those. +branches: + only: + - master + +platform: x64 + +image: Visual Studio 2017 + +build: + verbosity: detailed + +# i#2406: Appveyor's global serialization makes it painful to use more than +# one configuration. We thus officially only support a single VS version. +configuration: + - 2017 + +install: + ################################################## + # Install ninja so we have readable output. + - mkdir c:\projects\install + - cd c:\projects\install + - appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip + - 7z x ninja-win.zip -oc:\projects\install\ninja > nul + - set PATH=c:\projects\install\ninja;%PATH% + + ################################################## + # Install packages for docs. + # i#4000: choco fails to download doxygen.portable so we install ourselves: + - appveyor DownloadFile http://doxygen.nl/files/doxygen-1.8.17.windows.x64.bin.zip + - 7z x doxygen-1.8.17.windows.x64.bin.zip -oc:\projects\install\doxygen > nul + - set PATH=c:\projects\install\doxygen;%PATH% + + ################################################## + # XXX i#2145: point at Qt5 for testing drgui build. + + # Include Dr. Memory in cronbuild packages. + # We're in C:/projects/install now while we'll be in C:/projects/dynamorio to build. + # We do shallow clones and assume DrM will update its DR at least once + # every 250 DR commits. + - ps: >- + If ($env:APPVEYOR_REPO_TAG -Match "true") { + cd ..\dynamorio + git clone --depth=2 https://github.com/DynamoRIO/drmemory.git drmemory + cd drmemory + git submodule update --init --depth 250 + cd ..\..\install + } + +before_build: + - if "%configuration%"=="2017" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" + - cd c:\projects\dynamorio + +build_script: + - mkdir build + - cd build + - echo %PATH% + # The perl in c:\perl can't open a pipe so we use cygwin perl. + - c:\cygwin\bin\perl ../suite/runsuite_wrapper.pl travis use_ninja %EXTRA_ARGS% + +# Automated deployment of builds to GitHub Releases. +# We rely on a Travis cron job to push a tag to the repo which then +# triggers this deployment. +# We switch to package.cmake for these builds in runsuite_wrapper.pl by looking +# for $APPVEYOR_REPO_TAG=="true". +artifacts: + - path: 'build\DynamoRIO*.zip' + name: DR.zip + type: zip +deploy: + provider: GitHub + auth_token: + secure: mfNFJ47dV/0CNpg156CiHuK3t6VUNCVhAIYNVkJfwjwY0dbhD1kIdMPfTMdarCnz + artifact: DR.zip + draft: false + prerelease: false + # We want to use the same release as Travis. + force_update: true + # Using the default "release:" name (the tag) to match Travis. + # This description replaces the one provided by Travis. + description: 'Auto-generated periodic build.' + on: + branch: master + appveyor_repo_tag: true diff --git a/.travis.yml b/.travis.yml index e72b082e756..48168409cb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,55 +62,51 @@ jobs: ####################################################################### # Regular test jobs: - # Linux x86 + amd64 to repro i#4126: - - os: linux + # 32-bit Linux build with gcc and run tests: + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: linux + compiler: gcc + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="32_only" + # 64-bit Linux build with gcc and run tests: + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: linux + compiler: gcc + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only" + # AArchXX cross-compile with gcc, no tests: + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: linux + compiler: gcc + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=yes DEPLOY=no + # Android ARM cross-compile with gcc, no tests: + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: linux compiler: gcc - env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=yes DEPLOY_DOCS=yes TRAVIS_EVENT_TYPE=cron -#DISABLED # 32-bit Linux build with gcc and run tests: -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: linux -#DISABLED compiler: gcc -#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="32_only" -#DISABLED # 64-bit Linux build with gcc and run tests: -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: linux -#DISABLED compiler: gcc -#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only" -#DISABLED # AArchXX cross-compile with gcc, no tests: -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: linux -#DISABLED compiler: gcc -#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=yes DEPLOY=no -#DISABLED # Android ARM cross-compile with gcc, no tests: -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: linux -#DISABLED compiler: gcc -#DISABLED env: DYNAMORIO_CROSS_ANDROID_ONLY=yes DEPLOY=no DYNAMORIO_ANDROID_TOOLCHAIN='/tmp/android-gcc-arm-ndk-10e' -#DISABLED # 64-bit Linux build with clang, no tests (runsuite.cmake disables the tests), -#DISABLED # install and require clang-format. -#DISABLED # We used to build 32-bit with clang but have decided that is not worth -#DISABLED # the Travis resources: 64-bit hits most clang-only warnings and 64-bit -#DISABLED # is the primary target these days. -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: linux -#DISABLED compiler: clang -#DISABLED # We need clang 9.0 to avoid a compiler bug: i#3989. -#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only require_format" CC=clang-9 && CXX=clang++-9 -#DISABLED addons: -#DISABLED apt: -#DISABLED sources: -#DISABLED - ubuntu-toolchain-r-test -#DISABLED - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main' -#DISABLED key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' -#DISABLED packages: -#DISABLED - clang-9 -#DISABLED - clang-format-6.0 -#DISABLED # 64-bit OSX build with clang and run tests: -#DISABLED - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron -#DISABLED os: osx -#DISABLED # gcc on Travis claims to not be CMAKE_COMPILER_IS_GNUCC so we only run clang. -#DISABLED compiler: clang -#DISABLED env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS=64_only + env: DYNAMORIO_CROSS_ANDROID_ONLY=yes DEPLOY=no DYNAMORIO_ANDROID_TOOLCHAIN='/tmp/android-gcc-arm-ndk-10e' + # 64-bit Linux build with clang, no tests (runsuite.cmake disables the tests), + # install and require clang-format. + # We used to build 32-bit with clang but have decided that is not worth + # the Travis resources: 64-bit hits most clang-only warnings and 64-bit + # is the primary target these days. + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: linux + compiler: clang + # We need clang 9.0 to avoid a compiler bug: i#3989. + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS="64_only require_format" CC=clang-9 && CXX=clang++-9 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main' + key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' + packages: + - clang-9 + - clang-format-6.0 + # 64-bit OSX build with clang and run tests: + - if: type != cron AND env(TRAVIS_EVENT_TYPE) != cron + os: osx + # gcc on Travis claims to not be CMAKE_COMPILER_IS_GNUCC so we only run clang. + compiler: clang + env: DYNAMORIO_CROSS_AARCHXX_LINUX_ONLY=no DEPLOY=no EXTRA_ARGS=64_only ####################################################################### # Package jobs @@ -176,6 +172,10 @@ install: cd drmemory && git submodule update --init --depth 250 && cd .. fi +# i#4126: Despite the incremental output from runsuite_wrapper's stdout tee +# and alarm prints, Travis still kills our jobs. The workaround is to use +# travis_wait, which ironically removes all incremental output and dumps +# it all at the end. script: - travis_wait 45 suite/runsuite_wrapper.pl travis $EXTRA_ARGS