diff --git a/dev-libs/rocr-runtime/Manifest b/dev-libs/rocr-runtime/Manifest index dc4ec59783042..b4df296c78504 100644 --- a/dev-libs/rocr-runtime/Manifest +++ b/dev-libs/rocr-runtime/Manifest @@ -5,4 +5,4 @@ DIST rocr-runtime-5.5.1.tar.gz 816175 BLAKE2B e588d98cbd0d9a753b950ba676d6cddeed DIST rocr-runtime-5.7.1.tar.gz 832009 BLAKE2B 67e4a64ee03b1f6edc43923c7ac44113ab58f78b032dc0a01952b2dd5b2ca37404044811effb9c8d83002ac4ea344a5d95ac62f3c66012bff2884ef55285cdb5 SHA512 a6547a104303032244d17b662a3eda48039732c215debb6178c0af8842c01c60f80989793420c101bd554e58332d215205da0c228dfc25538c56499f47dc6832 DIST rocr-runtime-6.1.1.tar.gz 903611 BLAKE2B 175e7267bfd9d70fb805135e765004cf2b43b2d66354f0cef857d417c8dac4ce7638ec1b90a1088324aa5f90ed8354c66b56846115368d68d622a215350d84dd SHA512 5e6e28dee29ef9df9d617f56038b2e52022738d5510833cd8e1738defe1049d0a957db4d9f63bbf55d8efca3a4ea349b95919dd1b6b35b9814ebba575a67af57 DIST rocr-runtime-6.1.2.tar.gz 903633 BLAKE2B 058492c6c37bb80e8cdb29752f3f1404ac88108dcfd5137042e4fdaff521db01d64bd14bdcbed9e53b8984f8bbb22b126f1a798bd064c393b5bcf76c1d3311ca SHA512 2893aff72a5fbf03bfde67ab64fcf00f4e10b5e5b11ff4617e94ae0c019a24a9b80601d8629d4e119e6a4957dc0aaf03d645111063979af60090fe3b232a477e -DIST rocr-runtime-6.2.4.tar.gz 959982 BLAKE2B a4cc3960c7e559c7c1837e009c998784832c861ca59c0cbf9388c8ae081670b4e45c4e5b032dbd17a4c2efe8708a1330c9ff66c814196e29df5c7a6735a6d3e9 SHA512 cdd84ddf2120f494eec282b78d0858970e0603ea096213f25731af5a97f652d058ff93122bb3a0813c45cb87f625af6f33c2c108d8fb5db63d62674b13e40c71 +DIST rocr-runtime-6.3.0.tar.gz 2258605 BLAKE2B 53b43a8bc4a327c2138e39db20f5217b2def6866d1b52e48017c41e6c3c8541e6bdce76f5a7669cdffccfb34a4cfa863e56e0ce4058d23c5f38d9d0900903751 SHA512 451e74d88875b8d0a1f21d95c543fd93610d966e69258b50fe4b8796381c58f5ea381384e199e5bcf01a80369a59e5a093d8f318fbe2ed1ca6a97dc915060f7a diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-ld-lld.patch b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-ld-lld.patch new file mode 100644 index 0000000000000..e35ee8c0e46ba --- /dev/null +++ b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-ld-lld.patch @@ -0,0 +1,17 @@ +Fix "symbol not defined" when linking with ld.lld >= 17 +https://github.com/ROCm/ROCR-Runtime/issues/204 +--- a/hsacore.so.def ++++ b/hsacore.so.def +@@ -247,12 +247,6 @@ global: + hsa_amd_vmem_retain_alloc_handle; + hsa_amd_vmem_get_alloc_properties_from_handle; + hsa_amd_agent_set_async_scratch_limit; +- hsa_tools_scratch_event_alloc_start; +- hsa_tools_scratch_event_alloc_end; +- hsa_tools_scratch_event_free_start; +- hsa_tools_scratch_event_free_end; +- hsa_tools_scratch_event_async_reclaim_start; +- hsa_tools_scratch_event_async_reclaim_end; + hsa_ven_amd_pcs_iterate_configuration; + hsa_ven_amd_pcs_create; + hsa_ven_amd_pcs_create_from_id; diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-no-aqlprofiler.patch b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-no-aqlprofiler.patch new file mode 100644 index 0000000000000..018c3298ed8dc --- /dev/null +++ b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.0-no-aqlprofiler.patch @@ -0,0 +1,27 @@ +libhsa-amd-aqlprofile64 library is not packaged +Bug: https://github.com/ROCm/ROCm/issues/1781 +--- a/core/runtime/amd_gpu_agent.cpp ++++ b/core/runtime/amd_gpu_agent.cpp +@@ -1333,11 +1333,6 @@ hsa_status_t GpuAgent::GetInfo(hsa_agent_info_t attribute, void* value) const { + setFlag(HSA_EXTENSION_AMD_PC_SAMPLING); + } + +- if (os::LibHandle lib = os::LoadLib(kAqlProfileLib)) { +- os::CloseLib(lib); +- setFlag(HSA_EXTENSION_AMD_AQLPROFILE); +- } +- + setFlag(HSA_EXTENSION_AMD_PROFILER); + + break; +--- a/core/runtime/hsa.cpp ++++ b/core/runtime/hsa.cpp +@@ -490,7 +490,7 @@ hsa_status_t hsa_system_get_major_extension_table(uint16_t extension, uint16_t v + return HSA_STATUS_SUCCESS; + } + +- if (extension == HSA_EXTENSION_AMD_AQLPROFILE) { ++ if (0) { + if (version_major != hsa_ven_amd_aqlprofile_VERSION_MAJOR) { + debug_print("aqlprofile API incompatible ver %d, current ver %d\n", + version_major, hsa_ven_amd_aqlprofile_VERSION_MAJOR); diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-6.2.2-gcc15-stdint.patch b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.2-gcc15-stdint.patch new file mode 100644 index 0000000000000..21691ae0c1c08 --- /dev/null +++ b/dev-libs/rocr-runtime/files/rocr-runtime-6.2.2-gcc15-stdint.patch @@ -0,0 +1,11 @@ +https://github.com/ROCm/ROCR-Runtime/issues/227 +--- a/core/inc/amd_elf_image.hpp ++++ b/core/inc/amd_elf_image.hpp +@@ -47,6 +47,7 @@ + #include + #include + #include ++#include + + namespace rocr { + namespace amd { diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-musl.patch b/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-musl.patch new file mode 100644 index 0000000000000..75cd032ce3735 --- /dev/null +++ b/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-musl.patch @@ -0,0 +1,107 @@ +--- a/runtime/hsa-ext-finalize/CMakeLists.txt ++++ b/runtime/hsa-ext-finalize/CMakeLists.txt +@@ -101,6 +101,18 @@ if( NOT DEFINED OPEN_SOURCE_DIR ) + set ( OPEN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.." ) + endif() + ++## Check for _GNU_SOURCE pthread extensions ++set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) ++CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++unset(CMAKE_REQUIRED_DEFINITIONS) ++if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++ target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++endif() ++if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++ target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++endif() ++ + ## ------------------------- Linux Compiler and Linker options ------------------------- + set ( CMAKE_CXX_FLAGS "-std=c++11 " ) + +--- a/runtime/hsa-runtime/CMakeLists.txt ++++ b/runtime/hsa-runtime/CMakeLists.txt +@@ -47,7 +47,7 @@ cmake_minimum_required ( VERSION 3.7 ) + ## Need an update to CMake 3.12 to remove this hack. See CMake policy change CMP0073. + unset ( hsa-runtime64_LIB_DEPENDS CACHE ) + +-set(CMAKE_VERBOSE_MAKEFILE ON) ++#_cmake_modify_IGNORE set(CMAKE_VERBOSE_MAKEFILE ON) + + ## Set core runtime module name and project name. + set ( CORE_RUNTIME_NAME "hsa-runtime64" ) +@@ -109,6 +109,18 @@ if ( HAVE_MEMFD_CREATE ) + target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_MEMFD_CREATE ) + endif() + ++## Check for _GNU_SOURCE pthread extensions ++set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) ++CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++unset(CMAKE_REQUIRED_DEFINITIONS) ++if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++ target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP ) ++endif() ++if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++ target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP ) ++endif() ++ + ## Set include directories for ROCr runtime + target_include_directories( ${CORE_RUNTIME_TARGET} + PUBLIC +--- a/runtime/hsa-runtime/core/util/lnx/os_linux.cpp ++++ b/runtime/hsa-runtime/core/util/lnx/os_linux.cpp +@@ -137,12 +137,14 @@ class os_thread { + for (int i = 0; i < cores; i++) { + CPU_SET_S(i, CPU_ALLOC_SIZE(cores), cpuset); + } ++#ifdef HAVE_PTHREAD_ATTR_SETAFFINITY_NP + err = pthread_attr_setaffinity_np(&attrib, CPU_ALLOC_SIZE(cores), cpuset); + CPU_FREE(cpuset); + if (err != 0) { + fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err)); + return; + } ++#endif + } + + do { +@@ -165,6 +167,18 @@ class os_thread { + } + } while (stackSize < 20 * 1024 * 1024); + ++#ifndef HAVE_PTHREAD_ATTR_SETAFFINITY_NP ++ if (cores && cpuset) { ++ err = pthread_setaffinity_np(thread, CPU_ALLOC_SIZE(cores), cpuset); ++ CPU_FREE(cpuset); ++ if (err != 0) { ++ fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err)); ++ thread = 0; ++ return; ++ } ++ } ++#endif ++ + args.release(); + } + +@@ -655,18 +669,12 @@ SharedMutex CreateSharedMutex() { + return nullptr; + } + +-#ifdef __GLIBC__ ++#ifdef HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP + err = pthread_rwlockattr_setkind_np(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); + if (err != 0) { + fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); + return nullptr; + } +-#else +- err = pthread_rwlockattr_setkind(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); +- if (err != 0) { +- fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); +- return nullptr; +- } + #endif + + pthread_rwlock_t* lock = new pthread_rwlock_t; diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-use-system-hsakmt.patch b/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-use-system-hsakmt.patch new file mode 100644 index 0000000000000..06f6610a71f46 --- /dev/null +++ b/dev-libs/rocr-runtime/files/rocr-runtime-6.3.0-use-system-hsakmt.patch @@ -0,0 +1,20 @@ +libhsakmt is a part of dev-libs/roct-thunk-interface +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -96,11 +96,16 @@ if (HSA_DEP_ROCPROFILER_REGISTER) + string(APPEND CPACK_RPM_BINARY_PACKAGE_REQUIRES " rocprofiler-register") + endif() + ++if (BUILD_HSAKMT) + add_rocm_subdir(libhsakmt "${THUNK_DEFINITIONS}") + set_target_properties(hsakmt PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/archive" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/lib" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/runtime") ++else() ++ find_package(hsakmt REQUIRED) ++ add_library(hsakmt ALIAS hsakmt::hsakmt) ++endif() + + if (BUILD_ROCR) + add_rocm_subdir(runtime/hsa-runtime "${ROCR_DEFINITIONS}") diff --git a/dev-libs/rocr-runtime/rocr-runtime-6.1.2.ebuild b/dev-libs/rocr-runtime/rocr-runtime-6.1.2.ebuild index d7000ea9ca923..4caff8c750f22 100644 --- a/dev-libs/rocr-runtime/rocr-runtime-6.1.2.ebuild +++ b/dev-libs/rocr-runtime/rocr-runtime-6.1.2.ebuild @@ -33,8 +33,8 @@ IUSE="debug" COMMON_DEPEND="dev-libs/elfutils x11-libs/libdrm" DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} + dev-libs/roct-thunk-interface:${SLOT} + dev-libs/rocm-device-libs:${SLOT} $(llvm_gen_dep ' llvm-core/clang:${LLVM_SLOT}= llvm-core/lld:${LLVM_SLOT}= diff --git a/dev-libs/rocr-runtime/rocr-runtime-6.2.4.ebuild b/dev-libs/rocr-runtime/rocr-runtime-6.3.0.ebuild similarity index 71% rename from dev-libs/rocr-runtime/rocr-runtime-6.2.4.ebuild rename to dev-libs/rocr-runtime/rocr-runtime-6.3.0.ebuild index dfbf8f00ebddf..0fe1225bfb408 100644 --- a/dev-libs/rocr-runtime/rocr-runtime-6.2.4.ebuild +++ b/dev-libs/rocr-runtime/rocr-runtime-6.3.0.ebuild @@ -3,26 +3,22 @@ EAPI=8 -LLVM_COMPAT=( 18 ) +LLVM_COMPAT=( 19 ) inherit cmake flag-o-matic llvm-r1 if [[ ${PV} == *9999 ]] ; then EGIT_REPO_URI="https://github.com/ROCm/ROCR-Runtime/" inherit git-r3 - S="${WORKDIR}/${P}/src" + S="${WORKDIR}/${P}" else SRC_URI="https://github.com/ROCm/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/src" + S="${WORKDIR}/ROCR-Runtime-rocm-${PV}" KEYWORDS="~amd64" fi DESCRIPTION="Radeon Open Compute Runtime" HOMEPAGE="https://github.com/ROCm/ROCR-Runtime" -PATCHES=( - "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" - "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch" -) LICENSE="MIT" SLOT="0/$(ver_cut 1-2)" @@ -31,8 +27,8 @@ IUSE="debug" COMMON_DEPEND="dev-libs/elfutils x11-libs/libdrm" DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} + dev-libs/roct-thunk-interface:${SLOT} + dev-libs/rocm-device-libs:${SLOT} $(llvm_gen_dep ' llvm-core/clang:${LLVM_SLOT}= llvm-core/lld:${LLVM_SLOT}= @@ -42,10 +38,21 @@ RDEPEND="${DEPEND}" BDEPEND="app-editors/vim-core" # vim-core is needed for "xxd" +PATCHES=( + "${FILESDIR}/${PN}-6.3.0-use-system-hsakmt.patch" + "${FILESDIR}/${PN}-6.3.0-musl.patch" +) + src_prepare() { + cd "${S}/runtime/hsa-runtime" || die + eapply "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" + eapply "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch" + eapply "${FILESDIR}/${PN}-6.2.2-gcc15-stdint.patch" + # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... sed -e "s:-O2:--rocm-path=${EPREFIX}/usr/lib/ -O2:" -i image/blit_src/CMakeLists.txt || die + cd "${S}" || die cmake_src_prepare } @@ -56,5 +63,6 @@ src_configure() { filter-lto use debug || append-cxxflags "-DNDEBUG" + cmake_src_configure }