summaryrefslogtreecommitdiff
path: root/sys-apps/hwloc/hwloc-2.9.3-r1.ebuild
blob: 84c0ef23b8f98da865510a31a8ea3742748abf50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit autotools bash-completion-r1 cuda desktop flag-o-matic systemd toolchain-funcs xdg-utils multilib-minimal

MY_PV="v$(ver_cut 1-2)"
DESCRIPTION="Displays the hardware topology in convenient formats"
HOMEPAGE="https://www.open-mpi.org/projects/hwloc/"
SRC_URI="
	https://www.open-mpi.org/software/${PN}/${MY_PV}/downloads/${P}.tar.bz2
	https://raw.githubusercontent.com/open-mpi/hwloc/master/contrib/android/assets/lstopo.png
"

LICENSE="BSD"
SLOT="0/15"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="cairo +cpuid cuda debug doc l0 nvml +pci rocm static-libs svg udev valgrind xml X video_cards_nvidia"

# opencl: opencl support dropped with x11-drivers/ati-drivers being removed (bug #582406).
#         anyone with hardware is welcome to step up and help test to get it re-added.
# video-cards_nvidia: libXext/libX11 deps are only here, see HWLOC_GL_REQUIRES usage in config/hwloc.m4
RDEPEND="
	>=sys-libs/ncurses-5.9-r3:=[${MULTILIB_USEDEP}]
	cairo? ( >=x11-libs/cairo-1.12.14-r4[X?,svg(+)?,${MULTILIB_USEDEP}] )
	cuda? ( >=dev-util/nvidia-cuda-toolkit-6.5.19-r1:= )
	doc? ( app-text/doxygen )
	l0? ( dev-libs/level-zero:= )
	nvml? ( x11-drivers/nvidia-drivers[${MULTILIB_USEDEP}] )
	pci? (
		>=sys-apps/pciutils-3.3.0-r2[${MULTILIB_USEDEP}]
		>=x11-libs/libpciaccess-0.13.1-r1[${MULTILIB_USEDEP}]
	)
	rocm? ( dev-util/rocm-smi:= )
	udev? ( virtual/libudev:= )
	xml? ( >=dev-libs/libxml2-2.9.1-r4[${MULTILIB_USEDEP}] )
	video_cards_nvidia? (
		x11-drivers/nvidia-drivers[static-libs]
		x11-libs/libXext
		x11-libs/libX11
	)
"
DEPEND="
	${RDEPEND}
	valgrind? ( dev-debug/valgrind )
"
BDEPEND="virtual/pkgconfig"

PATCHES=( "${FILESDIR}/${PN}-1.8.1-gl.patch" )

DOCS=( AUTHORS NEWS README VERSION )

src_prepare() {
	default

	eautoreconf
}

multilib_src_configure() {
	# bug #393467
	export HWLOC_PKG_CONFIG="$(tc-getPKG_CONFIG)"

	if use video_cards_nvidia ; then
		addpredict /dev/nvidiactl
	fi

	if use cuda ; then
		append-cflags "-I${ESYSROOT}/opt/cuda/include"
		append-cppflags "-I${ESYSROOT}/opt/cuda/include"

		local -x LDFLAGS="${LDFLAGS}"
		append-ldflags "-L${ESYSROOT}/opt/cuda/$(get_libdir)"
	fi

	export ac_cv_header_valgrind_valgrind_h=$(multilib_native_usex valgrind)
	export ac_cv_have_decl_RUNNING_ON_VALGRIND=$(multilib_native_usex valgrind)

	local myconf=(
		--disable-opencl

		# netloc is deprecated upstream, about to be removed
		# bug #796797
		--disable-netloc

		--disable-plugin-ltdl
		--enable-plugins
		--enable-shared
		--runstatedir="${EPREFIX}/run"
		$(multilib_native_use_enable cuda)
		$(multilib_native_use_enable video_cards_nvidia gl)
		$(multilib_native_use_enable l0 levelzero)
		$(multilib_native_use_enable rocm rsmi)
		$(multilib_native_use_with rocm rocm "${ESYSROOT}/usr")
		$(use_enable cairo)
		$(use_enable cpuid)
		$(use_enable debug)
		$(use_enable doc doxygen)
		$(use_enable udev libudev)
		$(use_enable nvml)
		$(use_enable pci)
		$(use_enable static-libs static)
		$(use_enable xml libxml2)
		$(use_with X x)
	)

	ECONF_SOURCE="${S}" econf "${myconf[@]}"
}

multilib_src_install_all() {
	default

	case ${ARCH} in
		# hwloc-dump-hwdata binary only built on those arches, so don't install non-working unit.
		amd64|x86)
			systemd_dounit "${ED}/usr/share/hwloc/hwloc-dump-hwdata.service"
		;;
	esac

	use doc && dodoc -r doc/doxygen-doc/html

	mv "${ED}"/usr/share/bash-completion/completions/hwloc{,-annotate} || die
	bashcomp_alias hwloc-annotate \
		hwloc-{diff,ps,compress-dir,gather-cpuid,distrib,info,bind,patch,calc,ls,gather-topology}
	bashcomp_alias hwloc-annotate lstopo{,-no-graphics}

	find "${ED}" -name '*.la' -delete || die
	newicon -s 512 "${DISTDIR}/lstopo.png" ${PN}.png
}

pkg_postinst() {
	xdg_icon_cache_update
}

pkg_postrm() {
	xdg_icon_cache_update
}