Attempt to cross-compile for arm64 Linux
This commit is contained in:
		
							parent
							
								
									1c9812bfec
								
							
						
					
					
						commit
						820b60f079
					
				
							
								
								
									
										573
									
								
								.github/workflows/osrm-backend.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										573
									
								
								.github/workflows/osrm-backend.yml
									
									
									
									
										vendored
									
									
								
							| @ -20,6 +20,20 @@ env: | ||||
|   ENABLE_NODE_BINDINGS: "ON" | ||||
| 
 | ||||
| jobs: | ||||
|   linux-arm64: | ||||
|     runs-on: ubuntu-22.04 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: uraimo/run-on-arch-action@v2 | ||||
|         name: Run commands | ||||
|         id: runcmd | ||||
|         with: | ||||
|           arch: arm64 | ||||
|           distro: ubuntu22.04 | ||||
|           githubToken: ${{ github.token }} | ||||
|           run: | | ||||
|             uname -a | ||||
|             echo ::set-output name=uname::$(uname -a) | ||||
|   # windows: | ||||
|   #   needs: format-taginfo-docs | ||||
|   #   runs-on: windows-2022 | ||||
| @ -139,11 +153,11 @@ jobs: | ||||
|   #         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 | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|   # build-test-publish: | ||||
|   #  # needs: format-taginfo-docs | ||||
|   #   strategy: | ||||
|   #     matrix: | ||||
|   #       include: | ||||
|           # - name: gcc-9-debug-cov | ||||
|           #   continue-on-error: false | ||||
|           #   node: 12 | ||||
| @ -379,16 +393,16 @@ jobs: | ||||
|           #   ENABLE_CONAN: ON | ||||
|           #   NODE_PACKAGE_TESTS_ONLY: ON | ||||
| 
 | ||||
|           - name: node-16-conan-linux-arm64-release | ||||
|             build_node_package: true | ||||
|             continue-on-error: false | ||||
|             node: 16 | ||||
|             runs-on: ubuntu-20.04 | ||||
|             BUILD_TYPE: Release | ||||
|             CCOMPILER: /usr/bin/aarch64-linux-gnu-gcc | ||||
|             CXXCOMPILER: /usr/bin/aarch64-linux-gnu-g++ | ||||
|             ENABLE_CONAN: ON | ||||
|             NODE_PACKAGE_TESTS_ONLY: ON | ||||
|           # - name: node-16-conan-linux-arm64-release | ||||
|           #   build_node_package: true | ||||
|           #   continue-on-error: false | ||||
|           #   node: 16 | ||||
|           #   runs-on: ubuntu-20.04 | ||||
|           #   BUILD_TYPE: Release | ||||
|           #   CCOMPILER: /usr/bin/aarch64-linux-gnu-gcc | ||||
|           #   CXXCOMPILER: /usr/bin/aarch64-linux-gnu-g++ | ||||
|           #   ENABLE_CONAN: ON | ||||
|           #   NODE_PACKAGE_TESTS_ONLY: ON | ||||
| 
 | ||||
|           # - name: node-16-conan-linux-release | ||||
|           #   build_node_package: true | ||||
| @ -506,269 +520,268 @@ jobs: | ||||
|           #   ENABLE_CONAN: ON | ||||
|           #   NODE_PACKAGE_TESTS_ONLY: ON | ||||
| 
 | ||||
