Skip to content

Boost 1.84.0

Boost 1.84.0 #220

Workflow file for this run

name: Unix Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
release:
types:
- published
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
LLVM_VERSION: 16
GCC_VERSION: 12
jobs:
env-vars:
name: Get environment variables
runs-on: ubuntu-latest
outputs:
LLVM_VERSION: ${{ env.LLVM_VERSION }}
GCC_VERSION: ${{ env.GCC_VERSION }}
steps:
- run: echo "🤡 GitHub 🤡"
formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install clang-format
uses: ./.github/actions/install-llvm
with:
version: ${{ env.LLVM_VERSION }}
packages: clang-format-${{ env.LLVM_VERSION }}
- name: Format files
run: find src include -type f -a \( -name "*.cc" -o -name "*.h" \) -print0 | xargs -0 clang-format-${{ env.LLVM_VERSION }} -i
- name: Check for differences
run: |
git status --porcelain
git status --porcelain | xargs -I {} -0 test -z \"{}\"
build:
runs-on: ${{ matrix.config.os }}
needs:
- env-vars
strategy:
fail-fast: false
matrix:
config:
- name: macOS x86_64 Release
cxx: clang++
cc: clang
mode: Release
mimalloc: on
cxxflags: -stdlib=libc++
os: macos-13
artifact: macos-x86_64
- name: macOS arm64 Release
cxx: clang++
cc: clang
mode: Release
mimalloc: on
cxxflags: -stdlib=libc++
os: macos-14
artifact: macos-arm64
- name: GCC ${{ needs.env-vars.outputs.GCC_VERSION }} Release
cxx: g++-${{ needs.env-vars.outputs.GCC_VERSION }}
cc: gcc-${{ needs.env-vars.outputs.GCC_VERSION }}
mode: Release
mimalloc: on
os: ubuntu-latest
artifact: linux
- name: GCC ${{ needs.env-vars.outputs.GCC_VERSION }} Debug
cxx: g++-${{ needs.env-vars.outputs.GCC_VERSION }}
cc: gcc-${{ needs.env-vars.outputs.GCC_VERSION }}
mode: Debug
mimalloc: on
os: ubuntu-latest
- name: Clang ${{ needs.env-vars.outputs.LLVM_VERSION }} Release
cxx: clang++-${{ needs.env-vars.outputs.LLVM_VERSION }}
cc: clang-${{ needs.env-vars.outputs.LLVM_VERSION }}
mode: Release
mimalloc: on
cxxflags: -stdlib=libc++
ldflags: -lc++abi
os: ubuntu-latest
- name: Clang Tidy
cxx: clang++-${{ needs.env-vars.outputs.LLVM_VERSION }}
cc: clang-${{ needs.env-vars.outputs.LLVM_VERSION }}
mode: Release
mimalloc: on
cxxflags: -stdlib=libc++
ldflags: -lc++abi
lint: true
os: ubuntu-latest
- key: Clang ${{ needs.env-vars.outputs.LLVM_VERSION }} Sanitizer
cxx: clang++-${{ needs.env-vars.outputs.LLVM_VERSION }}
cc: clang-${{ needs.env-vars.outputs.LLVM_VERSION }}
mode: Release
mimalloc: on
cflags: -fsanitize=address,undefined -fno-omit-frame-pointer
cxxflags: -fsanitize=address,undefined -fno-omit-frame-pointer -stdlib=libc++
ldflags: -lc++abi
os: ubuntu-latest
env:
BUILDCACHE_COMPRESS: true
BUILDCACHE_DIRECT_MODE: true
BUILDCACHE_ACCURACY: SLOPPY
BUILDCACHE_LUA_PATH: ${{ github.workspace }}/tools
BUILDCACHE_DIR: ${{ github.workspace }}/.buildcache
UBSAN_OPTIONS: halt_on_error=1:abort_on_error=1
CLICOLOR_FORCE: 1
steps:
- uses: actions/checkout@v4
# ==== INSTALL ====
- name: Update Packages
if: ${{ !startsWith(matrix.config.os, 'macos-') }}
env:
DEBIAN_FRONTEND: noninteractive
run: sudo apt-get update
- name: Install LLVM
if: ${{ !startsWith(matrix.config.os, 'macos-') && startsWith(matrix.config.cc, 'clang') }}
uses: ./.github/actions/install-llvm
with:
version: ${{ env.LLVM_VERSION }}
- name: Install ninja (Ubuntu)
if: ${{ !startsWith(matrix.config.os, 'macos-') }}
env:
DEBIAN_FRONTEND: noninteractive
run: sudo apt-get install -y --no-install-recommends ninja-build
- name: Install ninja (macOS)
if: ${{ startsWith(matrix.config.os, 'macos-') }}
run: brew install ninja
- name: Install Valgrind
if: ${{ matrix.config.mode == 'Debug' && matrix.config.cc == 'gcc-${{ env.GCC_VERSION }}' }}
env:
DEBIAN_FRONTEND: noninteractive
run: sudo apt-get install -y --no-install-recommends valgrind
# ==== RESTORE CACHE ====
- name: Restore buildcache Cache
uses: actions/cache/restore@v4
id: restore-buildcache
with:
path: ${{ github.workspace }}/.buildcache
key: buildcache-${{ matrix.config.os }}-${{ matrix.config.cc }}-${{ matrix.config.mode }}-${{ contains(matrix.config.cxxflags, 'sanitize') }}-${{ matrix.config.lint }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}-${{ hashFiles('**/*.cc') }}
restore-keys: |
buildcache-${{ matrix.config.os }}-${{ matrix.config.cc }}-${{ matrix.config.mode }}-${{ contains(matrix.config.cxxflags, 'sanitize') }}-${{ matrix.config.lint }}-${{ hashFiles('.pkg') }}-${{ hashFiles('**/*.h') }}-
buildcache-${{ matrix.config.os }}-${{ matrix.config.cc }}-${{ matrix.config.mode }}-${{ contains(matrix.config.cxxflags, 'sanitize') }}-${{ matrix.config.lint }}-${{ hashFiles('.pkg') }}-
buildcache-${{ matrix.config.os }}-${{ matrix.config.cc }}-${{ matrix.config.mode }}-${{ contains(matrix.config.cxxflags, 'sanitize') }}-${{ matrix.config.lint }}-
- name: Restore Dependencies Cache
uses: actions/cache/restore@v4
id: restore-deps-cache
with:
path: ${{ github.workspace }}/deps
key: deps-${{ hashFiles('.pkg') }}
restore-keys: deps-
# ==== BUILD ====
- name: CMake
run: |
cmake \
-G Ninja -S . -B build \
-DCMAKE_C_COMPILER=${{ matrix.config.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \
-DCMAKE_C_FLAGS="${{ matrix.config.cflags }}" \
-DCMAKE_CXX_FLAGS="${{ matrix.config.cxxflags }}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.config.ldflags }}" \
-DCMAKE_BUILD_TYPE=${{ matrix.config.mode }} \
-DPPR_LINT=${{ matrix.config.lint }} \
-DPPR_MIMALLOC=${{ matrix.config.mimalloc }}
- name: Build
run: |
./build/buildcache/bin/buildcache -z
cmake --build build --target ppr-preprocess ppr-backend footrouting ppr-benchmark
./build/buildcache/bin/buildcache -s
# ==== DISTRIBUTION ====
- name: Strip Executables
if: matrix.config.artifact != ''
run: |
strip build/ppr-preprocess
strip build/ppr-backend
strip build/footrouting
- name: Create Distribution
if: matrix.config.artifact != ''
run: |
mkdir ppr
mv build/ppr-preprocess ppr
mv build/ppr-backend ppr
mv build/footrouting ppr
mv ui/web ppr
tar cjf ppr-${{ matrix.config.artifact }}.tar.bz2 ppr
- name: Upload Distribution
if: matrix.config.artifact != ''
uses: actions/upload-artifact@v4
with:
name: ppr-${{ matrix.config.artifact }}
path: ppr-${{ matrix.config.artifact }}.tar.bz2
# ==== RELEASE ====
- name: Upload Release
if: github.event.action == 'published' && matrix.config.artifact != ''
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./ppr-${{ matrix.config.artifact }}.tar.bz2
asset_name: ppr-${{ matrix.config.artifact }}.tar.bz2
asset_content_type: application/x-tar
# ==== SAVE CACHE ====
- name: Save buildcache Cache
if: always() && steps.restore-buildcache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/.buildcache
key: ${{ steps.restore-buildcache.outputs.cache-primary-key }}
- name: Save Dependencies Cache
if: always() && steps.restore-deps-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/deps
key: ${{ steps.restore-deps-cache.outputs.cache-primary-key }}