Merge branch 'develop'

This commit is contained in:
Oliver Kowalke 2021-03-02 19:41:15 +01:00
commit 914daee826
7 changed files with 391 additions and 18 deletions

29
.drone.star Normal file
View File

@ -0,0 +1,29 @@
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt)
#
# Copyright Rene Rivera 2020.
# For Drone CI we use the Starlark scripting language to reduce duplication.
# As the yaml syntax for Drone CI is rather limited.
#
#
globalenv={}
linuxglobalimage="cppalliance/droneubuntu1604:1"
windowsglobalimage="cppalliance/dronevs2019"
def main(ctx):
return [
linux_cxx("TOOLSET=gcc COMPILER=g++ CXXSTD=11 Job 0", "g++", packages="", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++', 'CXXSTD': '11', 'DRONE_JOB_UUID': 'b6589fc6ab'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14,1z Job 1", "g++-5", packages="g++-5", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-5', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': '356a192b79'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z Job 2", "g++-6", packages="g++-6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-6', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': 'da4b9237ba'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-7 CXXSTD=11,14,17 Job 3", "g++-7", packages="g++-7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-7', 'CXXSTD': '11,14,17', 'DRONE_JOB_UUID': '77de68daec'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++ CXXSTD=11 Job 4", "clang++", packages="", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '11', 'DRONE_JOB_UUID': '1b64538924'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=11, Job 5", "clang++-4.0", packages="clang-4.0 libstdc++-6-dev", llvm_os="xenial", llvm_ver="4.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-4.0', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': 'ac3478d69a'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=11, Job 6", "clang++-5.0", packages="clang-5.0 libstdc++-7-dev", llvm_os="xenial", llvm_ver="5.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-5.0', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': 'c1dfd96eea'}, globalenv=globalenv),
osx_cxx("TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1 Job 7", "clang++", packages="", buildtype="boost", buildscript="drone", xcode_version="8.3", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': '902ba3cda1'}, globalenv=globalenv),
osx_cxx("TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1 Job 8", "clang++", packages="", buildtype="boost", buildscript="drone", xcode_version="9.1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '11,14,1z', 'DRONE_JOB_UUID': 'fe5dbbcea5'}, globalenv=globalenv),
]
# from https://github.com/boostorg/boost-ci
load("@boost_ci//ci/drone/:functions.star", "linux_cxx","windows_cxx","osx_cxx","freebsd_cxx")

37
.drone/drone.sh Executable file
View File

@ -0,0 +1,37 @@
#!/bin/bash
# Copyright 2020 Rene Rivera, Sam Darwin
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or copy at http://boost.org/LICENSE_1_0.txt)
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export DRONE_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=$DRONE_BRANCH
export VCS_COMMIT_ID=$DRONE_COMMIT
export GIT_COMMIT=$DRONE_COMMIT
export REPO_NAME=$DRONE_REPO
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$DRONE_JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone -b $BOOST_BRANCH 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 tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/coroutine2
python tools/boostdep/depinst/depinst.py coroutine2
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
./b2 -j 3 libs/coroutine2/test toolset=$TOOLSET cxxstd=$CXXSTD
fi

293
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,293 @@
name: GitHub Actions CI
on:
pull_request:
push:
branches:
- master
- develop
- githubactions*
- feature/**
- fix/**
- pr/**
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- name: "TOOLSET=gcc COMPILER=g++ CXXSTD=11 Job 0"
buildtype: "boost"
packages: ""
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc"
compiler: "g++"
cxxstd: "11"
- name: "TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14,1z Job 1"
buildtype: "boost"
packages: "g++-5"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-5"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc"
compiler: "g++-5"
cxxstd: "11,14,1z"
- name: "TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z Job 2"
buildtype: "boost"
packages: "g++-6"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-6"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc"
compiler: "g++-6"
cxxstd: "11,14,1z"
- name: "TOOLSET=gcc COMPILER=g++-7 CXXSTD=11,14,17 Job 3"
buildtype: "boost"
packages: "g++-7"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-7"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc"
compiler: "g++-7"
cxxstd: "11,14,17"
- name: "TOOLSET=clang COMPILER=clang++ CXXSTD=11 Job 4"
buildtype: "boost"
packages: ""
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang"
compiler: "clang++"
cxxstd: "11"
- name: "TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=11, Job 5"
buildtype: "boost"
packages: "clang-4.0 libstdc++-6-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-4.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "4.0"
toolset: "clang"
compiler: "clang++-4.0"
cxxstd: "11,14"
- name: "TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=11, Job 6"
buildtype: "boost"
packages: "clang-5.0 libstdc++-7-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-5.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "5.0"
toolset: "clang"
compiler: "clang++-5.0"
cxxstd: "11,14,1z"
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
steps:
- name: Check if running in container
if: matrix.container != ''
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: linux
shell: bash
env:
CXX: ${{ matrix.cxx }}
SOURCES: ${{ matrix.sources }}
LLVM_OS: ${{ matrix.llvm_os }}
LLVM_VER: ${{ matrix.llvm_ver }}
PACKAGES: ${{ matrix.packages }}
PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }}
JOB_BUILDTYPE: ${{ matrix.buildtype }}
TOOLSET: ${{ matrix.toolset }}
COMPILER: ${{ matrix.compiler }}
CXXSTD: ${{ matrix.cxxstd }}
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_OS_NAME: "linux"
run: |
echo '==================================> SETUP'
echo '==================================> PACKAGES'
set -e
if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi
echo ">>>>> APT: REPO.."
for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done
if test -n "${LLVM_OS}" ; then
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
if test -n "${LLVM_VER}" ; then
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
else
# Snapshot (i.e. trunk) build of clang
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main"
fi
fi
echo ">>>>> APT: UPDATE.."
sudo -E apt-get -o Acquire::Retries=3 update
if test -n "${SOURCES}" ; then
echo ">>>>> APT: INSTALL SOURCES.."
for SOURCE in $SOURCES; do
sudo -E apt-add-repository ppa:$SOURCE
done
fi
echo ">>>>> APT: INSTALL ${PACKAGES}.."
sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES}
echo '==================================> INSTALL AND COMPILE'
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
export VCS_COMMIT_ID=$GITHUB_SHA
export GIT_COMMIT=$GITHUB_SHA
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
export USER=$(whoami)
export CC=${CC:-gcc}
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone -b $BOOST_BRANCH 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 tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/coroutine2
python tools/boostdep/depinst/depinst.py coroutine2
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
./b2 -j 3 libs/coroutine2/test toolset=$TOOLSET cxxstd=$CXXSTD
fi
#
# osx:
# strategy:
# fail-fast: false
# matrix:
# include:
#
# Github Actions only supports certain Xcode versions
# Change (or delete) the Xcode version for this job.
#
# - name: "TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1 Job 7"
# buildtype: "boost"
# packages: ""
# os: "macos-10.15"
# cxx: "clang++"
# sources: ""
# llvm_os: ""
# llvm_ver: ""
# xcode_version: "8.3"
# toolset: "clang"
# compiler: "clang++"
# cxxstd: "11,14,1z"
#
# Github Actions only supports certain Xcode versions
# Change (or delete) the Xcode version for this job.
#
# - name: "TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1 Job 8"
# buildtype: "boost"
# packages: ""
# os: "macos-10.15"
# cxx: "clang++"
# sources: ""
# llvm_os: ""
# llvm_ver: ""
# xcode_version: "9.1"
# toolset: "clang"
# compiler: "clang++"
# cxxstd: "11,14,1z"
#
#
# runs-on: ${{ matrix.os }}
#
# steps:
# - uses: actions/checkout@v2
#
# - name: Set DEVELOPER_DIR
# if: matrix.xcode_version != ''
# run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV
# - name: Test DEVELOPER_DIR
# run: echo $DEVELOPER_DIR
#
# - name: "osx"
# shell: bash
# env:
# CXX: ${{ matrix.cxx }}
# SOURCES: ${{ matrix.sources }}
# LLVM_OS: ${{ matrix.llvm_os }}
# LLVM_VER: ${{ matrix.llvm_ver }}
# PACKAGES: ${{ matrix.packages }}
# JOB_BUILDTYPE: ${{ matrix.buildtype }}
# TOOLSET: ${{ matrix.toolset }}
# COMPILER: ${{ matrix.compiler }}
# CXXSTD: ${{ matrix.cxxstd }}
# TRAVIS_BRANCH: ${{ github.base_ref }}
# TRAVIS_OS_NAME: "osx"
# run: |
# echo '==================================> SETUP'
# set -e
# sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck
# echo '==================================> PACKAGES'
# echo '==================================> INSTALL AND COMPILE'
# set -e
# export TRAVIS_BUILD_DIR=$(pwd)
# export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
# export VCS_COMMIT_ID=$GITHUB_SHA
# export GIT_COMMIT=$GITHUB_SHA
# export REPO_NAME=$(basename $GITHUB_REPOSITORY)
# export USER=$(whoami)
# export CC=${CC:-gcc}
# export PATH=~/.local/bin:/usr/local/bin:$PATH
#
# if [ "$JOB_BUILDTYPE" == "boost" ]; then
#
# echo '==================================> INSTALL'
#
# BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
# cd ..
# git clone -b $BOOST_BRANCH 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 tools/boostdep
# cp -r $TRAVIS_BUILD_DIR/* libs/coroutine2
# python tools/boostdep/depinst/depinst.py coroutine2
# ./bootstrap.sh
# ./b2 headers
#
# echo '==================================> SCRIPT'
#
# echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
# ./b2 -j 3 libs/coroutine2/test toolset=$TOOLSET cxxstd=$CXXSTD
#
# fi

View File

@ -97,8 +97,8 @@ int main() {
traverse(left_d,out); traverse(left_d,out);
}); });
std::cout << "left tree from d:\n"; std::cout << "left tree from d:\n";
std::copy(begin(left_d_reader), std::copy(std::begin(left_d_reader),
end(left_d_reader), std::end(left_d_reader),
std::ostream_iterator<std::string>(std::cout, " ")); std::ostream_iterator<std::string>(std::cout, " "));
std::cout << std::endl; std::cout << std::endl;
@ -107,8 +107,8 @@ int main() {
traverse(right_b,out); traverse(right_b,out);
}); });
std::cout << "right tree from b:\n"; std::cout << "right tree from b:\n";
std::copy(begin(right_b_reader), std::copy(std::begin(right_b_reader),
end(right_b_reader), std::end(right_b_reader),
std::ostream_iterator<std::string>(std::cout, " ")); std::ostream_iterator<std::string>(std::cout, " "));
std::cout << std::endl; std::cout << std::endl;
@ -117,8 +117,8 @@ int main() {
traverse(right_x,out); traverse(right_x,out);
}); });
std::cout << "right tree from x:\n"; std::cout << "right tree from x:\n";
std::copy(begin(right_x_reader), std::copy(std::begin(right_x_reader),
end(right_x_reader), std::end(right_x_reader),
std::ostream_iterator<std::string>(std::cout, " ")); std::ostream_iterator<std::string>(std::cout, " "));
std::cout << std::endl; std::cout << std::endl;
} }
@ -139,9 +139,9 @@ int main() {
std::cout << "left tree from d == right tree from b? " std::cout << "left tree from d == right tree from b? "
<< std::boolalpha << std::boolalpha
<< std::equal(begin(left_d_reader), << std::equal(std::begin(left_d_reader),
end(left_d_reader), std::end(left_d_reader),
begin(right_b_reader)) std::begin(right_b_reader))
<< std::endl; << std::endl;
} }
} }
@ -161,9 +161,9 @@ int main() {
std::cout << "left tree from d == right tree from x? " std::cout << "left tree from d == right tree from x? "
<< std::boolalpha << std::boolalpha
<< std::equal(begin(left_d_reader), << std::equal(std::begin(left_d_reader),
end(left_d_reader), std::end(left_d_reader),
begin(right_x_reader)) std::begin(right_x_reader))
<< std::endl; << std::endl;
} }
} }

View File

@ -294,6 +294,22 @@ end( pull_coroutine< T > &) {
}}} }}}
namespace std {
template< typename T >
typename boost::coroutines2::detail::pull_coroutine< T >::iterator
begin( boost::coroutines2::detail::pull_coroutine< T > & c) {
return boost::coroutines2::detail::begin( c);
}
template< typename T >
typename boost::coroutines2::detail::pull_coroutine< T >::iterator
end( boost::coroutines2::detail::pull_coroutine< T > & c) {
return boost::coroutines2::detail::end( c);
}
}
#ifdef BOOST_HAS_ABI_HEADERS #ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_SUFFIX # include BOOST_ABI_SUFFIX
#endif #endif

View File

@ -10,5 +10,6 @@
], ],
"maintainers": [ "maintainers": [
"Oliver Kowalke <oliver.kowalke -at- gmail.com>" "Oliver Kowalke <oliver.kowalke -at- gmail.com>"
] ],
"cxxstd": "11"
} }

View File

@ -518,14 +518,11 @@ void test_exceptions()
void test_input_iterator() void test_input_iterator()
{ {
{ {
using std::begin;
using std::end;
std::vector< int > vec; std::vector< int > vec;
coro::coroutine< int >::pull_type coro( f16); coro::coroutine< int >::pull_type coro( f16);
coro::coroutine< int >::pull_type::iterator e = end( coro); coro::coroutine< int >::pull_type::iterator e = std::end( coro);
for ( for (
coro::coroutine< int >::pull_type::iterator i = begin( coro); coro::coroutine< int >::pull_type::iterator i = std::begin( coro);
i != e; ++i) i != e; ++i)
{ vec.push_back( * i); } { vec.push_back( * i); }
BOOST_CHECK_EQUAL( ( std::size_t)5, vec.size() ); BOOST_CHECK_EQUAL( ( std::size_t)5, vec.size() );