|     name: ${{ matrix.name}} | ||||
|     continue-on-error: ${{ matrix.continue-on-error }} | ||||
|     runs-on: ${{ matrix.runs-on }} | ||||
|     env: | ||||
|       BUILD_TOOLS: ${{ matrix.BUILD_TOOLS }} | ||||
|       BUILD_TYPE: ${{ matrix.BUILD_TYPE }} | ||||
|       BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }} | ||||
|       CCOMPILER: ${{ matrix.CCOMPILER }} | ||||
|       CFLAGS: ${{ matrix.CFLAGS }} | ||||
|       CUCUMBER_TIMEOUT: ${{ matrix.CUCUMBER_TIMEOUT }} | ||||
|       CXXCOMPILER: ${{ matrix.CXXCOMPILER }} | ||||
|       CXXFLAGS: ${{ matrix.CXXFLAGS }} | ||||
|       ENABLE_ASSERTIONS: ${{ matrix.ENABLE_ASSERTIONS }} | ||||
|       ENABLE_CLANG_TIDY: ${{ matrix.ENABLE_CLANG_TIDY }} | ||||
|       ENABLE_COVERAGE: ${{ matrix.ENABLE_COVERAGE }} | ||||
|       ENABLE_CONAN: ${{ matrix.ENABLE_CONAN }} | ||||
|       ENABLE_SANITIZER: ${{ matrix.ENABLE_SANITIZER }} | ||||
|       NODE_PACKAGE_TESTS_ONLY: ${{ matrix.NODE_PACKAGE_TESTS_ONLY }} | ||||
|       ENABLE_APPLE_SILICON: ${{ matrix.ENABLE_APPLE_SILICON }} | ||||
|       TARGET_ARCH: ${{ matrix.TARGET_ARCH }} | ||||
|       OSRM_CONNECTION_RETRIES: ${{ matrix.OSRM_CONNECTION_RETRIES }} | ||||
|       OSRM_CONNECTION_EXP_BACKOFF_COEF: ${{ matrix.OSRM_CONNECTION_EXP_BACKOFF_COEF }} | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - run: docker run -it --platform linux/arm64 debian:bullseye-slim echo hello | ||||
| 
 | ||||
|     - name: Use Node.js | ||||
|       uses: actions/setup-node@v3 | ||||
|       with: | ||||
|         node-version: ${{ matrix.node }} | ||||
|     - 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: Enable compiler cache | ||||
|       uses: actions/cache@v2 | ||||
|       with: | ||||
|         path: ~/.ccache | ||||
|         key: ccache-${{ matrix.name }}-${{ github.sha }} | ||||
|         restore-keys: | | ||||
|           ccache-${{ matrix.name }}- | ||||
|     - name: Enable Conan cache | ||||
|       uses: actions/cache@v2 | ||||
|       with: | ||||
|         path: ~/.conan | ||||
|         key: v6-conan-${{ matrix.name }}-${{ github.sha }} | ||||
|         restore-keys: | | ||||
|           v6-conan-${{ matrix.name }}- | ||||
|     - name: Enable test cache | ||||
|       uses: actions/cache@v2 | ||||
|       with: | ||||
|         path: ${{github.workspace}}/test/cache | ||||
|         key: v3-test-${{ matrix.name }}-${{ github.sha }} | ||||
|         restore-keys: | | ||||
|           v3-test-${{ matrix.name }}- | ||||
| 
 | ||||
|     - name: Prepare environment | ||||
|       run: | | ||||
|         PACKAGE_JSON_VERSION=$(node -e "console.log(require('./package.json').version)") | ||||
|         echo PUBLISH=$([[ "${GITHUB_REF:-}" == "refs/tags/v${PACKAGE_JSON_VERSION}" ]] && echo "On" || echo "Off") >> $GITHUB_ENV | ||||
|         echo "OSRM_INSTALL_DIR=${GITHUB_WORKSPACE}/install-osrm" >> $GITHUB_ENV | ||||
|         echo "OSRM_BUILD_DIR=${GITHUB_WORKSPACE}/build-osrm" >> $GITHUB_ENV | ||||
|         if [[ "$ENABLE_SANITIZER" == 'ON' ]]; then | ||||
|           # We can only set this after checkout once we know the workspace directory | ||||
|           echo "LSAN_OPTIONS=print_suppressions=0:suppressions=${GITHUB_WORKSPACE}/scripts/ci/leaksanitizer.conf" >> $GITHUB_ENV | ||||
|           echo "UBSAN_OPTIONS=symbolize=1:halt_on_error=1:print_stacktrace=1:suppressions=${GITHUB_WORKSPACE}/scripts/ci/undefinedsanitizer.conf" >> $GITHUB_ENV | ||||
|         fi | ||||
| 
 | ||||
