commit:     0b45f8a6d7fae82791efe2caf4934b25d6138f4f
Author:     Sv. Lockal <lockalsash <AT> gmail <DOT> com>
AuthorDate: Thu Apr  3 18:54:54 2025 +0000
Commit:     Alfredo Tupone <tupone <AT> gentoo <DOT> org>
CommitDate: Sat Apr  5 12:52:52 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0b45f8a6

sci-ml/caffe2: fix build for ROCm

* Revised the fix for `-fclang-abi-compat=17`.
* Added fixes for libc++

Closes: https://bugs.gentoo.org/953101
Signed-off-by: Sv. Lockal <lockalsash <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/41448
Signed-off-by: Alfredo Tupone <tupone <AT> gentoo.org>

 sci-ml/caffe2/Manifest                             |  1 +
 ...ffe2-2.6.0-r2.ebuild => caffe2-2.6.0-r3.ebuild} | 64 +++++++++++++---------
 .../files/caffe2-2.6.0-rocm-fix-std-cpp17.patch    | 50 +++++++++++++++++
 3 files changed, 89 insertions(+), 26 deletions(-)

diff --git a/sci-ml/caffe2/Manifest b/sci-ml/caffe2/Manifest
index afeccbf65514..9edc8e9aadc7 100644
--- a/sci-ml/caffe2/Manifest
+++ b/sci-ml/caffe2/Manifest
@@ -1,4 +1,5 @@
 DIST caffe2-patches-20240809.tar.gz 15242 BLAKE2B 
77503c61487e7d85cca5afcab9a6e638f9833a70861845638cf1b62bc492d7b6650e6db81d53ebb2f39c6313509250d339f725f04d03ec6dd23dd0cf70843d8c
 SHA512 
74b3b0b6671b655ecac93f7436c4ed7cb0157a83aafbf6afcc0811e11cef341cd8f638db1a111bcbb01e1a6dd4daf3a36b96d7a8ce90f04c2fa091bd6e3a142b
+DIST composable_kernel-50ee4267.tar.gz 4194795 BLAKE2B 
b3c97d98a0c9e4620fdae3d30006edf55cc60ffa7f8518f6acb8d808647bc4de362c2e2b7e974686503fa2c7f359b6981cfbda74e40cc1bad4d351c5d2ff92e1
 SHA512 
9fc6f5f15556f020414b4567520329ef762209a82411a246c2bc1240a9fed2669f7fcb982cf773e3e9561bf9a2c557dba82b8b469d2e5844e679e2f5ab7c3e17
 DIST pytorch-2.4.1.tar.gz 115029469 BLAKE2B 
c2909ff27d527bc57cba56b780d3b8cd07a043ab045caa6c6b27857a16f9ad10aaab2116b26226b1e46ee08ffb44007965d914464418e4ae14ca48c3f3f383bb
 SHA512 
7e9b4485e242eaf0d648765c6621d73d95e7107b766646a098175436d1ab2e2b864badd0757a3bab6b7c318233f2120bad9ac07b39bb9e357897919580c87631
 DIST pytorch-2.5.1.tar.gz 116091366 BLAKE2B 
7838b17562b94ffc7d798031348689db607dd5eae2a3c35be365972e2b52a2c1b12067068d5aca5ab00cf0977d9c2c3c9ae5337d69534c864c732e6256cbeef6
 SHA512 
a913a466324a65fa3d79c5e9ad4d605fc7976f0134fda2f81aaa3cea29d56926604999b8a238759646d211e63b47bbb446cdffa86ca8defd8159f11e30301289
 DIST pytorch-2.6.0.tar.gz 119594438 BLAKE2B 
3152eb341cf42295e147e59625beb9c06608aa4b78f9618c1c0024b10c1c767715d07fe8c4be52d029ac47f808cd0d5e65c9530ec90d951a64b993083b4067ad
 SHA512 
a70da80ff09d226085e18228132cf6bb236ad8cc47eed52375d0d2a615f09dd33849da947270b5670c184eab60cb8e2adf11d801babfbda7aa621400501d07b0

diff --git a/sci-ml/caffe2/caffe2-2.6.0-r2.ebuild 
b/sci-ml/caffe2/caffe2-2.6.0-r3.ebuild
similarity index 81%
rename from sci-ml/caffe2/caffe2-2.6.0-r2.ebuild
rename to sci-ml/caffe2/caffe2-2.6.0-r3.ebuild
index b9747ad9eed4..37c752237aa1 100644
--- a/sci-ml/caffe2/caffe2-2.6.0-r2.ebuild
+++ b/sci-ml/caffe2/caffe2-2.6.0-r3.ebuild
@@ -10,10 +10,17 @@ inherit python-single-r1 cmake cuda flag-o-matic prefix 
rocm toolchain-funcs
 MYPN=pytorch
 MYP=${MYPN}-${PV}
 
