diff --git a/.jenkins.d/README.md b/.jenkins.d/README.md index 41812aa..39fa40b 100644 --- a/.jenkins.d/README.md +++ b/.jenkins.d/README.md @@ -13,13 +13,13 @@ Environment Variables Used in Build Scripts * `[OS_TYPE]`: `Linux` * `[DISTRO_TYPE]`: `Ubuntu` - * `[DISTRO_VERSION]`: `Ubuntu-14.04`, `Ubuntu-16.04` + * `[DISTRO_VERSION]`: `Ubuntu-16.04`, `Ubuntu-18.04` Possible values for OS X / macOS: * `[OS_TYPE]`: `OSX` * `[DISTRO_TYPE]`: `OSX` (can be absent) - * `[DISTRO_VERSION]`: `OSX-10.10`, `OSX-10.11`, `OSX-10.12` + * `[DISTRO_VERSION]`: `OSX-10.11`, `OSX-10.12`, `OSX-10.13` - `JOB_NAME`: optional variable to define type of the job. Depending on the defined job type, the build scripts can perform different tasks. diff --git a/.travis.yml b/.travis.yml index 61c1139..984e8ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ +language: cpp +dist: xenial sudo: required -language: generic env: global: - JOB_NAME=limited-build @@ -8,150 +9,87 @@ env: matrix: include: # Linux/gcc + # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages - os: linux - dist: trusty - env: - - CXX=g++-4.8 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=g++-5 - os: linux - dist: trusty - addons: - apt: - sources: ubuntu-toolchain-r-test - packages: g++-4.9 - env: - - CXX=g++-4.9 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=g++-6 - os: linux - dist: trusty - addons: - apt: - sources: ubuntu-toolchain-r-test - packages: g++-5 - env: - - CXX=g++-5 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=g++-7 - os: linux - dist: trusty - addons: - apt: - sources: ubuntu-toolchain-r-test - packages: g++-6 - env: - - CXX=g++-6 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes - - os: linux - dist: trusty - addons: - apt: - sources: ubuntu-toolchain-r-test - packages: g++-7 - env: - - CXX=g++-7 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=g++-8 # Linux/clang + # https://apt.llvm.org/ - os: linux - dist: trusty - addons: - apt: - packages: clang-3.5 - env: - - CXX=clang++-3.5 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=clang++-3.5 - os: linux - dist: trusty - addons: - apt: - packages: clang-3.6 - env: - - CXX=clang++-3.6 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=clang++-3.6 - os: linux - dist: trusty - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: clang-3.7 - env: - - CXX=clang++-3.7 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" + env: COMPILER=clang++-3.7 DISABLE_ASAN=yes - os: linux - dist: trusty - addons: - apt: - sources: - - llvm-toolchain-precise-3.8 - - ubuntu-toolchain-r-test - packages: clang-3.8 - env: - - CXX=clang++-3.8 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=clang++-3.8 - os: linux - dist: trusty - addons: - apt: - sources: - - llvm-toolchain-trusty-3.9 - - ubuntu-toolchain-r-test - packages: clang-3.9 - env: - - CXX=clang++-3.9 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" + env: COMPILER=clang++-3.9 - os: linux - dist: trusty - addons: - apt: - sources: - - llvm-toolchain-trusty-4.0 - - ubuntu-toolchain-r-test - packages: clang-4.0 - env: - - CXX=clang++-4.0 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=clang++-4.0 - os: linux - dist: trusty - addons: - apt: - sources: - - llvm-toolchain-trusty-5.0 - - ubuntu-toolchain-r-test - packages: clang-5.0 - env: - - CXX=clang++-5.0 - - NODE_LABELS="Linux Ubuntu Ubuntu-14.04" - - BUILD_WITH_ASAN=yes + env: COMPILER=clang++-5.0 + - os: linux + env: COMPILER=clang++-6.0 + - os: linux + env: COMPILER=clang++-7 # macOS/clang - # https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version + # https://docs.travis-ci.com/user/reference/osx/#OS-X-Version - os: osx osx_image: xcode7.3 - env: - - NODE_LABELS="OSX OSX-10.11" - - BUILD_WITH_ASAN=yes + env: OSX_VERSION=10.11 - os: osx osx_image: xcode8.3 - env: - - NODE_LABELS="OSX OSX-10.12" - - BUILD_WITH_ASAN=yes + env: OSX_VERSION=10.12 - os: osx - osx_image: xcode9 - env: - - NODE_LABELS="OSX OSX-10.12" - - BUILD_WITH_ASAN=yes + osx_image: xcode9.3 + env: OSX_VERSION=10.13 + + allow_failures: + - env: COMPILER=g++-6 + - env: COMPILER=g++-7 + - env: COMPILER=g++-8 + - env: COMPILER=clang++-3.5 + - env: COMPILER=clang++-3.6 + - env: COMPILER=clang++-3.7 DISABLE_ASAN=yes + - env: COMPILER=clang++-3.8 + - env: COMPILER=clang++-3.9 + - env: COMPILER=clang++-4.0 + - env: COMPILER=clang++-5.0 + - env: COMPILER=clang++-6.0 + - env: COMPILER=clang++-7 + + fast_finish: true + +install: | + case ${COMPILER} in + g++-[6789]) + travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + travis_retry sudo apt-get -qq update + travis_retry sudo apt-get -qy install "${COMPILER}" + ;; + clang++-*) + CLANG_VERSION=${COMPILER/clang++} + if [[ ${CLANG_VERSION} != "-3."* ]]; then + wget -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | sudo apt-key add - + travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${CLANG_VERSION/-7} main" + fi + travis_retry sudo apt-get -qq update + travis_retry sudo apt-get -qy install "clang${CLANG_VERSION}" + ;; + esac before_script: + - if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-16.04"; fi + - if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi + - if [[ -n ${COMPILER} ]]; then export CXX=${COMPILER}; fi - ${CXX:-c++} --version - python --version diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index 54db7ea..e690290 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -15,14 +15,14 @@ def configure(conf): errmsg = '' warnmsg = '' if cxx == 'gcc': - if ccver < (4, 8, 2): + if ccver < (5, 3, 0): errmsg = ('The version of gcc you are using is too old.\n' - 'The minimum supported gcc version is 4.8.2.') + 'The minimum supported gcc version is 5.3.0.') conf.flags = GccFlags() elif cxx == 'clang': - if ccver < (3, 4, 0): + if ccver < (3, 5, 0): errmsg = ('The version of clang you are using is too old.\n' - 'The minimum supported clang version is 3.4.0.') + 'The minimum supported clang version is 3.5.0.') conf.flags = ClangFlags() else: warnmsg = 'Note: %s compiler is unsupported' % cxx @@ -39,7 +39,7 @@ def configure(conf): conf.areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0) - # General flags are always applied (e.g., selecting C++11 mode) + # General flags are always applied (e.g., selecting C++ language standard) generalFlags = conf.flags.getGeneralFlags(conf) conf.add_supported_cxxflags(generalFlags['CXXFLAGS']) conf.add_supported_linkflags(generalFlags['LINKFLAGS']) @@ -128,7 +128,7 @@ class GccBasicFlags(CompilerFlags): """ def getGeneralFlags(self, conf): flags = super(GccBasicFlags, self).getGeneralFlags(conf) - flags['CXXFLAGS'] += ['-std=c++11'] + flags['CXXFLAGS'] += ['-std=c++14'] return flags def getDebugFlags(self, conf): @@ -164,16 +164,12 @@ class GccBasicFlags(CompilerFlags): class GccFlags(GccBasicFlags): def getDebugFlags(self, conf): flags = super(GccFlags, self).getDebugFlags(conf) - if self.getCompilerVersion(conf) < (5, 1, 0): - flags['CXXFLAGS'] += ['-Wno-missing-field-initializers'] - flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9 + flags['CXXFLAGS'] += ['-fdiagnostics-color'] return flags def getOptimizedFlags(self, conf): flags = super(GccFlags, self).getOptimizedFlags(conf) - if self.getCompilerVersion(conf) < (5, 1, 0): - flags['CXXFLAGS'] += ['-Wno-missing-field-initializers'] - flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9 + flags['CXXFLAGS'] += ['-fdiagnostics-color'] return flags class ClangFlags(GccBasicFlags): diff --git a/common.hpp b/common.hpp index 57ed667..d59fa9c 100644 --- a/common.hpp +++ b/common.hpp @@ -60,29 +60,20 @@ #include #include #include -#include -#include -#include namespace chronosync { using std::size_t; using boost::noncopyable; -using boost::scoped_ptr; using std::bind; -using std::const_pointer_cast; using std::cref; -using std::dynamic_pointer_cast; -using std::enable_shared_from_this; using std::function; using std::make_shared; using std::make_tuple; using std::ref; using std::shared_ptr; -using std::static_pointer_cast; -using std::weak_ptr; using ndn::Block; using ndn::ConstBufferPtr; diff --git a/wscript b/wscript index fa2864b..e40914f 100644 --- a/wscript +++ b/wscript @@ -140,7 +140,7 @@ def version(ctx): else: # no tags matched Context.g_module.VERSION = '%s-commit-%s' % (VERSION_BASE, out) - except subprocess.CalledProcessError: + except (OSError, subprocess.CalledProcessError): pass versionFile = ctx.path.find_node('VERSION')