|         if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|           echo "JOBS=$((`nproc` + 1))" >>  $GITHUB_ENV | ||||
|         elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|           echo "JOBS=$((`sysctl -n hw.ncpu` + 1))" >>  $GITHUB_ENV | ||||
|         fi | ||||
| 
 | ||||
|     - name: Install dev dependencies | ||||
|       run: | | ||||
|         python3 -m pip install conan==1.53.0 | ||||
| 
 | ||||
|         sudo apt-get update -y && sudo apt-get -y install gcc-aarch64-linux-gnu | ||||
|         # ccache | ||||
|         if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|           sudo apt-get update -y && sudo apt-get install ccache | ||||
|         elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|           brew install ccache | ||||
|         fi | ||||
| 
 | ||||
|         # clang | ||||
|         if [[ "${CCOMPILER}" == "clang-6.0" ]]; then | ||||
|           sudo apt-get update -y && sudo apt-get install clang++-6 | ||||
|         fi | ||||
| 
 | ||||
|         # Linux dev packages | ||||
|         if [ "${TARGET_ARCH}" != "i686" ] && [ "${ENABLE_CONAN}" != "ON" ]; then | ||||
|           sudo apt-get update -y | ||||
|           sudo apt-get install -y libbz2-dev libxml2-dev libzip-dev liblua5.2-dev libboost-all-dev | ||||
|           if [[ "${CCOMPILER}" != clang-* ]]; then | ||||
|             sudo apt-get install -y ${CXXCOMPILER} | ||||
|           fi | ||||
|           if [[ "${ENABLE_COVERAGE}" == "ON" ]]; then | ||||
|             sudo apt-get install -y lcov | ||||
|           fi | ||||
|         elif [[ $TARGET_ARCH == "i686" ]]; then | ||||
|           source ./scripts/ci/before_install.${TARGET_ARCH}.sh | ||||
|           echo "PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}" >> $GITHUB_ENV | ||||
|         fi | ||||
| 
 | ||||
|         # TBB | ||||
|         TBB_VERSION=2021.3.0 | ||||
|         if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|           TBB_URL="https://github.com/oneapi-src/oneTBB/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-lin.tgz" | ||||
|         elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|           TBB_URL="https://github.com/oneapi-src/oneTBB/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-mac.tgz" | ||||
|         fi | ||||
|         wget --tries 5 ${TBB_URL} -O onetbb.tgz | ||||
|         tar zxvf onetbb.tgz | ||||
|         sudo cp -a oneapi-tbb-${TBB_VERSION}/lib/. /usr/local/lib/ | ||||
|         sudo cp -a oneapi-tbb-${TBB_VERSION}/include/. /usr/local/include/ | ||||
|     - run: ls -R /usr/bin/ | ||||
|     - name: Prepare build | ||||
|       run: | | ||||
|         mkdir ${OSRM_BUILD_DIR} | ||||
|         ccache --max-size=256M | ||||
|         npm ci --ignore-scripts | ||||
|         if [[ "${ENABLE_COVERAGE}" == "ON" ]]; then | ||||
|           lcov --directory . --zerocounters # clean cached files | ||||
|         fi | ||||
|         echo "CC=${CCOMPILER}" >> $GITHUB_ENV | ||||
|         echo "CXX=${CXXCOMPILER}" >> $GITHUB_ENV | ||||
| 
 | ||||
|     - name: Build and install OSRM | ||||
|       run: | | ||||
|         echo "Using ${JOBS} jobs" | ||||
|         pushd ${OSRM_BUILD_DIR} | ||||
| 
 | ||||
