Split packaging into common and debian part

This commit is contained in:
Ilya Lavrenov 2022-02-16 19:07:41 +03:00
parent a6b3259e38
commit 4519f0fc06
5 changed files with 508 additions and 495 deletions

View File

@ -87,7 +87,7 @@ endif()
# Common scripts
#
include(packaging)
include(packaging/packaging)
include(coverage/coverage)
include(shellcheck/shellcheck)

View File

@ -1,492 +0,0 @@
# Copyright (C) 2018-2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#
include(CMakeParseArguments)
include(CPackComponent)
include(GNUInstallDirs)
#
# ov_cpack_set_dirs()
#
# Set library directory for cpack
#
function(ov_cpack_set_dirs)
# common IRC package locations
set(OV_CPACK_INCLUDEDIR runtime/include PARENT_SCOPE)
set(OV_CPACK_IE_CMAKEDIR runtime/cmake PARENT_SCOPE)
set(OV_CPACK_NGRAPH_CMAKEDIR runtime/cmake PARENT_SCOPE)
set(OV_CPACK_OPENVINO_CMAKEDIR runtime/cmake PARENT_SCOPE)
set(OV_CPACK_DOCDIR docs PARENT_SCOPE)
set(OV_CPACK_SAMPLESDIR samples PARENT_SCOPE)
set(OV_CPACK_PYTHONDIR python PARENT_SCOPE)
set(OV_CPACK_WHEELSDIR tools PARENT_SCOPE)
set(OV_CPACK_TOOLSDIR tools PARENT_SCOPE)
if(WIN32)
set(OV_CPACK_LIBRARYDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
set(OV_CPACK_RUNTIMEDIR runtime/bin/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
set(OV_CPACK_PLUGINSDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
else()
if(CPACK_GENERATOR STREQUAL "DEB")
# override default locations for Debian
set(OV_CPACK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} PARENT_SCOPE)
set(OV_CPACK_LIBRARYDIR ${CMAKE_INSTALL_LIBDIR} PARENT_SCOPE)
set(OV_CPACK_RUNTIMEDIR ${CMAKE_INSTALL_LIBDIR} PARENT_SCOPE)
set(OV_CPACK_ARCHIVEDIR ${CMAKE_INSTALL_LIBDIR} PARENT_SCOPE)
set(OV_CPACK_PLUGINSDIR ${CMAKE_INSTALL_LIBDIR}/openvino${OpenVINO_VERSION} PARENT_SCOPE)
set(OV_CPACK_IE_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/inferenceengine${OpenVINO_VERSION} PARENT_SCOPE)
set(OV_CPACK_NGRAPH_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/ngraph${OpenVINO_VERSION} PARENT_SCOPE)
set(OV_CPACK_OPENVINO_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/openvino${OpenVINO_VERSION} PARENT_SCOPE)
set(OV_CPACK_DOCDIR ${CMAKE_INSTALL_DOCDIR} PARENT_SCOPE) # TODO: check versions
# non-native stuff
set(OV_CPACK_PYTHONDIR ${OV_CPACK_PLUGINSDIR} PARENT_SCOPE)
set(IE_CPACK_SHARE_PATH ${CMAKE_INSTALL_DATADIR}/openvino${OpenVINO_VERSION} PARENT_SCOPE)
set(OV_CPACK_SAMPLESDIR ${IE_CPACK_SHARE_PATH}/samples PARENT_SCOPE)
set(OV_CPACK_TOOLSDIR ${IE_CPACK_SHARE_PATH}/tools PARENT_SCOPE)
set(OV_CPACK_WHEELSDIR .) # TODO
else()
set(OV_CPACK_LIBRARYDIR runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
set(OV_CPACK_RUNTIMEDIR runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
set(OV_CPACK_PLUGINSDIR runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
endif()
endif()
# for BW compatibility
set(IE_CPACK_LIBRARY_PATH ${OV_CPACK_LIBRARYDIR} PARENT_SCOPE)
set(IE_CPACK_RUNTIME_PATH ${OV_CPACK_RUNTIMEDIR} PARENT_SCOPE)
set(IE_CPACK_ARCHIVE_PATH ${OV_CPACK_ARCHIVEDIR} PARENT_SCOPE)
endfunction()
ov_cpack_set_dirs()
#
# ie_cpack_add_component(NAME ...)
#
# Wraps original `cpack_add_component` and adds component to internal IE list
#
unset(IE_CPACK_COMPONENTS_ALL CACHE)
macro(ie_cpack_add_component NAME)
list(APPEND IE_CPACK_COMPONENTS_ALL ${NAME})
set(IE_CPACK_COMPONENTS_ALL "${IE_CPACK_COMPONENTS_ALL}" CACHE STRING "" FORCE)
cpack_add_component(${NAME} ${args})
endmacro()
# create test component
if(ENABLE_TESTS)
cpack_add_component(tests DISABLED)
endif()
#
# List of public OpenVINO components
#
set(OV_CPACK_COMP_CORE "core")
set(OV_CPACK_COMP_CORE_C "core_c")
set(OV_CPACK_COMP_CORE_DEV "core_dev")
set(OV_CPACK_COMP_CORE_C_DEV "core_c_dev")
set(OV_CPACK_COMP_CORE_TOOLS "core_tools")
set(OV_CPACK_COMP_CPP_SAMPLES "cpp_samples")
set(OV_CPACK_COMP_C_SAMPLES "c_samples")
set(OV_CPACK_COMP_PYTHON_SAMPLES "python_samples")
set(OV_CPACK_COMP_PYTHON_IE_API "pyie")
set(OV_CPACK_COMP_PYTHON_NGRAPH "pyngraph")
set(OV_CPACK_COMP_PYTHON_OPENVINO "pyopenvino")
set(OV_CPACK_COMP_DEV_REQ_FILES "openvino_dev_req_files")
set(OV_CPACK_COMP_LICENSING "licensing")
# override cpack components name for DEB cpack generator
if(CPACK_GENERATOR STREQUAL "DEB")
# merge C++ and C runtimes
set(OV_CPACK_COMP_CORE_C "${OV_CPACK_COMP_CORE}")
set(OV_CPACK_COMP_CORE_C_DEV "${OV_CPACK_COMP_CORE_DEV}")
# merge all pythons into a single component
set(OV_CPACK_COMP_PYTHON_IE_API "${OV_CPACK_COMP_PYTHON_OPENVINO}")
set(OV_CPACK_COMP_PYTHON_NGRAPH "${OV_CPACK_COMP_PYTHON_OPENVINO}")
set(OV_CPACK_COMP_PYTHON_OPENVINO "${OV_CPACK_COMP_PYTHON_OPENVINO}")
# merge all C / C++ samples as a single samples component
set(OV_CPACK_COMP_CPP_SAMPLES "samples")
set(OV_CPACK_COMP_C_SAMPLES "samples")
# move requirements.txt to core-dev
set(OV_CPACK_COMP_DEV_REQ_FILES "${OV_CPACK_COMP_CORE_DEV}")
# move core_tools to core-dev
set(OV_CPACK_COMP_CORE_TOOLS "${OV_CPACK_COMP_CORE_DEV}")
# move licensing to core
set(OV_CPACK_COMP_LICENSING "${OV_CPACK_COMP_CORE}")
endif()
macro(ie_cpack)
if(NOT DEFINED CPACK_GENERATOR)
set(CPACK_GENERATOR "TGZ")
endif()
set(CPACK_SOURCE_GENERATOR "") # not used
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenVINO™ Toolkit")
set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED OFF)
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_VENDOR "Intel Corporation")
set(CPACK_PACKAGE_CONTACT "OpenVINO Developers <openvino@intel.com>")
set(CPACK_VERBATIM_VARIABLES ON)
set(CPACK_COMPONENTS_ALL ${ARGN})
# default permissions for directories creation
set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
# archive operations can be run in parallels since CMake 3.20
set(CPACK_THREADS 8)
if (NOT DEFINED CPACK_STRIP_FILES)
set(CPACK_STRIP_FILES ON)
endif()
string(REPLACE "/" "_" CPACK_PACKAGE_VERSION "${OpenVINO_VERSION}")
if(WIN32)
set(CPACK_PACKAGE_NAME openvino_${CMAKE_BUILD_TYPE})
else()
set(CPACK_PACKAGE_NAME openvino)
endif()
foreach(ver MAJOR MINOR PATCH)
if(DEFINED OpenVINO_VERSION_${ver})
set(CPACK_PACKAGE_VERSION_${ver} ${OpenVINO_VERSION_${ver}})
endif()
endforeach()
# CPACK_PACKAGE_VERSION_MAJOR.CPACK_PACKAGE_VERSION_MINOR
set(cpack_ver_mm "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
if(OS_FOLDER)
set(CPACK_SYSTEM_NAME "${OS_FOLDER}")
endif()
# generator specific variables
if(CPACK_GENERATOR MATCHES "^(7Z|TBZ2|TGZ|TXZ|TZ|ZIP)$")
# multiple packages are generated
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
elseif(CPACK_GENERATOR STREQUAL "DEB")
# fill a list of components
unset(CPACK_COMPONENTS_ALL)
foreach(item ${ARGN})
# don't provide python components and deployment_manager to end users
if(NOT ${item} MATCHES ".*(python).*" AND NOT ${item} MATCHES "^deployment_manager$")
list(APPEND CPACK_COMPONENTS_ALL ${item})
endif()
endforeach()
list(REMOVE_DUPLICATES CPACK_COMPONENTS_ALL)
# per component configuration
# list of components:
# - core
# - core_c
# - core_dev
# - core_c_dev
# - c_samples
# - cpp_samples
# - python_samples
# - deployment_manager
# - [install_dependencies] probably should be removed
# - licensing
# - docs
# - [python .*]
# - (cpu|gpu|hetero)
# multiple packages are generated
set(CPACK_DEB_COMPONENT_INSTALL ON)
# automatically find dependencies for binaries
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
# enable dependencies between components
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON)
# control file permissions
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION OFF)
# homepage
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://docs.openvino.ai/")
# enable for debug cpack run
if(NOT DEFINED CPACK_DEBIAN_PACKAGE_DEBUG)
set(CPACK_DEBIAN_PACKAGE_DEBUG OFF)
endif()
# WA: dpkg-shlibdeps requires folder with libraries
# proper way is to use -l (path to libs) and -L (path to shlibs) for other already installed components
# but it require CMake source code changes
# with current WA automatic deps detection via dpkg-shlibdeps for "our libraries"
# is ignored; but dependencies between our components are here because of
# CPACK_COMPONENT_<UCOMP>_DEPENDS variables
# More proper WA is try to enable INSTALL_RPATH
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
# automatic dependencies discovering
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
# OpenVINO does not have backward and forward compatibility
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
# naming convention for debian package files
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
function(ov_add_lintian_suppression comp)
set(lines ${ARGN})
list(APPEND lines "copyright-file-contains-full-apache-2-license")
list(APPEND lines "copyright-should-refer-to-common-license-file-for-apache-2")
list(APPEND lines "copyright-without-copyright-notice")
# TODO: fix
list(APPEND lines "changelog-file-missing-in-native-package")
# TODO: remove them
list(APPEND lines "maintainer-script-empty postinst")
list(APPEND lines "maintainer-script-empty postrm")
string(TOUPPER "${comp}" ucomp)
if(NOT DEFINED CPACK_DEBIAN_${ucomp}_PACKAGE_NAME)
message(FATAL_ERROR "CPACK_DEBIAN_${ucomp}_PACKAGE_NAME is not defined")
else()
set(package_name "${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
endif()
foreach(line IN LISTS lines)
set(line "${package_name} binary: ${line}")
if(content)
set(content "${content}\n${line}")
else()
set(content "${line}")
endif()
endforeach()
set(lintian_override_file "${OpenVINO_BINARY_DIR}/_CPack_Packages/lintian/${package_name}")
file(REMOVE ${lintian_override_file})
file(WRITE ${lintian_override_file} ${content})
install(FILES ${lintian_override_file}
DESTINATION share/lintian/overrides/
COMPONENT ${comp})
endfunction()
# needed to override cmake auto generated files
set(def_postinst "${OpenVINO_BINARY_DIR}/_CPack_Packages/postinst")
set(def_postrm "${OpenVINO_BINARY_DIR}/_CPack_Packages/postrm")
set(triggers_content "activate-noawait ldconfig\n")
set(def_triggers "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers/${package_name}/triggers")
file(WRITE "${def_postinst}" "#!/bin/sh\n\nset -e\n\n")
file(WRITE "${def_postrm}" "#!/bin/sh\n\nset -e\n\n")
file(WRITE "${def_triggers}" "${triggers_content}")
#
# OpenVINO Core components including frontends
#
# core
set(CPACK_COMPONENT_CORE_DESCRIPTION "OpenVINO C / C++ Runtime libraries")
set(CPACK_DEBIAN_CORE_PACKAGE_NAME "libopenvino${cpack_ver_mm}")
# TODO: build with system pugixml and depend on libpugixml1v5
# set(CPACK_DEBIAN_CORE_PACKAGE_DEPENDS "libpugixml1v5")
set(CPACK_DEBIAN_CORE_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
ov_add_lintian_suppression(core
# OpenVINO runtime library is named differently
"package-name-doesnt-match-sonames")
# core_dev
set(CPACK_COMPONENT_CORE_DEV_DESCRIPTION "OpenVINO C / C++ Runtime development files")
set(CPACK_COMPONENT_CORE_DEV_DEPENDS "core")
set(CPACK_DEBIAN_CORE_DEV_PACKAGE_NAME "libopenvino${cpack_ver_mm}-dev")
set(CPACK_DEBIAN_CORE_DEV_PACKAGE_CONFLICTS "libopenvino2021.3-dev, libopenvino2021.4-dev")
ov_add_lintian_suppression(core_dev)
#
# Plugins
#
# hetero
if(ENABLE_HETERO)
set(CPACK_COMPONENT_HETERO_DESCRIPTION "OpenVINO Hetero plugin")
set(CPACK_COMPONENT_HETERO_DEPENDS "core")
set(CPACK_DEBIAN_HETERO_PACKAGE_NAME "libopenvino-hetero${cpack_ver_mm}")
set(CPACK_DEBIAN_HETERO_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "hetero")
endif()
# auto batch
if(ENABLE_AUTO_BATCH)
set(CPACK_COMPONENT_BATCH_DESCRIPTION "OpenVINO Auto Batch plugin")
set(CPACK_COMPONENT_BATCH_DEPENDS "core")
set(CPACK_DEBIAN_BATCH_PACKAGE_NAME "libopenvino-auto-batch${cpack_ver_mm}")
set(CPACK_DEBIAN_BATCH_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "batch")
endif()
# multi / auto plugins
if(ENABLE_MULTI)
if(ENABLE_AUTO)
set(CPACK_COMPONENT_MULTI_DESCRIPTION "OpenVINO Auto / Multi plugin")
else()
set(CPACK_COMPONENT_MULTI_DESCRIPTION "OpenVINO Multi plugin")
endif()
set(CPACK_COMPONENT_MULTI_DEPENDS "core")
set(CPACK_DEBIAN_MULTI_PACKAGE_NAME "libopenvino-auto${cpack_ver_mm}")
set(CPACK_DEBIAN_MULTI_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "multi")
elseif(ENABLE_AUTO)
set(CPACK_COMPONENT_AUTO_DESCRIPTION "OpenVINO Auto plugin")
set(CPACK_COMPONENT_AUTO_DEPENDS "core")
set(CPACK_DEBIAN_AUTO_PACKAGE_NAME "libopenvino-auto${cpack_ver_mm}")
set(CPACK_DEBIAN_AUTO_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "auto")
endif()
# intel-cpu
if(ENABLE_MKL_DNN)
set(CPACK_COMPONENT_CPU_DESCRIPTION "OpenVINO Intel CPU plugin")
set(CPACK_COMPONENT_CPU_DEPENDS "core")
set(CPACK_DEBIAN_CPU_PACKAGE_NAME "libopenvino-intel-cpu${cpack_ver_mm}")
set(CPACK_DEBIAN_CPU_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_CPU_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "cpu")
endif()
# intel-gpu
if(ENABLE_INTEL_GPU)
set(CPACK_COMPONENT_GPU_DESCRIPTION "OpenVINO Intel GPU plugin")
set(CPACK_COMPONENT_GPU_DEPENDS "core")
set(CPACK_DEBIAN_GPU_PACKAGE_NAME "libopenvino-intel-gpu${cpack_ver_mm}")
set(CPACK_DEBIAN_GPU_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_GPU_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "gpu")
endif()
# intel-myriad
if(ENABLE_MYRIAD)
set(CPACK_COMPONENT_MYRIAD_DESCRIPTION "OpenVINO Intel Myriad plugin")
set(CPACK_COMPONENT_MYRIAD_DEPENDS "core")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_NAME "libopenvino-intel-myriad${cpack_ver_mm}")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "myriad")
endif()
# intel-gna
if(ENABLE_INTEL_GNA)
set(CPACK_COMPONENT_GNA_DESCRIPTION "OpenVINO Intel GNA plugin")
set(CPACK_COMPONENT_GNA_DEPENDS "core")
set(CPACK_DEFIAN_GNA_PACKAGE_SHLIBDEPS OFF)
set(CPACK_DEBIAN_GNA_PACKAGE_NAME "libopenvino-intel-gna${cpack_ver_mm}")
set(CPACK_DEBIAN_GNA_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_GNA_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "gna")
endif()
#
# Samples
#
set(samples_build_deps "cmake, g++, gcc, libc6-dev, make")
set(samples_build_deps_suggest "${samples_build_deps}, libopencv-core-dev, libopencv-imgproc-dev, libopencv-imgcodecs-dev")
# c_samples / cpp_samples
set(CPACK_COMPONENT_SAMPLES_DESCRIPTION "OpenVINO C / C++ samples")
set(CPACK_COMPONENT_SAMPLES_DEPENDS "core_dev")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_NAME "libopenvino-samples${cpack_ver_mm}")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_SUGGESTS "${samples_build_deps_suggest}, libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_DEPENDS "libgflags-dev, nlohmann-json3-dev, zlib1g-dev, ${samples_build_deps}")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_ARCHITECTURE "all")
# python_samples
set(CPACK_COMPONENT_PYTHON_SAMPLES_DESCRIPTION "OpenVINO Python samples")
set(CPACK_COMPONENT_PYTHON_SAMPLES_DEPENDS "python3")
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_NAME "libopenvino-samples-python${cpack_ver_mm}")
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_ARCHITECTURE "all")
#
# Other components
#
# deployment manager for runtime
set(CPACK_COMPONENT_DEPLOYMENT_MANAGER_DESCRIPTION "OpenVINO Deployment Manager")
set(CPACK_COMPONENT_DEPLOYMENT_MANAGER_DEPENDS "core")
set(CPACK_DEBIAN_DEPLOYMENT_MANAGER_PACKAGE_NAME "libopenvino-deployment-manager${cpack_ver_mm}")
set(CPACK_DEBIAN_DEPLOYMENT_MANAGER_PACKAGE_DEPENDS "python3")
set(CPACK_DEBIAN_DEPLOYMENT_MANAGER_PACKAGE_ARCHITECTURE "all")
#
# Add virtual packages
#
# all libraries
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "OpenVINO all runtime libraries")
if(installed_plugins)
set(CPACK_COMPONENT_LIBRARIES_DEPENDS "${installed_plugins}")
else()
set(CPACK_COMPONENT_LIBRARIES_DEPENDS "core")
endif()
set(CPACK_DEBIAN_LIBRARIES_PACKAGE_NAME "libopenvino-libraries${cpack_ver_mm}")
list(APPEND CPACK_COMPONENTS_ALL "libraries")
# all libraries-dev
set(CPACK_COMPONENT_LIBRARIES_DEV_DESCRIPTION "OpenVINO all runtime libraries and development files")
set(CPACK_COMPONENT_LIBRARIES_DEV_DEPENDS "core_dev;${installed_plugins}")
set(CPACK_DEBIAN_LIBRARIES_DEV_PACKAGE_NAME "libopenvino-libraries${cpack_ver_mm}-dev")
list(APPEND CPACK_COMPONENTS_ALL "libraries_dev")
#
# install debian common files
#
foreach(comp IN LISTS CPACK_COMPONENTS_ALL)
string(TOUPPER "${comp}" ucomp)
set(package_name "${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
# copyright
# install(FILES "${OpenVINO_SOURCE_DIR}/LICENSE"
# DESTINATION share/doc/${package_name}/
# COMPONENT ${comp}
# RENAME copyright)
# TODO: install changelog
# install triggers
set(triggers_content "activate-noawait ldconfig")
set(triggers_file "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers/${package_name}/triggers")
file(REMOVE ${triggers_file})
file(WRITE ${triggers_file} ${triggers_content})
install(FILES ${triggers_file}
DESTINATION ../DEBIAN/
COMPONENT ${comp})
endforeach()
#
# Install latest packages
#
macro(ov_add_latest_component comp)
string(TOUPPER "${comp}" ucomp)
set(latest "${ucomp}_LATEST")
set(CPACK_COMPONENT_${latest}_DESCRIPTION "${CPACK_COMPONENT_${ucomp}_DESCRIPTION}")
set(CPACK_COMPONENT_${latest}_ARCHITECTURE "${CPACK_COMPONENT_${ucomp}_ARCHITECTURE}")
set(CPACK_COMPONENT_${latest}_DEPENDS "${ucomp}")
# take package name
if(DEFINED CPACK_DEBIAN_${ucomp}_PACKAGE_NAME)
string(REPLACE "${cpack_ver_mm}" ""
CPACK_DEBIAN_${latest}_PACKAGE_NAME
"${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
else()
message(FATAL_ERROR "CPACK_DEBIAN_${ucomp}_PACKAGE_NAME is not defined")
endif()
# add latest to a list of debian packages
list(APPEND CPACK_COMPONENTS_ALL ${latest})
endmacro()
# NOTE: we expicitly don't add runtime latest packages
# since a user needs to depend on specific VERSIONED runtime package
# with fixed SONAMEs, while latest package can be updated multiple times
ov_add_latest_component(core_dev)
ov_add_latest_component(samples)
ov_add_latest_component(libraries_dev)
endif()
include(CPack)
endmacro()

View File

@ -0,0 +1,358 @@
# Copyright (C) 2018-2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#
#
# ov_cpack_set_dirs()
#
# Set directories for cpack
#
function(ov_debian_cpack_set_dirs)
# override default locations for Debian
set(OV_CPACK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
set(OV_CPACK_LIBRARYDIR ${CMAKE_INSTALL_LIBDIR})
set(OV_CPACK_RUNTIMEDIR ${CMAKE_INSTALL_LIBDIR})
set(OV_CPACK_ARCHIVEDIR ${CMAKE_INSTALL_LIBDIR})
set(OV_CPACK_PLUGINSDIR ${CMAKE_INSTALL_LIBDIR}/openvino${OpenVINO_VERSION})
set(OV_CPACK_IE_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/inferenceengine${OpenVINO_VERSION})
set(OV_CPACK_NGRAPH_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/ngraph${OpenVINO_VERSION})
set(OV_CPACK_OPENVINO_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/openvino${OpenVINO_VERSION})
set(OV_CPACK_DOCDIR ${CMAKE_INSTALL_DOCDIR}) # TODO: check versions
# non-native stuff
set(OV_CPACK_PYTHONDIR ${OV_CPACK_PLUGINSDIR})
set(OV_CPACK_SHAREDIR ${CMAKE_INSTALL_DATADIR}/openvino${OpenVINO_VERSION}) # internal
set(OV_CPACK_SAMPLESDIR ${OV_CPACK_SHAREDIR}/samples)
set(OV_CPACK_TOOLSDIR ${OV_CPACK_SHAREDIR}/tools)
set(OV_CPACK_WHEELSDIR .) # TODO
# for BW compatibility
set(IE_CPACK_LIBRARY_PATH ${OV_CPACK_LIBRARYDIR})
set(IE_CPACK_RUNTIME_PATH ${OV_CPACK_RUNTIMEDIR})
set(IE_CPACK_ARCHIVE_PATH ${OV_CPACK_ARCHIVEDIR})
endmacro()
ov_debian_cpack_set_dirs()
#
# override CPack components name for Debian generator
#
# merge C++ and C runtimes
set(OV_CPACK_COMP_CORE_C "${OV_CPACK_COMP_CORE}")
set(OV_CPACK_COMP_CORE_C_DEV "${OV_CPACK_COMP_CORE_DEV}")
# merge all pythons into a single component
set(OV_CPACK_COMP_PYTHON_IE_API "${OV_CPACK_COMP_PYTHON_OPENVINO}")
set(OV_CPACK_COMP_PYTHON_NGRAPH "${OV_CPACK_COMP_PYTHON_OPENVINO}")
set(OV_CPACK_COMP_PYTHON_OPENVINO "${OV_CPACK_COMP_PYTHON_OPENVINO}")
# merge all C / C++ samples as a single samples component
set(OV_CPACK_COMP_CPP_SAMPLES "samples")
set(OV_CPACK_COMP_C_SAMPLES "samples")
# move requirements.txt to core-dev
set(OV_CPACK_COMP_DEV_REQ_FILES "${OV_CPACK_COMP_CORE_DEV}")
# move core_tools to core-dev
set(OV_CPACK_COMP_CORE_TOOLS "${OV_CPACK_COMP_CORE_DEV}")
# move licensing to core
set(OV_CPACK_COMP_LICENSING "${OV_CPACK_COMP_CORE}")
#
# Common settings
#
# fill a list of components which are part of debian
unset(CPACK_COMPONENTS_ALL)
foreach(item ${ARGN})
# don't provide python components and deployment_manager to end users
if(NOT ${item} MATCHES ".*(python).*" AND NOT ${item} MATCHES "^deployment_manager$")
list(APPEND CPACK_COMPONENTS_ALL ${item})
endif()
endforeach()
list(REMOVE_DUPLICATES CPACK_COMPONENTS_ALL)
# multiple packages are generated
set(CPACK_DEB_COMPONENT_INSTALL ON)
# automatically find dependencies for binaries
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
# enable dependencies between components
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON)
# control file permissions
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION OFF)
# homepage
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://docs.openvino.ai/")
# enable for debug cpack run
if(NOT DEFINED CPACK_DEBIAN_PACKAGE_DEBUG)
set(CPACK_DEBIAN_PACKAGE_DEBUG OFF)
endif()
# WA: dpkg-shlibdeps requires folder with libraries
# proper way is to use -l (path to libs) and -L (path to shlibs) for other already installed components
# but it require CMake source code changes
# with current WA automatic deps detection via dpkg-shlibdeps for "our libraries"
# is ignored; but dependencies between our components are here because of
# CPACK_COMPONENT_<UCOMP>_DEPENDS variables
# More proper WA is try to enable INSTALL_RPATH
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
# automatic dependencies discovering
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
# OpenVINO does not have backward and forward compatibility
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
# naming convention for debian package files
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
# CPACK_PACKAGE_VERSION_MAJOR.CPACK_PACKAGE_VERSION_MINOR
set(cpack_ver_mm "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
# needed to override cmake auto generated files
set(def_postinst "${OpenVINO_BINARY_DIR}/_CPack_Packages/postinst")
set(def_postrm "${OpenVINO_BINARY_DIR}/_CPack_Packages/postrm")
set(def_triggers "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers/${package_name}/triggers")
set(triggers_content "activate-noawait ldconfig\n")
set(post_content "#!/bin/sh\n\nset -e\n\n")
file(WRITE "${def_postinst}" "${post_content}")
file(WRITE "${def_postrm}" "${post_content}")
file(WRITE "${def_triggers}" "${triggers_content}")
#
# Common functions
#
function(ov_add_lintian_suppression comp)
set(lines ${ARGN})
list(APPEND lines "copyright-file-contains-full-apache-2-license")
list(APPEND lines "copyright-should-refer-to-common-license-file-for-apache-2")
list(APPEND lines "copyright-without-copyright-notice")
# TODO: fix
list(APPEND lines "changelog-file-missing-in-native-package")
# TODO: remove them
list(APPEND lines "maintainer-script-empty postinst")
list(APPEND lines "maintainer-script-empty postrm")
string(TOUPPER "${comp}" ucomp)
if(NOT DEFINED CPACK_DEBIAN_${ucomp}_PACKAGE_NAME)
message(FATAL_ERROR "CPACK_DEBIAN_${ucomp}_PACKAGE_NAME is not defined")
else()
set(package_name "${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
endif()
foreach(line IN LISTS lines)
set(line "${package_name} binary: ${line}")
if(content)
set(content "${content}\n${line}")
else()
set(content "${line}")
endif()
endforeach()
set(lintian_override_file "${OpenVINO_BINARY_DIR}/_CPack_Packages/lintian/${package_name}")
file(REMOVE ${lintian_override_file})
file(WRITE ${lintian_override_file} ${content})
install(FILES ${lintian_override_file}
DESTINATION share/lintian/overrides/
COMPONENT ${comp})
endfunction()
#
# OpenVINO Core components including frontends
#
# core
set(CPACK_COMPONENT_CORE_DESCRIPTION "OpenVINO C / C++ Runtime libraries")
set(CPACK_DEBIAN_CORE_PACKAGE_NAME "libopenvino${cpack_ver_mm}")
set(CPACK_DEBIAN_CORE_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
ov_add_lintian_suppression(core
# OpenVINO runtime library is named differently
"package-name-doesnt-match-sonames")
# core_dev
set(CPACK_COMPONENT_CORE_DEV_DESCRIPTION "OpenVINO C / C++ Runtime development files")
set(CPACK_COMPONENT_CORE_DEV_DEPENDS "core")
set(CPACK_DEBIAN_CORE_DEV_PACKAGE_NAME "libopenvino${cpack_ver_mm}-dev")
set(CPACK_DEBIAN_CORE_DEV_PACKAGE_CONFLICTS "libopenvino2021.3-dev, libopenvino2021.4-dev")
ov_add_lintian_suppression(core_dev)
#
# Plugins
#
# hetero
if(ENABLE_HETERO)
set(CPACK_COMPONENT_HETERO_DESCRIPTION "OpenVINO Hetero plugin")
set(CPACK_COMPONENT_HETERO_DEPENDS "core")
set(CPACK_DEBIAN_HETERO_PACKAGE_NAME "libopenvino-hetero${cpack_ver_mm}")
set(CPACK_DEBIAN_HETERO_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "hetero")
endif()
# auto batch
if(ENABLE_AUTO_BATCH)
set(CPACK_COMPONENT_BATCH_DESCRIPTION "OpenVINO Auto Batch plugin")
set(CPACK_COMPONENT_BATCH_DEPENDS "core")
set(CPACK_DEBIAN_BATCH_PACKAGE_NAME "libopenvino-auto-batch${cpack_ver_mm}")
set(CPACK_DEBIAN_BATCH_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "batch")
endif()
# multi / auto plugins
if(ENABLE_MULTI)
if(ENABLE_AUTO)
set(CPACK_COMPONENT_MULTI_DESCRIPTION "OpenVINO Auto / Multi plugin")
else()
set(CPACK_COMPONENT_MULTI_DESCRIPTION "OpenVINO Multi plugin")
endif()
set(CPACK_COMPONENT_MULTI_DEPENDS "core")
set(CPACK_DEBIAN_MULTI_PACKAGE_NAME "libopenvino-auto${cpack_ver_mm}")
set(CPACK_DEBIAN_MULTI_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "multi")
elseif(ENABLE_AUTO)
set(CPACK_COMPONENT_AUTO_DESCRIPTION "OpenVINO Auto plugin")
set(CPACK_COMPONENT_AUTO_DEPENDS "core")
set(CPACK_DEBIAN_AUTO_PACKAGE_NAME "libopenvino-auto${cpack_ver_mm}")
set(CPACK_DEBIAN_AUTO_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "auto")
endif()
# intel-cpu
if(ENABLE_MKL_DNN)
set(CPACK_COMPONENT_CPU_DESCRIPTION "OpenVINO Intel CPU plugin")
set(CPACK_COMPONENT_CPU_DEPENDS "core")
set(CPACK_DEBIAN_CPU_PACKAGE_NAME "libopenvino-intel-cpu${cpack_ver_mm}")
set(CPACK_DEBIAN_CPU_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_CPU_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "cpu")
endif()
# intel-gpu
if(ENABLE_INTEL_GPU)
set(CPACK_COMPONENT_GPU_DESCRIPTION "OpenVINO Intel GPU plugin")
set(CPACK_COMPONENT_GPU_DEPENDS "core")
set(CPACK_DEBIAN_GPU_PACKAGE_NAME "libopenvino-intel-gpu${cpack_ver_mm}")
set(CPACK_DEBIAN_GPU_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_GPU_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "gpu")
endif()
# intel-myriad
if(ENABLE_MYRIAD)
set(CPACK_COMPONENT_MYRIAD_DESCRIPTION "OpenVINO Intel Myriad plugin")
set(CPACK_COMPONENT_MYRIAD_DEPENDS "core")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_NAME "libopenvino-intel-myriad${cpack_ver_mm}")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_MYRIAD_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "myriad")
endif()
# intel-gna
if(ENABLE_INTEL_GNA)
set(CPACK_COMPONENT_GNA_DESCRIPTION "OpenVINO Intel GNA plugin")
set(CPACK_COMPONENT_GNA_DEPENDS "core")
set(CPACK_DEFIAN_GNA_PACKAGE_SHLIBDEPS OFF)
set(CPACK_DEBIAN_GNA_PACKAGE_NAME "libopenvino-intel-gna${cpack_ver_mm}")
set(CPACK_DEBIAN_GNA_PACKAGE_SUGGESTS "libopenvino-auto${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION}), libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_GNA_PACKAGE_CONTROL_EXTRA "${def_postinst};${def_postrm};${def_triggers}")
list(APPEND installed_plugins "gna")
endif()
#
# Samples
#
set(samples_build_deps "cmake, g++, gcc, libc6-dev, make")
set(samples_build_deps_suggest "${samples_build_deps}, libopencv-core-dev, libopencv-imgproc-dev, libopencv-imgcodecs-dev")
# c_samples / cpp_samples
set(CPACK_COMPONENT_SAMPLES_DESCRIPTION "OpenVINO C / C++ samples")
set(CPACK_COMPONENT_SAMPLES_DEPENDS "core_dev")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_NAME "libopenvino-samples${cpack_ver_mm}")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_SUGGESTS "${samples_build_deps_suggest}, libopenvino-hetero${cpack_ver_mm} (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_DEPENDS "libgflags-dev, nlohmann-json3-dev, zlib1g-dev, ${samples_build_deps}")
set(CPACK_DEBIAN_SAMPLES_PACKAGE_ARCHITECTURE "all")
# python_samples
set(CPACK_COMPONENT_PYTHON_SAMPLES_DESCRIPTION "OpenVINO Python samples")
set(CPACK_COMPONENT_PYTHON_SAMPLES_DEPENDS "python3")
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_NAME "libopenvino-samples-python${cpack_ver_mm}")
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_ARCHITECTURE "all")
#
# Add virtual packages
#
# all libraries
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "OpenVINO all runtime libraries")
if(installed_plugins)
set(CPACK_COMPONENT_LIBRARIES_DEPENDS "${installed_plugins}")
else()
set(CPACK_COMPONENT_LIBRARIES_DEPENDS "core")
endif()
set(CPACK_DEBIAN_LIBRARIES_PACKAGE_NAME "libopenvino-libraries${cpack_ver_mm}")
list(APPEND CPACK_COMPONENTS_ALL "libraries")
# all libraries-dev
set(CPACK_COMPONENT_LIBRARIES_DEV_DESCRIPTION "OpenVINO all runtime libraries and development files")
set(CPACK_COMPONENT_LIBRARIES_DEV_DEPENDS "core_dev;${installed_plugins}")
set(CPACK_DEBIAN_LIBRARIES_DEV_PACKAGE_NAME "libopenvino-libraries${cpack_ver_mm}-dev")
list(APPEND CPACK_COMPONENTS_ALL "libraries_dev")
#
# install debian common files
#
foreach(comp IN LISTS CPACK_COMPONENTS_ALL)
string(TOUPPER "${comp}" ucomp)
set(package_name "${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
# copyright
# install(FILES "${OpenVINO_SOURCE_DIR}/LICENSE"
# DESTINATION share/doc/${package_name}/
# COMPONENT ${comp}
# RENAME copyright)
# TODO: install changelog
# install triggers
set(triggers_content "activate-noawait ldconfig")
set(triggers_file "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers/${package_name}/triggers")
file(REMOVE ${triggers_file})
file(WRITE ${triggers_file} ${triggers_content})
install(FILES ${triggers_file}
DESTINATION ../DEBIAN/
COMPONENT ${comp})
endforeach()
#
# Install latest symlink packages
#
macro(ov_add_latest_component comp)
string(TOUPPER "${comp}" ucomp)
set(latest "${ucomp}_LATEST")
set(CPACK_COMPONENT_${latest}_DESCRIPTION "${CPACK_COMPONENT_${ucomp}_DESCRIPTION}")
set(CPACK_COMPONENT_${latest}_ARCHITECTURE "${CPACK_COMPONENT_${ucomp}_ARCHITECTURE}")
set(CPACK_COMPONENT_${latest}_DEPENDS "${ucomp}")
# take package name
if(DEFINED CPACK_DEBIAN_${ucomp}_PACKAGE_NAME)
string(REPLACE "${cpack_ver_mm}" ""
CPACK_DEBIAN_${latest}_PACKAGE_NAME
"${CPACK_DEBIAN_${ucomp}_PACKAGE_NAME}")
else()
message(FATAL_ERROR "CPACK_DEBIAN_${ucomp}_PACKAGE_NAME is not defined")
endif()
# add latest to a list of debian packages
list(APPEND CPACK_COMPONENTS_ALL ${latest})
endmacro()
# NOTE: we expicitly don't add runtime latest packages
# since a user needs to depend on specific VERSIONED runtime package
# with fixed SONAMEs, while latest package can be updated multiple times
ov_add_latest_component(core_dev)
ov_add_latest_component(samples)
ov_add_latest_component(libraries_dev)

View File

@ -0,0 +1,147 @@
# Copyright (C) 2018-2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#
include(CMakeParseArguments)
include(CPackComponent)
include(GNUInstallDirs)
#
# ov_cpack_set_dirs()
#
# Set directories for cpack
#
macro(ov_cpack_set_dirs)
# common IRC package locations
set(OV_CPACK_INCLUDEDIR runtime/include)
set(OV_CPACK_IE_CMAKEDIR runtime/cmake)
set(OV_CPACK_NGRAPH_CMAKEDIR runtime/cmake)
set(OV_CPACK_OPENVINO_CMAKEDIR runtime/cmake)
set(OV_CPACK_DOCDIR docs)
set(OV_CPACK_SAMPLESDIR samples)
set(OV_CPACK_PYTHONDIR python)
set(OV_CPACK_WHEELSDIR tools)
set(OV_CPACK_TOOLSDIR tools)
if(WIN32)
set(OV_CPACK_LIBRARYDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG>)
set(OV_CPACK_RUNTIMEDIR runtime/bin/${ARCH_FOLDER}/$<CONFIG>)
set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG>)
set(OV_CPACK_PLUGINSDIR runtime/lib/${ARCH_FOLDER}/$<CONFIG>)
else()
set(OV_CPACK_LIBRARYDIR runtime/lib/${ARCH_FOLDER})
set(OV_CPACK_RUNTIMEDIR runtime/lib/${ARCH_FOLDER})
set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER})
set(OV_CPACK_PLUGINSDIR runtime/lib/${ARCH_FOLDER})
endif()
# for BW compatibility
set(IE_CPACK_LIBRARY_PATH ${OV_CPACK_LIBRARYDIR})
set(IE_CPACK_RUNTIME_PATH ${OV_CPACK_RUNTIMEDIR})
set(IE_CPACK_ARCHIVE_PATH ${OV_CPACK_ARCHIVEDIR})
endmacro()
ov_cpack_set_dirs()
#
# ie_cpack_add_component(NAME ...)
#
# Wraps original `cpack_add_component` and adds component to internal IE list
#
unset(IE_CPACK_COMPONENTS_ALL CACHE)
macro(ie_cpack_add_component NAME)
list(APPEND IE_CPACK_COMPONENTS_ALL ${NAME})
set(IE_CPACK_COMPONENTS_ALL "${IE_CPACK_COMPONENTS_ALL}" CACHE STRING "" FORCE)
cpack_add_component(${NAME} ${args})
endmacro()
# create test component
if(ENABLE_TESTS)
cpack_add_component(tests DISABLED)
endif()
#
# List of public OpenVINO components
#
# core components
set(OV_CPACK_COMP_CORE "core")
set(OV_CPACK_COMP_CORE_C "core_c")
set(OV_CPACK_COMP_CORE_DEV "core_dev")
set(OV_CPACK_COMP_CORE_C_DEV "core_c_dev")
# licensing
set(OV_CPACK_COMP_LICENSING "licensing")
# samples
set(OV_CPACK_COMP_CPP_SAMPLES "cpp_samples")
set(OV_CPACK_COMP_C_SAMPLES "c_samples")
set(OV_CPACK_COMP_PYTHON_SAMPLES "python_samples")
# python
set(OV_CPACK_COMP_PYTHON_IE_API "pyie")
set(OV_CPACK_COMP_PYTHON_NGRAPH "pyngraph")
set(OV_CPACK_COMP_PYTHON_OPENVINO "pyopenvino")
# tools
set(OV_CPACK_COMP_CORE_TOOLS "core_tools")
set(OV_CPACK_COMP_DEV_REQ_FILES "openvino_dev_req_files")
set(OV_CPACK_COMP_DEPLOYMENT_MANAGER "deployment_manager")
macro(ie_cpack)
if(NOT DEFINED CPACK_GENERATOR)
set(CPACK_GENERATOR "TGZ")
endif()
set(CPACK_SOURCE_GENERATOR "") # not used
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenVINO™ Toolkit")
set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED OFF)
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_VENDOR "Intel Corporation")
set(CPACK_PACKAGE_CONTACT "OpenVINO Developers <openvino@intel.com>")
set(CPACK_VERBATIM_VARIABLES ON)
set(CPACK_COMPONENTS_ALL ${ARGN})
# TODO: check whether we need it
# default permissions for directories creation
set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
# archive operations can be run in parallels since CMake 3.20
set(CPACK_THREADS 8)
if(NOT DEFINED CPACK_STRIP_FILES)
set(CPACK_STRIP_FILES ON)
endif()
if(WIN32)
set(CPACK_PACKAGE_NAME openvino_${CMAKE_BUILD_TYPE})
else()
set(CPACK_PACKAGE_NAME openvino)
endif()
set(CPACK_PACKAGE_VERSION "${OpenVINO_VERSION}")
foreach(ver MAJOR MINOR PATCH)
if(DEFINED OpenVINO_VERSION_${ver})
set(CPACK_PACKAGE_VERSION_${ver} ${OpenVINO_VERSION_${ver}})
else()
message(FATAL_ERROR "Internal: OpenVINO_VERSION_${ver} variable is not defined")
endif()
endforeach()
if(OS_FOLDER)
set(CPACK_SYSTEM_NAME "${OS_FOLDER}")
endif()
# generator specific variables
if(CPACK_GENERATOR MATCHES "^(7Z|TBZ2|TGZ|TXZ|TZ|ZIP)$")
# multiple packages are generated
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
elseif(CPACK_GENERATOR STREQUAL "DEB")
# include Debian dedicated configuration file
# - overrides directories set by ov_cpack_set_dirs()
# - merges some components
# - tunes Debian components itself and adds new ones
include(debian)
endif()
include(CPack)
endmacro()

View File

@ -14,11 +14,11 @@ add_subdirectory(compile_tool)
# install deployment_manager
if(NOT CPACK_GENERATOR STREQUAL "DEB")
ie_cpack_add_component(deployment_manager REQUIRED)
ie_cpack_add_component(${OV_CPACK_COMP_DEPLOYMENT_MANAGER} REQUIRED)
install(DIRECTORY deployment_manager
DESTINATION ${OV_CPACK_TOOLSDIR}
COMPONENT deployment_manager
COMPONENT ${OV_CPACK_COMP_DEPLOYMENT_MANAGER}
USE_SOURCE_PERMISSIONS)
endif()