172 lines
6.1 KiB
YAML
172 lines
6.1 KiB
YAML
name: Android ARM64 with vcpkg
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
concurrency:
|
|
# github.ref is not unique in post-commit
|
|
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-android-arm64-vcpkg
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
Smart_CI:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
|
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
|
steps:
|
|
- name: checkout action
|
|
uses: actions/checkout@v4
|
|
with:
|
|
sparse-checkout: .github/actions/smart-ci
|
|
|
|
- name: Get affected components
|
|
id: smart_ci
|
|
uses: ./.github/actions/smart-ci
|
|
with:
|
|
repository: ${{ github.repository }}
|
|
pr: ${{ github.event.number }}
|
|
commit_sha: ${{ github.sha }}
|
|
component_pattern: "category: (.*)"
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
skip_when_only_listed_labels_set: 'docs'
|
|
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
|
|
|
Build:
|
|
needs: Smart_CI
|
|
timeout-minutes: 150
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
runs-on: aks-linux-16-cores-32gb
|
|
container:
|
|
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04
|
|
volumes:
|
|
- /mount/caches:/mount/caches
|
|
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
|
CMAKE_GENERATOR: 'Ninja'
|
|
CMAKE_CXX_COMPILER_LAUNCHER: sccache
|
|
CMAKE_C_COMPILER_LAUNCHER: sccache
|
|
OPENVINO_REPO: '/__w/openvino/openvino/openvino'
|
|
VCPKG_ROOT: '/__w/openvino/openvino/vcpkg'
|
|
BUILD_DIR: '/__w/openvino/openvino/build'
|
|
ANDROID_TOOLS: '/__w/openvino/openvino/android_tools'
|
|
ANDROID_NDK_HOME: '/__w/openvino/openvino/android_tools/ndk-bundle'
|
|
ANDROID_SDK_VERSION: 29
|
|
ANDROID_ABI_CONFIG: arm64-v8a
|
|
VCPKG_DEFAULT_BINARY_CACHE: '/mount/caches/ccache/android_arm64/vcpkg_cache'
|
|
VCPKG_FORCE_SYSTEM_BINARIES: '1'
|
|
SCCACHE_AZURE_KEY_PREFIX: android_arm64
|
|
if: "!needs.smart_ci.outputs.skip_workflow"
|
|
steps:
|
|
- name: Install git
|
|
run: apt-get update && apt-get install --assume-yes --no-install-recommends git ca-certificates
|
|
|
|
- name: Clone OpenVINO
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: 'openvino'
|
|
|
|
- name: Init submodules for non vcpkg dependencies
|
|
run: |
|
|
pushd ${OPENVINO_REPO}
|
|
git submodule update --init -- ${OPENVINO_REPO}/src/plugins
|
|
git submodule update --init -- ${OPENVINO_REPO}/thirdparty/zlib
|
|
git submodule update --init -- ${OPENVINO_REPO}/thirdparty/json
|
|
git submodule update --init -- ${OPENVINO_REPO}/thirdparty/gtest
|
|
git submodule update --init -- ${OPENVINO_REPO}/thirdparty/gflags
|
|
git submodule update --init -- ${OPENVINO_REPO}/thirdparty/open_model_zoo
|
|
popd
|
|
|
|
- name: Clone vcpkg
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: 'microsoft/vcpkg'
|
|
path: 'vcpkg'
|
|
fetch-depth: '0'
|
|
|
|
#
|
|
# Print system info
|
|
#
|
|
|
|
- name: System info
|
|
uses: ./openvino/.github/actions/system_info
|
|
|
|
#
|
|
# Dependencies
|
|
#
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
# generic dependencies
|
|
apt --assume-yes install ccache scons ninja-build build-essential python3-pip
|
|
|
|
# vcpkg requires cmake 3.19 or later
|
|
python3 -m pip install -U pip cmake
|
|
# vcpkg's tool dependencies
|
|
apt --assume-yes install curl zip unzip tar
|
|
# vcpkg 'python3' port dependencies
|
|
apt --assume-yes install autoconf libtool autoconf-archive
|
|
# vcpkg tree of dependencies require extra packages
|
|
apt --assume-yes install pkg-config linux-libc-dev
|
|
|
|
# Install Android SDK, NDK and Tools
|
|
apt -y --no-install-recommends install unzip wget default-jdk
|
|
wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
|
|
unzip commandlinetools-linux-7583922_latest.zip
|
|
echo "yes" | ./cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_TOOLS} --install "ndk-bundle" "platform-tools" "platforms;android-${{ env.ANDROID_SDK_VERSION }}"
|
|
|
|
- name: Install sccache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
with:
|
|
version: "v0.5.4"
|
|
|
|
#
|
|
# Build
|
|
#
|
|
|
|
- name: Build vcpkg
|
|
run: |
|
|
mkdir -p ${VCPKG_DEFAULT_BINARY_CACHE}
|
|
${VCPKG_ROOT}/bootstrap-vcpkg.sh
|
|
# patch vcpkg default toolchain to build only Release configuration
|
|
echo "set(VCPKG_BUILD_TYPE release)" >> ${VCPKG_ROOT}/triplets/arm64-android.cmake
|
|
|
|
- name: CMake - configure
|
|
run: |
|
|
cmake \
|
|
-G '${{ env.CMAKE_GENERATOR }}' \
|
|
-DENABLE_INTEL_GPU=ON \
|
|
-DENABLE_TESTS=ON \
|
|
-DENABLE_SYSTEM_OPENCL=ON \
|
|
-DENABLE_SYSTEM_PROTOBUF=ON \
|
|
-DENABLE_SYSTEM_PUGIXML=ON \
|
|
-DENABLE_SYSTEM_SNAPPY=ON \
|
|
-DENABLE_SYSTEM_TBB=ON \
|
|
-DENABLE_SYSTEM_FLATBUFFERS=ON \
|
|
-DANDROID_ABI=${{ env.ANDROID_ABI_CONFIG }} \
|
|
-DANDROID_PLATFORM=${{ env.ANDROID_SDK_VERSION }} \
|
|
-DVCPKG_TARGET_TRIPLET=arm64-android \
|
|
-DVCPKG_HOST_TRIPLET=x64-linux-release \
|
|
-DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake \
|
|
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
|
|
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
|
|
-S ${OPENVINO_REPO} \
|
|
-B ${BUILD_DIR}
|
|
|
|
- name: Clean ccache stats
|
|
run: ${SCCACHE_PATH} --zero-stats
|
|
|
|
- name: Cmake - build
|
|
run: cmake --build ${BUILD_DIR} --parallel
|
|
|
|
- name: Show ccache stats
|
|
run: ${SCCACHE_PATH} --show-stats
|