EAPI=8 PYTHON_COMPAT=( python3_{11..14} ) inherit cmake python-single-r1 DESCRIPTION="ROCm GPU performance analysis SDK and profiling tools" HOMEPAGE="https://github.com/ROCm/rocm-systems/tree/develop/projects/rocprofiler-sdk" FMT_COMMIT="0bffed89579ac8a210379fd640569e4b75fe28c8" GLOG_COMMIT="34b8da6496aec6a98277808701cfa834fae9801f" PTL_COMMIT="48df41625430d27ce43cf197fd467a8dda87cb45" YAML_CPP_COMMIT="1d8ca1f35eb3a9c9142462b28282a848e5d29a91" CEREAL_COMMIT="e736e75d9d8cd4cc01614f21097f185dc2c6a6bc" PERFETTO_COMMIT="eb5ef24c58d13cec289d733d03f0f3f0ed321b12" ELFIO_COMMIT="8ae6cec5d60495822ecd57d736f66149da9b1830" JSON_COMMIT="e41905fcb0938a7502d25ea5242c6b41396e21b0" PYBIND11_COMMIT="914c06fb252b6cc3727d0eedab6736e88a3fcb01" GOTCHA_COMMIT="b944da10ff9b3364ef2e4b12e02cb2464e05dd48" OTF2_V="3.0.3" SRC_URI=" https://github.com/ROCm/rocm-systems/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-systems-${PV}.tar.gz https://github.com/fmtlib/fmt/archive/${FMT_COMMIT}.tar.gz -> rocprofiler-sdk-fmt-${FMT_COMMIT}.tar.gz https://github.com/google/glog/archive/${GLOG_COMMIT}.tar.gz -> rocprofiler-sdk-glog-${GLOG_COMMIT}.tar.gz https://github.com/jrmadsen/PTL/archive/${PTL_COMMIT}.tar.gz -> rocprofiler-sdk-ptl-${PTL_COMMIT}.tar.gz https://github.com/jbeder/yaml-cpp/archive/${YAML_CPP_COMMIT}.tar.gz -> rocprofiler-sdk-yaml-cpp-${YAML_CPP_COMMIT}.tar.gz https://github.com/jrmadsen/cereal/archive/${CEREAL_COMMIT}.tar.gz -> rocprofiler-sdk-cereal-${CEREAL_COMMIT}.tar.gz https://github.com/google/perfetto/archive/${PERFETTO_COMMIT}.tar.gz -> rocprofiler-sdk-perfetto-${PERFETTO_COMMIT}.tar.gz https://github.com/serge1/ELFIO/archive/${ELFIO_COMMIT}.tar.gz -> rocprofiler-sdk-elfio-${ELFIO_COMMIT}.tar.gz https://github.com/nlohmann/json/archive/${JSON_COMMIT}.tar.gz -> rocprofiler-sdk-json-${JSON_COMMIT}.tar.gz https://github.com/pybind/pybind11/archive/${PYBIND11_COMMIT}.tar.gz -> rocprofiler-sdk-pybind11-${PYBIND11_COMMIT}.tar.gz https://github.com/ROCm/GOTCHA/archive/${GOTCHA_COMMIT}.tar.gz -> rocprofiler-sdk-gotcha-${GOTCHA_COMMIT}.tar.gz https://perftools.pages.jsc.fz-juelich.de/cicd/otf2/tags/otf2-${OTF2_V}/otf2-${OTF2_V}.tar.gz -> rocprofiler-sdk-otf2-${OTF2_V}.tar.gz " LICENSE="MIT" SLOT="0/$(ver_cut 1-2)" KEYWORDS="~amd64" IUSE="test" REQUIRED_USE="${PYTHON_REQUIRED_USE}" RESTRICT="!test? ( test )" S="${WORKDIR}/rocm-systems-rocm-${PV}/projects/rocprofiler-sdk" DEPEND=" ${PYTHON_DEPS} >=dev-libs/rocm-core-${PV}:= dev-libs/rocm-comgr:${SLOT} dev-libs/rocr-runtime:${SLOT} dev-libs/roct-thunk-interface:${SLOT} dev-libs/hsa-amd-aqlprofile:${SLOT} dev-util/hip:${SLOT} >=dev-util/rocprofiler-register-${PV} dev-libs/elfutils dev-db/sqlite sys-process/numactl x11-libs/libdrm " RDEPEND="${DEPEND}" BDEPEND=" ${PYTHON_DEPS} virtual/pkgconfig " pkg_setup() { python-single-r1_pkg_setup } src_prepare() { rm -rf external/fmt external/glog external/ptl external/yaml-cpp \ external/cereal external/perfetto external/elfio external/json \ external/pybind11 external/gotcha || die ln -s "${WORKDIR}/fmt-${FMT_COMMIT}" external/fmt || die ln -s "${WORKDIR}/glog-${GLOG_COMMIT}" external/glog || die ln -s "${WORKDIR}/PTL-${PTL_COMMIT}" external/ptl || die ln -s "${WORKDIR}/yaml-cpp-${YAML_CPP_COMMIT}" external/yaml-cpp || die ln -s "${WORKDIR}/cereal-${CEREAL_COMMIT}" external/cereal || die ln -s "${WORKDIR}/perfetto-${PERFETTO_COMMIT}" external/perfetto || die ln -s "${WORKDIR}/ELFIO-${ELFIO_COMMIT}" external/elfio || die ln -s "${WORKDIR}/json-${JSON_COMMIT}" external/json || die ln -s "${WORKDIR}/pybind11-${PYBIND11_COMMIT}" external/pybind11 || die ln -s "${WORKDIR}/GOTCHA-${GOTCHA_COMMIT}" external/gotcha || die cmake_src_prepare sed -e '/set(CMAKE_INSTALL_LIBDIR "lib")/d' \ -e 's#${PROJECT_BINARY_DIR}/lib#${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}#g' \ -e 's#../lib#../${CMAKE_INSTALL_LIBDIR}#g' \ -i CMakeLists.txt || die sed -e '/include(rocprofiler_config_packaging)/d' -i CMakeLists.txt || die sed -e '/#define ELFTYPES_H/a#include ' \ -i external/elfio/elfio/elf_types.hpp || die sed -e '/#include "yaml-cpp\/null.h"/i#include ' \ -i external/yaml-cpp/src/emitterutils.cpp || die sed -e '/#include /i#include ' \ -i source/lib/rocprofiler-sdk/counters/metrics.cpp || die sed -e '/#include /i#include ' \ -i source/lib/rocprofiler-sdk-rocpd/sql.cpp || die sed -e '/#include "lib\/att-tool\/util.hpp"/a#include ' \ -i source/lib/att-tool/att_lib_wrapper.hpp || die # Replace OTF2 FetchContent with pre-fetched source sed -e '/fetchcontent_declare/,/fetchcontent_makeavailable/d' \ -e '/FETCHCONTENT_BASE_DIR/d' \ -e '/cmake_policy(SET CMP0135/d' \ -e 's|include(FetchContent)|# FetchContent replaced by ebuild|' \ -i external/otf2/CMakeLists.txt || die } src_configure() { local mycmakeargs=( -DROCM_PATH="${EPREFIX}/usr" -DROCPROFILER_BUILD_TESTS=$(usex test) -DROCPROFILER_BUILD_SAMPLES=OFF -DROCPROFILER_BUILD_BENCHMARK=OFF -DROCPROFILER_BUILD_DOCS=OFF -DROCPROFILER_BUILD_GHC_FS=OFF -DROCPROFILER_BUILD_FMT=ON -DROCPROFILER_BUILD_GLOG=ON -DROCPROFILER_BUILD_SQLITE3=OFF -DROCPROFILER_BUILD_PYBIND11=ON -DROCPROFILER_BUILD_GOTCHA=ON -DROCPROFILER_PYTHON_VERSIONS="${EPYTHON#python}" -DOTF2_VERSION="${OTF2_V}" -Dotf2-source_SOURCE_DIR="${WORKDIR}/otf2-${OTF2_V}" ) cmake_src_configure }