Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added build on RedHat system to build & test RPM packages #20134

Merged
merged 12 commits into from
Oct 1, 2023
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
224 changes: 224 additions & 0 deletions .github/workflows/fedora.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
name: Fedora (RHEL), Python 3.9
ilya-lavrenov marked this conversation as resolved.
Show resolved Hide resolved
on:
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
- 'releases/**'

concurrency:
# github.ref is not unique in post-commit
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-fedora33
cancel-in-progress: true

jobs:
Build:
defaults:
run:
shell: bash
runs-on: aks-linux-16-cores
container:
image: fedora:33
volumes:
- /mount/caches:/mount/caches
env:
CMAKE_BUILD_TYPE: 'Release'
CMAKE_GENERATOR: 'Ninja'
CMAKE_CXX_COMPILER_LAUNCHER: ccache
CMAKE_C_COMPILER_LAUNCHER: ccache
GITHUB_WORKSPACE: '/__w/openvino/openvino'
OPENVINO_REPO: /__w/openvino/openvino/openvino
INSTALL_DIR: /__w/openvino/openvino/openvino_install
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install
BUILD_DIR: /__w/openvino/openvino/openvino_build
CCACHE_DIR: /mount/caches/ccache/fedora33_x86_64_Release
CCACHE_TEMPDIR: /__w/openvino/openvino/ccache_temp
CCACHE_MAXSIZE: 50G
steps:
- name: Install git
run: yum update -y && yum install -y git

- name: Clone OpenVINO
uses: actions/checkout@v4
with:
path: ${{ env.OPENVINO_REPO }}
submodules: 'true'

#
# Dependencies
#

- name: Install build dependencies
run: bash ${OPENVINO_REPO}/install_build_dependencies.sh

- name: Install python dependencies
run: |
python3 -m pip install -U pip
# For Python API: build and wheel packaging
python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt
python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt

# For running ONNX frontend unit tests
python3 -m pip install --force-reinstall -r ${OPENVINO_REPO}/src/frontends/onnx/tests/requirements.txt

# For running TensorFlow frontend unit tests
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow/tests/requirements.txt

# For running TensorFlow Lite frontend unit tests
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow_lite/tests/requirements.txt

# For running Paddle frontend unit tests
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/paddle/tests/requirements.txt

#
# Build
#

- name: CMake configure - OpenVINO
run: |
cmake \
-G "${{ env.CMAKE_GENERATOR }}" \
-DENABLE_CPPLINT=OFF \
-DENABLE_NCC_STYLE=OFF \
-DENABLE_TESTS=ON \
-DENABLE_STRICT_DEPENDENCIES=OFF \
-DENABLE_SYSTEM_TBB=ON \
-DENABLE_SYSTEM_OPENCL=ON \
-DENABLE_SYSTEM_PUGIXML=ON \
-DENABLE_PYTHON_PACKAGING=ON \
-DCPACK_GENERATOR=TGZ \
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
-DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} \
-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: Cmake build - OpenVINO
run: cmake --build ${BUILD_DIR} --parallel --verbose

- name: Show ccache stats
run: ccache --show-stats

- name: Cmake install - OpenVINO
run: |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DCOMPONENT=python_wheels -P ${BUILD_DIR}/cmake_install.cmake

- name: Pack Artifacts
run: |
pushd ${INSTALL_DIR}
tar -czvf ${BUILD_DIR}/openvino_package.tar.gz *
popd

pushd ${INSTALL_TEST_DIR}
tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz *
popd

- name: Build RPM packages
run: |
cmake -DCPACK_GENERATOR=RPM \
-DENABLE_TESTS=OFF \
${BUILD_DIR}
cmake --build ${BUILD_DIR} --parallel --target package --verbose

#
# Upload build artifacts
#

- name: Upload openvino package
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: openvino_package
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
if-no-files-found: 'error'

