SWDEV-227621 - Fix OpenCL CMake Packaging
Update the packaging code to be CMake 3.5 compatible for CI. Create two packages rocm-opencl and rocm-opencl-dev on Ubuntu and CentOS. Add proper versioning into naming. Change-Id: I116081b7f6f7efa4be43ab3a66e4d3bff0589298
Esse commit está contido em:
+74
-37
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.4.3)
|
||||
cmake_minimum_required(VERSION 3.5.1)
|
||||
|
||||
if (POLICY CMP0048)
|
||||
cmake_policy(SET CMP0048 NEW)
|
||||
@@ -17,20 +17,44 @@ add_subdirectory(khronos/icd)
|
||||
add_subdirectory(amdocl)
|
||||
add_subdirectory(tools/clinfo)
|
||||
|
||||
# get date information based on UTC
|
||||
# use the last two digits of year + week number + day in the week as OPENCL_VERSION_GITDATE
|
||||
# use the commit date, instead of build date
|
||||
# add xargs to remove strange trailing newline character
|
||||
execute_process(COMMAND git show -s --format=@%ct
|
||||
COMMAND xargs
|
||||
COMMAND date -f - --utc +%y%U%w
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE OPENCL_VERSION_GITDATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# get commit short hash
|
||||
execute_process(COMMAND git rev-parse --short HEAD
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE OPENCL_VERSION_GITHASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(OPENCL_VERSION_MAJOR "2")
|
||||
set(OPENCL_VERSION_MINOR "0")
|
||||
set(OPENCL_VERSION_PATCH ${OPENCL_VERSION_GITDATE})
|
||||
|
||||
get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
|
||||
get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
|
||||
|
||||
###--- Packaging ------------------------------------------------------------###
|
||||
|
||||
# MAIN package
|
||||
install(PROGRAMS $<TARGET_FILE:clinfo>
|
||||
DESTINATION bin/x86_64
|
||||
DESTINATION bin
|
||||
COMPONENT MAIN)
|
||||
install(PROGRAMS $<TARGET_FILE:amdocl64>
|
||||
DESTINATION lib/x86_64
|
||||
DESTINATION lib
|
||||
COMPONENT MAIN)
|
||||
install(PROGRAMS $<TARGET_FILE:OpenCL>
|
||||
DESTINATION lib/x86_64
|
||||
DESTINATION lib
|
||||
COMPONENT MAIN)
|
||||
install(PROGRAMS $<TARGET_SONAME_FILE:OpenCL>
|
||||
DESTINATION lib/x86_64
|
||||
DESTINATION lib
|
||||
COMPONENT MAIN)
|
||||
|
||||
# DEV package
|
||||
@@ -43,42 +67,55 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
|
||||
PATTERN cl_dx9_media_sharing.h EXCLUDE
|
||||
PATTERN cl_egl.h EXCLUDE)
|
||||
install(PROGRAMS $<TARGET_LINKER_FILE:OpenCL>
|
||||
DESTINATION lib/x86_64
|
||||
DESTINATION lib
|
||||
COMPONENT DEV)
|
||||
|
||||
# Generic CPACK variables
|
||||
set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators")
|
||||
#############################
|
||||
# Packaging steps
|
||||
#############################
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl" CACHE PATH "Package Installation path for OpenCL")
|
||||
|
||||
set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.")
|
||||
set(CPACK_PACKAGE_VENDOR "AMD")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl")
|
||||
# Package: rocm-opencl
|
||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/rocm-opencl)
|
||||
configure_file(packaging/rocm-opencl.txt ${BUILD_DIR}/CMakeLists.txt @ONLY)
|
||||
configure_file(packaging/rocm-opencl.postinst ${BUILD_DIR}/postinst @ONLY)
|
||||
configure_file(packaging/rocm-opencl.prerm ${BUILD_DIR}/prerm @ONLY)
|
||||
configure_file(packaging/rocm-opencl.rpm_post ${BUILD_DIR}/rpm_post @ONLY)
|
||||
configure_file(packaging/rocm-opencl.rpm_postun ${BUILD_DIR}/rpm_postun @ONLY)
|
||||
add_custom_target(pkg_rocm_opencl COMMAND ${CMAKE_COMMAND} .
|
||||
COMMAND rm -rf *.deb *.rpm *.tar.gz
|
||||
COMMAND make package
|
||||
COMMAND cp *.deb ${PROJECT_BINARY_DIR}
|
||||
COMMAND cp *.rpm ${PROJECT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${BUILD_DIR}
|
||||
DEPENDS amdocl64 OpenCL)
|
||||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "1")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "2")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "0")
|
||||
# Package: rocm-opencl-dev
|
||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/rocm-opencl-dev)
|
||||
configure_file(packaging/rocm-opencl-dev.txt ${BUILD_DIR}/CMakeLists.txt @ONLY)
|
||||
add_custom_target(pkg_rocm_opencl_dev COMMAND ${CMAKE_COMMAND} .
|
||||
COMMAND rm -rf *.deb *.rpm *.tar.gz
|
||||
COMMAND make package
|
||||
COMMAND cp *.deb ${PROJECT_BINARY_DIR}
|
||||
COMMAND cp *.rpm ${PROJECT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${BUILD_DIR}
|
||||
DEPENDS amdocl64 OpenCL)
|
||||
|
||||
# Debian CPACK variables
|
||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||
# Package: all
|
||||
if(POLICY CMP0037)
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
endif()
|
||||
file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/fixnames
|
||||
CONTENT "pwd; for i in *.deb; do mv \"\$i\" \"\${i/.deb/-${OPENCL_VERSION_GITHASH}-amd64.deb}\" ; done
|
||||
for i in *.rpm ; do mv \"\$i\" \"\${i/.rpm/-${OPENCL_VERSION_GITHASH}.x86_64.rpm}\" ; done
|
||||
")
|
||||
add_custom_target(package
|
||||
COMMAND bash ${PROJECT_BINARY_DIR}/fixnames
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS pkg_rocm_opencl pkg_rocm_opencl_dev)
|
||||
if(POLICY CMP0037)
|
||||
cmake_policy(POP)
|
||||
endif()
|
||||
|
||||
set(CPACK_DEBIAN_MAIN_FILE_NAME "rocm-opencl-1.2.0.deb")
|
||||
set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "rocm-opencl")
|
||||
set(CPACK_DEBIAN_MAIN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/prerm")
|
||||
|
||||
set(CPACK_DEBIAN_DEV_FILE_NAME "rocm-opencl-dev-1.2.0.deb")
|
||||
set(CPACK_DEBIAN_DEV_PACKAGE_NAME "rocm-opencl-dev")
|
||||
set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "rocm-opencl")
|
||||
|
||||
# RPM CPACK variables
|
||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
|
||||
set(CPACK_RPM_MAIN_FILE_NAME "rocm-opencl-1.2.0.rpm")
|
||||
set(CPACK_RPM_MAIN_PACKAGE_NAME "rocm-opencl")
|
||||
set(CPACK_RPM_MAIN_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post")
|
||||
set(CPACK_RPM_MAIN_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun")
|
||||
|
||||
set(CPACK_RPM_DEV_FILE_NAME "rocm-opencl-devel-1.2.0.rpm")
|
||||
set(CPACK_RPM_DEV_PACKAGE_NAME "rocm-opencl-devel")
|
||||
set(CPACK_RPM_DEV_PACKAGE_DEPENDS "rocm-opencl")
|
||||
|
||||
set(CPACK_COMPONENTS_ALL MAIN DEV)
|
||||
include(CPack)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
cmake_minimum_required(VERSION 3.5.1)
|
||||
project(rocm-opencl-dev)
|
||||
|
||||
install(DIRECTORY @opencl_SOURCE_DIR@/khronos/headers/opencl2.2/CL
|
||||
DESTINATION include
|
||||
USE_SOURCE_PERMISSIONS
|
||||
PATTERN cl_d3d10.h EXCLUDE
|
||||
PATTERN cl_d3d11.h EXCLUDE
|
||||
PATTERN cl_dx9_media_sharing.h EXCLUDE
|
||||
PATTERN cl_egl.h EXCLUDE)
|
||||
install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so DESTINATION lib)
|
||||
|
||||
#############################
|
||||
# Packaging steps
|
||||
#############################
|
||||
# Generic CPACK variables
|
||||
set(CPACK_GENERATOR "DEB;RPM")
|
||||
set(CPACK_PACKAGE_NAME "rocm-opencl-dev")
|
||||
set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.")
|
||||
set(CPACK_PACKAGE_VENDOR "AMD")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX @CPACK_PACKAGING_INSTALL_PREFIX@)
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenCL: Open Computing Language on ROCclr")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR @OPENCL_VERSION_MAJOR@)
|
||||
set(CPACK_PACKAGE_VERSION_MINOR @OPENCL_VERSION_MINOR@)
|
||||
set(CPACK_PACKAGE_VERSION_PATCH @OPENCL_VERSION_PATCH@)
|
||||
set(CPACK_PACKAGE_VERSION @OPENCL_VERSION_MAJOR@.@OPENCL_VERSION_MINOR@.@OPENCL_VERSION_PATCH@)
|
||||
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION})
|
||||
|
||||
# Debian CPACK variables
|
||||
set(CPACK_BINARY_DEB "ON")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "mesa-common-dev, rocm-opencl")
|
||||
|
||||
# RPM CPACK variables
|
||||
set(CPACK_BINARY_RPM "ON")
|
||||
set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "rocm-opencl")
|
||||
|
||||
include(CPack)
|
||||
@@ -3,7 +3,7 @@
|
||||
set -e
|
||||
|
||||
do_ldconfig() {
|
||||
echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
|
||||
echo /opt/rocm/opencl/lib > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
|
||||
mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd)
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
|
||||
echo /opt/rocm/opencl/lib > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
|
||||
mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd)
|
||||
@@ -0,0 +1,38 @@
|
||||
cmake_minimum_required(VERSION 3.5.1)
|
||||
project(rocm-opencl)
|
||||
|
||||
install(FILES @PROJECT_BINARY_DIR@/bin/clinfo DESTINATION bin)
|
||||
install(FILES @PROJECT_BINARY_DIR@/lib/libamdocl64.so DESTINATION lib)
|
||||
install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so.@OPENCL_LIB_VERSION_MAJOR@ DESTINATION lib)
|
||||
install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so.@OPENCL_LIB_VERSION_STRING@ DESTINATION lib)
|
||||
|
||||
#############################
|
||||
# Packaging steps
|
||||
#############################
|
||||
# Generic CPACK variables
|
||||
set(CPACK_GENERATOR "DEB;RPM")
|
||||
set(CPACK_PACKAGE_NAME "rocm-opencl")
|
||||
set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.")
|
||||
set(CPACK_PACKAGE_VENDOR "AMD")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX @CPACK_PACKAGING_INSTALL_PREFIX@)
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenCL: Open Computing Language on ROCclr")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR @OPENCL_VERSION_MAJOR@)
|
||||
set(CPACK_PACKAGE_VERSION_MINOR @OPENCL_VERSION_MINOR@)
|
||||
set(CPACK_PACKAGE_VERSION_PATCH @OPENCL_VERSION_PATCH@)
|
||||
set(CPACK_PACKAGE_VERSION @OPENCL_VERSION_MAJOR@.@OPENCL_VERSION_MINOR@.@OPENCL_VERSION_PATCH@)
|
||||
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION})
|
||||
|
||||
# Debian CPACK variables
|
||||
set(CPACK_BINARY_DEB "ON")
|
||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/postinst;${PROJECT_BINARY_DIR}/prerm")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libelf-dev, comgr")
|
||||
|
||||
# RPM CPACK variables
|
||||
set(CPACK_BINARY_RPM "ON")
|
||||
set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/rpm_post")
|
||||
set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/rpm_postun")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "comgr")
|
||||
|
||||
include(CPack)
|
||||
Referência em uma Nova Issue
Bloquear um usuário