diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index b43a40a7d9..3165b07032 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -193,7 +193,7 @@ jobs: - name: clang-18-release continue-on-error: false - node: 18 + node: 20 runs-on: ubuntu-24.04 BUILD_TOOLS: ON BUILD_TYPE: Release @@ -430,30 +430,12 @@ jobs: - name: Give tar root ownership if: runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON' run: sudo chown root /bin/tar && sudo chmod u+s /bin/tar - - name: Cache Boost - if: runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON' - id: cache-boost - uses: actions/cache@v4 - with: - path: | - /usr/local/include/boost - /usr/local/lib/libboost* - key: v1-boost-${{ runner.os }}-${{ runner.arch }}-${{ matrix.runs-on }} - restore-keys: | - v1-boost-${{ runner.os }}-${{ runner.arch }}-${{ matrix.runs-on }} - - name: Install Boost - if: steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON' - run: | - BOOST_VERSION="1.85.0" - BOOST_VERSION_FLAVOR="${BOOST_VERSION}-b2-nodocs" - wget -q https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION_FLAVOR}.tar.gz - tar xzf boost-${BOOST_VERSION_FLAVOR}.tar.gz - cd boost-${BOOST_VERSION} - sudo ./bootstrap.sh - sudo ./b2 install - cd .. - sudo rm -rf boost-${BOOST_VERSION}* + - name: Install boost + uses: MarkusJx/install-boost@v2 + id: install-boost + with: + boost_version: 1.85.0 - name: Install dev dependencies run: | @@ -557,6 +539,8 @@ jobs: echo "PKG_CONFIG_PATH=${OSRM_INSTALL_DIR}/lib/pkgconfig" >> $GITHUB_ENV fi popd + env: + Boost_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} - name: Build example if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' }} run: | @@ -657,130 +641,9 @@ jobs: ccache -p ccache -s - benchmarks: - if: github.event_name == 'pull_request' - needs: [format-taginfo-docs] - runs-on: self-hosted - env: - CCOMPILER: clang-16 - CXXCOMPILER: clang++-16 - CC: clang-16 - CXX: clang++-16 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PR_NUMBER: ${{ github.event.pull_request.number }} - GITHUB_REPOSITORY: ${{ github.repository }} - RUN_BIG_BENCHMARK: ${{ contains(github.event.pull_request.labels.*.name, 'Performance') }} - steps: - - name: Checkout PR Branch - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - path: pr - - name: Activate virtualenv - run: | - python3 -m venv .venv - source .venv/bin/activate - echo PATH=$PATH >> $GITHUB_ENV - pip install "conan<2.0.0" "requests==2.31.0" "numpy==1.26.4" - - name: Prepare data - run: | - if [ "$RUN_BIG_BENCHMARK" = "true" ]; then - rm -rf ~/data.osm.pbf - wget http://download.geofabrik.de/europe/poland-latest.osm.pbf -O ~/data.osm.pbf --quiet - gunzip -c ./pr/test/data/poland_gps_traces.csv.gz > ~/gps_traces.csv - else - if [ ! -f "~/data.osm.pbf" ]; then - wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf -O ~/data.osm.pbf - else - echo "Using cached data.osm.pbf" - fi - gunzip -c ./pr/test/data/berlin_gps_traces.csv.gz > ~/gps_traces.csv - fi - - name: Prepare environment - run: | - echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV - mkdir -p $HOME/.ccache - ccache --zero-stats - ccache --max-size=256M - - name: Checkout Base Branch - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.base.ref }} - path: base - - name: Build Base Branch - run: | - cd base - npm ci --ignore-scripts - cd .. - mkdir base/build - cd base/build - cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON .. - make -j$(nproc) - make -j$(nproc) benchmarks - cd .. - make -C test/data - - name: Build PR Branch - run: | - cd pr - npm ci --ignore-scripts - cd .. - mkdir -p pr/build - cd pr/build - cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON .. - make -j$(nproc) - make -j$(nproc) benchmarks - cd .. - make -C test/data - # we run benchmarks in tmpfs to avoid impact of disk IO - - name: Create folder for tmpfs - run: | - # if by any chance it was mounted before(e.g. due to previous job failed), unmount it - sudo umount ~/benchmarks | true - rm -rf ~/benchmarks - mkdir -p ~/benchmarks - # see https://llvm.org/docs/Benchmarking.html - - name: Run PR Benchmarks - run: | - sudo cset shield -c 2-3 -k on - sudo mount -t tmpfs -o size=4g none ~/benchmarks - cp -rf pr/build ~/benchmarks/build - cp -rf pr/lib ~/benchmarks/lib - mkdir -p ~/benchmarks/test - cp -rf pr/test/data ~/benchmarks/test/data - cp -rf pr/profiles ~/benchmarks/profiles - - sudo cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/pr_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv - sudo umount ~/benchmarks - sudo cset shield --reset - - name: Run Base Benchmarks - run: | - sudo cset shield -c 2-3 -k on - sudo mount -t tmpfs -o size=4g none ~/benchmarks - cp -rf base/build ~/benchmarks/build - cp -rf base/lib ~/benchmarks/lib - mkdir -p ~/benchmarks/test - cp -rf base/test/data ~/benchmarks/test/data - cp -rf base/profiles ~/benchmarks/profiles - - # TODO: remove it when base branch will have this file at needed location - if [ ! -f ~/benchmarks/test/data/portugal_to_korea.json ]; then - cp base/src/benchmarks/portugal_to_korea.json ~/benchmarks/test/data/portugal_to_korea.json - fi - # we intentionally use scripts from PR branch to be able to update them and see results in the same PR - sudo cset shield --exec -- cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/base_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv - sudo umount ~/benchmarks - sudo cset shield --reset - - name: Post Benchmark Results - run: | - python3 pr/scripts/ci/post_benchmark_results.py base_results pr_results - - name: Show CCache statistics - run: | - ccache -p - ccache -s - ci-complete: - runs-on: ubuntu-22.04 - needs: [build-test-publish, docker-image-matrix, windows-release-node, benchmarks] + runs-on: ubuntu-latest + needs: [build-test-publish, docker-image-matrix, windows-release-node] steps: - run: echo "CI complete" diff --git a/CMakeLists.txt b/CMakeLists.txt index a8388b7db4..7cf65c8013 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -403,7 +403,7 @@ if(ENABLE_CONAN) # expat and bzip2 are used from conan rather than the system include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include) else() - find_package(Boost 1.70 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + find_package(Boost REQUIRED CONFIG COMPONENTS ${BOOST_COMPONENTS}) add_dependency_includes(${Boost_INCLUDE_DIRS}) find_package(TBB REQUIRED)