|         # handle Apple Silicon cross compilation | ||||
|         if [[ "${ENABLE_APPLE_SILICON}" == "ON" ]]; then | ||||
|           ARCH=arm64 | ||||
|           TARGET="${ARCH}-apple-darwin" | ||||
|           CFLAGS="$CFLAGS --target=$TARGET" | ||||
|           CXXFLAGS="$CXXFLAGS --target=$TARGET" | ||||
|           APPLE_SILICON_FLAGS=(-DCMAKE_C_COMPILER_TARGET="$TARGET" -DCMAKE_CXX_COMPILER_TARGET="$TARGET" -DCMAKE_SYSTEM_PROCESSOR="${ARCH}" -DCMAKE_SYSTEM_NAME="Darwin" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS") | ||||
|         else | ||||
|           APPLE_SILICON_FLAGS=() | ||||
|         fi | ||||
| 
 | ||||
|         cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ | ||||
|                  -DENABLE_CONAN=${ENABLE_CONAN:-OFF} \ | ||||
|                  -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-OFF} \ | ||||
|                  -DENABLE_CLANG_TIDY=${ENABLE_CLANG_TIDY:-OFF} \ | ||||
|                  -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} \ | ||||
|                  -DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} \ | ||||
|                  -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ | ||||
|                  -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} \ | ||||
|                  -DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \ | ||||
|                  -DENABLE_CCACHE=ON \ | ||||
|                  -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \ | ||||
|                  "${APPLE_SILICON_FLAGS[@]}" | ||||
| 
 | ||||
|         make --jobs=${JOBS} | ||||
| 
 | ||||
|         if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" && "${ENABLE_APPLE_SILICON}" != "ON" ]]; then | ||||
|           make tests --jobs=${JOBS} | ||||
|           make benchmarks --jobs=${JOBS} | ||||
|           ccache -s | ||||
|           sudo make install | ||||
|           if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|             echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${OSRM_INSTALL_DIR}/lib" >> $GITHUB_ENV | ||||
|           fi | ||||
|           echo "PKG_CONFIG_PATH=${OSRM_INSTALL_DIR}/lib/pkgconfig" >> $GITHUB_ENV | ||||
|         fi | ||||
|         popd | ||||
|     - name: Build example | ||||
|       if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} | ||||
|       run: | | ||||
|         mkdir example/build && pushd example/build | ||||
|         cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} | ||||
|         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 benchmarks | ||||
|       if: ${{ matrix.ENABLE_BENCHMARKS == 'ON' }} | ||||
|       run: | | ||||
|         pushd ${OSRM_BUILD_DIR} | ||||
|         make --jobs=${JOBS} benchmarks | ||||
|         ./src/benchmarks/alias-bench | ||||
|         ./src/benchmarks/json-render-bench ../src/benchmarks/portugal_to_korea.json | ||||
|         ./src/benchmarks/match-bench ../test/data/ch/monaco.osrm | ||||
|         ./src/benchmarks/packedvector-bench | ||||
|         ./src/benchmarks/rtree-bench ../test/data/monaco.osrm.ramIndex ../test/data/monaco.osrm.fileIndex ../test/data/monaco.osrm.nbg_nodes | ||||
|         popd | ||||
|     - 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() | ||||
|       with: | ||||
|         name: logs | ||||
|         path: test/logs/ | ||||
| 
 | ||||
