From f6617fd89f6cf8cd2329557960fb93e44cff514b Mon Sep 17 00:00:00 2001 From: "Cheruvally, Aravindan" Date: Tue, 27 May 2025 12:20:55 -0400 Subject: [PATCH] Enable Support for Lintian Override Configuration (#23) * Update License file in deb pkg to only have debian lintian specific copyright * Enable Support for Debian Pkg Lintian Overrides * Enhance Lintian Override config File Name for static,asan (rocm-core) * Update Review Comments/UT Test Fixes for Lintian Overrides --- CMakeLists.txt | 31 ++++++++++++++++++++----------- DEBIAN/overrides.in | 3 +++ utils.cmake | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 DEBIAN/overrides.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 3277e4c8e3..25b4b8c964 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,13 +66,16 @@ parse_rocm_version( ${ROCM_VERSION} ) set( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE PATH "default cpack directory" ) set( BUILD_SHARED_LIBS ON CACHE BOOL "Build shared library (.so) or not." ) set( CPACK_GENERATOR "TGZ;DEB;RPM" CACHE STRING "package types to be produced " ) -set( LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/copyright" ) +set( LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/copyright" CACHE PATH "Path to License File in source dir" ) set( BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR} ) set( EXTENDED_PACKAGE_DESCRIPTION "ROCM-CORE is a package which can be used to get ROCm release version, get ROCm install path information etc. It is also important to note that ROCM-CORE takes the role as a base component on which all of ROCm can depend, to make it easy to remove all of ROCm with a package manager." CACHE STRING "Debian Package Extended Description") +set( BUILD_ENABLE_LINTIAN_OVERRIDES OFF CACHE BOOL "Enable/Disable Lintian Overrides" ) +set( BUILD_DEBIAN_PKGING_FLAG OFF CACHE BOOL "Internal Status Flag to indicate Debian Packaging Build" ) + ## Set variables set_variables() @@ -145,10 +148,6 @@ if(BUILD_SHARED_LIBS) DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT CORE_RUNTIME ) - # License file - install ( FILES ${LICENSE_FILE} - DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME LICENSE.txt - COMPONENT ${COMP_TYPE}) else() install ( FILES ${BUILD_DIR}/version DESTINATION .info @@ -168,10 +167,6 @@ else() install ( FILES ${BUILD_DIR}/rocmmod DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${STATIC_COMP_TYPE} ) - # License file - install ( FILES ${LICENSE_FILE} - DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME LICENSE.txt - COMPONENT ${STATIC_COMP_TYPE}) endif() ## Cmake module config file configurations @@ -243,9 +238,9 @@ set ( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" ) # Debian specific packaging configuration if(COMP_TYPE) -configure_debian_pkg( ${CORE_TARGET} ${COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} ) + configure_debian_pkg( ${CORE_TARGET} ${COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} ) elseif(STATIC_COMP_TYPE) -configure_debian_pkg( ${CORE_TARGET} ${STATIC_COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} ) + configure_debian_pkg( ${CORE_TARGET} ${STATIC_COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} ) endif() ## RPM package specific variables @@ -298,5 +293,19 @@ set(CPACK_DEBIAN_RUNTIME_PACKAGE_REPLACES "rocm-clang-ocl") set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONFLICTS "rocm-clang-ocl") set(CPACK_RPM_RUNTIME_PACKAGE_OBSOLETES "rocm-clang-ocl") +# Custom installation for Debian Lintian File +if( BUILD_ENABLE_LINTIAN_OVERRIDES STREQUAL "ON" AND BUILD_DEBIAN_PKGING_FLAG STREQUAL "ON") + set( OVERRIDE_FILE "${CMAKE_BINARY_DIR}/DEBIAN/${DEB_OVERRIDES_INSTALL_FILENM}" ) + if(COMP_TYPE) + set( OVERRIDE_TEMP_INSTALL_LOC "/_CPack_Packages/Linux/DEB/${CORE_TARGET}-${CPACK_PACKAGE_VERSION}-Linux/${COMP_TYPE}" ) + elseif(STATIC_COMP_TYPE) + set( OVERRIDE_TEMP_INSTALL_LOC "/_CPack_Packages/Linux/DEB/${CORE_TARGET}-${CPACK_PACKAGE_VERSION}-Linux/${STATIC_COMP_TYPE}" ) + endif() + set(CPACK_INSTALL_COMMANDS + "${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}" + "${CMAKE_COMMAND} -E copy ${OVERRIDE_FILE} ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}" + ) +endif() + ## Include packaging include ( CPack ) diff --git a/DEBIAN/overrides.in b/DEBIAN/overrides.in new file mode 100644 index 0000000000..6bee886c10 --- /dev/null +++ b/DEBIAN/overrides.in @@ -0,0 +1,3 @@ +@DEB_OVERRIDES_INSTALL_FILENM@: no-copyright-file +@DEB_OVERRIDES_INSTALL_FILENM@: debian-changelog-file-missing +@DEB_OVERRIDES_INSTALL_FILENM@: dir-or-file-in-opt diff --git a/utils.cmake b/utils.cmake index 42c075b30a..859afdae56 100644 --- a/utils.cmake +++ b/utils.cmake @@ -174,6 +174,7 @@ function( configure_debian_pkg PACKAGE_NAME_T COMPONENT_NAME_T PACKAGE_VERSION_T # Check If Debian Platform find_file (DEBIAN debian_version debconf.conf PATHS /etc) if(DEBIAN) + set( BUILD_DEBIAN_PKGING_FLAG ON CACHE BOOL "Internal Status Flag to indicate Debian Packaging Build" FORCE ) set_debian_pkg_cmake_flags( ${PACKAGE_NAME_T} ${PACKAGE_VERSION_T} ${MAINTAINER_NM_T} ${MAINTAINER_EMAIL_T} ) @@ -199,6 +200,30 @@ function( configure_debian_pkg PACKAGE_NAME_T COMPONENT_NAME_T PACKAGE_VERSION_T @ONLY ) + if( BUILD_ENABLE_LINTIAN_OVERRIDES ) + if(NOT BUILD_SHARED_LIBS) + string(FIND ${DEB_OVERRIDES_INSTALL_FILENM} "static" OUT_VAR1) + if(OUT_VAR1 EQUAL -1) + set( DEB_OVERRIDES_INSTALL_FILENM "${DEB_OVERRIDES_INSTALL_FILENM}-static" ) + endif() + else() + if(ENABLE_ASAN_PACKAGING) + string( FIND ${DEB_OVERRIDES_INSTALL_FILENM} "asan" OUT_VAR2) + if(OUT_VAR2 EQUAL -1) + set( DEB_OVERRIDES_INSTALL_FILENM "${DEB_OVERRIDES_INSTALL_FILENM}-asan" ) + endif() + endif() + endif() + set( DEB_OVERRIDES_INSTALL_FILENM + "${DEB_OVERRIDES_INSTALL_FILENM}" CACHE STRING "Debian Package Lintian Override File Name" FORCE) + # Configure the changelog file + configure_file( + "${CMAKE_SOURCE_DIR}/DEBIAN/overrides.in" + "${CMAKE_BINARY_DIR}/DEBIAN/${DEB_OVERRIDES_INSTALL_FILENM}" + @ONLY + ) + endif() + # Install Change Log find_program ( DEB_GZIP_EXEC gzip ) if(EXISTS "${CMAKE_BINARY_DIR}/DEBIAN/changelog.Debian" ) @@ -217,7 +242,10 @@ function( configure_debian_pkg PACKAGE_NAME_T COMPONENT_NAME_T PACKAGE_VERSION_T COMPONENT ${COMPONENT_NAME_T}) endif() else() - message( STATUS "Ignore Configuring Debian Specific Packaging Configuration" ) + # License file + install ( FILES ${LICENSE_FILE} + DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME LICENSE.txt + COMPONENT ${COMPONENT_NAME_T}) endif() endfunction() @@ -233,6 +261,11 @@ function( set_debian_pkg_cmake_flags DEB_PACKAGE_NAME_T DEB_PACKAGE_VERSION_T DE set( DEB_LICENSE "MIT" CACHE STRING "Debian Package License Type" ) set( DEB_CHANGELOG_INSTALL_FILENM "changelog.Debian.gz" CACHE STRING "Debian Package ChangeLog File Name" ) + if( BUILD_ENABLE_LINTIAN_OVERRIDES ) + set( DEB_OVERRIDES_INSTALL_FILENM "${DEB_PACKAGE_NAME}" CACHE STRING "Debian Package Lintian Override File Name" ) + set( DEB_OVERRIDES_INSTALL_PATH "/usr/share/lintian/overrides/" CACHE STRING "Deb Pkg Lintian Override Install Loc" ) + endif() + # Get TimeStamp find_program( DEB_DATE_TIMESTAMP_EXEC date ) set ( DEB_TIMESTAMP_FORMAT_OPTION "-R" )