From 9db70d774f4d9e8e70d9fc6f20a8ea78cdb7dcab Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sat, 26 Nov 2022 11:11:19 +0400 Subject: [PATCH] Properly added dependencies between RPM packages (#14258) --- .../developer_package/packaging/rpm/rpm.cmake | 8 +- cmake/packaging/rpm.cmake | 106 ++++++++---------- 2 files changed, 48 insertions(+), 66 deletions(-) diff --git a/cmake/developer_package/packaging/rpm/rpm.cmake b/cmake/developer_package/packaging/rpm/rpm.cmake index 62e22781e5c..87bf41702c7 100644 --- a/cmake/developer_package/packaging/rpm/rpm.cmake +++ b/cmake/developer_package/packaging/rpm/rpm.cmake @@ -81,8 +81,6 @@ macro(ov_rpm_specific_settings) set(CPACK_RPM_COMPONENT_INSTALL ON) # automatically find dependencies for binaries set(CPACK_RPM_PACKAGE_AUTOREQPROV ON) - # enable dependencies between components - set(CPACK_RPM_ENABLE_COMPONENT_DEPENDS ON) # homepage set(CPACK_RPM_PACKAGE_URL "https://docs.openvino.ai/") # ASL 2.0 # Apache Software License 2.0 @@ -102,7 +100,7 @@ macro(ov_rpm_specific_settings) # naming convention for rpm package files set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") # need to update this version once we rebuild the same package with additional fixes - # set(CPACK_RPM_PACKAGE_RELEASE "1") + set(CPACK_RPM_PACKAGE_RELEASE "1") # enable this if someday we change the version scheme # set(CPACK_RPM_PACKAGE_EPOCH "2") @@ -123,7 +121,7 @@ ov_rpm_specific_settings() # needed to add triggers for packages with libraries set(def_triggers "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers") -set(triggers_content "activate-noawait ldconfig\n\n") +set(triggers_content "/sbin/ldconfig\n") file(WRITE "${def_triggers}" "${triggers_content}") # @@ -235,7 +233,7 @@ macro(ov_rpm_add_latest_component comp) set(upper_case "${ucomp}_LATEST") set(CPACK_COMPONENT_${upper_case}_DESCRIPTION "${CPACK_COMPONENT_${ucomp}_DESCRIPTION}") - set(CPACK_COMPONENT_${upper_case}_DEPENDS "${comp}") + set(CPACK_RPM_${upper_case}_PACKAGE_REQUIRES "${CPACK_RPM_${ucomp}_PACKAGE_NAME} = ${cpack_full_ver}") set(CPACK_RPM_${upper_case}_PACKAGE_ARCHITECTURE "noarch") set(${comp_name}_copyright "generic") diff --git a/cmake/packaging/rpm.cmake b/cmake/packaging/rpm.cmake index 9cdf94d87b8..ead326a7cef 100644 --- a/cmake/packaging/rpm.cmake +++ b/cmake/packaging/rpm.cmake @@ -6,7 +6,7 @@ # OpenVINO Core components including frontends, plugins, etc # -function(_ov_add_plugin comp is_pseudo) +function(_ov_add_package package_names comp) string(TOUPPER "${comp}" ucomp) if(NOT DEFINED CPACK_RPM_${ucomp}_PACKAGE_NAME) message(FATAL_ERROR "CPACK_RPM_${ucomp}_PACKAGE_NAME is not defined") @@ -18,25 +18,11 @@ function(_ov_add_plugin comp is_pseudo) message(FATAL_ERROR "Internal variable 'cpack_full_ver' is not defined") endif() - if(is_pseudo) - if(pseudo_plugins_recommends) - set(pseudo_plugins_recommends "${pseudo_plugins_recommends}, ${package_name} = ${cpack_full_ver}") - else() - set(pseudo_plugins_recommends "${package_name} = ${cpack_full_ver}") - endif() - endif() - - if(all_plugins_suggest) - set(all_plugins_suggest "${all_plugins_suggest}, ${package_name} = ${cpack_full_ver}") + if(${package_names}) + set("${package_names}" "${${package_names}}, ${package_name} = ${cpack_full_ver}" PARENT_SCOPE) else() - set(all_plugins_suggest "${package_name} = ${cpack_full_ver}") + set("${package_names}" "${package_name} = ${cpack_full_ver}" PARENT_SCOPE) endif() - - list(APPEND installed_plugins ${comp}) - - set(pseudo_plugins_recommends "${pseudo_plugins_recommends}" PARENT_SCOPE) - set(all_plugins_suggest "${all_plugins_suggest}" PARENT_SCOPE) - set(installed_plugins "${installed_plugins}" PARENT_SCOPE) endfunction() macro(ov_cpack_settings) @@ -122,6 +108,7 @@ macro(ov_cpack_settings) set(CPACK_COMPONENT_CORE_DESCRIPTION "OpenVINO C / C++ Runtime libraries") set(CPACK_RPM_CORE_PACKAGE_NAME "libopenvino-${cpack_name_ver}") + set(core_package "${CPACK_RPM_CORE_PACKAGE_NAME} = ${cpack_full_ver}") set(CPACK_RPM_CORE_POST_INSTALL_SCRIPT_FILE "${def_triggers}") set(CPACK_RPM_CORE_POST_UNINSTALL_SCRIPT_FILE "${def_triggers}") set(${OV_CPACK_COMP_CORE}_copyright "generic") @@ -133,18 +120,18 @@ macro(ov_cpack_settings) # hetero if(ENABLE_HETERO) set(CPACK_COMPONENT_HETERO_DESCRIPTION "OpenVINO Hetero plugin") - set(CPACK_COMPONENT_HETERO_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_HETERO_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_HETERO_PACKAGE_NAME "libopenvino-hetero-plugin-${cpack_name_ver}") - _ov_add_plugin(hetero ON) + _ov_add_package(plugin_packages hetero) set(hetero_copyright "generic") endif() # auto batch if(ENABLE_AUTO_BATCH) set(CPACK_COMPONENT_BATCH_DESCRIPTION "OpenVINO Automatic Batching plugin") - set(CPACK_COMPONENT_BATCH_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_BATCH_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_BATCH_PACKAGE_NAME "libopenvino-auto-batch-plugin-${cpack_name_ver}") - _ov_add_plugin(batch ON) + _ov_add_package(plugin_packages batch) set(batch_copyright "generic") endif() @@ -155,15 +142,15 @@ macro(ov_cpack_settings) else() set(CPACK_COMPONENT_MULTI_DESCRIPTION "OpenVINO Multi plugin") endif() - set(CPACK_COMPONENT_MULTI_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_MULTI_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_MULTI_PACKAGE_NAME "libopenvino-auto-plugin-${cpack_name_ver}") - _ov_add_plugin(multi ON) + _ov_add_package(plugin_packages multi) set(multi_copyright "generic") elseif(ENABLE_AUTO) set(CPACK_COMPONENT_AUTO_DESCRIPTION "OpenVINO Auto plugin") - set(CPACK_COMPONENT_AUTO_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_AUTO_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_AUTO_PACKAGE_NAME "libopenvino-auto-plugin-${cpack_name_ver}") - _ov_add_plugin(auto ON) + _ov_add_package(plugin_packages auto) set(auto_copyright "generic") endif() @@ -176,37 +163,35 @@ macro(ov_cpack_settings) set(CPACK_COMPONENT_CPU_DESCRIPTION "ARM CPU") set(cpu_copyright "arm_cpu") endif() - set(CPACK_COMPONENT_CPU_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_CPU_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_CPU_PACKAGE_NAME "libopenvino-intel-cpu-plugin-${cpack_name_ver}") - _ov_add_plugin(cpu OFF) + _ov_add_package(plugin_packages cpu) endif() # intel-gpu if(ENABLE_INTEL_GPU) set(CPACK_COMPONENT_GPU_DESCRIPTION "Intel® Processor Graphics") - set(CPACK_COMPONENT_GPU_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_GPU_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_GPU_PACKAGE_NAME "libopenvino-intel-gpu-plugin-${cpack_name_ver}") - # auto batch exhances GPU - # set(CPACK_RPM_BATCH_PACKAGE_ENHANCES "${CPACK_RPM_GPU_PACKAGE_NAME} = (${cpack_full_ver})") - _ov_add_plugin(gpu OFF) + _ov_add_package(plugin_packages gpu) set(gpu_copyright "generic") endif() # intel-myriad if(ENABLE_INTEL_MYRIAD AND "myriad" IN_LIST CPACK_COMPONENTS_ALL) set(CPACK_COMPONENT_MYRIAD_DESCRIPTION "Intel® Movidius™ VPU") - set(CPACK_COMPONENT_MYRIAD_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_MYRIAD_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_MYRIAD_PACKAGE_NAME "libopenvino-intel-vpu-plugin-${cpack_name_ver}") - _ov_add_plugin(myriad OFF) + _ov_add_package(plugin_packages myriad) set(myriad_copyright "generic") endif() # intel-gna if(ENABLE_INTEL_GNA AND "gna" IN_LIST CPACK_COMPONENTS_ALL) set(CPACK_COMPONENT_GNA_DESCRIPTION "Intel® Gaussian Neural Accelerator") - set(CPACK_COMPONENT_GNA_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_GNA_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_GNA_PACKAGE_NAME "libopenvino-intel-gna-plugin-${cpack_name_ver}") - _ov_add_plugin(gna OFF) + _ov_add_package(plugin_packages gna) set(gna_copyright "generic") endif() @@ -216,41 +201,41 @@ macro(ov_cpack_settings) if(ENABLE_OV_IR_FRONTEND) set(CPACK_COMPONENT_IR_DESCRIPTION "OpenVINO IR Frontend") - set(CPACK_COMPONENT_IR_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_IR_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_IR_PACKAGE_NAME "libopenvino-ir-frontend-${cpack_name_ver}") set(CPACK_RPM_IR_POST_INSTALL_SCRIPT_FILE "${def_triggers}") set(CPACK_RPM_IR_POST_UNINSTALL_SCRIPT_FILE "${def_triggers}") - list(APPEND frontends ir) + _ov_add_package(frontend_packages ir) set(ir_copyright "generic") endif() if(ENABLE_OV_ONNX_FRONTEND) set(CPACK_COMPONENT_ONNX_DESCRIPTION "OpenVINO ONNX Frontend") - set(CPACK_COMPONENT_ONNX_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_ONNX_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_ONNX_PACKAGE_NAME "libopenvino-onnx-frontend-${cpack_name_ver}") set(CPACK_RPM_ONNX_POST_INSTALL_SCRIPT_FILE "${def_triggers}") set(CPACK_RPM_ONNX_POST_UNINSTALL_SCRIPT_FILE "${def_triggers}") - list(APPEND frontends onnx) + _ov_add_package(frontend_packages onnx) set(onnx_copyright "generic") endif() if(ENABLE_OV_TF_FRONTEND) set(CPACK_COMPONENT_TENSORFLOW_DESCRIPTION "OpenVINO TensorFlow Frontend") - set(CPACK_COMPONENT_TENSORFLOW_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_TENSORFLOW_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_TENSORFLOW_PACKAGE_NAME "libopenvino-tensorflow-frontend-${cpack_name_ver}") set(CPACK_RPM_TENSORFLOW_POST_INSTALL_SCRIPT_FILE "${def_triggers}") set(CPACK_RPM_TENSORFLOW_POST_UNINSTALL_SCRIPT_FILE "${def_triggers}") - list(APPEND frontends tensorflow) + _ov_add_package(frontend_packages tensorflow) set(tensorflow_copyright "generic") endif() if(ENABLE_OV_PADDLE_FRONTEND) set(CPACK_COMPONENT_PADDLE_DESCRIPTION "OpenVINO Paddle Frontend") - set(CPACK_COMPONENT_PADDLE_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_PADDLE_PACKAGE_REQUIRES "${core_package}") set(CPACK_RPM_PADDLE_PACKAGE_NAME "libopenvino-paddle-frontend-${cpack_name_ver}") set(CPACK_RPM_PADDLE_POST_INSTALL_SCRIPT_FILE "${def_triggers}") set(CPACK_RPM_PADDLE_POST_UNINSTALL_SCRIPT_FILE "${def_triggers}") - list(APPEND frontends paddle) + _ov_add_package(frontend_packages paddle) set(paddle_copyright "generic") endif() @@ -259,8 +244,9 @@ macro(ov_cpack_settings) # set(CPACK_COMPONENT_CORE_DEV_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit C / C++ Development files") - set(CPACK_COMPONENT_CORE_DEV_DEPENDS "${OV_CPACK_COMP_CORE};${frontends}") + set(CPACK_RPM_CORE_DEV_PACKAGE_REQUIRES "${core_package}, ${frontend_packages}") set(CPACK_RPM_CORE_DEV_PACKAGE_NAME "libopenvino-devel-${cpack_name_ver}") + set(core_dev_package "${CPACK_RPM_CORE_DEV_PACKAGE_NAME} = ${cpack_full_ver}") ov_rpm_generate_conflicts("${OV_CPACK_COMP_CORE_DEV}" ${conflicting_versions}) ov_rpm_add_rpmlint_suppression("${OV_CPACK_COMP_CORE_DEV}" @@ -282,12 +268,10 @@ macro(ov_cpack_settings) string(TOUPPER "${pyversion}" pyversion) set(CPACK_COMPONENT_PYOPENVINO_${pyversion}_DESCRIPTION "OpenVINO Python bindings") - set(CPACK_COMPONENT_PYOPENVINO_${pyversion}_DEPENDS "${OV_CPACK_COMP_CORE}") - list(APPEND CPACK_COMPONENT_PYOPENVINO_${pyversion}_DEPENDS ${installed_plugins}) - list(APPEND CPACK_COMPONENT_PYOPENVINO_${pyversion}_DEPENDS ${frontends}) - set(CPACK_RPM_PYOPENVINO_${pyversion}_PACKAGE_REQUIRES "python3") - + set(CPACK_RPM_PYOPENVINO_${pyversion}_PACKAGE_REQUIRES + "${core_package}, ${frontend_packages}, ${plugin_packages}, python3") set(CPACK_RPM_PYOPENVINO_${pyversion}_PACKAGE_NAME "libopenvino-python-${cpack_name_ver}") + set(python_package "${CPACK_RPM_PYOPENVINO_${pyversion}_PACKAGE_NAME} = ${cpack_full_ver}") set(${python_component}_copyright "generic") endif() @@ -295,18 +279,17 @@ macro(ov_cpack_settings) # Samples # - # TODO: provide different packages in two lines below set(samples_build_deps "cmake3, gcc-c++, gcc, glibc-devel, make") set(samples_build_deps_suggest "opencv-devel >= 3.0") # c_samples / cpp_samples set(CPACK_COMPONENT_SAMPLES_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit C / C++ Samples") - set(CPACK_COMPONENT_SAMPLES_DEPENDS "core_dev") set(CPACK_RPM_SAMPLES_PACKAGE_NAME "openvino-samples-${cpack_name_ver}") + set(samples_package "${CPACK_RPM_SAMPLES_PACKAGE_NAME} = ${cpack_full_ver}") # SUGGESTS may be unsupported, it's part of RPM 4.12.0 (Sep 16th 2014) only # see https://rpm.org/timeline.html - set(CPACK_RPM_SAMPLES_PACKAGE_SUGGESTS "${samples_build_deps_suggest}, ${all_plugins_suggest}") - set(CPACK_RPM_SAMPLES_PACKAGE_REQUIRES "gflags-devel, json-devel, zlib-devel") + set(CPACK_RPM_SAMPLES_PACKAGE_SUGGESTS "${samples_build_deps_suggest}, ${plugin_packages}") + set(CPACK_RPM_SAMPLES_PACKAGE_REQUIRES "${core_dev_package}, ${samples_build_deps}, gflags-devel, json-devel, zlib-devel") set(CPACK_RPM_SAMPLES_PACKAGE_ARCHITECTURE "noarch") ov_rpm_add_rpmlint_suppression("${OV_CPACK_COMP_CPP_SAMPLES}" @@ -320,9 +303,8 @@ macro(ov_cpack_settings) # python_samples if(ENABLE_PYTHON) set(CPACK_COMPONENT_PYTHON_SAMPLES_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit Python Samples") - set(CPACK_COMPONENT_PYTHON_SAMPLES_DEPENDS "${python_component}") + set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_REQUIRES "${python_package}, python3") set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_NAME "openvino-samples-python-${cpack_name_ver}") - set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_REQUIRES "python3") set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_ARCHITECTURE "noarch") set(python_samples_copyright "generic") endif() @@ -333,26 +315,28 @@ macro(ov_cpack_settings) # all libraries set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit Libraries") - if(installed_plugins) - set(CPACK_COMPONENT_LIBRARIES_DEPENDS "${installed_plugins}") + if(plugin_packages) + set(CPACK_RPM_LIBRARIES_PACKAGE_REQUIRES "${plugin_packages}") else() - set(CPACK_COMPONENT_LIBRARIES_DEPENDS "${OV_CPACK_COMP_CORE}") + set(CPACK_RPM_LIBRARIES_PACKAGE_REQUIRES "${core_package}") endif() set(CPACK_RPM_LIBRARIES_PACKAGE_NAME "openvino-libraries-${cpack_name_ver}") + set(libraries_package "${CPACK_RPM_LIBRARIES_PACKAGE_NAME} = ${cpack_full_ver}") set(CPACK_RPM_LIBRARIES_PACKAGE_ARCHITECTURE "noarch") set(libraries_copyright "generic") # all libraries-dev set(CPACK_COMPONENT_LIBRARIES_DEV_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit Libraries and Development files") - set(CPACK_COMPONENT_LIBRARIES_DEV_DEPENDS "core_dev;libraries") + set(CPACK_RPM_LIBRARIES_DEV_PACKAGE_REQUIRES "${core_dev_package}, ${libraries_package}") set(CPACK_RPM_LIBRARIES_DEV_PACKAGE_NAME "openvino-libraries-devel-${cpack_name_ver}") + set(libraries_dev_package "${CPACK_RPM_LIBRARIES_DEV_PACKAGE_NAME} = ${cpack_full_ver}") set(CPACK_RPM_LIBRARIES_DEV_PACKAGE_ARCHITECTURE "noarch") ov_rpm_generate_conflicts(libraries_dev ${conflicting_versions}) set(libraries_dev_copyright "generic") # all openvino set(CPACK_COMPONENT_OPENVINO_DESCRIPTION "Intel(R) Distribution of OpenVINO(TM) Toolkit Libraries and Development files") - set(CPACK_COMPONENT_OPENVINO_DEPENDS "libraries_dev;samples") + set(CPACK_RPM_OPENVINO_PACKAGE_REQUIRES "${libraries_dev_package}, ${samples_package}") set(CPACK_RPM_OPENVINO_PACKAGE_NAME "openvino-${cpack_name_ver}") set(CPACK_RPM_OPENVINO_PACKAGE_ARCHITECTURE "noarch") ov_rpm_generate_conflicts(openvino ${conflicting_versions})