-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #163 from cppalliance/sha1
SHA1 Re-write
- Loading branch information
Showing
28 changed files
with
1,824 additions
and
698 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,202 @@ | ||
# ------------------------------------------------------------------------------ | ||
# Copyright Matt Borland 2023 - 2024. | ||
# Copyright Christopher Kormanyos 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) | ||
# ------------------------------------------------------------------------------ | ||
|
||
# Copyright 2020-2021 Peter Dimov | ||
# Copyright 2021 Andrey Semashev | ||
# Copyright 2021 Alexander Grund | ||
# Copyright 2022 James E. King III | ||
# Copyright 2023 Matt Borland | ||
# | ||
# 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) | ||
--- | ||
name: codecov | ||
|
||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- master | ||
- develop | ||
- bugfix/** | ||
- feature/** | ||
pull_request: | ||
types: [opened, synchronize, reopened] | ||
- fix/** | ||
- pr/** | ||
|
||
env: | ||
GIT_FETCH_JOBS: 8 | ||
NET_RETRY_COUNT: 5 | ||
B2_CI_VERSION: 1 | ||
B2_VARIANT: debug,release | ||
B2_LINK: shared,static | ||
LCOV_BRANCH_COVERAGE: 0 | ||
CODECOV_NAME: Github Actions | ||
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | ||
|
||
jobs: | ||
gcc-gcov-native: | ||
runs-on: ubuntu-latest | ||
posix: | ||
defaults: | ||
run: | ||
shell: bash | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
standard: [ c++20 ] | ||
compiler: [ g++ ] | ||
include: | ||
- { name: Collect coverage, coverage: yes, | ||
compiler: gcc-13, cxxstd: '23', os: ubuntu-24.04, install: 'g++-13-multilib', address-model: '32,64' } | ||
|
||
timeout-minutes: 120 | ||
runs-on: ${{matrix.os}} | ||
container: ${{matrix.container}} | ||
env: {B2_USE_CCACHE: 1} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup environment | ||
run: | | ||
if [ -f "/etc/debian_version" ]; then | ||
echo "DEBIAN_FRONTEND=noninteractive" >> $GITHUB_ENV | ||
export DEBIAN_FRONTEND=noninteractive | ||
fi | ||
if [ -n "${{matrix.container}}" ] && [ -f "/etc/debian_version" ]; then | ||
apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common curl | ||
# Need (newer) git, and the older Ubuntu container may require requesting the key manually using port 80 | ||
curl -sSL --retry ${NET_RETRY_COUNT:-5} 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xE1DD270288B4E6030699E45FA1715D88E1DF1F24' | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg | ||
for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done | ||
apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
osver=$(lsb_release -sr | cut -f1 -d.) | ||
pkgs="g++ git" | ||
# Ubuntu 22+ has only Python 3 in the repos | ||
if [ -n "$osver" ] && [ "$osver" -ge "22" ]; then | ||
pkgs+=" python-is-python3 libpython3-dev" | ||
else | ||
pkgs+=" python libpython-dev" | ||
fi | ||
apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs | ||
fi | ||
# For jobs not compatible with ccache, use "ccache: no" in the matrix | ||
if [[ "${{ matrix.ccache }}" == "no" ]]; then | ||
echo "B2_USE_CCACHE=0" >> $GITHUB_ENV | ||
fi | ||
git config --global pack.threads 0 | ||
- uses: actions/checkout@v3 | ||
with: | ||
# For coverage builds fetch the whole history, else only 1 commit using a 'fake ternary' | ||
fetch-depth: ${{ matrix.coverage && '0' || '1' }} | ||
|
||
- name: Cache ccache | ||
uses: actions/cache@v3 | ||
if: env.B2_USE_CCACHE | ||
with: | ||
path: ~/.ccache | ||
key: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}-${{github.sha}} | ||
restore-keys: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}- | ||
|
||
- name: Fetch Boost.CI | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: '0' | ||
- name: update-tools | ||
repository: boostorg/boost-ci | ||
ref: master | ||
path: boost-ci-cloned | ||
|
||
- name: Get CI scripts folder | ||
run: | | ||
# Copy ci folder if not testing Boost.CI | ||
[[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . | ||
rm -rf boost-ci-cloned | ||
- name: Install packages | ||
if: startsWith(matrix.os, 'ubuntu') | ||
run: | | ||
sudo apt install lcov locales | ||
SOURCE_KEYS=(${{join(matrix.source_keys, ' ')}}) | ||
SOURCES=(${{join(matrix.sources, ' ')}}) | ||
# Add this by default | ||
SOURCES+=(ppa:ubuntu-toolchain-r/test) | ||
for key in "${SOURCE_KEYS[@]}"; do | ||
for i in {1..$NET_RETRY_COUNT}; do | ||
keyfilename=$(basename -s .key $key) | ||
curl -sSL --retry ${NET_RETRY_COUNT:-5} "$key" | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/${keyfilename} && break || sleep 10 | ||
done | ||
done | ||
for source in "${SOURCES[@]}"; do | ||
for i in {1..$NET_RETRY_COUNT}; do | ||
sudo add-apt-repository $source && break || sleep 10 | ||
done | ||
done | ||
sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
if [[ -z "${{matrix.install}}" ]]; then | ||
pkgs="${{matrix.compiler}}" | ||
pkgs="${pkgs/gcc-/g++-}" | ||
else | ||
pkgs="${{matrix.install}}" | ||
fi | ||
sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs locales | ||
sudo locale-gen de_DE.UTF-8 | ||
sudo update-locale | ||
- name: clone-submods-bootstrap-headers-boost-develop | ||
- name: Setup GCC Toolchain | ||
if: matrix.gcc_toolchain | ||
run: | | ||
git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root | ||
cd ../boost-root | ||
git submodule update --init tools | ||
git submodule update --init libs/assert | ||
git submodule update --init libs/config | ||
git submodule update --init libs/core | ||
git submodule update --init libs/math | ||
git submodule update --init libs/multiprecision | ||
git submodule update --init libs/predef | ||
git submodule update --init libs/static_assert | ||
git submodule update --init libs/test | ||
git submodule update --init libs/uuid | ||
git submodule update --init libs/throw_exception | ||
git submodule update --init libs/type_traits | ||
./bootstrap.sh | ||
./b2 headers | ||
- name: gcc-gcov-native | ||
GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain" | ||
echo "GCC_TOOLCHAIN_ROOT=$GCC_TOOLCHAIN_ROOT" >> $GITHUB_ENV | ||
if ! command -v dpkg-architecture; then | ||
apt-get install -y dpkg-dev | ||
fi | ||
MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" | ||
mkdir -p "$GCC_TOOLCHAIN_ROOT" | ||
ln -s /usr/include "$GCC_TOOLCHAIN_ROOT/include" | ||
ln -s /usr/bin "$GCC_TOOLCHAIN_ROOT/bin" | ||
mkdir -p "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET" | ||
ln -s "/usr/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" | ||
- name: Setup multiarch | ||
if: matrix.multiarch | ||
run: | | ||
cd test/cover | ||
echo "build and run gcov/lcov/genhtml" | ||
echo "make prepare -f make_gcov_01_generic.gmk MY_ALL_COV=0 MY_BOOST_ROOT=../../../boost-root MY_CC=${{ matrix.compiler }} MY_STD=${{ matrix.standard }}" | ||
echo | ||
make prepare -f make_gcov_01_generic.gmk MY_ALL_COV=0 MY_BOOST_ROOT=../../../boost-root MY_CC=${{ matrix.compiler }} MY_STD=${{ matrix.standard }} | ||
echo | ||
echo "make gcov -f make_gcov_01_generic.gmk --jobs=8 MY_ALL_COV=0 MY_BOOST_ROOT=../../../boost-root MY_CC=${{ matrix.compiler }} MY_STD=${{ matrix.standard }}" | ||
echo | ||
make gcov -f make_gcov_01_generic.gmk --jobs=8 MY_ALL_COV=0 MY_BOOST_ROOT=../../../boost-root MY_CC=${{ matrix.compiler }} MY_STD=${{ matrix.standard }} | ||
echo | ||
- name: upload-codecov | ||
sudo apt-get install --no-install-recommends -y binfmt-support qemu-user-static | ||
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | ||
git clone https://github.com/jeking3/bdde.git | ||
echo "$(pwd)/bdde/bin/linux" >> ${GITHUB_PATH} | ||
echo "BDDE_DISTRO=${{ matrix.distro }}" >> ${GITHUB_ENV} | ||
echo "BDDE_EDITION=${{ matrix.edition }}" >> ${GITHUB_ENV} | ||
echo "BDDE_ARCH=${{ matrix.arch }}" >> ${GITHUB_ENV} | ||
echo "B2_WRAPPER=bdde" >> ${GITHUB_ENV} | ||
- name: Setup Boost | ||
env: | ||
B2_ADDRESS_MODEL: ${{matrix.address-model}} | ||
B2_COMPILER: ${{matrix.compiler}} | ||
B2_CXXSTD: ${{matrix.cxxstd}} | ||
B2_SANITIZE: ${{matrix.sanitize}} | ||
B2_STDLIB: ${{matrix.stdlib}} | ||
B2_CXXFLAGS: ${{matrix.cxxflags}} | ||
# More entries can be added in the same way, see the B2_ARGS assignment in ci/enforce.sh for the possible keys. | ||
# B2_DEFINES: ${{matrix.defines}} | ||
# Variables set here (to non-empty) will override the top-level environment variables, e.g. | ||
# B2_VARIANT: ${{matrix.variant}} | ||
# Set the (B2) target(s) to build, defaults to the test folder of the current library | ||
# Can alternatively be done like this in the build step or in the build command of the build step, e.g. `run: B2_TARGETS=libs/$SELF/doc ci/build.sh` | ||
# B2_TARGETS: libs/foo/test//bar | ||
run: source ci/github/install.sh | ||
|
||
- name: Setup coverage collection | ||
if: matrix.coverage | ||
run: ci/github/codecov.sh "setup" | ||
|
||
- name: Run tests | ||
if: '!matrix.coverity' | ||
run: ci/build.sh | ||
|
||
- name: Upload coverage | ||
if: matrix.coverage | ||
run: ci/codecov.sh "upload" | ||
env: | ||
BOOST_CI_CODECOV_IO_UPLOAD: skip | ||
|
||
- name: Upload coverage | ||
if: matrix.coverage | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
plugin: gcov | ||
file: ${{ runner.workspace }}/crypt/test/cover/coverage.info | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
fail_ci_if_error: true | ||
verbose: false | ||
disable_search: true | ||
file: coverage.info | ||
name: Github Actions | ||
token: ${{secrets.CODECOV_TOKEN}} | ||
verbose: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,25 +23,18 @@ jobs: | |
fail-fast: false | ||
|
||
runs-on: gpu-runner-1 | ||
container: | ||
image: nvidia/cuda:12.6.3-devel-ubuntu24.04 | ||
options: --gpus all | ||
|
||
steps: | ||
- uses: Jimver/[email protected] | ||
id: cuda-toolkit | ||
with: | ||
cuda: '12.5.0' | ||
method: 'network' | ||
sub-packages: '["nvcc"]' | ||
|
||
- name: Output CUDA information | ||
run: | | ||
echo "Installed cuda version is: ${{steps.cuda-toolkit.outputs.cuda}}"+ | ||
echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}" | ||
nvcc -V | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Install Packages | ||
run: | | ||
sudo apt-get install -y cmake make | ||
apt-get update | ||
apt-get install -y wget cmake git python3 build-essential | ||
- name: Setup Boost | ||
run: | | ||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY | ||
|
@@ -62,15 +55,34 @@ jobs: | |
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY | ||
git submodule update --init tools/boostdep | ||
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY | ||
- name: Check CUDA Installation | ||
run: | | ||
nvidia-smi | ||
nvcc --version | ||
ls -l /usr/local/cuda-12.6/bin/nvcc | ||
- name: Configure | ||
run: | | ||
cd ../boost-root | ||
mkdir __build__ && cd __build__ | ||
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DBOOST_CRYPT_ENABLE_CUDA=1 -DCMAKE_CUDA_ARCHITECTURES=70 -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.5 .. | ||
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY \ | ||
-DBUILD_TESTING=ON \ | ||
-DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.6/bin/nvcc \ | ||
-DBOOST_CRYPT_ENABLE_CUDA=1 \ | ||
-DCMAKE_CUDA_ARCHITECTURES=70 \ | ||
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.6 \ | ||
-DCUDA_PATH=/usr/local/cuda-12.6 \ | ||
-DCMAKE_VERBOSE_MAKEFILE=ON \ | ||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||
.. \ | ||
--debug-output | ||
- name: Build tests | ||
run: | | ||
cd ../boost-root/__build__ | ||
cmake --build . --target tests -j $(nproc) | ||
cmake --build . --target tests -j $(nproc) --verbose | ||
- name: Run tests | ||
run: | | ||
cd ../boost-root/__build__ | ||
|
Oops, something went wrong.