SWDEV-351540 - ASAN packaging for rocm_smi_lib

Change-Id: Iab354d02d261a0270a3d118b825835fc6f021c15


[ROCm/amdsmi commit: 778f3b7fdc]
This commit is contained in:
AravindanC
2022-11-25 20:55:49 -08:00
parent e543fc1e0c
commit 7e2d0970e5
5 changed files with 116 additions and 31 deletions
+70 -9
View File
@@ -143,10 +143,42 @@ set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_io_link.h")
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi.h") set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi.h")
set(CMN_INC_LIST ${CMN_INC_LIST} "${SHR_MUTEX_DIR}/shared_mutex.h") set(CMN_INC_LIST ${CMN_INC_LIST} "${SHR_MUTEX_DIR}/shared_mutex.h")
## set components
if(ENABLE_ASAN_PACKAGING)
# ASAN Package requires only asan component with libraries and license file
set(CPACK_COMPONENTS_ALL asan)
else()
set(CPACK_COMPONENTS_ALL dev)
endif()
# Enable Component Mode & Install Settings
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_RPM_COMPONENT_INSTALL ON)
#Component Specific Configuration/Flags
set(CPACK_DEBIAN_ASAN_PACKAGE_NAME ${ROCM_SMI_PACKAGE}-asan)
set(CPACK_DEBIAN_DEV_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
set(CPACK_RPM_ASAN_PACKAGE_NAME ${ROCM_SMI_PACKAGE}-asan)
set(CPACK_RPM_DEV_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
set (CPACK_DEBIAN_ASAN_PACKAGE_PROVIDES "${ROCM_SMI_PACKAGE}-asan")
set (CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS "python3, rocm-core-asan")
set (CPACK_DEBIAN_DEV_PACKAGE_PROVIDES "rocm-smi")
set (CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "python3, rocm-core")
set (CPACK_RPM_ASAN_PACKAGE_PROVIDES "${ROCM_SMI_PACKAGE}-asan")
set (CPACK_RPM_ASAN_PACKAGE_REQUIRES "python3, rocm-core-asan")
set (CPACK_RPM_DEV_PACKAGE_PROVIDES "rocm-smi")
set (CPACK_RPM_DEV_PACKAGE_REQUIRES "python3, rocm-core")
add_subdirectory("rocm_smi") add_subdirectory("rocm_smi")
add_subdirectory("oam") add_subdirectory("oam")
option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorg with backward compatibility" ON) # Disable file reorg backward compatibility for ASAN packaging
if(NOT ENABLE_ASAN_PACKAGING)
option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorg with backward compatibility" ON)
endif()
if(FILE_REORG_BACKWARD_COMPATIBILITY) if(FILE_REORG_BACKWARD_COMPATIBILITY)
# To enable/disable #error in wrapper header files # To enable/disable #error in wrapper header files
if(NOT DEFINED ROCM_HEADER_WRAPPER_WERROR) if(NOT DEFINED ROCM_HEADER_WRAPPER_WERROR)
@@ -166,11 +198,12 @@ if(FILE_REORG_BACKWARD_COMPATIBILITY)
include(rocm_smi-backward-compat.cmake) include(rocm_smi-backward-compat.cmake)
endif() endif()
include(CMakePackageConfigHelpers)
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}") set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}") set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
include(CMakePackageConfigHelpers)
configure_package_config_file( configure_package_config_file(
rocm_smi-config.cmake.in rocm_smi-config.cmake.in
@@ -201,14 +234,22 @@ export(TARGETS ${ROCM_SMI_TARGET} ${OAM_TARGET}
# Export the package for use from the build-tree # Export the package for use from the build-tree
# (this registers the build-tree with a global CMake-registry) # (this registers the build-tree with a global CMake-registry)
export(PACKAGE rocm_smi) export(PACKAGE rocm_smi)
# Create the rocm_smiConfig.cmake and rocm_smiConfigVersion files # Create the rocm_smiConfig.cmake and rocm_smiConfigVersion files
# ... for the build tree # ... for the build tree
install(EXPORT rocm_smiTargets DESTINATION install(EXPORT rocm_smiTargets
"${CMAKE_INSTALL_LIBDIR}/cmake/${ROCM_SMI}" COMPONENT dev) DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${ROCM_SMI}"
COMPONENT dev)
#License file #License file
set(CPACK_RPM_PACKAGE_LICENSE "NCSA") set(CPACK_RPM_PACKAGE_LICENSE "NCSA")
install( FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI} RENAME LICENSE.txt) # install license file in share/doc/rocm_smi-asan folder
install(FILES ${CPACK_RESOURCE_FILE_LICENSE}
DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI}-asan RENAME LICENSE.txt
COMPONENT asan)
install( FILES ${CPACK_RESOURCE_FILE_LICENSE}
DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI} RENAME LICENSE.txt
COMPONENT dev)
########################### ###########################
# Packaging directives # Packaging directives
@@ -216,7 +257,11 @@ install( FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DATADI
set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators.") set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators.")
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE STRING "Default packaging prefix.") set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE STRING "Default packaging prefix.")
set ( ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig.") set ( ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig.")
set(CPACK_PACKAGE_NAME ${ROCM_SMI_PACKAGE}) if( ENABLE_ASAN_PACKAGING )
set(CPACK_PACKAGE_NAME ${ROCM_SMI_PACKAGE}-asan)
else()
set(CPACK_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
endif()
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
set(CPACK_PACKAGE_CONTACT "RocmSMILib Support <rocm-smi.support@amd.com>") set(CPACK_PACKAGE_CONTACT "RocmSMILib Support <rocm-smi.support@amd.com>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD System Management libraries") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD System Management libraries")
@@ -236,8 +281,8 @@ else()
set(CPACK_DEBIAN_PACKAGE_RELEASE "local") set(CPACK_DEBIAN_PACKAGE_RELEASE "local")
endif() endif()
set (CPACK_DEBIAN_PACKAGE_PROVIDES "rocm-smi") set (CPACK_DEBIAN_PACKAGE_PROVIDES "rocm-smi")
set (CPACK_DEBIAN_PACKAGE_SUGGESTS "sudo")
set (CPACK_DEBIAN_PACKAGE_DEPENDS "python3, rocm-core") set (CPACK_DEBIAN_PACKAGE_DEPENDS "python3, rocm-core")
set (CPACK_DEBIAN_PACKAGE_SUGGESTS "sudo")
## Process the Debian install/remove scripts to update the CPACK variables ## Process the Debian install/remove scripts to update the CPACK variables
configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst.in DEBIAN/postinst @ONLY ) configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst.in DEBIAN/postinst @ONLY )
@@ -279,8 +324,24 @@ set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
# Remove dependency on rocm-core if -DROCM_DEP_ROCMCORE=ON not given to cmake # Remove dependency on rocm-core if -DROCM_DEP_ROCMCORE=ON not given to cmake
if(NOT ROCM_DEP_ROCMCORE) if(NOT ROCM_DEP_ROCMCORE)
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES}) string(REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_ASAN_PACKAGE_REQUIRES})
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}) string(REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS})
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_DEV_PACKAGE_REQUIRES})
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_DEV_PACKAGE_DEPENDS})
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES})
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS})
endif() endif()
include (CPack) include (CPack)
cpack_add_component(
dev
DISPLAY_NAME "Development"
DESCRIPTION "Development needed header files for ROCM-SMI"
DEPENDS dev)
cpack_add_component(
asan
DISPLAY_NAME "ASAN"
DESCRIPTION "ASAN libraries for the ROCM-SMI"
DEPENDS asan)
+7 -4
View File
@@ -97,16 +97,19 @@ target_include_directories(${OAM_TARGET}
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:{OAM_NAME}/include>") "$<INSTALL_INTERFACE:{OAM_NAME}/include>")
## Add the install directives for the runtime library. ## Add the install directives for the runtime library.
install(TARGETS ${OAM_TARGET} install(TARGETS ${OAM_TARGET}
EXPORT rocm_smiTargets EXPORT rocm_smiTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev)
COMPONENT ${OAM_COMPONENT}) install(TARGETS ${OAM_TARGET}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT asan)
install(FILES ${COMMON_SRC_ROOT}/oam/include/oam/oam_mapi.h install(FILES ${COMMON_SRC_ROOT}/oam/include/oam/oam_mapi.h
${COMMON_SRC_ROOT}/oam/include/oam/amd_oam.h ${COMMON_SRC_ROOT}/oam/include/oam/amd_oam.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/oam) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/oam
COMPONENT dev)
# Generate Doxygen documentation # Generate Doxygen documentation
if (DOXYGEN_FOUND) if (DOXYGEN_FOUND)
+12 -4
View File
@@ -184,9 +184,17 @@ endfunction()
create_header_template() create_header_template()
#Use template header file and generater wrapper header files #Use template header file and generater wrapper header files
generate_wrapper_header() generate_wrapper_header()
install(DIRECTORY ${RSMI_WRAPPER_INC_DIR} DESTINATION ${ROCM_SMI}/include) install(DIRECTORY ${RSMI_WRAPPER_INC_DIR}
install(DIRECTORY ${OAM_WRAPPER_INC_DIR} DESTINATION ${OAM_TARGET_NAME}/include) DESTINATION ${ROCM_SMI}/include
COMPONENT dev)
install(DIRECTORY ${OAM_WRAPPER_INC_DIR}
DESTINATION ${OAM_TARGET_NAME}/include
COMPONENT dev)
# Create symlink to library files # Create symlink to library files
create_library_symlink() create_library_symlink()
install(DIRECTORY ${RSMI_WRAPPER_LIB_DIR} DESTINATION ${ROCM_SMI} COMPONENT lib${ROCM_SMI}) install(DIRECTORY ${RSMI_WRAPPER_LIB_DIR}
install(DIRECTORY ${OAM_WRAPPER_LIB_DIR} DESTINATION ${OAM_TARGET_NAME} COMPONENT lib${OAM_TARGET_NAME} ) DESTINATION ${ROCM_SMI}
COMPONENT dev)
install(DIRECTORY ${OAM_WRAPPER_LIB_DIR}
DESTINATION ${OAM_TARGET_NAME}
COMPONENT dev )
+23 -12
View File
@@ -107,6 +107,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
POST_BUILD COMMAND ${CMAKE_STRIP} lib${ROCM_SMI_TARGET}.so.${SO_VERSION_STRING}) POST_BUILD COMMAND ${CMAKE_STRIP} lib${ROCM_SMI_TARGET}.so.${SO_VERSION_STRING})
endif() endif()
endif () endif ()
#file reorganization changes #file reorganization changes
#rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink #rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
@@ -119,23 +120,31 @@ add_custom_target(link-rocm-smi ALL
install(TARGETS ${ROCM_SMI_TARGET} install(TARGETS ${ROCM_SMI_TARGET}
EXPORT rocm_smiTargets EXPORT rocm_smiTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev)
COMPONENT ${ROCM_SMI_COMPONENT}) install(TARGETS ${ROCM_SMI_TARGET}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT asan)
install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/rocm_smi.h install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/rocm_smi.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
COMPONENT dev)
install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/${ROCM_SMI_TARGET}Config.h install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/${ROCM_SMI_TARGET}Config.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
COMPONENT dev)
install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/kfd_ioctl.h install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/kfd_ioctl.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
COMPONENT dev)
install(FILES ${COMMON_SRC_ROOT}/python_smi_tools/rsmiBindings.py install(FILES ${COMMON_SRC_ROOT}/python_smi_tools/rsmiBindings.py
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}) DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}
COMPONENT dev)
install(FILES ${COMMON_SRC_ROOT}/python_smi_tools/rocm_smi.py install(FILES ${COMMON_SRC_ROOT}/python_smi_tools/rocm_smi.py
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}) DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}
COMPONENT dev)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi
DESTINATION ${CMAKE_INSTALL_BINDIR}) DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT dev)
# Generate Doxygen documentation # Generate Doxygen documentation
find_package(Doxygen) find_package(Doxygen)
@@ -162,9 +171,11 @@ if (DOXYGEN_FOUND AND LATEX_FOUND)
add_dependencies(${ROCM_SMI_TARGET} docs) add_dependencies(${ROCM_SMI_TARGET} docs)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf install(FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI} RENAME ${RSMI_MANUAL_NAME}.pdf) DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI} RENAME ${RSMI_MANUAL_NAME}.pdf
COMPONENT dev)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../README.md install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../README.md
DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI}/) DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/${ROCM_SMI}/
COMPONENT dev)
else() else()
message("Doxygen or Latex is not found. Will not generate documents.") message("Doxygen or Latex is not found. Will not generate documents.")
endif(DOXYGEN_FOUND AND LATEX_FOUND) endif(DOXYGEN_FOUND AND LATEX_FOUND)
@@ -101,12 +101,14 @@ if (INSTALL_GTEST)
write_basic_package_version_file(${version_file} VERSION ${GOOGLETEST_VERSION} COMPATIBILITY AnyNewerVersion) write_basic_package_version_file(${version_file} VERSION ${GOOGLETEST_VERSION} COMPATIBILITY AnyNewerVersion)
install(EXPORT ${targets_export_name} install(EXPORT ${targets_export_name}
NAMESPACE ${cmake_package_name}:: NAMESPACE ${cmake_package_name}::
DESTINATION ${cmake_files_install_dir}) DESTINATION ${cmake_files_install_dir}
COMPONENT dev)
set(config_file "${generated_dir}/${cmake_package_name}Config.cmake") set(config_file "${generated_dir}/${cmake_package_name}Config.cmake")
configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in" configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in"
"${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir}) "${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir})
install(FILES ${version_file} ${config_file} install(FILES ${version_file} ${config_file}
DESTINATION ${cmake_files_install_dir}) DESTINATION ${cmake_files_install_dir}
COMPONENT dev)
endif() endif()
# Where Google Test's .h files can be found. # Where Google Test's .h files can be found.