From 1a97defc2823eae25a2a8a63889d9268c37a87a2 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Thu, 2 Jul 2020 08:59:04 +0200 Subject: [PATCH 1/5] provide std::begin/std::end overloads for pull_coroutine --- example/same_fringe.cpp | 24 +++++++++---------- .../coroutine2/detail/pull_coroutine.hpp | 16 +++++++++++++ test/test_coroutine.cpp | 7 ++---- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/example/same_fringe.cpp b/example/same_fringe.cpp index 52b9055..98d52bc 100644 --- a/example/same_fringe.cpp +++ b/example/same_fringe.cpp @@ -103,8 +103,8 @@ int main() traverse(left_d,out); }); std::cout << "left tree from d:\n"; - std::copy(begin(left_d_reader), - end(left_d_reader), + std::copy(std::begin(left_d_reader), + std::end(left_d_reader), std::ostream_iterator(std::cout, " ")); std::cout << std::endl; @@ -113,8 +113,8 @@ int main() traverse(right_b,out); }); std::cout << "right tree from b:\n"; - std::copy(begin(right_b_reader), - end(right_b_reader), + std::copy(std::begin(right_b_reader), + std::end(right_b_reader), std::ostream_iterator(std::cout, " ")); std::cout << std::endl; @@ -123,8 +123,8 @@ int main() traverse(right_x,out); }); std::cout << "right tree from x:\n"; - std::copy(begin(right_x_reader), - end(right_x_reader), + std::copy(std::begin(right_x_reader), + std::end(right_x_reader), std::ostream_iterator(std::cout, " ")); std::cout << std::endl; } @@ -146,9 +146,9 @@ int main() std::cout << "left tree from d == right tree from b? " << std::boolalpha - << std::equal(begin(left_d_reader), - end(left_d_reader), - begin(right_b_reader)) + << std::equal(std::begin(left_d_reader), + std::end(left_d_reader), + std::begin(right_b_reader)) << std::endl; } } @@ -169,9 +169,9 @@ int main() std::cout << "left tree from d == right tree from x? " << std::boolalpha - << std::equal(begin(left_d_reader), - end(left_d_reader), - begin(right_x_reader)) + << std::equal(std::begin(left_d_reader), + std::end(left_d_reader), + std::begin(right_x_reader)) << std::endl; } } diff --git a/include/boost/coroutine2/detail/pull_coroutine.hpp b/include/boost/coroutine2/detail/pull_coroutine.hpp index 0bb8ea9..96d10d6 100644 --- a/include/boost/coroutine2/detail/pull_coroutine.hpp +++ b/include/boost/coroutine2/detail/pull_coroutine.hpp @@ -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 # include BOOST_ABI_SUFFIX #endif diff --git a/test/test_coroutine.cpp b/test/test_coroutine.cpp index 0a9da6a..d4fbd8b 100644 --- a/test/test_coroutine.cpp +++ b/test/test_coroutine.cpp @@ -518,14 +518,11 @@ void test_exceptions() void test_input_iterator() { { - using std::begin; - using std::end; - std::vector< int > vec; 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 ( - coro::coroutine< int >::pull_type::iterator i = begin( coro); + coro::coroutine< int >::pull_type::iterator i = std::begin( coro); i != e; ++i) { vec.push_back( * i); } BOOST_CHECK_EQUAL( ( std::size_t)5, vec.size() ); From 3b6a47601f26cc343307a238354ff32429d1cd83 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Tue, 15 Dec 2020 17:01:09 -0500 Subject: [PATCH 2/5] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries whose minumum C++ standard compilation level is C++11 on up. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. --- meta/libraries.json | 1 + 1 file changed, 1 insertion(+) diff --git a/meta/libraries.json b/meta/libraries.json index 37c84ae..906f8b9 100644 --- a/meta/libraries.json +++ b/meta/libraries.json @@ -8,6 +8,7 @@ "category": [ "Concurrent" ], + "cxxstd": "11", "maintainers": [ "Oliver Kowalke " ] From cff3299d3b587a3a3cf8a08a5d2657134802be07 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Tue, 15 Dec 2020 21:55:31 -0500 Subject: [PATCH 3/5] Move cxxstd json field to end. --- meta/libraries.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta/libraries.json b/meta/libraries.json index 906f8b9..253c7f0 100644 --- a/meta/libraries.json +++ b/meta/libraries.json @@ -8,8 +8,8 @@ "category": [ "Concurrent" ], - "cxxstd": "11", "maintainers": [ "Oliver Kowalke " - ] + ], + "cxxstd": "11" } From 4600e5d75e784d7be161d2ea6b7324a456c64a51 Mon Sep 17 00:00:00 2001 From: sdarwin Date: Tue, 29 Dec 2020 18:14:19 +0000 Subject: [PATCH 4/5] add drone config [ci skip] --- .drone.star | 29 +++++++++++++++++++++++++++++ .drone/drone.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .drone.star create mode 100755 .drone/drone.sh diff --git a/.drone.star b/.drone.star new file mode 100644 index 0000000..e924841 --- /dev/null +++ b/.drone.star @@ -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") diff --git a/.drone/drone.sh b/.drone/drone.sh new file mode 100755 index 0000000..6024dae --- /dev/null +++ b/.drone/drone.sh @@ -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 From 88bbd850a62691fc651d398c0bb587e109b79e6e Mon Sep 17 00:00:00 2001 From: sdarwin Date: Mon, 1 Mar 2021 15:45:19 +0000 Subject: [PATCH 5/5] Add GitHub Actions config [ci skip] --- .github/workflows/ci.yml | 293 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9370fb0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -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