|     - name: Generate code coverage | ||||
|       if: ${{ matrix.ENABLE_COVERAGE == 'ON' }} | ||||
|       run: | | ||||
|         lcov --directory . --capture --output-file coverage.info # capture coverage info | ||||
|         lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter out system | ||||
|         lcov --list coverage.info #debug info | ||||
|         # Uploading report to CodeCov | ||||
|     - name: Upload code coverage | ||||
|       if: ${{ matrix.ENABLE_COVERAGE == 'ON' }} | ||||
|       uses: codecov/codecov-action@v1 | ||||
|       with: | ||||
|         files: coverage.info | ||||
|         name: codecov-osrm-backend | ||||
|         fail_ci_if_error: true | ||||
|         verbose: true | ||||
|     - 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 }} | ||||
|       run: ./scripts/ci/node_package.sh | ||||
|     - name: Publish Node package | ||||
|       if: ${{ matrix.build_node_package && env.PUBLISH == 'On' }} | ||||
|       uses: ncipollo/release-action@v1 | ||||
|       with: | ||||
|         allowUpdates: true | ||||
|         artifactErrorsFailBuild: true | ||||
|         artifacts: build/stage/**/*.tar.gz | ||||
|         omitBody: true | ||||
|         omitBodyDuringUpdate: true | ||||
|         omitName: true | ||||
|         omitNameDuringUpdate: true | ||||
|         replacesArtifacts: true | ||||
|         token: ${{ secrets.GITHUB_TOKEN }} | ||||
| 
 | ||||
|   # ci-complete: | ||||
|   #   runs-on: ubuntu-22.04 | ||||
|   #   needs: [build-test-publish, docker-image, windows] | ||||
|   #   name: ${{ matrix.name}} | ||||
|   #   continue-on-error: ${{ matrix.continue-on-error }} | ||||
|   #   runs-on: ${{ matrix.runs-on }} | ||||
|   #   env: | ||||
|   #     BUILD_TOOLS: ${{ matrix.BUILD_TOOLS }} | ||||
|   #     BUILD_TYPE: ${{ matrix.BUILD_TYPE }} | ||||
|   #     BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }} | ||||
|   #     CCOMPILER: ${{ matrix.CCOMPILER }} | ||||
|   #     CFLAGS: ${{ matrix.CFLAGS }} | ||||
|   #     CUCUMBER_TIMEOUT: ${{ matrix.CUCUMBER_TIMEOUT }} | ||||
|   #     CXXCOMPILER: ${{ matrix.CXXCOMPILER }} | ||||
|   #     CXXFLAGS: ${{ matrix.CXXFLAGS }} | ||||
|   #     ENABLE_ASSERTIONS: ${{ matrix.ENABLE_ASSERTIONS }} | ||||
|   #     ENABLE_CLANG_TIDY: ${{ matrix.ENABLE_CLANG_TIDY }} | ||||
|   #     ENABLE_COVERAGE: ${{ matrix.ENABLE_COVERAGE }} | ||||
|   #     ENABLE_CONAN: ${{ matrix.ENABLE_CONAN }} | ||||
|   #     ENABLE_SANITIZER: ${{ matrix.ENABLE_SANITIZER }} | ||||
|   #     NODE_PACKAGE_TESTS_ONLY: ${{ matrix.NODE_PACKAGE_TESTS_ONLY }} | ||||
|   #     ENABLE_APPLE_SILICON: ${{ matrix.ENABLE_APPLE_SILICON }} | ||||
|   #     TARGET_ARCH: ${{ matrix.TARGET_ARCH }} | ||||
|   #     OSRM_CONNECTION_RETRIES: ${{ matrix.OSRM_CONNECTION_RETRIES }} | ||||
|   #     OSRM_CONNECTION_EXP_BACKOFF_COEF: ${{ matrix.OSRM_CONNECTION_EXP_BACKOFF_COEF }} | ||||
|   #   steps: | ||||
|   #   - run: echo "CI complete" | ||||
| 
 | ||||
