From ecf77e513e62c7cdc538838945c031263a6651b2 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Wed, 14 Sep 2022 22:19:03 +0200 Subject: [PATCH] Configure cross-compilation for Apple Silicon --- .github/workflows/osrm-backend.yml | 874 +++++++++++++++-------------- CMakeLists.txt | 5 +- 2 files changed, 441 insertions(+), 438 deletions(-) diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index 5da5d69e29e..000d9d1930a 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -20,355 +20,355 @@ env: ENABLE_NODE_BINDINGS: "ON" jobs: - # windows: - # needs: format-taginfo-docs - # runs-on: windows-2022 - # continue-on-error: false - # steps: - # - uses: actions/checkout@v3 - # - run: pip install conan==1.51.3 - # - run: conan --version - # - run: cmake --version - # - uses: actions/setup-node@v3 - # with: - # node-version: 16 - # - run: node --version - # - run: npm --version - # - run: npm install --ignore-scripts - # - run: npm link --ignore-scripts - # - uses: microsoft/setup-msbuild@v1.1 - # - name: Build - # run: | - # .\scripts\ci\windows-build.bat - - # format-taginfo-docs: - # runs-on: ubuntu-20.04 - # steps: - # - uses: actions/checkout@v2 - # - name: Use Node.js - # uses: actions/setup-node@v3 - # with: - # node-version: 12 - # - name: Enable Node.js cache - # uses: actions/cache@v2 - # with: - # path: ~/.npm - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - # restore-keys: | - # ${{ runner.os }}-node- - # - name: Prepare environment - # run: | - # npm ci --ignore-scripts - # export MASON=${GITHUB_WORKSPACE}/scripts/mason.sh - # ${MASON} install clang-format 10.0.0 - # echo "$(${MASON} prefix clang-format 10.0.0)/bin" >> $GITHUB_PATH - # - name: Run checks - # run: | - # ./scripts/check_taginfo.py taginfo.json profiles/car.lua - # ./scripts/format.sh && ./scripts/error_on_dirty.sh - # node ./scripts/validate_changelog.js - # npm run docs && ./scripts/error_on_dirty.sh - - # docker-image: - # needs: format-taginfo-docs - # runs-on: ubuntu-22.04 - # continue-on-error: false - # steps: - # - name: Check out the repo - # uses: actions/checkout@v3 - # - name: Enable osm.pbf cache - # uses: actions/cache@v2 - # with: - # path: berlin-latest.osm.pbf - # key: v1-berlin-osm-pbf - # restore-keys: | - # v1-berlin-osm-pbf - # - name: Docker build - # run: | - # docker build -t osrm-backend-local -f docker/Dockerfile . - # - name: Test Docker image - # run: | - # if [ ! -f "${PWD}/berlin-latest.osm.pbf" ]; then - # wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf - # fi - # TAG=osrm-backend-local - # # when `--memory-swap` value equals `--memory` it means container won't use swap - # # see https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details - # MEMORY_ARGS="--memory=1g --memory-swap=1g" - # docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf - # docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-partition /data/berlin-latest.osrm - # docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-customize /data/berlin-latest.osrm - # docker run $MEMORY_ARGS --name=osrm-container -t -p 5000:5000 -v "${PWD}:/data" "${TAG}" osrm-routed --algorithm mld /data/berlin-latest.osrm & - # curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true" - # docker stop osrm-container + windows: + needs: format-taginfo-docs + runs-on: windows-2022 + continue-on-error: false + steps: + - uses: actions/checkout@v3 + - run: pip install conan==1.51.3 + - run: conan --version + - run: cmake --version + - uses: actions/setup-node@v3 + with: + node-version: 16 + - run: node --version + - run: npm --version + - run: npm install --ignore-scripts + - run: npm link --ignore-scripts + - uses: microsoft/setup-msbuild@v1.1 + - name: Build + run: | + .\scripts\ci\windows-build.bat + + format-taginfo-docs: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: 12 + - name: Enable Node.js cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: Prepare environment + run: | + npm ci --ignore-scripts + export MASON=${GITHUB_WORKSPACE}/scripts/mason.sh + ${MASON} install clang-format 10.0.0 + echo "$(${MASON} prefix clang-format 10.0.0)/bin" >> $GITHUB_PATH + - name: Run checks + run: | + ./scripts/check_taginfo.py taginfo.json profiles/car.lua + ./scripts/format.sh && ./scripts/error_on_dirty.sh + node ./scripts/validate_changelog.js + npm run docs && ./scripts/error_on_dirty.sh + + docker-image: + needs: format-taginfo-docs + runs-on: ubuntu-22.04 + continue-on-error: false + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: Enable osm.pbf cache + uses: actions/cache@v2 + with: + path: berlin-latest.osm.pbf + key: v1-berlin-osm-pbf + restore-keys: | + v1-berlin-osm-pbf + - name: Docker build + run: | + docker build -t osrm-backend-local -f docker/Dockerfile . + - name: Test Docker image + run: | + if [ ! -f "${PWD}/berlin-latest.osm.pbf" ]; then + wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf + fi + TAG=osrm-backend-local + # when `--memory-swap` value equals `--memory` it means container won't use swap + # see https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details + MEMORY_ARGS="--memory=1g --memory-swap=1g" + docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf + docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-partition /data/berlin-latest.osrm + docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-customize /data/berlin-latest.osrm + docker run $MEMORY_ARGS --name=osrm-container -t -p 5000:5000 -v "${PWD}:/data" "${TAG}" osrm-routed --algorithm mld /data/berlin-latest.osrm & + curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true" + docker stop osrm-container build-test-publish: - # needs: format-taginfo-docs + needs: format-taginfo-docs strategy: matrix: include: - # - name: gcc-9-debug-cov - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: gcc-9 - # CUCUMBER_TIMEOUT: 20000 - # CXXCOMPILER: g++-9 - # ENABLE_COVERAGE: ON - - # - name: gcc-9-debug-asan-ubsan - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: gcc-9 - # CUCUMBER_TIMEOUT: 20000 - # CXXCOMPILER: g++-9 - # ENABLE_SANITIZER: ON - # TARGET_ARCH: x86_64-asan-ubsan - # OSRM_CONNECTION_RETRIES: 10 - # OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5 - - # - name: clang-6.0-debug - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # CUCUMBER_TIMEOUT: 60000 - - # - name: clang-11.0-debug-clang-tidy - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: clang-14 - # CXXCOMPILER: clang++-14 - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_CLANG_TIDY: ON - - # - name: conan-linux-debug-asan-ubsan - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-11 - # CXXCOMPILER: clang++-11 - # ENABLE_CONAN: ON - # ENABLE_SANITIZER: ON - - # - name: conan-linux-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_CONAN: ON - - # - name: gcc-11-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-11 - # CXXCOMPILER: g++-11 - - # - name: gcc-10-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-10 - # CXXCOMPILER: g++-10 - - # - name: gcc-9-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-9 - # CXXCOMPILER: g++-9 - # CXXFLAGS: -Wno-cast-function-type - - # - name: gcc-9-conan-release-i686 - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-9 - # CFLAGS: "-m32 -msse2 -mfpmath=sse" - # CXXCOMPILER: g++-9 - # CXXFLAGS: "-m32 -msse2 -mfpmath=sse" - # TARGET_ARCH: i686 - # ENABLE_CONAN: ON + - name: gcc-9-debug-cov + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: gcc-9 + CUCUMBER_TIMEOUT: 20000 + CXXCOMPILER: g++-9 + ENABLE_COVERAGE: ON + + - name: gcc-9-debug-asan-ubsan + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: gcc-9 + CUCUMBER_TIMEOUT: 20000 + CXXCOMPILER: g++-9 + ENABLE_SANITIZER: ON + TARGET_ARCH: x86_64-asan-ubsan + OSRM_CONNECTION_RETRIES: 10 + OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5 + + - name: clang-6.0-debug + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + CUCUMBER_TIMEOUT: 60000 + + - name: clang-11.0-debug-clang-tidy + continue-on-error: false + node: 12 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: clang-14 + CXXCOMPILER: clang++-14 + CUCUMBER_TIMEOUT: 60000 + ENABLE_CLANG_TIDY: ON + + - name: conan-linux-debug-asan-ubsan + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-11 + CXXCOMPILER: clang++-11 + ENABLE_CONAN: ON + ENABLE_SANITIZER: ON + + - name: conan-linux-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_CONAN: ON + + - name: gcc-11-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-11 + CXXCOMPILER: g++-11 + + - name: gcc-10-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-10 + CXXCOMPILER: g++-10 + + - name: gcc-9-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-9 + CXXCOMPILER: g++-9 + CXXFLAGS: -Wno-cast-function-type + + - name: gcc-9-conan-release-i686 + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-9 + CFLAGS: "-m32 -msse2 -mfpmath=sse" + CXXCOMPILER: g++-9 + CXXFLAGS: "-m32 -msse2 -mfpmath=sse" + TARGET_ARCH: i686 + ENABLE_CONAN: ON - # - name: gcc-8-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-8 - # CXXCOMPILER: g++-8 - # CXXFLAGS: -Wno-cast-function-type - - # - name: gcc-7-release - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-7 - # CXXCOMPILER: g++-7 - - # - name: conan-macos-x64-release-node-12 - # build_node_package: true - # continue-on-error: false - # node: 12 - # runs-on: macos-11 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON - - # - name: conan-macos-x64-release-node-14 - # build_node_package: true - # continue-on-error: false - # node: 14 - # runs-on: macos-11 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON - - # - name: conan-macos-x64-release-node-16 - # build_node_package: true - # continue-on-error: false - # node: 16 - # runs-on: macos-11 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON - - # - name: conan-macos-arm64-release-node-16 - # build_node_package: true - # continue-on-error: false - # node: 16 - # runs-on: macos-11 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON - # ENABLE_APPLE_SILICON: ON - - # - name: gcc-7-release-shared - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # BUILD_SHARED_LIBS: ON - # CCOMPILER: gcc-7 - # CXXCOMPILER: g++-7 - - # - name: node-12-conan-linux-release - # build_node_package: true - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Release - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: node-12-conan-linux-debug - # build_node_package: true - # continue-on-error: false - # node: 12 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: node-14-conan-linux-release - # build_node_package: true - # continue-on-error: false - # node: 14 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Release - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: node-14-conan-linux-debug - # build_node_package: true - # continue-on-error: false - # node: 14 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - - # - name: node-16-conan-linux-release - # build_node_package: true - # continue-on-error: false - # node: 16 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Release - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: node-16-conan-linux-debug - # build_node_package: true - # continue-on-error: false - # node: 16 - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON + - name: gcc-8-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-8 + CXXCOMPILER: g++-8 + CXXFLAGS: -Wno-cast-function-type + + - name: gcc-7-release + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-7 + CXXCOMPILER: g++-7 + + - name: conan-macos-x64-release-node-12 + build_node_package: true + continue-on-error: false + node: 12 + runs-on: macos-11 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON + + - name: conan-macos-x64-release-node-14 + build_node_package: true + continue-on-error: false + node: 14 + runs-on: macos-11 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON + + - name: conan-macos-x64-release-node-16 + build_node_package: true + continue-on-error: false + node: 16 + runs-on: macos-11 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON + + - name: conan-macos-arm64-release-node-16 + build_node_package: true + continue-on-error: false + node: 16 + runs-on: macos-11 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON + ENABLE_APPLE_SILICON: ON + + - name: gcc-7-release-shared + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + BUILD_SHARED_LIBS: ON + CCOMPILER: gcc-7 + CXXCOMPILER: g++-7 + + - name: node-12-conan-linux-release + build_node_package: true + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TYPE: Release + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: node-12-conan-linux-debug + build_node_package: true + continue-on-error: false + node: 12 + runs-on: ubuntu-20.04 + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: node-14-conan-linux-release + build_node_package: true + continue-on-error: false + node: 14 + runs-on: ubuntu-20.04 + BUILD_TYPE: Release + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: node-14-conan-linux-debug + build_node_package: true + continue-on-error: false + node: 14 + runs-on: ubuntu-20.04 + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + + - name: node-16-conan-linux-release + build_node_package: true + continue-on-error: false + node: 16 + runs-on: ubuntu-20.04 + BUILD_TYPE: Release + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: node-16-conan-linux-debug + build_node_package: true + continue-on-error: false + node: 16 + runs-on: ubuntu-20.04 + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON - name: conan-macos-x64-release-node-latest build_node_package: true @@ -407,66 +407,66 @@ jobs: ENABLE_CONAN: ON NODE_PACKAGE_TESTS_ONLY: ON - # - name: node-latest-conan-linux-debug - # build_node_package: true - # continue-on-error: true - # node: latest - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: conan-macos-x64-release-node-lts - # build_node_package: true - # continue-on-error: true - # node: "lts/*" - # runs-on: macos-11 - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON + - name: node-latest-conan-linux-debug + build_node_package: true + continue-on-error: true + node: latest + runs-on: ubuntu-20.04 + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: conan-macos-x64-release-node-lts + build_node_package: true + continue-on-error: true + node: "lts/*" + runs-on: macos-11 + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON - # - name: conan-macos-arm64-release-node-lts - # build_node_package: true - # continue-on-error: true - # node: "lts/*" - # runs-on: macos-11 - # BUILD_TYPE: Release - # CCOMPILER: clang - # CXXCOMPILER: clang++ - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_ASSERTIONS: ON - # ENABLE_CONAN: ON - # ENABLE_APPLE_SILICON: ON - - # - name: node-lts-conan-linux-release - # build_node_package: true - # continue-on-error: true - # node: "lts/*" - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Release - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON - - # - name: node-lts-conan-linux-debug - # build_node_package: true - # continue-on-error: true - # node: "lts/*" - # runs-on: ubuntu-20.04 - # BUILD_TYPE: Debug - # CCOMPILER: clang-6.0 - # CXXCOMPILER: clang++-6.0 - # ENABLE_GLIBC_WORKAROUND: ON - # ENABLE_CONAN: ON - # NODE_PACKAGE_TESTS_ONLY: ON + - name: conan-macos-arm64-release-node-lts + build_node_package: true + continue-on-error: true + node: "lts/*" + runs-on: macos-11 + BUILD_TYPE: Release + CCOMPILER: clang + CXXCOMPILER: clang++ + CUCUMBER_TIMEOUT: 60000 + ENABLE_ASSERTIONS: ON + ENABLE_CONAN: ON + ENABLE_APPLE_SILICON: ON + + - name: node-lts-conan-linux-release + build_node_package: true + continue-on-error: true + node: "lts/*" + runs-on: ubuntu-20.04 + BUILD_TYPE: Release + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON + + - name: node-lts-conan-linux-debug + build_node_package: true + continue-on-error: true + node: "lts/*" + runs-on: ubuntu-20.04 + BUILD_TYPE: Debug + CCOMPILER: clang-6.0 + CXXCOMPILER: clang++-6.0 + ENABLE_GLIBC_WORKAROUND: ON + ENABLE_CONAN: ON + NODE_PACKAGE_TESTS_ONLY: ON name: ${{ matrix.name}} continue-on-error: ${{ matrix.continue-on-error }} @@ -668,27 +668,27 @@ jobs: make --jobs=${JOBS} popd - # - name: Run all tests - # if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} - # run: | - # make -C test/data benchmark - - # # macOS SIP strips the linker path. Reset this inside the running shell - # export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }} - # ./example/build/osrm-example test/data/mld/monaco.osrm - - # # All tests assume to be run from the build directory - # pushd ${OSRM_BUILD_DIR} - # for i in ./unit_tests/*-tests ; do echo Running $i ; $i ; done - # if [ -z "${ENABLE_SANITIZER}" ] && [ "$TARGET_ARCH" != "i686" ]; then - # npm run nodejs-tests - # fi - # popd - # npm test - # - name: Run Node package tests only - # if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY == 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} - # run: | - # npm run nodejs-tests + - name: Run all tests + if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} + run: | + make -C test/data benchmark + + # macOS SIP strips the linker path. Reset this inside the running shell + export LD_LIBRARY_PATH=${{ env.LD_LIBRARY_PATH }} + ./example/build/osrm-example test/data/mld/monaco.osrm + + # All tests assume to be run from the build directory + pushd ${OSRM_BUILD_DIR} + for i in ./unit_tests/*-tests ; do echo Running $i ; $i ; done + if [ -z "${ENABLE_SANITIZER}" ] && [ "$TARGET_ARCH" != "i686" ]; then + npm run nodejs-tests + fi + popd + npm test + - name: Run Node package tests only + if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY == 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} + run: | + npm run nodejs-tests - name: Upload test logs uses: actions/upload-artifact@v3 if: failure() @@ -711,15 +711,17 @@ jobs: name: codecov-osrm-backend fail_ci_if_error: true verbose: true - - run: file ./lib/binding/node_osrm.node - - name: Upload node package - uses: actions/upload-artifact@v3 - if: ${{ matrix.build_node_package }} - with: - name: nodepackage-${{ matrix.name}} - path: ./lib/binding/ + - name: Check Apple Silicon binary + if: ${{ matrix.ENABLE_APPLE_SILICON == 'ON' }} + run: | + ARCH=$(file ./lib/binding/node_osrm.node | awk '{printf $NF}') + if [[ "$ARCH" != "arm64" ]]; then + file ./lib/binding/node_osrm.node + >&2 echo "Wrong architecture!" + exit 1 + fi - name: Build Node package - #if: ${{ matrix.build_node_package && env.PUBLISH == 'On' }} + if: ${{ matrix.build_node_package }} run: ./scripts/ci/node_package.sh - name: Publish Node package if: ${{ matrix.build_node_package && env.PUBLISH == 'On' }} @@ -735,8 +737,8 @@ jobs: replacesArtifacts: true token: ${{ secrets.GITHUB_TOKEN }} - # ci-complete: - # runs-on: ubuntu-22.04 - # needs: [build-test-publish, docker-image, windows] - # steps: - # - run: echo "CI complete" + ci-complete: + runs-on: ubuntu-22.04 + needs: [build-test-publish, docker-image, windows] + steps: + - run: echo "CI complete" diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b803c4e1a8..ceff1f50a18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,12 +61,13 @@ if (POLICY CMP0074) endif() project(OSRM C CXX) -set(CMAKE_SKIP_BUILD_RPATH 0) -set(CMAKE_BUILD_WITH_INSTALL_RPATH 1) +# add @loader_path/$ORIGIN to rpath to support relocatable binaries +set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) if (APPLE) set(CMAKE_INSTALL_RPATH "@loader_path") else() set(CMAKE_INSTALL_RPATH "\$ORIGIN") + # https://stackoverflow.com/questions/6324131/rpath-origin-not-having-desired-effect set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin") endif()