Linux Android ARM64 (Ubuntu 20.04, Python 3.11) #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux Android ARM64 (Ubuntu 20.04, Python 3.11) | |
on: | |
schedule: | |
# run daily at 00:00 | |
- cron: '0 0 * * *' | |
workflow_dispatch: | |
# pull_request: | |
# paths-ignore: | |
# - '**/docs/**' | |
# - 'docs/**' | |
# - '**/**.md' | |
# - '**.md' | |
# - '**/layer_tests_summary/**' | |
# - '**/conformance/**' | |
# push: | |
# paths-ignore: | |
# - '**/docs/**' | |
# - 'docs/**' | |
# - '**/**.md' | |
# - '**.md' | |
# - '**/layer_tests_summary/**' | |
# - '**/conformance/**' | |
# branches: | |
# - master | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }}-linux-android-arm64 | |
cancel-in-progress: true | |
jobs: | |
Build: | |
# TODO: remove. Temporary measure to prevent the workflow from scheduling on forks. | |
if: ${{ github.repository_owner == 'openvinotoolkit' }} | |
defaults: | |
run: | |
shell: bash | |
runs-on: ubuntu-20.04-8-cores | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja' | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
BUILD_TYPE: Debug | |
OPENVINO_REPO: ${{ github.workspace }}/openvino | |
VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
BUILD_DIR: ${{ github.workspace }}/build | |
INSTALL_DIR: ${{ github.workspace }}/install | |
OV_TEMP: ${{ github.workspace }}/openvino_temp | |
ANDROID_TOOLS: ${{ github.workspace }}/android_tools | |
ANDROID_NDK_HOME: ${{ github.workspace }}/android_tools/ndk-bundle | |
ANDROID_SDK_VERSION: 29 | |
ANDROID_ABI_CONFIG: arm64-v8a | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@v3 | |
with: | |
path: 'openvino' | |
submodules: 'recursive' | |
- name: Clone VCPKG | |
uses: actions/checkout@v3 | |
with: | |
repository: 'microsoft/vcpkg' | |
path: 'vcpkg' | |
fetch-depth: '0' | |
submodules: 'recursive' | |
- name: Create Directories | |
run: | | |
mkdir -p ${{ env.BUILD_DIR }} | |
mkdir -p ${{ env.INSTALL_DIR }} | |
- name: Setup Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
# | |
# Dependencies | |
# | |
- name: Install dependencies | |
run: | | |
# generic dependencies | |
sudo -E apt update | |
sudo -E apt --assume-yes install ccache scons default-jdk python3-pip ninja-build build-essential | |
wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip | |
unzip ninja-linux.zip | |
sudo cp -v ninja /usr/local/bin/ | |
ln -s /usr/local/bin/ninja /usr/local/bin/ninja-build | |
# vcpkg's tool dependencies | |
sudo -E apt --assume-yes install curl zip unzip tar | |
# vcpkg tree of dependencies require extra packages | |
sudo -E apt --assume-yes install pkg-config linux-libc-dev | |
# Install Android SDK, NDK and Tools | |
sudo apt -y --no-install-recommends install unzip | |
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=${{ env.ANDROID_TOOLS }} --install "ndk-bundle" "platform-tools" "platforms;android-${{ env.ANDROID_SDK_VERSION }}" | |
- name: Setup ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: "2000M" | |
# Should save cache only if run in the master branch of the base repo | |
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push | |
save: ${{ github.ref_name == 'master' && 'true' || 'false' }} | |
verbose: 2 | |
key: ${{ github.job }}-linux-android-arm64 | |
restore-keys: | | |
${{ github.job }}-linux-android-arm64 | |
- name: Get tools versions | |
run: | | |
ninja --version | |
ccache --version | |
python3 --version | |
cmake --version | |
# | |
# Build | |
# | |
- name: Build vcpkg | |
run: | | |
${{ env.VCPKG_ROOT }}/bootstrap-vcpkg.sh --disableMetrics | |
# patch vcpkg default (community) toolchain to build only Release configuration | |
echo "set(VCPKG_BUILD_TYPE release)" >> ${{ env.VCPKG_ROOT }}/triplets/community/arm64-android.cmake | |
- name: Get number of CPU cores | |
uses: SimenB/github-actions-cpu-cores@v1 | |
id: cpu-cores | |
- name: CMake configure | |
run: | | |
cmake \ | |
-G Ninja \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DVCPKG_TARGET_TRIPLET=arm64-android \ | |
-DVCPKG_HOST_TRIPLET=x64-linux-release \ | |
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake \ | |
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${{ env.ANDROID_NDK_HOME }}/build/cmake/android.toolchain.cmake \ | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ | |
-DANDROID_ABI=${{ env.ANDROID_ABI_CONFIG }} \ | |
-DANDROID_PLATFORM=${{ env.ANDROID_SDK_VERSION }} \ | |
-DENABLE_PYTHON=OFF \ | |
-DENABLE_SYSTEM_OPENCL=ON \ | |
-DENABLE_SYSTEM_PROTOBUF=ON \ | |
-DENABLE_SYSTEM_PUGIXML=ON \ | |
-DENABLE_SYSTEM_SNAPPY=ON \ | |
-DENABLE_SYSTEM_TBB=ON \ | |
-DENABLE_SYSTEM_FLATBUFFERS=ON \ | |
-DENABLE_INTEL_GPU=ON \ | |
-DENABLE_TESTS=ON \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_LINKER_LAUNCHER=ccache \ | |
-DCMAKE_C_LINKER_LAUNCHER=ccache \ | |
-S ${{ env.OPENVINO_REPO }} \ | |
-B ${{ env.BUILD_DIR }} | |
- name: Clean ccache stats | |
run: ccache --zero-stats --show-config | |
- name: Build Android ARM64 | |
run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config ${{ env.BUILD_TYPE }} | |
- name: Show ccache stats | |
run: ccache --show-stats | |
- name: List binary files | |
run: ls -alR ${{ env.OPENVINO_REPO }}/bin/ |