commit:     5297819d6d04e8608d329a12afa05dd68ea4f10f
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 18 14:54:50 2023 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Thu Dec 14 15:01:47 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5297819d

dev-util/hip: include test suit.

The dev-util/hip upstream has separated its test cases into a full git
repository with an independent build system.  To run the test cases,
we have to call cmake twice in every src_* phase. I come up with a
wrapper to hack CMAKE_USE_DIR and BUILD_DIR values.

Ignore vulkan tests before someone could figure out how to properly
run them.

Reference: https://github.com/ROCm-Developer-Tools/HIP/issues/3292
Closes: https://github.com/gentoo/gentoo/pull/33906
Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>

 dev-util/hip/Manifest                              |  1 +
 ...test-5.7.0-rocm_agent_enumerator-location.patch | 15 +++++
 dev-util/hip/hip-5.7.1-r1.ebuild                   | 75 +++++++++++++++++++---
 3 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/dev-util/hip/Manifest b/dev-util/hip/Manifest
index d84cbf43fe2e..13df1e2aaa2d 100644
--- a/dev-util/hip/Manifest
+++ b/dev-util/hip/Manifest
@@ -4,6 +4,7 @@ DIST rocclr-5.1.3.tar.gz 618606 BLAKE2B 
02b7732ddd03c0883bee49c56466cd21c649159f
 DIST rocclr-5.3.3.tar.gz 625944 BLAKE2B 
0cdbc1415a355e1d56628834846aaa8587c9827eeea59f4312b788e868265dcb42197181fd5ef411416da2e11662c7f665f578aa750ab88c3a5405bcc58ee449
 SHA512 
3f85532cffc09c2ca8e7cd1770263d1c1a38633ed2bc5cfe62072e12a6f8f669db400519950718be31f6b77693d372e2ef905f06c7f02e126aa9ff7d2da97924
 DIST rocclr-5.4.3.tar.gz 640557 BLAKE2B 
9ab91bab7ffb06c9c0d1c2ae79533fccc597071dda289ac375e32eb2965c638a7029951d2a49d46eeead9d7d242fe3a0cedb3e444d877af1bbf0e2d801c91e11
 SHA512 
c1d1a2ca08c2d762a221c04d394469aa7aff46086151333b145e0db9a7c7eb3dbbf8b9693e50d816aa9a13c16b4ebacf5ff3d5d8ff3393a8a764728ef5172d3a
 DIST rocclr-5.5.1.tar.gz 634330 BLAKE2B 
e6383a6b6b09f274a944d66effd345e38a191ec73ee5c5240f8ec8bb62a4df97b80835ce57f8f78c3834602b9da425b49289b5c7cd7e4c7071147ff409c6a6c9
 SHA512 
4c12011d22a4f14d9e93250b2a38716eb973139afa1adbbbd51c0e0ed13c0b7c1f45a37c71ef937c5fdabf09e928d7913ca3332fc61b7a2c10d21421306a228f
+DIST rocm-5.7.0.tar.gz 845881 BLAKE2B 
08255edc1407e5ef85895336b11496319695318fce265565728ad75175b5e1dfab98f696fee2d27e60c48e862f721fad4c53118cc70b807353fff5f97ed72ac2
 SHA512 
72420e16c7cfe9687e030331838666dabaa43d686bdad1d109431e44db99070a2cf6dd64b59e3275019abedd6612f6008c798a79275e7225b6b122fb9f644660
 DIST rocm-clr-5.7.1.tar.gz 2008647 BLAKE2B 
3db0760d6f83504e60caf88a2dd5e0bc02c7db9d6f263ad0eb2cfc79aa0f88a3699c412844a0158a796d9d02e79660287e791edad787d814eefffea4fd2298b4
 SHA512 
d79323481d82fc02c12a32cdcc0d14437d512af023e7737db0387b7eecb27fe6e4ae7c71d6adce57932a04bb24c880440d9dc10aeb5af11a4f2ca64d44330965
 DIST rocm-hip-5.1.3.tar.gz 967696 BLAKE2B 
15cb52b5934b84acf515fe9c83b7c8982e00a23e20af933bdd2c4bc5b56fd42b08c8a08e840c85d2e0a8386d5a0e9c110504f68499989de1aaad00e9a5efcf43
 SHA512 
6b6fd6c12d73788df1711b12326b97fc7a184f319e0db114947b7967b75f2ee131f81e42e43a4981456b507221a6013133731120409f90214e13304299ccbc24
 DIST rocm-hip-5.3.3.tar.gz 1151858 BLAKE2B 
5f460b2078c850b3eb4414fcec4a6f951a3b282aa9828f77ba5d5adfdc0ee8d2e62c856e112a154c340daaf7dad49f4871412edd7b38f7fae2e6b17840ee144b
 SHA512 
e747cc10e78cd09009cac762f0e060be13f3447af7ec2a4a2889cbdc09cd76ecb1b5b58c89f09a3b45a8296c2c71e1c55baf113e58a5a12434af3de7168b8d87