|   #   - uses: actions/checkout@v2 | ||||
|   #   - name: Use Node.js | ||||
|   #     uses: actions/setup-node@v3 | ||||
|   #     with: | ||||
|   #       node-version: ${{ matrix.node }} | ||||
|   #   - 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: Enable compiler cache | ||||
|   #     uses: actions/cache@v2 | ||||
|   #     with: | ||||
|   #       path: ~/.ccache | ||||
|   #       key: ccache-${{ matrix.name }}-${{ github.sha }} | ||||
|   #       restore-keys: | | ||||
|   #         ccache-${{ matrix.name }}- | ||||
|   #   - name: Enable Conan cache | ||||
|   #     uses: actions/cache@v2 | ||||
|   #     with: | ||||
|   #       path: ~/.conan | ||||
|   #       key: v6-conan-${{ matrix.name }}-${{ github.sha }} | ||||
|   #       restore-keys: | | ||||
|   #         v6-conan-${{ matrix.name }}- | ||||
|   #   - name: Enable test cache | ||||
|   #     uses: actions/cache@v2 | ||||
|   #     with: | ||||
|   #       path: ${{github.workspace}}/test/cache | ||||
|   #       key: v3-test-${{ matrix.name }}-${{ github.sha }} | ||||
|   #       restore-keys: | | ||||
|   #         v3-test-${{ matrix.name }}- | ||||
| 
 | ||||
|   #   - name: Prepare environment | ||||
|   #     run: | | ||||
|   #       PACKAGE_JSON_VERSION=$(node -e "console.log(require('./package.json').version)") | ||||
|   #       echo PUBLISH=$([[ "${GITHUB_REF:-}" == "refs/tags/v${PACKAGE_JSON_VERSION}" ]] && echo "On" || echo "Off") >> $GITHUB_ENV | ||||
|   #       echo "OSRM_INSTALL_DIR=${GITHUB_WORKSPACE}/install-osrm" >> $GITHUB_ENV | ||||
|   #       echo "OSRM_BUILD_DIR=${GITHUB_WORKSPACE}/build-osrm" >> $GITHUB_ENV | ||||
|   #       if [[ "$ENABLE_SANITIZER" == 'ON' ]]; then | ||||
|   #         # We can only set this after checkout once we know the workspace directory | ||||
|   #         echo "LSAN_OPTIONS=print_suppressions=0:suppressions=${GITHUB_WORKSPACE}/scripts/ci/leaksanitizer.conf" >> $GITHUB_ENV | ||||
|   #         echo "UBSAN_OPTIONS=symbolize=1:halt_on_error=1:print_stacktrace=1:suppressions=${GITHUB_WORKSPACE}/scripts/ci/undefinedsanitizer.conf" >> $GITHUB_ENV | ||||
|   #       fi | ||||
| 
 | ||||
|   #       if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|   #         echo "JOBS=$((`nproc` + 1))" >>  $GITHUB_ENV | ||||
|   #       elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|   #         echo "JOBS=$((`sysctl -n hw.ncpu` + 1))" >>  $GITHUB_ENV | ||||
|   #       fi | ||||
| 
 | ||||
|   #   - name: Install dev dependencies | ||||
|   #     run: | | ||||
|   #       python3 -m pip install conan==1.53.0 | ||||
| 
 | ||||
|   #       sudo apt-get update -y && sudo apt-get -y install gcc-aarch64-linux-gnu | ||||
|   #       # ccache | ||||
|   #       if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|   #         sudo apt-get update -y && sudo apt-get install ccache | ||||
|   #       elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|   #         brew install ccache | ||||
|   #       fi | ||||
| 
 | ||||
|   #       # clang | ||||
|   #       if [[ "${CCOMPILER}" == "clang-6.0" ]]; then | ||||
|   #         sudo apt-get update -y && sudo apt-get install clang++-6 | ||||
|   #       fi | ||||
| 
 | ||||
