Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
226 changes: 37 additions & 189 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
28 changes: 28 additions & 0 deletions build.jam
Original file line number Diff line number Diff line change
@@ -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>include
;

explicit
[ alias boost_sort : : : : <library>$(boost_dependencies) ]
[ alias all : boost_sort example test ]
;

call-if
: boost-library sort
;

5 changes: 4 additions & 1 deletion Jamfile.v2 → example/Jamfile.v2
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ if --tune in [ modules.peek : ARGV ]
properties = <location>. <variant>release ;
}

project spreadsort : source-location example : requirements <include>../.. <include>../../.. $(properties) ;
project : requirements $(properties)
<library>/boost/algorithm//boost_algorithm
<library>/boost/random//boost_random
;

exe spreadsort : sample.cpp ;
exe alreadysorted : alreadysorted.cpp ;
Expand Down
7 changes: 6 additions & 1 deletion test/Jamfile.v2
Original file line number Diff line number Diff line change
Expand Up @@ -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
<library>/boost/test//boost_test_exec_monitor
;

{
test-suite "sort"
: [ run integer_sort_test.cpp
Expand Down