diff --git 
a/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch 
b/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch
new file mode 100644
index 000000000000..1d967212ac9a
--- /dev/null
+++ b/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch
@@ -0,0 +1,15 @@
+In Gentoo rocm_agent_enumerator is installed by rocminfo and is in PATH.
+
+--- catch/CMakeLists.txt~      2023-11-18 13:56:08.000000000 +0800
++++ catch/CMakeLists.txt       2023-11-18 13:59:28.136170638 +0800
+@@ -182,9 +182,8 @@
+ # rocm_agent_enumerator
+ if(NOT DEFINED OFFLOAD_ARCH_STR
+    AND NOT DEFINED ENV{HCC_AMDGPU_TARGET}
+-   AND EXISTS "${ROCM_PATH}/bin/rocm_agent_enumerator"
+    AND HIP_PLATFORM STREQUAL "amd" AND UNIX)
+-    execute_process(COMMAND ${ROCM_PATH}/bin/rocm_agent_enumerator
++    execute_process(COMMAND rocm_agent_enumerator
+          OUTPUT_VARIABLE HIP_GPU_ARCH
+          RESULT_VARIABLE ROCM_AGENT_ENUM_RESULT)
+     # Trim out gfx000

diff --git a/dev-util/hip/hip-5.7.1-r1.ebuild b/dev-util/hip/hip-5.7.1-r1.ebuild
index 8eb15a833e66..2bc703093df9 100644
--- a/dev-util/hip/hip-5.7.1-r1.ebuild
+++ b/dev-util/hip/hip-5.7.1-r1.ebuild
@@ -5,21 +5,26 @@ EAPI=8
 
 DOCS_BUILDER="doxygen"
 DOCS_DEPEND="media-gfx/graphviz"
+ROCM_SKIP_GLOBALS=1
 
-inherit cmake docs llvm
+inherit cmake docs llvm rocm
 
 LLVM_MAX_SLOT=17
 
+TEST_PV=5.7.0 # No hip-test-5.7.1 release
+
 DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability"
 HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd";
 
SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz
 -> rocm-clr-${PV}.tar.gz
-       
https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-${PV}.tar.gz 
-> hip-${PV}.tar.gz"
+       
https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-${PV}.tar.gz 
-> hip-${PV}.tar.gz
+       test? ( 
https://github.com/ROCm-Developer-Tools/hip-tests/archive/refs/tags/rocm-${TEST_PV}.tar.gz
 )"
 
 KEYWORDS="~amd64"
 LICENSE="MIT"
 SLOT="0/$(ver_cut 1-2)"
 
-IUSE="debug"
+RESTRICT="!test? ( test )"
+IUSE="debug test"
 
 DEPEND="
        dev-util/hipcc
@@ -45,18 +50,35 @@ PATCHES=(
 
 S="${WORKDIR}/clr-rocm-${PV}/"
 
+hip_test_wrapper() {
+       local S="${WORKDIR}/hip-tests-rocm-${TEST_PV}/catch"
+       local CMAKE_USE_DIR="${S}"
+       local BUILD_DIR="${S}_build"
+       cd "${S}" || die
+       $@
+}
+
+src_prepare() {
+       # 
https://github.com/ROCm-Developer-Tools/HIP/commit/405d029422ba8bb6be5a233d5eebedd2ad2e8bd3
+       # 
https://github.com/ROCm-Developer-Tools/clr/commit/ab6d34ae773f4d151e04170c0f4e46c1135ddf3e
+       # Migrated to hip-test, but somehow the change is not applied to the 
tarball.
+       rm -rf "${WORKDIR}"/HIP-rocm-${PV}/tests || die
+       sed -e '/tests.*cmake/d' -i hipamd/CMakeLists.txt || die
+
+       cmake_src_prepare
+
+       if use test; then
+               
PATCHES=${FILESDIR}/hip-test-5.7.0-rocm_agent_enumerator-location.patch \
+                          hip_test_wrapper cmake_src_prepare
+       fi
+}
+
 src_configure() {
        use debug && CMAKE_BUILD_TYPE="Debug"
 
-       # TODO: Currently a GENTOO configuration is build,
-       # this is also used in the cmake configuration files
-       # which will be installed to find HIP;
-       # Other ROCm packages expect a "RELEASE" configuration,
-       # see "hipBLAS"
        local mycmakeargs=(
                -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")"
                -DCMAKE_BUILD_TYPE=${buildtype}
-               -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
                -DCMAKE_SKIP_RPATH=ON
                -DBUILD_HIPIFY_CLANG=OFF
                -DHIP_PLATFORM=amd
@@ -70,10 +92,45 @@ src_configure() {
        )
 
        cmake_src_configure
+
+       if use test; then
+               local mycmakeargs=(
+                       -DROCM_PATH="${BUILD_DIR}"/hipamd
+                       -DHIP_PLATFORM=amd
+               )
+               hip_test_wrapper cmake_src_configure
+       fi
 }
 
 src_compile() {
        cmake_src_compile
+
+       if use test; then
+               HIP_PATH="${BUILD_DIR}"/hipamd \
+                       hip_test_wrapper cmake_src_compile build_tests
+       fi
+}
+
+src_test() {
+       check_amdgpu
+       export LD_LIBRARY_PATH="${BUILD_DIR}/hipamd/lib"
+
+       # TODO: research how to test Vulkan-related features.
+       local CMAKE_SKIP_TESTS=(
+               Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Positive_Read_Write
+               Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Negative_Parameters
+               Unit_hipImportExternalMemory_Vulkan_Negative_Parameters
+               
Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore
+               
Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores
+               Unit_hipWaitExternalSemaphoresAsync_Vulkan_Negative_Parameters
+               
Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore
+               
Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores
+               Unit_hipSignalExternalSemaphoresAsync_Vulkan_Negative_Parameters
+               Unit_hipImportExternalSemaphore_Vulkan_Negative_Parameters
+               Unit_hipDestroyExternalSemaphore_Vulkan_Negative_Parameters
+       )
+
+       MAKEOPTS="-j1" hip_test_wrapper cmake_src_test
 }
 
 src_install() {

Reply via email to