diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 368d074..b20576c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,200 +17,48 @@ jobs: fail-fast: false matrix: include: - - name: "TOOLSET=gcc CXXSTD=03,11 Job 0" - buildtype: "boost" - packages: "" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++" - sources: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - cxxstd: "03,11" - - name: "TOOLSET=clang CXXSTD=03,11,14,1z Job 1" - buildtype: "boost" - packages: "libstdc++-4.9-dev clang" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++" - sources: "" - llvm_os: "" - llvm_ver: "" + - name: "g++-13" + os: ubuntu-latest + packages: "g++-13" + toolset: "gcc-13" + - name: "clang-15" + os: ubuntu-latest + packages: "clang-15" + toolset: "clang-15" + - name: "xcode" + os: macos-latest toolset: "clang" - cxxstd: "03,11,14,1z" - - runs-on: ${{ matrix.os }} - container: ${{ matrix.container }} - + runs-on: ${{matrix.os}} 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 != '' + - uses: actions/checkout@main + - name: Install + if: matrix.packages 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 - - - 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 }} - CXXSTD: ${{ matrix.cxxstd }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "linux" + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt-get -o Acquire::Retries=3 update -y + sudo apt-get -o Acquire::Retries=3 -y install ${{matrix.packages}} + - name: Setup 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 + echo GITHUB_BASE_REF: $GITHUB_BASE_REF + echo GITHUB_REF: $GITHUB_REF + REF=${GITHUB_BASE_REF:-$GITHUB_REF} + REF=${REF#refs/heads/} + echo REF: $REF + BOOST_BRANCH=develop && ( test "${GITHUB_REF_NAME}" == "master" || test "${GITHUB_REF_NAME}" == "modular" ) && BOOST_BRANCH=${GITHUB_REF_NAME} || true + BOOST_GIT=https://github.com/${GITHUB_REPOSITORY/sort/boost}.git + echo BOOST_GIT: ${BOOST_GIT} + echo BOOST_BRANCH: ${BOOST_BRANCH} cd .. - git clone -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root + git clone -b "${BOOST_BRANCH}" --depth 1 "${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/sort - python tools/boostdep/depinst/depinst.py sort + git submodule update --init --jobs 3 tools/boostdep libs/assert libs/config libs/core libs/test libs/sort + python tools/boostdep/depinst/depinst.py -X test -g "--jobs 3" test + python tools/boostdep/depinst/depinst.py -X test -g "--jobs 3" sort + rm -rf libs/sort/* + cp -r $GITHUB_WORKSPACE/* libs/sort ./bootstrap.sh - ./b2 headers - - echo '==================================> SCRIPT' - - ./b2 libs/sort/test toolset=$TOOLSET cxxstd=$CXXSTD - - fi - osx: - strategy: - fail-fast: false - matrix: - include: - - name: "TOOLSET=clang CXXSTD=03,11,14,1z Job 2" - buildtype: "boost" - packages: "" - os: "macos-12" - cxx: "clang++" - sources: "" - llvm_os: "" - llvm_ver: "" - xcode_version: 14.2 - toolset: "clang" - cxxstd: "03,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 }} - CXXSTD: ${{ matrix.cxxstd }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "osx" + ./b2 -d0 headers + - name: Test 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/sort - python tools/boostdep/depinst/depinst.py sort - ./bootstrap.sh - ./b2 headers - - echo '==================================> SCRIPT' - - ./b2 libs/sort/test toolset=$TOOLSET cxxstd=$CXXSTD - - fi + cd ../boost-root + ./b2 -j3 libs/sort/test toolset=${{matrix.toolset}} cxxstd=11,14,17,20 diff --git a/build.jam b/build.jam new file mode 100644 index 0000000..45f2631 --- /dev/null +++ b/build.jam @@ -0,0 +1,28 @@ +# Copyright René Ferdinand Rivera Morell 2023-2024 +# Distributed under 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) + +require-b2 5.2 ; + +constant boost_dependencies : + /boost/config//boost_config + /boost/core//boost_core + /boost/range//boost_range + /boost/static_assert//boost_static_assert + /boost/type_traits//boost_type_traits ; + +project /boost/sort + : common-requirements + include + ; + +explicit + [ alias boost_sort : : : : $(boost_dependencies) ] + [ alias all : boost_sort example test ] + ; + +call-if + : boost-library sort + ; + diff --git a/Jamfile.v2 b/example/Jamfile.v2 similarity index 91% rename from Jamfile.v2 rename to example/Jamfile.v2 index da650b3..d088ffc 100644 --- a/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -11,7 +11,10 @@ if --tune in [ modules.peek : ARGV ] properties = . release ; } -project spreadsort : source-location example : requirements ../.. ../../.. $(properties) ; +project : requirements $(properties) + /boost/algorithm//boost_algorithm + /boost/random//boost_random + ; exe spreadsort : sample.cpp ; exe alreadysorted : alreadysorted.cpp ; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1d581a8..56b4226 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -7,9 +7,14 @@ # # See http://www.boost.org/libs/sort for library home page. -import ../../config/checks/config : requires ; +import-search /boost/config/checks ; +import config : requires ; import testing ; +project : requirements + /boost/test//boost_test_exec_monitor + ; + { test-suite "sort" : [ run integer_sort_test.cpp