- name: Upload openvino RPM packages
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: openvino_rpm_packages
path: ${{ env.BUILD_DIR }}/*.rpm
if-no-files-found: 'error'

- name: Upload openvino tests package
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: openvino_tests
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz
if-no-files-found: 'error'

RPM_Packages:
needs: Build
defaults:
run:
shell: bash
runs-on: ubuntu-20.04
container:
image: fedora:33
env:
RPM_PACKAGES_DIR: /__w/openvino/packages/

steps:
- name: Create Directories
run: mkdir -p ${RPM_PACKAGES_DIR}

- name: Download OpenVINO RPM packages
uses: actions/download-artifact@v3
with:
name: openvino_rpm_packages
path: ${{ env.RPM_PACKAGES_DIR }}

- name: Install RPM packages & check conflicts
run: |
tee > /tmp/openvino-2023.repo << EOF
[OpenVINO]
name=Intel(R) Distribution of OpenVINO 2023
baseurl=https://yum.repos.intel.com/openvino/2023
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
EOF

# install previous release version
mv /tmp/openvino-2023.repo /etc/yum.repos.d
yum install -y openvino

# install current version
yum install --allowerasing -y *.rpm
working-directory: ${{ env.RPM_PACKAGES_DIR }}

- name: Test RPM packages
run: |
/usr/share/openvino/samples/cpp/build_samples.sh
/usr/share/openvino/samples/c/build_samples.sh
~/openvino_cpp_samples_build/intel64/Release/hello_query_device
python3 /usr/share/openvino/samples/python/hello_query_device/hello_query_device.py
python3 -c 'from openvino import Core; Core().get_property("CPU", "AVAILABLE_DEVICES")'
python3 -c 'from openvino import Core; Core().get_property("GPU", "AVAILABLE_DEVICES")'
python3 -c 'from openvino import Core; Core().get_property("AUTO", "SUPPORTED_METRICS")'
python3 -c 'from openvino import Core; Core().get_property("MULTI", "SUPPORTED_METRICS")'
python3 -c 'from openvino import Core; Core().get_property("HETERO", "SUPPORTED_METRICS")'
python3 -c 'from openvino import Core; Core().get_property("BATCH", "SUPPORTED_METRICS")'
python3 -c 'from openvino.frontend import FrontEndManager; assert len(FrontEndManager().get_available_front_ends()) == 6'
benchmark_app --help
ovc --help
18 changes: 4 additions & 14 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,7 @@ jobs:
bash ${OPENVINO_REPO}/install_build_dependencies.sh
# default-jdk - Java API
# libssl1.1 - 'python3 -m pip' in self-hosted runner
# unzip - to download ninja
apt install --assume-yes --no-install-recommends default-jdk libssl1.1 unzip

wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip
unzip ninja-linux.zip
cp -v ninja /usr/local/bin/
apt install --assume-yes --no-install-recommends default-jdk libssl1.1

- uses: actions/setup-python@v4
with:
Expand Down Expand Up @@ -126,9 +121,6 @@ jobs:
# Build
#

- name: Setup ccache dir
run: mkdir -p ${CCACHE_DIR}

- name: CMake configure - OpenVINO
run: |
cmake \
Expand All @@ -145,7 +137,6 @@ jobs:
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
-DCMAKE_MINIMUM_REQUIRED_VERSION=3.20 \
-S ${OPENVINO_REPO} \
-B ${BUILD_DIR}

Expand Down Expand Up @@ -180,12 +171,11 @@ jobs:
/usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt
/usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
cmake -UPYTHON* \
-DCPACK_GENERATOR=DEB \
-DENABLE_PYTHON_PACKAGING=ON \
-DPython3_EXECUTABLE=/usr/bin/python3.8 \
-DENABLE_TESTS=OFF \
-S ${OPENVINO_REPO} \
-B ${BUILD_DIR}
-DPython3_EXECUTABLE=/usr/bin/python3.8 \
-DCPACK_GENERATOR=DEB \
${BUILD_DIR}
cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target package

- name: Cmake & Build - OpenVINO Contrib
Expand Down
36 changes: 16 additions & 20 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,28 @@
# SPDX-License-Identifier: Apache-2.0
#

if(NOT DEFINED CMAKE_MINIMUM_REQUIRED_VERSION)
if(DEFINED BUILD_SHARED_LIBS AND NOT BUILD_SHARED_LIBS)
# 3.17: 'target_link_libraries' does not work correctly when called from
# different directory where 'add_library' is called: CMake generates
# incorrect OpenVINOConfig.cmake in this case
# 3.18: add_library cannot create ALIAS for non-GLOBAL targets
set(CMAKE_MINIMUM_REQUIRED_VERSION 3.18)
if(DEFINED BUILD_SHARED_LIBS AND NOT BUILD_SHARED_LIBS)
# 3.17: 'target_link_libraries' does not work correctly when called from
# different directory where 'add_library' is called: CMake generates
# incorrect OpenVINOConfig.cmake in this case
# 3.18: add_library cannot create ALIAS for non-GLOBAL targets
cmake_minimum_required(VERSION 3.18)
else()
if(CPACK_GENERATOR STREQUAL "DEB")
# we have to use CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS variable
cmake_minimum_required(VERSION 3.20)
else()
if(CPACK_GENERATOR STREQUAL "DEB")
# we have to use CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS variable
set(CMAKE_MINIMUM_REQUIRED_VERSION 3.20)
if(WIN32)
# 3.16: FindPython3.cmake can find Python via -DPython3_EXECUTABLE
# 3.18: FindPython3.cmake can find Python automatically from virtualenv
cmake_minimum_required(VERSION 3.16)
else()
if(WIN32)
# 3.16: FindPython3.cmake can find Python via -DPython3_EXECUTABLE
# 3.18: FindPython3.cmake can find Python automatically from virtualenv
set(CMAKE_MINIMUM_REQUIRED_VERSION 3.16)
else()
# 3.13: default choice
set(CMAKE_MINIMUM_REQUIRED_VERSION 3.13)
endif()
# 3.13: default choice
cmake_minimum_required(VERSION 3.13)
endif()
endif()
endif()

cmake_minimum_required(VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})

if(POLICY CMP0091)
cmake_policy(SET CMP0091 NEW) # Enables use of MSVC_RUNTIME_LIBRARY
endif()
Expand Down
6 changes: 6 additions & 0 deletions cmake/developer_package/compile_flags/os_flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,13 @@ if(NOT DEFINED CMAKE_CXX_STANDARD)
else()
set(CMAKE_CXX_STANDARD 11)
endif()
endif()

if(NOT DEFINED CMAKE_CXX_EXTENSIONS)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()

if(NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()

Expand Down
6 changes: 4 additions & 2 deletions src/inference/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ file (GLOB LIBRARY_SRC
set(IE_STATIC_DEPENDENT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/file_utils.cpp)
list(REMOVE_ITEM LIBRARY_SRC ${IE_STATIC_DEPENDENT_FILES})

if(ENABLE_IR_V7_READER)
if(BUILD_SHARED_LIBS OR ENABLE_IR_V7_READER)
# TODO: remove together with GNA plugin
# we have unconditional adding of the ENABLE_IR_V7_READER compile definition for shared libs case
# to avoid rebuild, relink during work with build tree
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/src/ie_network_reader.cpp PROPERTIES
COMPILE_DEFINITIONS "ENABLE_IR_V7_READER")
endif()
Expand Down Expand Up @@ -149,7 +152,6 @@ target_include_directories(${TARGET_NAME}_obj PRIVATE
# for ov_plugins.hpp
$<IF:$<AND:$<BOOL:${OV_GENERATOR_MULTI_CONFIG}>,$<VERSION_GREATER_EQUAL:${CMAKE_VERSION},3.20>>,${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>,${CMAKE_CURRENT_BINARY_DIR}>
# for ie_ir_version.hpp
$<$<TARGET_EXISTS:inference_engine_ir_v7_reader>:$<TARGET_PROPERTY:inference_engine_ir_v7_reader,SOURCE_DIR>>
"${OpenVINO_SOURCE_DIR}/src/plugins/intel_gna/legacy/include"
$<TARGET_PROPERTY:${TARGET_NAME}_transformations,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:${TARGET_NAME}_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>)
Expand Down
Loading