|   #       # Linux dev packages | ||||
|   #       if [ "${TARGET_ARCH}" != "i686" ] && [ "${ENABLE_CONAN}" != "ON" ]; then | ||||
|   #         sudo apt-get update -y | ||||
|   #         sudo apt-get install -y libbz2-dev libxml2-dev libzip-dev liblua5.2-dev libboost-all-dev | ||||
|   #         if [[ "${CCOMPILER}" != clang-* ]]; then | ||||
|   #           sudo apt-get install -y ${CXXCOMPILER} | ||||
|   #         fi | ||||
|   #         if [[ "${ENABLE_COVERAGE}" == "ON" ]]; then | ||||
|   #           sudo apt-get install -y lcov | ||||
|   #         fi | ||||
|   #       elif [[ $TARGET_ARCH == "i686" ]]; then | ||||
|   #         source ./scripts/ci/before_install.${TARGET_ARCH}.sh | ||||
|   #         echo "PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}" >> $GITHUB_ENV | ||||
|   #       fi | ||||
| 
 | ||||
|   #       # TBB | ||||
|   #       TBB_VERSION=2021.3.0 | ||||
|   #       if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|   #         TBB_URL="https://github.com/oneapi-src/oneTBB/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-lin.tgz" | ||||
|   #       elif [[ "${RUNNER_OS}" == "macOS" ]]; then | ||||
|   #         TBB_URL="https://github.com/oneapi-src/oneTBB/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-mac.tgz" | ||||
|   #       fi | ||||
|   #       wget --tries 5 ${TBB_URL} -O onetbb.tgz | ||||
|   #       tar zxvf onetbb.tgz | ||||
|   #       sudo cp -a oneapi-tbb-${TBB_VERSION}/lib/. /usr/local/lib/ | ||||
|   #       sudo cp -a oneapi-tbb-${TBB_VERSION}/include/. /usr/local/include/ | ||||
|   #   - run: ls -R /usr/bin/ | ||||
|   #   - name: Prepare build | ||||
|   #     run: | | ||||
|   #       mkdir ${OSRM_BUILD_DIR} | ||||
|   #       ccache --max-size=256M | ||||
|   #       npm ci --ignore-scripts | ||||
|   #       if [[ "${ENABLE_COVERAGE}" == "ON" ]]; then | ||||
|   #         lcov --directory . --zerocounters # clean cached files | ||||
|   #       fi | ||||
|   #       echo "CC=${CCOMPILER}" >> $GITHUB_ENV | ||||
|   #       echo "CXX=${CXXCOMPILER}" >> $GITHUB_ENV | ||||
| 
 | ||||
|   #   - name: Build and install OSRM | ||||
|   #     run: | | ||||
|   #       echo "Using ${JOBS} jobs" | ||||
|   #       pushd ${OSRM_BUILD_DIR} | ||||
| 
 | ||||
|   #       # handle Apple Silicon cross compilation | ||||
|   #       if [[ "${ENABLE_APPLE_SILICON}" == "ON" ]]; then | ||||
|   #         ARCH=arm64 | ||||
|   #         TARGET="${ARCH}-apple-darwin" | ||||
|   #         CFLAGS="$CFLAGS --target=$TARGET" | ||||
|   #         CXXFLAGS="$CXXFLAGS --target=$TARGET" | ||||
|   #         APPLE_SILICON_FLAGS=(-DCMAKE_C_COMPILER_TARGET="$TARGET" -DCMAKE_CXX_COMPILER_TARGET="$TARGET" -DCMAKE_SYSTEM_PROCESSOR="${ARCH}" -DCMAKE_SYSTEM_NAME="Darwin" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS") | ||||
|   #       else | ||||
|   #         APPLE_SILICON_FLAGS=() | ||||
|   #       fi | ||||
| 
 | ||||
|   #       cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ | ||||
|   #                -DENABLE_CONAN=${ENABLE_CONAN:-OFF} \ | ||||
|   #                -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-OFF} \ | ||||
|   #                -DENABLE_CLANG_TIDY=${ENABLE_CLANG_TIDY:-OFF} \ | ||||
|   #                -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} \ | ||||
|   #                -DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} \ | ||||
|   #                -DENABLE_NODE_BINDINGS=${ENABLE_NODE_BINDINGS:-OFF} \ | ||||
|   #                -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} \ | ||||
|   #                -DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \ | ||||
|   #                -DENABLE_CCACHE=ON \ | ||||
|   #                -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \ | ||||
|   #                "${APPLE_SILICON_FLAGS[@]}" | ||||
| 
 | ||||
