From 1621936e32b7c793fa68d30858bd833075418d37 Mon Sep 17 00:00:00 2001 From: Jeremy Newton Date: Mon, 3 Oct 2022 12:37:47 -0400 Subject: [PATCH] Implement RPM Recommends for libdrm What we want for libdrm-amdgpu is for it to be a recommended package. Either libdrm or libdrm-amdgpu can be used, but we recommend the latter. Using "SUGGESTS" does not seem like a strong enough requirement, but CPACK does not support RPM recommends. Although, it does allow customizing the RPM SPEC file template. By generating a template, which is done by setting: -DCPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 This template file can be trivially modified to allow adding a line to implement CPACK_RPM_PACKAGE_RECOMMENDS. Fixes Signed-off-by: Jeremy Newton Change-Id: I34467b1ba878827ced9b8db74977967815732552 --- runtime/hsa-runtime/CMakeLists.txt | 3 +- runtime/hsa-runtime/RPM/hsa-rocr.spec.in | 91 ++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 runtime/hsa-runtime/RPM/hsa-rocr.spec.in diff --git a/runtime/hsa-runtime/CMakeLists.txt b/runtime/hsa-runtime/CMakeLists.txt index 8d1937cd15..3b8418648d 100644 --- a/runtime/hsa-runtime/CMakeLists.txt +++ b/runtime/hsa-runtime/CMakeLists.txt @@ -451,7 +451,8 @@ if (${EL7_DISTRO} STREQUAL "TRUE") set ( CPACK_RPM_BINARY_PACKAGE_REQUIRES "libdrm-amdgpu, numactl-libs" ) else() set ( CPACK_RPM_BINARY_PACKAGE_REQUIRES "(libdrm-amdgpu or libdrm or libdrm_amdgpu1), (libnuma1 or numactl-libs)" ) - set ( CPACK_RPM_BINARY_PACKAGE_SUGGESTS "libdrm-amdgpu" ) + set ( CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/hsa-rocr.spec.in" ) + set ( CPACK_RPM_PACKAGE_RECOMMENDS "libdrm-amdgpu" ) endif() set ( CPACK_RPM_DEV_PACKAGE_REQUIRES "hsa-rocr , hsakmt-roct-devel" ) if ( ROCM_DEP_ROCMCORE ) diff --git a/runtime/hsa-runtime/RPM/hsa-rocr.spec.in b/runtime/hsa-runtime/RPM/hsa-rocr.spec.in new file mode 100644 index 0000000000..3ccc64efc7 --- /dev/null +++ b/runtime/hsa-runtime/RPM/hsa-rocr.spec.in @@ -0,0 +1,91 @@ +# Restore old style debuginfo creation for rpm >= 4.14. +%undefine _debugsource_packages +%undefine _debuginfo_subpackages + +# -*- rpm-spec -*- +BuildRoot: %_topdir/@CPACK_PACKAGE_FILE_NAME@@CPACK_RPM_PACKAGE_COMPONENT_PART_PATH@ +Summary: @CPACK_RPM_PACKAGE_SUMMARY@ +Name: @CPACK_RPM_PACKAGE_NAME@ +Version: @CPACK_RPM_PACKAGE_VERSION@ +Release: @CPACK_RPM_PACKAGE_RELEASE@ +License: @CPACK_RPM_PACKAGE_LICENSE@ +Group: @CPACK_RPM_PACKAGE_GROUP@ +Vendor: @CPACK_RPM_PACKAGE_VENDOR@ + +# Modifications to allow recommends to be used (not implemented in cpack): +%if "@CPACK_RPM_PACKAGE_RECOMMENDS@" != "" +Recommends: @CPACK_RPM_PACKAGE_RECOMMENDS@ +%endif +# End of modifications + +@TMP_RPM_URL@ +@TMP_RPM_REQUIRES@ +@TMP_RPM_REQUIRES_PRE@ +@TMP_RPM_REQUIRES_POST@ +@TMP_RPM_REQUIRES_PREUN@ +@TMP_RPM_REQUIRES_POSTUN@ +@TMP_RPM_PROVIDES@ +@TMP_RPM_OBSOLETES@ +@TMP_RPM_CONFLICTS@ +@TMP_RPM_SUGGESTS@ +@TMP_RPM_AUTOPROV@ +@TMP_RPM_AUTOREQ@ +@TMP_RPM_AUTOREQPROV@ +@TMP_RPM_BUILDARCH@ +@TMP_RPM_PREFIXES@ +@TMP_RPM_EPOCH@ + +@TMP_RPM_DEBUGINFO@ + +%define _rpmdir %_topdir/RPMS +%define _srcrpmdir %_topdir/SRPMS +@FILE_NAME_DEFINE@ +%define _unpackaged_files_terminate_build 0 +@TMP_RPM_SPEC_INSTALL_POST@ +@CPACK_RPM_SPEC_MORE_DEFINE@ +@CPACK_RPM_COMPRESSION_TYPE_TMP@ + +%description +@CPACK_RPM_PACKAGE_DESCRIPTION@ + +# This is a shortcutted spec file generated by CMake RPM generator +# we skip _install step because CPack does that for us. +# We do only save CPack installed tree in _prepr +# and then restore it in build. +%prep +mv $RPM_BUILD_ROOT %_topdir/tmpBBroot + +%install +if [ -e $RPM_BUILD_ROOT ]; +then + rm -rf $RPM_BUILD_ROOT +fi +mv %_topdir/tmpBBroot $RPM_BUILD_ROOT + +@TMP_RPM_DEBUGINFO_INSTALL@ + +%clean + +%post +@RPM_SYMLINK_POSTINSTALL@ +@CPACK_RPM_SPEC_POSTINSTALL@ + +%postun +@CPACK_RPM_SPEC_POSTUNINSTALL@ + +%pre +@CPACK_RPM_SPEC_PREINSTALL@ + +%preun +@CPACK_RPM_SPEC_PREUNINSTALL@ + +%files +%defattr(@TMP_DEFAULT_FILE_PERMISSIONS@,@TMP_DEFAULT_USER@,@TMP_DEFAULT_GROUP@,@TMP_DEFAULT_DIR_PERMISSIONS@) +@CPACK_RPM_INSTALL_FILES@ +@CPACK_RPM_ABSOLUTE_INSTALL_FILES@ +@CPACK_RPM_USER_INSTALL_FILES@ + +%changelog +@CPACK_RPM_SPEC_CHANGELOG@ + +@TMP_OTHER_COMPONENTS@