ede6007f9b
* Testing and CI support for Ubuntu 22.04 * Fixes for ROCm - Jammy does not have ROCm installers * Name, timeout, and python updates - renamed ubuntu-jammy-external.yml to ubuntu-jammy.yml - increased all 5 minute timeouts to 10 minutes - include python 3.10 in testing * Update dyninst to remove interposed definition of _r_debug * Rebuild Dyninst + test install script * Revert container change * git safe directory * pushd -> cd * fix MPI include * Fix testing step * OMPI_ALLOW_RUN_AS_ROOT * Test script changes * Fix mismatched malloc / delete[] * Jammy workflow tweaks * CPack tweak for boost deb deps * pthread_mutex_gotcha config returns when not enabled * fix echoing config in CI * USE_CLANG_OMP - option to disable using LLVM OpenMP when building OpenMP test executables - Jammy workflow sets USE_CLANG_OMP=OFF * Dyninst submodule boost download - updated containers workflow to include jammy - updated workflow to use ci * Updates to workflows + replace test-install.sh - test-install.sh in this branch was replaced with one in main branch * Expand jammy test-install.sh args * Fix openmp-cg-sampling-duration test * update timemory submodule - use-after-free violation in popen::pclose * revert some tweaks to sampling-duration test * Fix env of test-install.sh * cmake format * jammy bash * CPack install for jammy * formatting workflow action version bump * Update timemory submodule - libunwind submodule via timemory sets SOVERSION to 99 to avoid ABI conflicts with v8 * Fix help menu for omnitrace-sample * Support other boolean forms in test-install.sh * Update docker files and build-docker.sh - consolidated cases in build-docker.sh - support rocm version of 0.0 (no rocm install) - support rocm v5.3 - updated centos handling * update opensuse actions/checkout version * Tweaks to ubuntu-focal testing - actions/checkout@v3 - use test-install script * update cpack - ubuntu 22.04 - rocm 5.3 - rename os matrix field to os-version - remove CI_ROCM_VERSION (no longer necessary) - remove default-rocm-version matrix field (no longer necessary) - CentOS packaging * fix argparsing and omnitrace-sample tests in install-tests.sh * focal rocm test install workflow fix * Fix omnitrace-sample build * Dockerfile.centos + build-docker.sh updates * Update actions/upload-artifact version * Dockerfile.ubuntu: install rocm-device-libs * Refactor cpack * fix cpack if quotes * Dockerfile.ubuntu rocm < 5 installs rocm-dev * build-release.sh defaults to boost version 1.79.0
224 regels
8.4 KiB
CMake
224 regels
8.4 KiB
CMake
# configure packaging
|
|
|
|
function(omnitrace_parse_release)
|
|
if(EXISTS /etc/lsb-release AND NOT IS_DIRECTORY /etc/lsb-release)
|
|
file(READ /etc/lsb-release _LSB_RELEASE)
|
|
if(_LSB_RELEASE)
|
|
string(REGEX
|
|
REPLACE "DISTRIB_ID=(.*)\nDISTRIB_RELEASE=(.*)\nDISTRIB_CODENAME=.*"
|
|
"\\1-\\2" _SYSTEM_NAME "${_LSB_RELEASE}")
|
|
endif()
|
|
elseif(EXISTS /etc/os-release AND NOT IS_DIRECTORY /etc/os-release)
|
|
file(READ /etc/os-release _OS_RELEASE)
|
|
if(_OS_RELEASE)
|
|
string(REPLACE "\"" "" _OS_RELEASE "${_OS_RELEASE}")
|
|
string(REPLACE "-" " " _OS_RELEASE "${_OS_RELEASE}")
|
|
string(REGEX REPLACE "NAME=.*\nVERSION=([0-9\.]+).*\nID=([a-z]+).*" "\\2-\\1"
|
|
_SYSTEM_NAME "${_OS_RELEASE}")
|
|
endif()
|
|
endif()
|
|
string(TOLOWER "${_SYSTEM_NAME}" _SYSTEM_NAME)
|
|
if(NOT _SYSTEM_NAME)
|
|
set(_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
|
|
endif()
|
|
set(_SYSTEM_NAME
|
|
"${_SYSTEM_NAME}"
|
|
PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
# parse either /etc/lsb-release or /etc/os-release
|
|
omnitrace_parse_release()
|
|
|
|
if(NOT _SYSTEM_NAME)
|
|
set(_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
|
|
endif()
|
|
|
|
# Add packaging directives
|
|
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
|
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
|
"Runtime instrumentation and binary rewriting for Perfetto via Dyninst")
|
|
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
|
|
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
|
|
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
|
|
set(CPACK_PACKAGE_CONTACT "jonathan.madsen@amd.com")
|
|
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
|
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
|
|
set(OMNITRACE_CPACK_SYSTEM_NAME
|
|
"${_SYSTEM_NAME}"
|
|
CACHE STRING "System name, e.g. Linux or Ubuntu-18.04")
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "")
|
|
|
|
if(OMNITRACE_USE_HIP
|
|
OR OMNITRACE_USE_ROCTRACER
|
|
OR OMNITRACE_USE_ROCM_SMI)
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX
|
|
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-ROCm-${ROCmVersion_NUMERIC_VERSION}")
|
|
endif()
|
|
|
|
if(OMNITRACE_USE_PAPI)
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "${OMNITRACE_CPACK_PACKAGE_SUFFIX}-PAPI")
|
|
endif()
|
|
|
|
if(OMNITRACE_USE_OMPT)
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "${OMNITRACE_CPACK_PACKAGE_SUFFIX}-OMPT")
|
|
endif()
|
|
|
|
if(OMNITRACE_USE_MPI)
|
|
set(VALID_MPI_IMPLS "mpich" "openmpi")
|
|
if("${MPI_C_COMPILER_INCLUDE_DIRS};${MPI_C_HEADER_DIR}" MATCHES "openmpi")
|
|
set(OMNITRACE_MPI_IMPL "openmpi")
|
|
elseif("${MPI_C_COMPILER_INCLUDE_DIRS};${MPI_C_HEADER_DIR}" MATCHES "mpich")
|
|
set(OMNITRACE_MPI_IMPL "mpich")
|
|
else()
|
|
message(
|
|
WARNING
|
|
"MPI implementation could not be determined. Please set OMNITRACE_MPI_IMPL to one of the following for CPack: ${VALID_MPI_IMPLS}"
|
|
)
|
|
endif()
|
|
if(OMNITRACE_MPI_IMPL AND NOT "${OMNITRACE_MPI_IMPL}" IN_LIST VALID_MPI_IMPLS)
|
|
message(
|
|
SEND_ERROR
|
|
"Invalid OMNITRACE_MPI_IMPL (${OMNITRACE_MPI_IMPL}). Should be one of: ${VALID_MPI_IMPLS}"
|
|
)
|
|
else()
|
|
omnitrace_add_feature(OMNITRACE_MPI_IMPL
|
|
"MPI implementation for CPack DEBIAN depends")
|
|
endif()
|
|
|
|
if("${OMNITRACE_MPI_IMPL}" STREQUAL "openmpi")
|
|
set(OMNITRACE_MPI_IMPL_UPPER "OpenMPI")
|
|
elseif("${OMNITRACE_MPI_IMPL}" STREQUAL "mpich")
|
|
set(OMNITRACE_MPI_IMPL_UPPER "MPICH")
|
|
else()
|
|
set(OMNITRACE_MPI_IMPL_UPPER "MPI")
|
|
endif()
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX
|
|
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-${OMNITRACE_MPI_IMPL_UPPER}")
|
|
endif()
|
|
|
|
if(OMNITRACE_USE_PYTHON)
|
|
set(_OMNITRACE_PYTHON_NAME "Python3")
|
|
foreach(_VER ${OMNITRACE_PYTHON_VERSIONS})
|
|
if("${_VER}" VERSION_LESS 3.0.0)
|
|
set(_OMNITRACE_PYTHON_NAME "Python")
|
|
endif()
|
|
endforeach()
|
|
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "${OMNITRACE_CPACK_PACKAGE_SUFFIX}-Python3")
|
|
endif()
|
|
|
|
set(CPACK_PACKAGE_FILE_NAME
|
|
"${CPACK_PACKAGE_NAME}-${OMNITRACE_VERSION}-${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}"
|
|
)
|
|
if(DEFINED ENV{CPACK_PACKAGE_FILE_NAME})
|
|
set(CPACK_PACKAGE_FILE_NAME $ENV{CPACK_PACKAGE_FILE_NAME})
|
|
endif()
|
|
|
|
set(OMNITRACE_PACKAGE_FILE_NAME
|
|
${CPACK_PACKAGE_NAME}-${OMNITRACE_VERSION}-${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}
|
|
)
|
|
omnitrace_add_feature(OMNITRACE_PACKAGE_FILE_NAME "CPack filename")
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
#
|
|
# Debian package specific variables
|
|
#
|
|
# -------------------------------------------------------------------------------------- #
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/AMDResearch/omnitrace")
|
|
set(CPACK_DEBIAN_PACKAGE_RELEASE
|
|
"${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}")
|
|
string(REGEX REPLACE "([a-zA-Z])-([0-9])" "\\1\\2" CPACK_DEBIAN_PACKAGE_RELEASE
|
|
"${CPACK_DEBIAN_PACKAGE_RELEASE}")
|
|
string(REPLACE "-" "~" CPACK_DEBIAN_PACKAGE_RELEASE "${CPACK_DEBIAN_PACKAGE_RELEASE}")
|
|
if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
|
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
|
endif()
|
|
|
|
set(_DEBIAN_PACKAGE_DEPENDS "")
|
|
if(DYNINST_USE_OpenMP)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS libgomp1)
|
|
endif()
|
|
if(OMNITRACE_USE_PAPI AND NOT OMNITRACE_BUILD_PAPI)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS libpapi-dev libpfm4)
|
|
endif()
|
|
if(NOT OMNITRACE_BUILD_DYNINST)
|
|
if(NOT DYNINST_BUILD_BOOST)
|
|
foreach(_BOOST_COMPONENT atomic system thread date-time filesystem timer)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS
|
|
"libboost-${_BOOST_COMPONENT}-dev (>= 1.67.0)")
|
|
endforeach()
|
|
endif()
|
|
if(NOT DYNINST_BUILD_TBB)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libtbb-dev (>= 2018.6)")
|
|
endif()
|
|
if(NOT DYNINST_BUILD_LIBIBERTY)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libiberty-dev (>= 20170913)")
|
|
endif()
|
|
endif()
|
|
if(ROCmVersion_FOUND)
|
|
set(_ROCPROFILER_SUFFIX " (>= 1.0.0.${ROCmVersion_NUMERIC_VERSION})")
|
|
set(_ROCTRACER_SUFFIX " (>= 1.0.0.${ROCmVersion_NUMERIC_VERSION})")
|
|
set(_ROCM_SMI_SUFFIX
|
|
" (>= ${ROCmVersion_MAJOR_VERSION}.0.0.${ROCmVersion_NUMERIC_VERSION})")
|
|
endif()
|
|
if(OMNITRACE_USE_ROCM_SMI)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "rocm-smi-lib${_ROCM_SMI_SUFFIX}")
|
|
endif()
|
|
if(OMNITRACE_USE_ROCTRACER)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "roctracer-dev${_ROCTRACER_SUFFIX}")
|
|
endif()
|
|
if(OMNITRACE_USE_ROCPROFILER)
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "rocprofiler-dev${_ROCPROFILER_SUFFIX}")
|
|
endif()
|
|
if(OMNITRACE_USE_MPI)
|
|
if("${OMNITRACE_MPI_IMPL}" STREQUAL "openmpi")
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libopenmpi-dev")
|
|
elseif("${OMNITRACE_MPI_IMPL}" STREQUAL "mpich")
|
|
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libmpich-dev")
|
|
endif()
|
|
endif()
|
|
string(REPLACE ";" ", " _DEBIAN_PACKAGE_DEPENDS "${_DEBIAN_PACKAGE_DEPENDS}")
|
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS
|
|
"${_DEBIAN_PACKAGE_DEPENDS}"
|
|
CACHE STRING "Debian package dependencies" FORCE)
|
|
omnitrace_add_feature(CPACK_DEBIAN_PACKAGE_DEPENDS "Debian package dependencies")
|
|
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
#
|
|
# RPM package specific variables
|
|
#
|
|
# -------------------------------------------------------------------------------------- #
|
|
|
|
if(DEFINED CPACK_PACKAGING_INSTALL_PREFIX)
|
|
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${CPACK_PACKAGING_INSTALL_PREFIX}")
|
|
endif()
|
|
|
|
set(CPACK_RPM_PACKAGE_RELEASE
|
|
"${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}")
|
|
string(REGEX REPLACE "([a-zA-Z])-([0-9])" "\\1\\2" CPACK_RPM_PACKAGE_RELEASE
|
|
"${CPACK_RPM_PACKAGE_RELEASE}")
|
|
string(REPLACE "-" "~" CPACK_RPM_PACKAGE_RELEASE "${CPACK_RPM_PACKAGE_RELEASE}")
|
|
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
|
|
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
|
|
endif()
|
|
|
|
# Get rpm distro
|
|
if(CPACK_RPM_PACKAGE_RELEASE)
|
|
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
|
endif()
|
|
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
#
|
|
# Prepare final version for the CPACK use
|
|
#
|
|
# -------------------------------------------------------------------------------------- #
|
|
|
|
set(CPACK_PACKAGE_VERSION
|
|
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
|
|
)
|
|
|
|
include(CPack)
|