mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-util/rocm_bandwidth_test: fix {cxx,ld}flags/cxx/niceness
rocm_bandwidth_test cmake files reinvents variables for everything: installation paths, flags, generator, compiler, linker selection, etc. Then cmake calls bash, which calls another cmake, which ignores niceness, verbose logs, CXX, etc. That code is objectively bad, but at least it can be patched. New ebuild erases nested build shell script in favor of cmake.eclass functions and removes automagic adding of ld.lld. Closes: https://bugs.gentoo.org/965916 Signed-off-by: Sv. Lockal <lockalsash@gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/44633 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit cmake
|
||||
ROCM_VERSION=${PV}
|
||||
inherit cmake rocm
|
||||
|
||||
DESCRIPTION="Bandwidth test for ROCm"
|
||||
HOMEPAGE="https://github.com/ROCm/rocm_bandwidth_test"
|
||||
@@ -14,26 +15,41 @@ LICENSE="MIT"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
REQUIRED_USE="${ROCM_REQUIRED_USE}"
|
||||
|
||||
RDEPEND="
|
||||
dev-libs/rocr-runtime:${SLOT}
|
||||
dev-util/hip:${SLOT}
|
||||
dev-libs/boost:=[stacktrace]
|
||||
dev-libs/libfmt:=
|
||||
dev-libs/spdlog:=
|
||||
net-misc/curl
|
||||
sys-process/numactl
|
||||
"
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
dev-cpp/nlohmann_json
|
||||
dev-util/hipcc
|
||||
dev-libs/boost[stacktrace]
|
||||
net-misc/curl
|
||||
dev-cpp/cli11
|
||||
dev-cpp/catch
|
||||
"
|
||||
|
||||
PATCHES=( "${FILESDIR}"/rocm_bandwidth_test-7.1.0-nogit.patch )
|
||||
|
||||
tb_plugin_wrapper() {
|
||||
local PATCHES=()
|
||||
local CMAKE_USE_DIR="${S}/plugins/tb/transferbench"
|
||||
local BUILD_DIR="${CMAKE_USE_DIR}/build"
|
||||
"$@"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# rocm_bandwidth_test cmake files reinvents variables for everything:
|
||||
# installation paths, flags, generator, compiler, linker selection, etc.
|
||||
# Then cmake calls bash, which calls another cmake, which ignores niceness, verbose logs, CXX, etc.
|
||||
# That code is objectively bad, a lot of patches go below.
|
||||
# See also: https://github.com/ROCm/rocm_bandwidth_test/issues/131
|
||||
|
||||
# Relax version checks
|
||||
sed -e "s/ \${FMT_PKG_MINIMUM_REQUIRED_VERSION}//" -i cmake/build_utils.cmake || die
|
||||
sed -e "s/ \${SPDLOG_PKG_MINIMUM_REQUIRED_VERSION}//" -i cmake/build_utils.cmake || die
|
||||
@@ -43,7 +59,6 @@ src_prepare() {
|
||||
sed -e "/set(CATCH2_PACKAGE_NAME/ s/catch2/Catch2/" -i cmake/build_utils.cmake || die
|
||||
sed -e "s/ QUIT)/)/" -i main/cmdline/CMakeLists.txt || die
|
||||
|
||||
# https://github.com/ROCm/rocm_bandwidth_test/issues/131
|
||||
sed -e "/set(AMD_ROCM_STAGING_INSTALL_PATH/ s:/usr/local:${EPREFIX}/usr:" \
|
||||
-e "/set(AMD_STANDALONE_STAGING_INSTALL_LIBDIR/ s/lib/$(get_libdir)/" \
|
||||
-e "/set(AMD_STANDALONE_STAGING_INSTALL_EXPORTDIR/ s/lib/$(get_libdir)/" \
|
||||
@@ -65,10 +80,22 @@ src_prepare() {
|
||||
|
||||
sed -e "s:./rocm_bandwidth_test:rocm_bandwidth_test:" -i bin/rbt_run_tb || die
|
||||
|
||||
# Let the user decide, which programs to use (definitely not `gcc -fuse-ld=lld`)
|
||||
# Bug: https://bugs.gentoo.org/965916
|
||||
sed -e '/find_program(CCACHE_PATH/d' -e '/find_program(LD_LLD_PATH/d' \
|
||||
-e '/find_program(LD_MOLD_PATH/d' -i cmake/build_utils.cmake || die
|
||||
|
||||
# Cleanup build script as we build in src_compile.
|
||||
# This shell script basically calls "cmake ... && cmake install",
|
||||
# we replace it with normal cmake.eclass functions with tb_plugin_wrapper.
|
||||
echo "" > plugins/tb/transferbench/build_libamd_tb.sh || die
|
||||
|
||||
cmake_src_prepare
|
||||
tb_plugin_wrapper cmake_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Configure plugin launcher (can be compiled with any compiler)
|
||||
local mycmakeargs=(
|
||||
-DROCM_PATH="${EPREFIX}/usr"
|
||||
-DUSE_LOCAL_FMT_LIB=ON
|
||||
@@ -78,15 +105,30 @@ src_configure() {
|
||||
-DUSE_LOCAL_CLI11=ON
|
||||
-DUSE_LOCAL_CATCH2=ON
|
||||
|
||||
-DAMD_APP_BUILD_DOCS=OFF
|
||||
-DAMD_APP_BUILD_EXAMPLES=OFF
|
||||
-DAMD_APP_COMPILER_TRY_CLANG=OFF
|
||||
-DAMD_APP_STANDALONE_BUILD_PACKAGE=ON
|
||||
-DAMD_APP_TREAT_WARNINGS_AS_ERRORS=OFF
|
||||
-Wno-dev
|
||||
)
|
||||
cmake_src_configure
|
||||
|
||||
# Configure tb plugin (HIP code)
|
||||
rocm_use_clang
|
||||
mycmakeargs=(
|
||||
-DBUILD_INTERNAL_BINARY_VERSION=$(< VERSION)
|
||||
-DGPU_TARGETS="$(get_amdgpu_flags)"
|
||||
-DHSA_INCLUDE_DIR="${EPREFIX}/usr/include/hsa"
|
||||
-DROCM_PATH="${EPREFIX}/usr"
|
||||
)
|
||||
tb_plugin_wrapper cmake_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
cmake_src_compile AMD_TB_LIBRARY
|
||||
# tb plugin must be compiled before transferbench
|
||||
tb_plugin_wrapper cmake_src_compile
|
||||
cp "${S}"/plugins/tb/transferbench/build/libamd_tb.* "${S}/plugins/tb/lib" || die
|
||||
|
||||
cmake_src_compile
|
||||
}
|
||||
Reference in New Issue
Block a user