From eeeb60b7979d051ee4dbe8362b7ae4aae839ace7 Mon Sep 17 00:00:00 2001 From: "James E. King III" Date: Fri, 2 Nov 2018 23:48:56 -0400 Subject: [PATCH] Expand CI with libc++ build and VS2017 strict --- .travis.yml | 53 ++++++++++++++++++++++++++++--------------- appveyor.yml | 64 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 81 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index eee15fa..838e8ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ # # Generic Travis CI build script for boostorg repositories +# See: https://github.com/jeking3/boost-ci # # Instructions for customizing this script for your library: # @@ -66,23 +67,34 @@ script: # anchors: - clang-34: &clang-34 { apt: { packages: [ "clang-3.4" ], sources: [ "llvm-toolchain-trusty-3.4" ] } } - clang-38: &clang-38 { apt: { packages: [ "clang-3.8" ], sources: [ "llvm-toolchain-trusty-3.8" ] } } - clang-4: &clang-4 { apt: { packages: [ "clang-4.0" ], sources: [ "llvm-toolchain-trusty-4.0" ] } } - clang-5: &clang-5 { apt: { packages: [ "clang-5.0" ], sources: [ "llvm-toolchain-trusty-5.0" ] } } + clang-34: &clang-34 { apt: { packages: [ "clang-3.4" ], sources: [ "llvm-toolchain-trusty-3.4" ] } } + clang-38: &clang-38 { apt: { packages: [ "clang-3.8", + "libstdc++-6-dev" ], sources: [ "llvm-toolchain-trusty-3.8", + "ubuntu-toolchain-r-test" ] } } + clang-4: &clang-4 { apt: { packages: [ "clang-4.0", + "libstdc++-6-dev" ], sources: [ "llvm-toolchain-trusty-4.0", + "ubuntu-toolchain-r-test" ] } } + clang-5: &clang-5 { apt: { packages: [ "clang-5.0", + "libstdc++-7-dev" ], sources: [ "llvm-toolchain-trusty-5.0", + "ubuntu-toolchain-r-test" ] } } clang-6: &clang-6 { apt: { packages: [ "clang-6.0", - "libstdc++-7-dev", - "valgrind" ], sources: [ "llvm-toolchain-trusty-6.0", - "ubuntu-toolchain-r-test" ] } } - gcc-44: &gcc-44 { apt: { packages: [ "g++-4.4" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-46: &gcc-46 { apt: { packages: [ "g++-4.6" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ "ubuntu-toolchain-r-test" ] } } - gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ "ubuntu-toolchain-r-test" ] } } + "libc++-dev", + "libstdc++-8-dev", + "valgrind" ], sources: [ "llvm-toolchain-trusty-6.0", + "ubuntu-toolchain-r-test" ] } } + gcc-44: &gcc-44 { apt: { packages: [ "g++-4.4" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-46: &gcc-46 { apt: { packages: [ "g++-4.6" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ "ubuntu-toolchain-r-test" ] } } + gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ "ubuntu-toolchain-r-test" ] } } jobs: + allow_failures: + - env: + - COPY="all the environment settings from your job" + include: # libstdc++ - { os: "linux", env: [ "TOOLSET=gcc-4.4", "CXXSTD=98,0x" ], addons: *gcc-44 } @@ -92,13 +104,15 @@ jobs: - { os: "linux", env: [ "TOOLSET=gcc-6", "CXXSTD=03,11,14" ], addons: *gcc-6 } - { os: "linux", env: [ "TOOLSET=gcc-7", "CXXSTD=03,11,14,17" ], addons: *gcc-7 } - { os: "linux", env: [ "TOOLSET=gcc-8", "CXXSTD=03,11,14,17,2a" ], addons: *gcc-8 } - - { os: "linux", env: [ "TOOLSET=clang-3.4", "CXXSTD=03,11,14" ], addons: *clang-34 } + - { os: "linux", env: [ "TOOLSET=clang-3.4", "CXXSTD=03,11" ], addons: *clang-34 } - { os: "linux", env: [ "TOOLSET=clang-3.8", "CXXSTD=03,11,14" ], addons: *clang-38 } - { os: "linux", env: [ "TOOLSET=clang-4.0", "CXXSTD=03,11,14" ], addons: *clang-4 } - { os: "linux", env: [ "TOOLSET=clang-5.0", "CXXSTD=03,11,14,17" ], addons: *clang-5 } - { os: "linux", env: [ "TOOLSET=clang-6.0", "CXXSTD=03,11,14,17,2a" ], addons: *clang-6 } # libc++ - # the rvm environment on osx is taking over basic commands like "cd" and breaking things + - { os: "linux", env: [ "TOOLSET=clang-6.0", "CXXSTD=03,11,14,17,2a", + "CXXFLAGS=-stdlib=libc++" ], addons: *clang-6 } + # the rvm environment on osx is taking over basic commands like "cd" and breaking things! # - { os: "osx" , env: [ "COMMENT=libc++", # "TOOLSET=clang", "CXXSTD=03,11,14" ] } @@ -106,6 +120,7 @@ jobs: env: - COMMENT=codecov.io - TOOLSET=gcc-7 + - DEFINES="define=BOOST_NO_STRESS_TEST=1" addons: *gcc-7 script: - pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd @@ -124,6 +139,8 @@ jobs: - COMMENT=ubsan - B2_VARIANT=variant=debug - TOOLSET=gcc-8 + - CXXSTD=03,11,14,17,2a + - DEFINES="define=BOOST_NO_STRESS_TEST=1" - CXXFLAGS="cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined" - LINKFLAGS="linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=undefined linkflags=-fuse-ld=gold" - UBSAN_OPTIONS=print_stacktrace=1 @@ -133,7 +150,8 @@ jobs: env: - COMMENT=valgrind - TOOLSET=clang-6.0 - - CXXSTD=03 + - CXXSTD=03,11,14,17,2a + - DEFINES="define=BOOST_NO_STRESS_TEST=1" - B2_VARIANT=variant=debug - TESTFLAGS=testing.launcher=valgrind - VALGRIND_OPTS=--error-exitcode=1 @@ -155,4 +173,3 @@ jobs: notifications: email: false - diff --git a/appveyor.yml b/appveyor.yml index e10b9e0..434186f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,6 +5,7 @@ # # Generic Appveyor build script for boostorg repositories +# See: https://github.com/jeking3/boost-ci/ # # Instructions for customizing this script for your library: # @@ -12,11 +13,10 @@ # 2. If you have move than include/, src/, test/, example/, examples/, # benchmark/ or tools/ directories, set the environment variable DEPINST. # For example if your build uses code in "bench/" and "fog/" directories: -# - DEPINST: --include bench --include fog +# - DEPINST: --include bench --include fog # 3. Enable pull request builds in your boostorg/ account. -# 4. The default language level is C++03, you can change CXXSTD to modify it. # -# That's it - the scripts will do everything else for you. +# That's it - the script will do everything else for you. # version: 1.0.{build}-{branch} @@ -29,59 +29,83 @@ branches: - master matrix: + # Adding MAYFAIL to any matrix job allows it to fail but the build stays green: allow_failures: - MAYFAIL: true environment: global: # see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties - # to use the default for a given environment, comment it out; recommend you build debug and release however.. - # on Windows it is important to exercise all the possibilities, especially shared vs static + # to use the default for a given environment, comment it out; recommend you build debug and release however: + # on Windows it is important to exercise all the possibilities, especially shared vs static, however most + # libraries that care about this exercise it in their Jamfiles... # B2_ADDRESS_MODEL: address-model=64,32 # B2_LINK: link=shared,static # B2_THREADING: threading=multi,single B2_VARIANT: variant=release,debug - CXXSTD: 03 - # DEPINST: --include otherdir matrix: - - FLAVOR: Visual Studio 2017 + - FLAVOR: Visual Studio 2017 C++2a Strict + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + TOOLSET: msvc-14.1 + B2_ADDRESS_MODEL: address-model=64 + CXXFLAGS: cxxflags=-permissive- + CXXSTD: latest # 2a + + - FLAVOR: Visual Studio 2017 C++17 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + TOOLSET: msvc-14.1 + B2_ADDRESS_MODEL: address-model=64 + CXXSTD: 17 + + - FLAVOR: Visual Studio 2017 C++14 (Default) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 TOOLSET: msvc-14.1 B2_ADDRESS_MODEL: address-model=64,32 - - FLAVOR: Visual Studio 2015 + + - FLAVOR: Visual Studio 2015 C++14 (Default) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 TOOLSET: msvc-14.0 B2_ADDRESS_MODEL: address-model=64,32 + - FLAVOR: Visual Studio 2010, 2012, 2013 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 TOOLSET: msvc-10.0,msvc-11.0,msvc-12.0 + - FLAVOR: cygwin (32-bit) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 ADDPATH: C:\cygwin\bin; B2_ADDRESS_MODEL: address-model=32 + CXXSTD: 03,11 # https://github.com/boostorg/test/issues/144 DEFINES: define=_POSIX_C_SOURCE=200112L THREADING: threadapi=pthread TOOLSET: gcc + - FLAVOR: cygwin (64-bit) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 ADDPATH: C:\cygwin64\bin; B2_ADDRESS_MODEL: address-model=64 + CXXSTD: 11,17 # https://github.com/boostorg/test/issues/144 - DEFINES: define=_POSIX_C_SOURCE=200112L + DEFINES: define=_POSIX_C_SOURCE=200112L define=__USE_ISOC99 THREADING: threadapi=pthread TOOLSET: gcc - - FLAVOR: mingw32 + + - FLAVOR: mingw32 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARCH: i686 + ARCH: i686 B2_ADDRESS_MODEL: address-model=32 - SCRIPT: ci\appveyor\mingw.bat - - FLAVOR: mingw64 + CXXSTD: 03,11 + SCRIPT: ci\appveyor\mingw.bat + + - FLAVOR: mingw64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARCH: x86_64 + ARCH: x86_64 B2_ADDRESS_MODEL: address-model=64 - SCRIPT: ci\appveyor\mingw.bat + CXXSTD: 11,17 + DEFINES: define=__USE_ISOC99 + SCRIPT: ci\appveyor\mingw.bat install: - set SELF=%APPVEYOR_PROJECT_NAME:-=_% @@ -94,5 +118,9 @@ build: off test_script: - set SELF=%APPVEYOR_PROJECT_NAME:-=_% - PATH=%ADDPATH%%PATH% - - IF DEFINED SCRIPT (call libs\%SELF%\%SCRIPT%) ELSE (b2 libs/%SELF% toolset=%TOOLSET% cxxstd=%CXXSTD% %CXXFLAGS% %DEFINES% %THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3) - + # The definition of TOOLCXX omits CXXSTD= if it was not defined above + - IF NOT DEFINED CXXSTD (SET TOOLCXX=toolset=%TOOLSET%) ELSE (SET TOOLCXX=toolset=%TOOLSET% cxxstd=%CXXSTD%) + # Echo the complete build command to the build log + - IF NOT DEFINED SCRIPT (ECHO b2 libs/%SELF:\=/% %TOOLCXX% %CXXFLAGS% %DEFINES% %THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3) + # Now go build... + - IF DEFINED SCRIPT (call libs\%SELF%\%SCRIPT%) ELSE (b2 libs/%SELF:\=/% %TOOLCXX% %CXXFLAGS% %DEFINES% %THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3)