#============================================================================== # Copyright (c) 2022 Nikita Kniazev # # Use, modification and distribution is 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) #============================================================================== name: Multiarch CI on: pull_request: push: jobs: emulated: name: ${{ matrix.container }} ${{ matrix.platform }} ${{ matrix.toolset }} runs-on: ${{ matrix.os || 'ubuntu-latest' }} strategy: fail-fast: false matrix: container: [ 'debian' ] platform: - linux/386 - linux/amd64 - linux/arm/v5 - linux/arm/v7 - linux/arm64/v8 - linux/mips64le - linux/ppc64le - linux/s390x include: - { container: 'debian:experimental', platform: linux/riscv64 } - { container: 'lpenz/debian-buster-mipsel', platform: linux/mipsel } - { container: 'lpenz/debian-buster-mips', platform: linux/mips } steps: - name: Checkout Boost super-repo env: REF: ${{ github.base_ref || github.ref_name }} BRANCH: ${{ env.REF != 'develop' && env.REF != 'master' && 'develop' || env.REF }} shell: bash run: git clone -j10 --depth=1 --branch=${{ env.BRANCH }} --no-tags https://github.com/boostorg/boost.git '${{ github.workspace }}' - name: Checkout minimal Boost run: git submodule update --init --depth 1 --jobs 10 --single-branch -- tools/build libs/config tools/boostdep - name: Checkout the commit uses: actions/checkout@v4 with: path: libs/context - name: Checkout library dependencies run: python tools/boostdep/depinst/depinst.py --git_args "--jobs 10" context - name: "Setup QEMU and Docker" run: | set -eu sudo apt-get -o Acquire::Retries=3 update sudo apt-get -o Acquire::Retries=3 -y install qemu-user-static - name: "Building and testing on ${{ matrix.container }} ${{ matrix.platform }}" uses: addnab/docker-run-action@v3 with: image: ${{ matrix.container }} options: -v ${{ github.workspace }}:/boost-root -w /boost-root ${{ matrix.platform && format('--platform {0}', matrix.platform) || '' }} run: | set -eu echo "::group::Switch to archive repository" ${{ contains(matrix.container, 'buster') }} && sed -i 's/deb.debian/archive.debian/' /etc/apt/sources.list && cat /etc/apt/sources.list echo "::endgroup::" echo "::group::Install GCC" apt-get -o Acquire::Retries=3 update apt-get -o Acquire::Retries=3 -yq --no-install-suggests --no-install-recommends install g++ echo "::endgroup::" echo "::group::GCC info" g++ -v echo "::endgroup::" echo "::group::Build B2" ./bootstrap.sh echo "::endgroup::" echo "::group::Toolset info" ./b2 libs/config/test//print_config_info echo "::endgroup::" echo "::group::Run tests" ./b2 libs/context/test echo "::endgroup::" native: name: native ${{ matrix.os }} ${{ matrix.toolset }} ${{ matrix.options }} runs-on: ${{ matrix.os }}-latest strategy: fail-fast: false matrix: os: [ 'ubuntu' ] toolset: [ 'gcc', 'clang' ] include: - { os: macos, toolset: darwin, options: cxxstd=17 } - { os: macos, toolset: clang, options: cxxstd=17 } - { os: windows, toolset: gcc } - { os: windows, toolset: clang-win, options: embed-manifest-via=linker } - { os: windows, toolset: clang-win, options: "address-model=32 embed-manifest-via=linker" } steps: - name: Checkout Boost super-repo env: REF: ${{ github.base_ref || github.ref_name }} BRANCH: ${{ env.REF != 'develop' && env.REF != 'master' && 'develop' || env.REF }} shell: bash run: git clone -j10 --depth=1 --branch=${{ env.BRANCH }} --no-tags https://github.com/boostorg/boost.git '${{ github.workspace }}' - name: Checkout minimal Boost run: git submodule update --init --depth 1 --jobs 10 --single-branch -- tools/build libs/config tools/boostdep - name: Checkout the commit uses: actions/checkout@v4 with: path: libs/context - name: Checkout library dependencies run: python tools/boostdep/depinst/depinst.py --git_args "--jobs 10" context - name: Bootstrap via bash shell: bash if: ${{ runner.os != 'Windows' }} run: ./bootstrap.sh && echo "`pwd`" >> $GITHUB_PATH - name: Bootstrap via bat shell: pwsh if: ${{ runner.os == 'Windows' }} run: .\bootstrap.bat && echo "$pwd" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Dump toolset info run: b2 libs/config/test//print_config_info toolset=${{ matrix.toolset }} ${{ matrix.options }} - name: Build and test run: b2 libs/context/test toolset=${{ matrix.toolset }} ${{ matrix.options }}