forked from boostorg/algorithm
Merge pull request #56 from jeking3/ci
Enhance CI, add license and readme, and fix some issues
This commit is contained in:
338
.travis.yml
338
.travis.yml
@ -1,171 +1,193 @@
|
|||||||
# Copyright 2016, 2017, 2018 Peter Dimov
|
# Copyright 2016 - 2018 Peter Dimov
|
||||||
# Copyright 2018 T. Zachary Laine
|
# Copyright 2018 T. Zachary Laine
|
||||||
|
# Copyright 2017 - 2019 James E. King III
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
# 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)
|
# (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/<library> account.
|
||||||
|
#
|
||||||
|
# That's it - the scripts will do everything else for you.
|
||||||
|
|
||||||
|
dist: xenial
|
||||||
language: cpp
|
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:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
- /feature\/.*/
|
- bugfix/*
|
||||||
|
- feature/*
|
||||||
env:
|
- fix/*
|
||||||
matrix:
|
- pr/*
|
||||||
- BOGUS_JOB=true
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
|
|
||||||
exclude:
|
|
||||||
- env: BOGUS_JOB=true
|
|
||||||
|
|
||||||
include:
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=11
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=11
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- g++-4.7
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=11
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- g++-4.8
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=11
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- g++-4.9
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14,1z
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- g++-5
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- g++-6
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- 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:
|
script:
|
||||||
- |-
|
- cd $BOOST_ROOT/libs/$SELF
|
||||||
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
|
- ci/travis/build.sh
|
||||||
- ./b2 -j3 libs/algorithm/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
#
|
||||||
|
|
||||||
|
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:
|
||||||
|
# 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:
|
||||||
|
- 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:
|
||||||
|
- COMMENT=cppcheck
|
||||||
|
script:
|
||||||
|
- cd $BOOST_ROOT/libs/$SELF
|
||||||
|
- ci/travis/cppcheck.sh
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
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:
|
||||||
|
- 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
|
||||||
|
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
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email:
|
||||||
|
false
|
||||||
|
11
Jamfile
Normal file
11
Jamfile
Normal file
@ -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 ;
|
23
LICENSE
Normal file
23
LICENSE
Normal file
@ -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.
|
35
README.md
Normal file
35
README.md
Normal file
@ -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) | [](https://travis-ci.org/boostorg/algorithm) | [](https://ci.appveyor.com/project/USER/PROJECT/branch/master) | [](https://scan.coverity.com/projects/boostorg-algorithm) | [](https://codecov.io/gh/boostorg/algorithm/branch/master)| [](https://pdimov.github.io/boostdep-report/master/algorithm.html) | [](http://www.boost.org/doc/libs/master/doc/html/algorithm.html) | [](http://www.boost.org/development/tests/master/developer/algorithm.html)
|
||||||
|
[`develop`](https://github.com/boostorg/algorithm/tree/develop) | [](https://travis-ci.org/boostorg/algorithm) | [](https://ci.appveyor.com/project/USER/PROJECT/branch/develop) | [](https://scan.coverity.com/projects/boostorg-algorithm) | [](https://codecov.io/gh/boostorg/algorithm/branch/develop) | [](https://pdimov.github.io/boostdep-report/develop/algorithm.html) | [](http://www.boost.org/doc/libs/develop/doc/html/algorithm.html) | [](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.
|
||||||
|
|
||||||
|
|
181
appveyor.yml
181
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.
|
# 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)
|
# (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/<library> account.
|
||||||
|
#
|
||||||
|
# That's it - the script will do everything else for you.
|
||||||
|
#
|
||||||
|
|
||||||
version: 1.0.{build}-{branch}
|
version: 1.0.{build}-{branch}
|
||||||
|
|
||||||
shallow_clone: true
|
shallow_clone: true
|
||||||
@ -10,84 +27,104 @@ branches:
|
|||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- bugfix/*
|
||||||
|
- feature/*
|
||||||
|
- fix/*
|
||||||
|
- pr/*
|
||||||
|
|
||||||
platform:
|
matrix:
|
||||||
- x64
|
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
|
||||||
|
allow_failures:
|
||||||
|
- MAYFAIL: true
|
||||||
|
|
||||||
environment:
|
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:
|
matrix:
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
- FLAVOR: Visual Studio 2017 C++2a Strict
|
||||||
ARGS: --toolset=msvc-14.1 address-model=64
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
B2_ADDRESS_MODEL: address-model=64
|
||||||
ARGS: --toolset=msvc-14.1 address-model=32
|
B2_CXXFLAGS: cxxflags=-permissive-
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
B2_CXXSTD: latest # 2a
|
||||||
ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest cxxflags=-permissive-
|
B2_TOOLSET: msvc-14.1
|
||||||
- ARGS: --toolset=msvc-9.0 address-model=32
|
|
||||||
- ARGS: --toolset=msvc-10.0 address-model=32
|
- FLAVOR: Visual Studio 2017 C++17
|
||||||
- ARGS: --toolset=msvc-11.0 address-model=32
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
- ARGS: --toolset=msvc-12.0 address-model=32
|
B2_ADDRESS_MODEL: address-model=64
|
||||||
- ARGS: --toolset=msvc-14.0 address-model=32
|
B2_CXXSTD: 17
|
||||||
- ARGS: --toolset=msvc-12.0 address-model=64
|
B2_TOOLSET: msvc-14.1
|
||||||
- ARGS: --toolset=msvc-14.0 address-model=64
|
|
||||||
- ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest
|
- FLAVOR: Visual Studio 2017 C++14 (Default)
|
||||||
- ARGS: --toolset=gcc address-model=64
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
CXXSTD: 03,11,14,1z
|
B2_ADDRESS_MODEL: address-model=64,32
|
||||||
PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
|
B2_TOOLSET: msvc-14.1
|
||||||
- ARGS: --toolset=gcc address-model=64
|
|
||||||
CXXSTD: 03,11,14,1z
|
- FLAVOR: Visual Studio 2015 C++14 (Default)
|
||||||
PATH: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
- ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition
|
B2_ADDRESS_MODEL: address-model=64,32
|
||||||
CXXSTD: 03,11,14,1z
|
B2_TOOLSET: msvc-14.0
|
||||||
PATH: C:\MinGW\bin;%PATH%
|
|
||||||
- ARGS: --toolset=gcc address-model=64
|
- FLAVOR: Visual Studio 2010, 2012, 2013
|
||||||
CXXSTD: 03,11,14,1z
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
PATH: C:\cygwin64\bin;%PATH%
|
B2_TOOLSET: msvc-10.0,msvc-11.0,msvc-12.0
|
||||||
- ARGS: --toolset=gcc address-model=32
|
|
||||||
CXXSTD: 03,11,14,1z
|
- FLAVOR: cygwin (32-bit)
|
||||||
PATH: C:\cygwin\bin;%PATH%
|
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:
|
install:
|
||||||
- cd ..
|
- set SELF=%APPVEYOR_PROJECT_NAME:-=_%
|
||||||
- git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
- git clone https://github.com/boostorg/boost-ci.git C:\boost-ci
|
||||||
- cd boost-root
|
- xcopy /s /e /q /i C:\boost-ci\ci .\ci
|
||||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\algorithm
|
- ci\appveyor\install.bat
|
||||||
- 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
|
|
||||||
|
|
||||||
build: off
|
build: off
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- cd libs\config\test
|
- set SELF=%APPVEYOR_PROJECT_NAME:-=_%
|
||||||
- ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD%
|
- 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)
|
||||||
|
@ -48,9 +48,9 @@ namespace boost { namespace algorithm {
|
|||||||
\brief Thrown when the input sequence unexpectedly ends
|
\brief Thrown when the input sequence unexpectedly ends
|
||||||
|
|
||||||
*/
|
*/
|
||||||
struct hex_decode_error : virtual boost::exception, virtual std::exception {};
|
struct BOOST_SYMBOL_VISIBLE hex_decode_error : virtual boost::exception, virtual std::exception {};
|
||||||
struct not_enough_input : virtual hex_decode_error {};
|
struct BOOST_SYMBOL_VISIBLE not_enough_input : virtual hex_decode_error {};
|
||||||
struct non_hex_input : virtual hex_decode_error {};
|
struct BOOST_SYMBOL_VISIBLE non_hex_input : virtual hex_decode_error {};
|
||||||
typedef boost::error_info<struct bad_char_,char> bad_char;
|
typedef boost::error_info<struct bad_char_,char> bad_char;
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
@ -69,6 +69,7 @@ alias unit_test_framework
|
|||||||
[ run hex_test2.cpp unit_test_framework : : : : hex_test2 ]
|
[ run hex_test2.cpp unit_test_framework : : : : hex_test2 ]
|
||||||
[ run hex_test3.cpp unit_test_framework : : : : hex_test3 ]
|
[ run hex_test3.cpp unit_test_framework : : : : hex_test3 ]
|
||||||
[ run hex_test4.cpp unit_test_framework : : : : hex_test4 ]
|
[ run hex_test4.cpp unit_test_framework : : : : hex_test4 ]
|
||||||
|
[ run mclow.cpp unit_test_framework : : : : mclow ]
|
||||||
[ compile-fail hex_fail1.cpp ]
|
[ compile-fail hex_fail1.cpp ]
|
||||||
|
|
||||||
# Gather tests
|
# Gather tests
|
||||||
|
15
test/mclow.cpp
Normal file
15
test/mclow.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
#include <boost/exception/exception.hpp>
|
||||||
|
#include <boost/throw_exception.hpp>
|
||||||
|
|
||||||
|
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*/ ) {}
|
||||||
|
}
|
Reference in New Issue
Block a user