+# caffe2-2.6.0 depends on future version of composable kernel
+# TODO: replace it with RDEPEND in the future
+CK_COMMIT=50ee4267e27b875d149e642f4cebd47be1dc3b57
+CK_P=composable_kernel-${CK_COMMIT:0:8}
+
 DESCRIPTION="A deep learning framework"
 HOMEPAGE="https://pytorch.org/";
-SRC_URI="https://github.com/pytorch/${MYPN}/archive/refs/tags/v${PV}.tar.gz
-       -> ${MYP}.tar.gz"
+SRC_URI="
+       https://github.com/pytorch/${MYPN}/archive/refs/tags/v${PV}.tar.gz -> 
${MYP}.tar.gz
+       rocm? ( 
https://github.com/ROCm/composable_kernel/archive/${CK_COMMIT}.tar.gz -> 
${CK_P}.tar.gz )
+"
 
 S="${WORKDIR}"/${MYP}
 
@@ -68,24 +75,19 @@ RDEPEND="
                sci-ml/gemmlowp
        )
        rocm? (
-               =dev-util/hip-6.1*
-               =dev-libs/rccl-6.1*[${ROCM_USEDEP}]
-               =sci-libs/rocThrust-6.1*[${ROCM_USEDEP}]
-               =sci-libs/rocPRIM-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipBLAS-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipFFT-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipSPARSE-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipRAND-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipCUB-6.1*[${ROCM_USEDEP}]
-               =sci-libs/hipSOLVER-6.1*[${ROCM_USEDEP}]
-               =sci-libs/miopen-6.1*[${ROCM_USEDEP}]
-               =dev-util/roctracer-6.1*[${ROCM_USEDEP}]
-
-               =sci-libs/hipBLASLt-6.1*
-               amdgpu_targets_gfx90a? ( 
=sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx90a] )
-               amdgpu_targets_gfx940? ( 
=sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx940] )
-               amdgpu_targets_gfx941? ( 
=sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx941] )
-               amdgpu_targets_gfx942? ( 
=sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx942] )
+               >=dev-libs/rccl-6.1      <dev-libs/rccl-6.4
+               >=dev-util/hip-6.1       <dev-util/hip-6.4
+               >=dev-util/roctracer-6.1 <dev-util/roctracer-6.4
+               >=sci-libs/hipBLAS-6.1   <sci-libs/hipBLAS-6.4
+               >=sci-libs/hipBLASLt-6.1 <sci-libs/hipBLASLt-6.4
+               >=sci-libs/hipCUB-6.1    <sci-libs/hipCUB-6.4
+               >=sci-libs/hipFFT-6.1    <sci-libs/hipFFT-6.4
+               >=sci-libs/hipRAND-6.1   <sci-libs/hipRAND-6.4
+               >=sci-libs/hipSOLVER-6.1 <sci-libs/hipSOLVER-6.4
+               >=sci-libs/hipSPARSE-6.1 <sci-libs/hipSPARSE-6.4
+               >=sci-libs/miopen-6.1    <sci-libs/miopen-6.4
+               >=sci-libs/rocPRIM-6.1   <sci-libs/rocPRIM-6.4
+               >=sci-libs/rocThrust-6.1 <sci-libs/rocThrust-6.4
        )
        distributed? (
                sci-ml/tensorpipe[cuda?]
@@ -122,6 +124,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-2.4.0-cpp-httplib.patch
        "${FILESDIR}"/${PN}-2.5.1-glog-0.6.0.patch
        "${FILESDIR}"/${PN}-2.5.1-newfix-functorch-install.patch
+       "${FILESDIR}"/${PN}-2.6.0-rocm-fix-std-cpp17.patch
 )
 
 src_prepare() {
@@ -178,9 +181,22 @@ src_prepare() {
        if use rocm; then
                sed -e "s:/opt/rocm:/usr:" \
                        -e "s:lib/cmake:$(get_libdir)/cmake:g" \
-                       -e "s/HIP 1.0/HIP 1.0 REQUIRED/" \
                        -i cmake/public/LoadHIP.cmake || die
 
+               # TODO: delete, when caffe2 depends on systemwide 
composable_kernel
+               sed -e 
"s:third_party/composable_kernel:../composable_kernel-${CK_COMMIT}:g" \
+                       -i aten/src/ATen/CMakeLists.txt || die
+
+               if tc-is-clang; then
+                       # Systemwide gcc (for absl and at::TensorBase) + hipcc 
(llvm>=18) need abi-compat=17.
+                       # But systemwide clang>=18 + hipcc (>=llvm-18) need 
opposite!
+                       # See also: 
https://github.com/llvm/llvm-project/issues/102443#issuecomment-2329726287
+                       sed '/-fclang-abi-compat=17/d' -i 
cmake/Dependencies.cmake || die
+               fi
+
+               # Workaround for libc++ issue 
https://github.com/llvm/llvm-project/issues/100802
+               sed 's/std::memcpy/memcpy/g' -i c10/util/Half.h || die
+
                ebegin "HIPifying cuda sources"
                ${EPYTHON} tools/amd_build/build_amd.py || die
                eend $?
@@ -275,15 +291,11 @@ src_configure() {
                mycmakeargs+=(
                        -DUSE_NCCL=ON
                        -DUSE_SYSTEM_NCCL=ON
+                       -DCMAKE_REQUIRE_FIND_PACKAGE_HIP=ON
                )
 
                # ROCm libraries produce too much warnings
                append-cxxflags -Wno-deprecated-declarations -Wno-unused-result
-
-               if tc-is-clang; then
-                       # fix mangling in LLVM: 
https://github.com/llvm/llvm-project/issues/85656
-                       append-cxxflags -fclang-abi-compat=17
-               fi
        fi
 
        if use onednn; then

diff --git a/sci-ml/caffe2/files/caffe2-2.6.0-rocm-fix-std-cpp17.patch 
b/sci-ml/caffe2/files/caffe2-2.6.0-rocm-fix-std-cpp17.patch
new file mode 100644
index 000000000000..1b8084ac187f
--- /dev/null
+++ b/sci-ml/caffe2/files/caffe2-2.6.0-rocm-fix-std-cpp17.patch
@@ -0,0 +1,50 @@
+Fix for CXX=clang USE=rocm error: invalid argument '-std=c++17' not allowed 
with 'C'
+https://github.com/pytorch/pytorch/issues/103222
+--- a/c10/hip/CMakeLists.txt
++++ b/c10/hip/CMakeLists.txt
+@@ -36,6 +36,7 @@ if(NOT BUILD_LIBTORCHLESS)
+ 
+   # Propagate HIP_CXX_FLAGS that were set from Dependencies.cmake
+   target_compile_options(c10_hip PRIVATE ${HIP_CXX_FLAGS})
++  set_target_properties(c10_hip PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF)
+ 
+   # caffe2_hip adds a bunch of dependencies like rocsparse, but c10/hip is 
supposed to be
+   # minimal.  I'm not sure if we need hip_hcc or not; for now leave it out
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -1684,6 +1684,7 @@ if(USE_ROCM)
+ 
+   # Since PyTorch files contain HIP headers, these flags are required for the 
necessary definitions to be added.
+   target_compile_options(torch_hip PUBLIC ${HIP_CXX_FLAGS})  # experiment
++  set_target_properties(torch_hip PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS 
OFF)
+ 
+   target_link_libraries(torch_hip PUBLIC c10_hip)
+ 
+@@ -1886,6 +1887,7 @@ if(BUILD_TEST)
+       target_include_directories(${test_name} PRIVATE 
$<INSTALL_INTERFACE:include>)
+       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} 
${Caffe2_HIP_INCLUDE})
+       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
++      set_target_properties(${test_name} PROPERTIES CXX_STANDARD 17 
CXX_EXTENSIONS OFF)
+       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+       if(INSTALL_TEST)
+         set_target_properties(${test_name} PROPERTIES INSTALL_RPATH 
"${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -1043,7 +1043,6 @@ if(USE_ROCM)
+     list(APPEND HIP_CXX_FLAGS -Wno-duplicate-decl-specifier)
+     list(APPEND HIP_CXX_FLAGS -DCAFFE2_USE_MIOPEN)
+     list(APPEND HIP_CXX_FLAGS -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_HIP)
+-    list(APPEND HIP_CXX_FLAGS -std=c++17)
+     list(APPEND HIP_CXX_FLAGS -DHIPBLAS_V2)
+     if(HIP_NEW_TYPE_ENUMS)
+       list(APPEND HIP_CXX_FLAGS -DHIP_NEW_TYPE_ENUMS)
+--- a/cmake/public/utils.cmake
++++ b/cmake/public/utils.cmake
+@@ -267,6 +267,7 @@ function(caffe2_hip_binary_target target_name_or_src)
+   caffe2_binary_target(${target_name_or_src})
+ 
+   target_compile_options(${__target} PRIVATE ${HIP_CXX_FLAGS})
++  set_target_properties(${__target} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS 
OFF)
+   target_include_directories(${__target} PRIVATE ${Caffe2_HIP_INCLUDE})
+ endfunction()
+ 

Reply via email to