diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1df1076..24509eb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,21 @@ -name: GitHub Actions CI +# +# Copyright 2020-2021 Peter Dimov +# Copyright 2021 Andrey Semashev +# Copyright 2021-2026 Alexander Grund +# Copyright 2022-2025 James E. King III +# Copyright 2026 Jeff Trull +# +# 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) +# +# This workflow uses the Boost.CI reusable workflow which builds a variety of +# configurations of a project, runs tests, and generates code coverage reports. +# +--- +name: Boost.Wave + +permissions: + contents: read on: pull_request: @@ -6,271 +23,27 @@ on: branches: - master - develop - - githubactions* + - bugfix/** - feature/** - fix/** + - github/** - pr/** + paths-ignore: + - LICENSE + - meta/** + - README.md jobs: - posix: - strategy: - fail-fast: false - matrix: - include: - - name: "TOOLSET=gcc CXXSTD=11 Job 0" - buildtype: "boost" - packages: "" - packages_to_remove: "" - os: ubuntu-latest - container: "ubuntu:16.04" - cxx: "g++" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - cxxstd: "11" - - name: "TOOLSET=gcc-5 CXXSTD=11,14,1z Job 1" - buildtype: "boost" - packages: "g++-5" - packages_to_remove: "" - os: ubuntu-latest - container: "ubuntu:16.04" - cxx: "g++-5" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc-5" - cxxstd: "11,14,1z" - - name: "TOOLSET=gcc-6 CXXSTD=11,14,1z Job 2" - buildtype: "boost" - packages: "g++-6" - packages_to_remove: "" - os: ubuntu-latest - container: "ubuntu:16.04" - cxx: "g++-6" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc-6" - cxxstd: "11,14,1z" - - name: "TOOLSET=gcc-7 CXXSTD=11,14,17 Job 3" - buildtype: "boost" - packages: "g++-7" - packages_to_remove: "" - os: ubuntu-latest - container: "ubuntu:16.04" - cxx: "g++-7" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc-7" - cxxstd: "11,14,17" - - name: "TOOLSET=gcc-9 CXXSTD=11,14,17,20 Job 6" - buildtype: "boost" - packages: "g++-9" - packages_to_remove: "" - os: ubuntu-latest - container: "ubuntu:16.04" - cxx: "g++-9" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc-9" - cxxstd: "11,14,17,20" - - name: "TOOLSET=clang CXXSTD=11,14,17,20 Job 4" - buildtype: "boost" - packages: "" - packages_to_remove: "" - os: "ubuntu-24.04" - cxx: "clang++" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "clang" - cxxstd: "11,14,17,20" - - runs-on: ${{ matrix.os }} - container: - image: ${{matrix.container}} - volumes: - - /node20217:/node20217:rw,rshared - - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} - - steps: - - - name: Check if running in container - if: matrix.container != '' - run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV - - name: If running in container, upgrade packages - if: matrix.container != '' - run: | - apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python ruby cpio gcc-multilib g++-multilib pkgconf python3 ccache libpython-dev - sudo apt-add-repository ppa:git-core/ppa - sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git - python_version=$(python3 -c 'import sys; print("{0.major}.{0.minor}".format(sys.version_info))') - sudo wget https://bootstrap.pypa.io/pip/$python_version/get-pip.py - sudo python3 get-pip.py - sudo /usr/local/bin/pip install cmake - # Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590 - curl -sL https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 - - - uses: actions/checkout@v4 - env: - ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true - - - 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 }} - 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/wave - python tools/boostdep/depinst/depinst.py -I tool -I samples wave - ./bootstrap.sh - ./b2 headers - - echo '==================================> SCRIPT' - - ./b2 libs/wave/test toolset=$TOOLSET cxxstd=$CXXSTD - ./b2 libs/wave/tool/build//wave toolset=$TOOLSET cxxstd=$CXXSTD - ./b2 libs/wave/samples toolset=$TOOLSET cxxstd=$CXXSTD - - fi - osx: - strategy: - fail-fast: false - matrix: - include: - - name: "TOOLSET=clang CXXSTD=11,14,17,20 Job 5" - buildtype: "boost" - packages: "" - os: "macos-15" - cxx: "clang++" - sources: "" - llvm_os: "" - llvm_ver: "" - xcode_version: 16.2.0 - toolset: "clang-16" - cxxstd: "11,14,17,20,2b" - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - - 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 }} - 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/wave - python tools/boostdep/depinst/depinst.py -I tool -I samples wave - ./bootstrap.sh - ./b2 headers - - echo '==================================> SCRIPT' - - ./b2 libs/wave/test toolset=$TOOLSET cxxstd=$CXXSTD - ./b2 libs/wave/tool/build//wave toolset=$TOOLSET cxxstd=$CXXSTD - ./b2 libs/wave/samples toolset=$TOOLSET cxxstd=$CXXSTD - - fi + call-boost-ci: + name: Run Boost.CI + uses: boostorg/boost-ci/.github/workflows/reusable.yml@master + # Customization: + with: + enable_reflection: true + b2_targets: libs/wave/test libs/wave/tool/build libs/wave/samples + enable_cmake: false + depinst_args: --include tool --include samples # fetch tool and sample dependencies + enable_mingw: false # fails on non-ASCII test filename + exclude_compiler: clang-3.5,clang-3.6,clang-3.7,clang-3.8,clang-5.0 # various compiler bugs + exclude_jobs: >- + type: windows, toolset: gcc # fails on non-ASCII test filename diff --git a/README.md b/README.md index 8d5e313a..2003f0c7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Boost.Wave -Branch | Appveyor (MSVC) | GitHub Actions (gcc, clang) | ----------|-----------------|-----------------------------| -Master | [![AppVeyor](https://ci.appveyor.com/api/projects/status/3v74vuhk8dwt2wr9/branch/master?svg=true)](https://ci.appveyor.com/project/jefftrull/wave/branch/master) | [![GitHub Actions](https://github.com/boostorg/wave/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/wave/actions?query=branch%3Amaster) | -Develop | [![AppVeyor](https://ci.appveyor.com/api/projects/status/3v74vuhk8dwt2wr9/branch/develop?svg=true)](https://ci.appveyor.com/project/jefftrull/wave/branch/develop) | [![GitHub Actions](https://github.com/boostorg/wave/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/wave/actions?query=branch%3Adevelop) | +Branch | GitHub Actions (gcc, clang, MSVC) | +---------|-----------------------------| +Master | [![GitHub Actions](https://github.com/boostorg/wave/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/wave/actions?query=branch%3Amaster) | +Develop | [![GitHub Actions](https://github.com/boostorg/wave/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/wave/actions?query=branch%3Adevelop) | The Wave C++ preprocessor library is a Standards conformant implementation of the mandated C99/C++ preprocessor functionality packed behind a simple to use interface, which integrates well with the well known idioms of the Standard Template Library (STL). diff --git a/build.jam b/build.jam index 029ccd27..c89b835c 100644 --- a/build.jam +++ b/build.jam @@ -23,7 +23,8 @@ constant boost_dependencies : /boost/smart_ptr//boost_smart_ptr /boost/spirit//boost_spirit /boost/throw_exception//boost_throw_exception - /boost/type_traits//boost_type_traits ; + /boost/type_traits//boost_type_traits + /boost/xpressive//boost_xpressive ; project /boost/wave : common-requirements