|   #       make --jobs=${JOBS} | ||||
| 
 | ||||
|   #       if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" && "${ENABLE_APPLE_SILICON}" != "ON" ]]; then | ||||
|   #         make tests --jobs=${JOBS} | ||||
|   #         make benchmarks --jobs=${JOBS} | ||||
|   #         ccache -s | ||||
|   #         sudo make install | ||||
|   #         if [[ "${RUNNER_OS}" == "Linux" ]]; then | ||||
|   #           echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${OSRM_INSTALL_DIR}/lib" >> $GITHUB_ENV | ||||
|   #         fi | ||||
|   #         echo "PKG_CONFIG_PATH=${OSRM_INSTALL_DIR}/lib/pkgconfig" >> $GITHUB_ENV | ||||
|   #       fi | ||||
|   #       popd | ||||
|   #   - name: Build example | ||||
|   #     if: ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }} | ||||
|   #     run: | | ||||
|   #       mkdir example/build && pushd example/build | ||||
|   #       cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} | ||||
|   #       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 benchmarks | ||||
|   #     if: ${{ matrix.ENABLE_BENCHMARKS == 'ON' }} | ||||
|   #     run: | | ||||
|   #       pushd ${OSRM_BUILD_DIR} | ||||
|   #       make --jobs=${JOBS} benchmarks | ||||
|   #       ./src/benchmarks/alias-bench | ||||
|   #       ./src/benchmarks/json-render-bench ../src/benchmarks/portugal_to_korea.json | ||||
|   #       ./src/benchmarks/match-bench ../test/data/ch/monaco.osrm | ||||
|   #       ./src/benchmarks/packedvector-bench | ||||
|   #       ./src/benchmarks/rtree-bench ../test/data/monaco.osrm.ramIndex ../test/data/monaco.osrm.fileIndex ../test/data/monaco.osrm.nbg_nodes | ||||
|   #       popd | ||||
|   #   - 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() | ||||
|   #     with: | ||||
|   #       name: logs | ||||
|   #       path: test/logs/ | ||||
| 
 | ||||
|   #   - name: Generate code coverage | ||||
|   #     if: ${{ matrix.ENABLE_COVERAGE == 'ON' }} | ||||
|   #     run: | | ||||
|   #       lcov --directory . --capture --output-file coverage.info # capture coverage info | ||||
|   #       lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter out system | ||||
|   #       lcov --list coverage.info #debug info | ||||
|   #       # Uploading report to CodeCov | ||||
|   #   - name: Upload code coverage | ||||
|   #     if: ${{ matrix.ENABLE_COVERAGE == 'ON' }} | ||||
|   #     uses: codecov/codecov-action@v1 | ||||
|   #     with: | ||||
|   #       files: coverage.info | ||||
|   #       name: codecov-osrm-backend | ||||
|   #       fail_ci_if_error: true | ||||
|   #       verbose: true | ||||
|   #   - 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 }} | ||||
|   #     run: ./scripts/ci/node_package.sh | ||||
|   #   - name: Publish Node package | ||||
|   #     if: ${{ matrix.build_node_package && env.PUBLISH == 'On' }} | ||||
|   #     uses: ncipollo/release-action@v1 | ||||
|   #     with: | ||||
|   #       allowUpdates: true | ||||
|   #       artifactErrorsFailBuild: true | ||||
|   #       artifacts: build/stage/**/*.tar.gz | ||||
|   #       omitBody: true | ||||
|   #       omitBodyDuringUpdate: true | ||||
|   #       omitName: true | ||||
|   #       omitNameDuringUpdate: true | ||||
|   #       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" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user