From ac1713e130c10d914a811500768a1c819cd29c47 Mon Sep 17 00:00:00 2001 From: "James E. King III" Date: Tue, 30 Oct 2018 15:41:36 +0000 Subject: [PATCH] Enhance CI, add license and readme, and fix a visibility issue --- .travis.yml | 310 ++++++++++-------- Jamfile | 11 + LICENSE | 23 ++ README.md | 35 ++ appveyor.yml | 183 ++++++----- include/boost/algorithm/apply_permutation.hpp | 1 - include/boost/algorithm/hex.hpp | 7 +- test/Jamfile.v2 | 1 + test/mclow.cpp | 15 + 9 files changed, 365 insertions(+), 221 deletions(-) create mode 100644 Jamfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 test/mclow.cpp diff --git a/.travis.yml b/.travis.yml index 11961b1..05e44aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,171 +1,193 @@ -# Copyright 2016, 2017, 2018 Peter Dimov +# Copyright 2016 - 2018 Peter Dimov # Copyright 2018 T. Zachary Laine +# Copyright 2017 - 2019 James E. King III # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) +# +# Generic Travis CI build script for boostorg repositories +# See: https://github.com/boostorg/boost-ci +# +# Instructions for customizing this script for your library: +# +# 1. Customize the compilers and language levels you want in the 'jobs'. +# 2. If you have more than include/, src/, test/, example/, examples/, or +# tools/ directories, modify your Travis CI project and add the environment +# variable DEPINST. For example if your build uses code in "bench/" and +# "fog/" directories, then set DEPINST to the following: +# --include bench --include fog +# 3. If you want to enable Coverity Scan, you need to provide the environment +# variables COVERITY_SCAN_TOKEN and COVERITY_SCAN_NOTIFICATION_EMAIL in +# your github settings. +# 4. Enable pull request builds in your boostorg/ account. +# +# That's it - the scripts will do everything else for you. + +dist: xenial language: cpp -sudo: false +env: + 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.. + # - B2_ADDRESS_MODEL=address-model=64,32 + # - B2_LINK=link=shared,static + # - B2_THREADING=threading=multi,single + - B2_VARIANT=variant=release,debug + +install: + - git clone https://github.com/boostorg/boost-ci.git boost-ci + - cp -pr boost-ci/ci boost-ci/.codecov.yml . + - source ci/travis/install.sh + +addons: + apt: + packages: + - binutils-gold + - gdb + - libc6-dbg branches: only: - master - develop - - /feature\/.*/ + - bugfix/* + - feature/* + - fix/* + - pr/* -env: - matrix: - - BOGUS_JOB=true +script: + - cd $BOOST_ROOT/libs/$SELF + - ci/travis/build.sh -matrix: +# +# Default toolsets in Ubuntu +# +# trusty xenial bionic +# 14.04 16.04 18.04 +# ------ ------ ------ +# clang 3.4 3.8 6.0 +# gcc 4.8.2 5.3.1 7.3.0 +# - exclude: - - env: BOGUS_JOB=true +anchors: + clang-38: &clang-38 { apt: { packages: [ "clang-3.8", + "libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-3.8", + "ubuntu-toolchain-r-test" ] } } + clang-4: &clang-4 { apt: { packages: [ "clang-4.0", + "libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-4.0", + "ubuntu-toolchain-r-test" ] } } + clang-5: &clang-5 { apt: { packages: [ "clang-5.0", + "libstdc++-7-dev" ], sources: [ "llvm-toolchain-xenial-5.0", + "ubuntu-toolchain-r-test" ] } } + clang-6: &clang-6 { apt: { packages: [ "clang-6.0", + "libc6-dbg", + "libc++-dev", + "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-6.0", + "ubuntu-toolchain-r-test" ] } } + clang-7: &clang-7 { apt: { packages: [ "clang-7", + "libc6-dbg", + "libc++-dev", + "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-7", + "ubuntu-toolchain-r-test" ] } } + clang-8: &clang-8 { apt: { packages: [ "clang-8", + "libc6-dbg", + "libc++-dev", + "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-8", + "ubuntu-toolchain-r-test" ] } } + gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ] } } + gcc-49: &gcc-49 { apt: { packages: [ "g++-4.9" ] } } + gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ] } } + 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: - - os: linux - env: TOOLSET=gcc COMPILER=g++ CXXSTD=11 + # libstdc++ + - { os: "linux", env: [ "B2_TOOLSET=gcc-4.8", "B2_CXXSTD=03,11" ], addons: *gcc-48 } + - { os: "linux", env: [ "B2_TOOLSET=gcc-4.9", "B2_CXXSTD=03,11" ], addons: *gcc-49 } + - { os: "linux", env: [ "B2_TOOLSET=gcc-5", "B2_CXXSTD=11" ], addons: *gcc-5 } + - { os: "linux", env: [ "B2_TOOLSET=gcc-6", "B2_CXXSTD=11,14" ], addons: *gcc-6 } + - { os: "linux", env: [ "B2_TOOLSET=gcc-7", "B2_CXXSTD=11,14,17" ], addons: *gcc-7 } + - { os: "linux", env: [ "B2_TOOLSET=gcc-8", "B2_CXXSTD=14,17,2a" ], addons: *gcc-8 } + - { os: "linux", env: [ "B2_TOOLSET=clang-3.8", "B2_CXXSTD=03,11,14" ], addons: *clang-38 } + - { os: "linux", env: [ "B2_TOOLSET=clang-4.0", "B2_CXXSTD=11,14" ], addons: *clang-4 } + - { os: "linux", env: [ "B2_TOOLSET=clang-5.0", "B2_CXXSTD=11,14,17" ], addons: *clang-5 } + - { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=14,17,2a" ], addons: *clang-6 } + - { os: "linux", env: [ "B2_TOOLSET=clang-7", "B2_CXXSTD=14,17,2a" ], addons: *clang-7 } + - { os: "linux", env: [ "B2_TOOLSET=clang-8", "B2_CXXSTD=14,17,2a" ], addons: *clang-8 } + + # libc++ + - { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=03,11,14,17,2a", + "B2_CXXFLAGS=-stdlib=libc++" ], addons: *clang-6 } + - { os: "osx" , env: [ "B2_TOOLSET=clang", "B2_CXXSTD=03,11,17" ] } + + # to enable Intel ICC define INTEL_ICC_SERIAL_NUMBER and the following: + # - { os: "linux", env: [ "B2_TOOLSET=intel-linux", "B2_CXXSTD=11,14,17" ], addons: *gcc-7, + # script: cd $BOOST_ROOT/libs/$SELF && ci/travis/intelicc.sh } - os: linux - env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=11 - addons: - apt: - packages: - - g++-4.7 - sources: - - ubuntu-toolchain-r-test + env: + - COMMENT=codecov.io + - B2_TOOLSET=03,11,14 + - B2_TOOLSET=gcc-8 + - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" + addons: *gcc-8 + script: + - pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd + - cd $BOOST_ROOT/libs/$SELF + - ci/travis/codecov.sh - os: linux - env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=11 - addons: - apt: - packages: - - g++-4.8 - sources: - - ubuntu-toolchain-r-test + env: + - COMMENT=cppcheck + script: + - cd $BOOST_ROOT/libs/$SELF + - ci/travis/cppcheck.sh - os: linux - env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=11 - addons: - apt: - packages: - - g++-4.9 - sources: - - ubuntu-toolchain-r-test + env: + - COMMENT=ubsan + - B2_VARIANT=variant=debug + - B2_TOOLSET=gcc-8 + - B2_CXXSTD=03,11,14,17,2a + - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" + - B2_CXXFLAGS="cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=all" + - B2_LINKFLAGS="linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=all linkflags=-fuse-ld=gold" + - UBSAN_OPTIONS=print_stacktrace=1 + addons: *gcc-8 - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14,1z - addons: - apt: - packages: - - g++-5 - sources: - - ubuntu-toolchain-r-test + env: + - COMMENT=valgrind + - B2_TOOLSET=clang-6.0 + - B2_CXXSTD=03,11,14,17,2a + - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" + - B2_VARIANT=variant=debug + - B2_TESTFLAGS=testing.launcher=valgrind + - VALGRIND_OPTS=--error-exitcode=1 + addons: *clang-6 + script: + - cd $BOOST_ROOT/libs/$SELF + - ci/travis/valgrind.sh + #################### Jobs to run on pushes to master, develop ################### + + # Coverity Scan - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test + if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (develop, master)) AND (type IN (cron, push)) + env: + - COMMENT="Coverity Scan" + - B2_TOOLSET=clang + script: + - cd $BOOST_ROOT/libs/$SELF + - ci/travis/coverity.sh - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=11,14,17 - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11 - - - os: linux - compiler: clang++-libc++ - env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=11,14,1z - addons: - apt: - packages: - - libc++-dev - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode9.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode9 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode8.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode8 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode7.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z - osx_image: xcode6.4 - -install: - - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - - cd .. - - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - - cd boost-root - - git submodule update --init tools/build - - git submodule update --init libs/config - - git submodule update --init libs/predef - - git submodule update --init libs/core - - git submodule update --init libs/detail - - git submodule update --init libs/range - - git submodule update --init libs/assert - - git submodule update --init libs/array - - git submodule update --init libs/type_traits - - git submodule update --init libs/static_assert - - git submodule update --init libs/iterator - - git submodule update --init libs/preprocessor - - git submodule update --init libs/mpl - - git submodule update --init libs/smart_ptr - - git submodule update --init libs/callable_traits - - git submodule update --init libs/type_index - - git submodule update --init libs/exception - - git submodule update --init libs/throw_exception - - git submodule update --init libs/utility - - git submodule update --init libs/bind - - git submodule update --init libs/ratio - - git submodule update --init libs/function - - git submodule update --init libs/integer - - git submodule update --init libs/numeric - - git submodule update --init libs/move - - git submodule update --init libs/container_hash - - git submodule update --init libs/io - - git submodule update --init libs/concept_check - - git submodule update --init libs/test - - git submodule update --init libs/timer - - git submodule update --init libs/chrono - - git submodule update --init libs/system - - cp -r $TRAVIS_BUILD_DIR/* libs/algorithm - - ./bootstrap.sh - - ./b2 headers - -script: - - |- - echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam - - ./b2 -j3 libs/algorithm/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT +notifications: + email: + false diff --git a/Jamfile b/Jamfile new file mode 100644 index 0000000..a2dbf99 --- /dev/null +++ b/Jamfile @@ -0,0 +1,11 @@ +# Boost.Algorithm Library Jamfile +# +# Copyright (c) 2018 James E. King III +# +# Use, modification, and distribution are subject to the +# Boost Software License, Version 1.0. (See accompanying file +# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +# please order by name to ease maintenance +build-project example ; +build-project test ; diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..36b7cd9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d0d5752 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +Algorithm, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), is a collection of general purpose algorithms. + +### License + +Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt). + +### Properties + +* C++03 +* Header-only + +### Build Status + +Branch | Travis | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests | +:-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- | +[`master`](https://github.com/boostorg/algorithm/tree/master) | [![Build Status](https://travis-ci.org/boostorg/algorithm.svg?branch=master)](https://travis-ci.org/boostorg/algorithm) | [![Build status](https://ci.appveyor.com/api/projects/status/FIXME/branch/master?svg=true)](https://ci.appveyor.com/project/USER/PROJECT/branch/master) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/99999/badge.svg)](https://scan.coverity.com/projects/boostorg-algorithm) | [![codecov](https://codecov.io/gh/boostorg/algorithm/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/algorithm/branch/master)| [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/algorithm.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](http://www.boost.org/doc/libs/master/doc/html/algorithm.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/algorithm.html) +[`develop`](https://github.com/boostorg/algorithm/tree/develop) | [![Build Status](https://travis-ci.org/boostorg/algorithm.svg?branch=develop)](https://travis-ci.org/boostorg/algorithm) | [![Build status](https://ci.appveyor.com/api/projects/status/FIXME/branch/develop?svg=true)](https://ci.appveyor.com/project/USER/PROJECT/branch/develop) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/99999/badge.svg)](https://scan.coverity.com/projects/boostorg-algorithm) | [![codecov](https://codecov.io/gh/boostorg/algorithm/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/algorithm/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/algorithm.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/algorithm.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/algorithm.html) + +### Directories + +| Name | Purpose | +| ----------- | ------------------------------ | +| `doc` | documentation | +| `example` | examples | +| `include` | headers | +| `test` | unit tests | + +### More information + +* [Ask questions](http://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-algorithm) +* [Report bugs](https://github.com/boostorg/algorithm/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well. +* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt). +* Discussions about the library are held on the [Boost developers mailing list](http://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](http://www.boost.org/community/policy.html) before posting and add the `[algorithm]` tag at the beginning of the subject line. + + diff --git a/appveyor.yml b/appveyor.yml index 6cdae88..fa8e256 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,24 @@ -# Copyright 2016 Peter Dimov +# Copyright 2016, 2017 Peter Dimov +# Copyright (C) 2017 - 2019 James E. King III # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) +# +# Generic Appveyor build script for boostorg repositories +# See: https://github.com/boostorg/boost-ci/ +# +# Instructions for customizing this script for your library: +# +# 1. Customize the compilers and language levels you want. +# 2. If you have more 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 +# 3. Enable pull request builds in your boostorg/ account. +# +# That's it - the script will do everything else for you. +# + version: 1.0.{build}-{branch} shallow_clone: true @@ -10,84 +27,104 @@ branches: only: - master - develop + - bugfix/* + - feature/* + - fix/* + - pr/* -platform: - - x64 +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, 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 + matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARGS: --toolset=msvc-14.1 address-model=64 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARGS: --toolset=msvc-14.1 address-model=32 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest cxxflags=-permissive- - - ARGS: --toolset=msvc-9.0 address-model=32 - - ARGS: --toolset=msvc-10.0 address-model=32 - - ARGS: --toolset=msvc-11.0 address-model=32 - - ARGS: --toolset=msvc-12.0 address-model=32 - - ARGS: --toolset=msvc-14.0 address-model=32 - - ARGS: --toolset=msvc-12.0 address-model=64 - - ARGS: --toolset=msvc-14.0 address-model=64 - - ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest - - ARGS: --toolset=gcc address-model=64 - CXXSTD: 03,11,14,1z - PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - - ARGS: --toolset=gcc address-model=64 - CXXSTD: 03,11,14,1z - PATH: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition - CXXSTD: 03,11,14,1z - PATH: C:\MinGW\bin;%PATH% - - ARGS: --toolset=gcc address-model=64 - CXXSTD: 03,11,14,1z - PATH: C:\cygwin64\bin;%PATH% - - ARGS: --toolset=gcc address-model=32 - CXXSTD: 03,11,14,1z - PATH: C:\cygwin\bin;%PATH% + - FLAVOR: Visual Studio 2017 C++2a Strict + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_ADDRESS_MODEL: address-model=64 + B2_CXXFLAGS: cxxflags=-permissive- + B2_CXXSTD: latest # 2a + B2_TOOLSET: msvc-14.1 + + - FLAVOR: Visual Studio 2017 C++17 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_ADDRESS_MODEL: address-model=64 + B2_CXXSTD: 17 + B2_TOOLSET: msvc-14.1 + + - FLAVOR: Visual Studio 2017 C++14 (Default) + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_ADDRESS_MODEL: address-model=64,32 + B2_TOOLSET: msvc-14.1 + + - FLAVOR: Visual Studio 2015 C++14 (Default) + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + B2_ADDRESS_MODEL: address-model=64,32 + B2_TOOLSET: msvc-14.0 + + - FLAVOR: Visual Studio 2010, 2012, 2013 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + B2_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 + B2_CXXSTD: 03,11 + # https://github.com/boostorg/test/issues/144 + B2_DEFINES: define=_POSIX_C_SOURCE=200112L + B2_THREADING: threadapi=pthread + B2_TOOLSET: gcc + + - FLAVOR: cygwin (64-bit) + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ADDPATH: C:\cygwin64\bin; + B2_ADDRESS_MODEL: address-model=64 + B2_CXXSTD: 11,17 + # https://github.com/boostorg/test/issues/144 + B2_DEFINES: define=_POSIX_C_SOURCE=200112L define=__USE_ISOC99 + B2_THREADING: threadapi=pthread + B2_TOOLSET: gcc + + - FLAVOR: mingw32 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARCH: i686 + B2_ADDRESS_MODEL: address-model=32 + B2_CXXSTD: 03,11 + SCRIPT: ci\appveyor\mingw.bat + + - FLAVOR: mingw64 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARCH: x86_64 + B2_ADDRESS_MODEL: address-model=64 + B2_CXXSTD: 11,17 + B2_DEFINES: define=__USE_ISOC99 + SCRIPT: ci\appveyor\mingw.bat install: - - cd .. - - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - - cd boost-root - - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\algorithm - - git submodule update --init tools/build - - git submodule update --init libs/config - - git submodule update --init libs/predef - - git submodule update --init libs/core - - git submodule update --init libs/detail - - git submodule update --init libs/range - - git submodule update --init libs/assert - - git submodule update --init libs/array - - git submodule update --init libs/type_traits - - git submodule update --init libs/static_assert - - git submodule update --init libs/iterator - - git submodule update --init libs/preprocessor - - git submodule update --init libs/mpl - - git submodule update --init libs/smart_ptr - - git submodule update --init libs/callable_traits - - git submodule update --init libs/type_index - - git submodule update --init libs/exception - - git submodule update --init libs/throw_exception - - git submodule update --init libs/utility - - git submodule update --init libs/bind - - git submodule update --init libs/ratio - - git submodule update --init libs/function - - git submodule update --init libs/integer - - git submodule update --init libs/numeric - - git submodule update --init libs/move - - git submodule update --init libs/container_hash - - git submodule update --init libs/io - - git submodule update --init libs/concept_check - - git submodule update --init libs/test - - git submodule update --init libs/timer - - git submodule update --init libs/chrono - - git submodule update --init libs/system - - bootstrap - - b2 headers - + - set SELF=%APPVEYOR_PROJECT_NAME:-=_% + - git clone https://github.com/boostorg/boost-ci.git C:\boost-ci + - xcopy /s /e /q /i C:\boost-ci\ci .\ci + - ci\appveyor\install.bat + build: off test_script: - - cd libs\config\test - - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% + - set SELF=%APPVEYOR_PROJECT_NAME:-=_% + - PATH=%ADDPATH%%PATH% + # The definition of B2_TOOLCXX omits B2_CXXSTD= if it was not defined above + - IF NOT DEFINED B2_CXXSTD (SET B2_TOOLCXX=toolset=%B2_TOOLSET%) ELSE (SET B2_TOOLCXX=toolset=%B2_TOOLSET% cxxstd=%B2_CXXSTD%) + # Echo the complete build command to the build log + - IF NOT DEFINED SCRIPT (ECHO b2 libs/%SELF:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_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:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3) diff --git a/include/boost/algorithm/apply_permutation.hpp b/include/boost/algorithm/apply_permutation.hpp index b9de0de..7e59009 100644 --- a/include/boost/algorithm/apply_permutation.hpp +++ b/include/boost/algorithm/apply_permutation.hpp @@ -19,7 +19,6 @@ #define BOOST_ALGORITHM_APPLY_PERMUTATION_HPP #include -#include #include #include diff --git a/include/boost/algorithm/hex.hpp b/include/boost/algorithm/hex.hpp index b833584..3cba2f9 100644 --- a/include/boost/algorithm/hex.hpp +++ b/include/boost/algorithm/hex.hpp @@ -23,6 +23,7 @@ #include // for std::iterator_traits #include +#include #include #include #include @@ -47,9 +48,9 @@ namespace boost { namespace algorithm { \brief Thrown when the input sequence unexpectedly ends */ -struct hex_decode_error : virtual boost::exception, virtual std::exception {}; -struct not_enough_input : virtual hex_decode_error {}; -struct non_hex_input : virtual hex_decode_error {}; +struct BOOST_SYMBOL_VISIBLE hex_decode_error : virtual boost::exception, virtual std::exception {}; +struct BOOST_SYMBOL_VISIBLE not_enough_input : virtual hex_decode_error {}; +struct BOOST_SYMBOL_VISIBLE non_hex_input : virtual hex_decode_error {}; typedef boost::error_info bad_char; namespace detail { diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index e7091e0..bf4f0ad 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -68,6 +68,7 @@ alias unit_test_framework [ run hex_test2.cpp unit_test_framework : : : : hex_test2 ] [ run hex_test3.cpp unit_test_framework : : : : hex_test3 ] [ run hex_test4.cpp unit_test_framework : : : : hex_test4 ] + [ run mclow.cpp unit_test_framework : : : : mclow ] [ compile-fail hex_fail1.cpp ] # Gather tests diff --git a/test/mclow.cpp b/test/mclow.cpp new file mode 100644 index 0000000..79e06cc --- /dev/null +++ b/test/mclow.cpp @@ -0,0 +1,15 @@ +#include + +#include +#include + +struct hex_decode_error : virtual boost::exception, virtual std::exception {}; +struct not_enough_input : virtual hex_decode_error {}; +struct non_hex_input : virtual hex_decode_error {}; + +void toss() { BOOST_THROW_EXCEPTION(not_enough_input()); } + +int main () { + try { toss(); } + catch ( const hex_decode_error & /*ex*/ ) {} + }