boost_callable_traits 0.1.0

Boost C++ library boost_callable_traits packaged using Zanbil
Documentation
name: GitHub Actions CI

on:
  pull_request:
  push:
    branches:
      - master
      - develop
      - githubactions*
      - feature/**
      - fix/**
      - pr/**

jobs:
  posix:
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: "gcc 4.7"
            buildtype: "boost"
            packages: "g++-4.7"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-4.7"
            cxxstd: "11"
          - name: "gcc 4.8"
            packages: "g++-4.8"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-4.8"
            cxxstd: "11"
          - name: "gcc 4.9"
            packages: "g++-4.9"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-4.9"
            cxxstd: "11"
          - name: "gcc 5"
            packages: "g++-5"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-5"
            cxxstd: "11,14,1z"
          - name: "gcc 6"
            packages: "g++-6"
            os: "ubuntu-latest"
            container: "ubuntu:18.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-6"
            cxxstd: "11,14,1z"
          - name: "gcc 7"
            packages: "g++-7"
            os: "ubuntu-latest"
            container: "ubuntu:18.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-7"
            cxxstd: "11,14,1z,17"
          - name: "gcc 8"
            packages: "g++-8"
            os: "ubuntu-latest"
            container: "ubuntu:18.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-8"
            cxxstd: "11,14,1z,17,2a"
          - name: "gcc 9"
            packages: "g++-9"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-9"
            cxxstd: "11,14,17,2a"
          - name: "gcc 10"
            packages: "g++-10"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "gcc"
            compiler: "g++-10"
            cxxstd: "11,14,17,20"
          - name: "clang 3.5"
            packages: "clang-3.5"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "precise"
            llvm_ver: "3.5"
            toolset: "clang"
            compiler: "clang++-3.5"
            cxxstd: "11"
          - name: "clang 3.6"
            packages: "clang-3.6"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "precise"
            llvm_ver: "3.6"
            toolset: "clang"
            compiler: "clang++-3.6"
            cxxstd: "11"
          - name: "clang 3.7"
            packages: "clang-3.7"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "precise"
            llvm_ver: "3.7"
            toolset: "clang"
            compiler: "clang++-3.7"
            cxxstd: "11"
          - name: "clang 3.8"
            packages: "clang-3.8 libstdc++-4.9-dev"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "precise"
            llvm_ver: "3.8"
            toolset: "clang"
            compiler: "clang++-3.8"
            cxxstd: "11,14"
          - name: "clang 3.9"
            packages: "clang-3.9 libstdc++-4.9-dev"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "precise"
            llvm_ver: "3.9"
            toolset: "clang"
            compiler: "clang++-3.9"
            cxxstd: "11,14"
          - name: "clang 4.0"
            packages: "clang-4.0"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: "xenial"
            llvm_ver: "4.0"
            toolset: "clang"
            compiler: "clang++-4.0"
            cxxstd: "11,14"
          - name: "clang 5.0"
            packages: "clang-5.0"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "clang"
            compiler: "clang++-5.0"
            cxxstd: "11,14,1z,17"
          - name: "clang 6.0"
            packages: "clang-6.0"
            os: "ubuntu-latest"
            container: "ubuntu:16.04"
            llvm_os: ""
            llvm_ver: ""
            toolset: "clang"
            compiler: "clang++-6.0"
            cxxstd: "11,14,1z,17,2a"
          - name: "clang 7"
            packages: "clang-7"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: "xenial"
            llvm_ver: "7"
            toolset: "clang"
            compiler: "clang++-7"
            cxxstd: "11,14,1z,17"
          - name: "clang 8"
            packages: "clang-8"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: "xenial"
            llvm_ver: "8"
            toolset: "clang"
            compiler: "clang++-8"
            cxxstd: "11,14,17"
          - name: "clang 9"
            packages: "clang-9"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: "focal"
            llvm_ver: "9"
            toolset: "clang"
            compiler: "clang++-9"
            cxxstd: "11,14,17,2a"
          - name: "clang 10"
            packages: "clang-10"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            llvm_os: "focal"
            llvm_ver: "10"
            toolset: "clang"
            compiler: "clang++-10"
            cxxstd: "11,14,17,20"
          - name: "clang 11"
            packages: "clang-11"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            sources: ""
            llvm_os: "focal"
            llvm_ver: "11"
            toolset: "clang"
            compiler: "clang++-11"
            cxxstd: "11,14,17,20,latest"
          - name: "clang 12"
            packages: "clang-12"
            os: "ubuntu-latest"
            container: "ubuntu:20.04"
            sources: ""
            llvm_os: "focal"
            llvm_ver: "12"
            toolset: "clang"
            compiler: "clang++-12"
            cxxstd: "11,14,17,20,latest"

    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: Setup container environment
        if: matrix.container
        run: |
          apt-get update
          apt-get -y install sudo python3 git g++ curl xz-utils

      - name: Install nodejs20glibc2.17
        if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
        run: |
          curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
          tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
          ldd /__e/node20/bin/node

      - name: Install packages
        if: matrix.packages
        run: sudo apt-get -y install ${{matrix.packages}}

      - uses: actions/checkout@v2

      - name: linux
        shell: bash
        env:
          CXX: ${{ matrix.compiler }}
          SOURCES: ${{ matrix.sources }}
          LLVM_OS: ${{ matrix.llvm_os }}
          LLVM_VER: ${{ matrix.llvm_ver }}
          PACKAGES: ${{ matrix.packages }}
          TOOLSET: ${{ matrix.toolset }}
          CXXSTD: ${{ matrix.cxxstd }}
          TRAVIS_BRANCH: ${{ github.base_ref }}
          TRAVIS_OS_NAME: "linux"
        run: |
          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

          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 tools/boost_install
          git submodule update --init libs/config
          git submodule update --init libs/headers
          mkdir -p libs/callable_traits
          cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits
          ./bootstrap.sh
          ./b2 headers
          echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam
          ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD}
  osx:
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: "xcode"
            os: "macos-15"
            cxx: "clang++"
            toolset: "clang"
            compiler: "clang++"
            cxxstd: "11,14,17"

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: "osx"
        shell: bash
        env:
          CXX: ${{ matrix.compiler }}
          TOOLSET: ${{ matrix.toolset }}
          CXXSTD: ${{ matrix.cxxstd }}
          TRAVIS_BRANCH: ${{ github.base_ref }}
          TRAVIS_OS_NAME: "osx"
        run: |
          set -e
          sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck
          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

          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 tools/boost_install
          git submodule update --init libs/config
          git submodule update --init libs/headers
          mkdir -p libs/callable_traits
          cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits
          ./bootstrap.sh
          ./b2 headers

          echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam
          ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD}

  windows:
    strategy:
      fail-fast: false
      matrix:
        include:
          - toolset: msvc-14.2
            cxxstd: "11,14,17,latest"
            os: windows-2019
          - toolset: msvc-14.3
            cxxstd: "11,14,17,20,latest"
            os: windows-2022

    runs-on: ${{matrix.os}}

    steps:
      - uses: actions/checkout@v2

      - name: "windows"
        shell: cmd
        run: |
          echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
          for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
          echo LIBRARY: %LIBRARY%
          echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
          echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
          echo GITHUB_REF: %GITHUB_REF%
          if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
          set BOOST_BRANCH=develop
          for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
          echo BOOST_BRANCH: %BOOST_BRANCH%
          cd ..
          git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
          cd boost-root
          xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
          git submodule update --init tools/build
          git submodule update --init tools/boost_install
          git submodule update --init libs/config
          git submodule update --init libs/headers
          cmd /c bootstrap
          b2 libs\callable_traits\test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" && b2 libs\callable_traits\example toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64"