dev-util/nvidia-cuda-toolkit: [QA] inherit eutils.eclass directly
[gentoo.git] / dev-util / nvidia-cuda-toolkit / nvidia-cuda-toolkit-8.0.44.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 inherit check-reqs cuda eutils toolchain-funcs unpacker versionator
7
8 MYD=$(get_version_component_range 1-2)
9
10 DESCRIPTION="NVIDIA CUDA Toolkit (compiler and friends)"
11 HOMEPAGE="https://developer.nvidia.com/cuda-zone"
12 SRC_URI="https://developer.nvidia.com/compute/cuda/${MYD}/prod/local_installers/cuda_${PV}_linux-run -> cuda_${PV}_linux.run"
13 SLOT="0/${PV}"
14 LICENSE="NVIDIA-CUDA"
15 KEYWORDS="-* ~amd64 ~amd64-linux"
16 IUSE="debugger doc eclipse profiler"
17
18 DEPEND=""
19 RDEPEND="${DEPEND}
20         >=sys-devel/gcc-4.7[cxx]
21         <sys-devel/gcc-6[cxx]
22         >=x11-drivers/nvidia-drivers-367.44[X,uvm]
23         debugger? (
24                 sys-libs/libtermcap-compat
25                 sys-libs/ncurses[tinfo]
26                 )
27         eclipse? ( >=virtual/jre-1.6 )
28         profiler? ( >=virtual/jre-1.6 )"
29
30 S="${WORKDIR}"
31
32 QA_PREBUILT="opt/cuda/*"
33
34 CHECKREQS_DISK_BUILD="3500M"
35
36 pkg_setup() {
37         # We don't like to run cuda_pkg_setup as it depends on us
38         check-reqs_pkg_setup
39 }
40
41 src_unpack() {
42         unpacker
43         unpacker run_files/cuda-linux*.run
44 }
45
46 src_prepare() {
47         local cuda_supported_gcc
48
49         cuda_supported_gcc="4.7 4.8 4.9 5.3 5.4"
50
51         sed \
52                 -e "s:CUDA_SUPPORTED_GCC:${cuda_supported_gcc}:g" \
53                 "${FILESDIR}"/cuda-config.in > "${T}"/cuda-config || die
54
55         default
56 }
57
58 src_install() {
59         local i remove=( doc jre run_files install-linux.pl cuda-installer.pl )
60         local cudadir=/opt/cuda
61         local ecudadir="${EPREFIX}${cudadir}"
62
63         if use doc; then
64                 DOCS+=( doc/pdf/. )
65                 HTML_DOCS+=( doc/html/. )
66         fi
67         einstalldocs
68
69         mv doc/man/man3/{,cuda-}deprecated.3 || die
70         doman doc/man/man*/*
71
72         use debugger || remove+=( bin/cuda-gdb extras/Debugger extras/cuda-gdb-${PV}.src.tar.gz )
73
74         if use profiler; then
75                 # hack found in install-linux.pl
76                 for i in nvvp nsight; do
77                         cat > bin/${i} <<- EOF || die
78                                 #!/usr/bin/env sh
79                                 LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:${ecudadir}/lib:${ecudadir}/lib64 \
80                                         UBUNTU_MENUPROXY=0 LIBOVERLAY_SCROLLBAR=0 \
81                                         ${ecudadir}/lib${i}/${i} -vm ${EPREFIX}/usr/bin/java
82                         EOF
83                         chmod a+x bin/${i} || die
84                 done
85         else
86                 use eclipse || remove+=( libnvvp libnsight )
87                 remove+=( extras/CUPTI )
88         fi
89
90         for i in "${remove[@]}"; do
91                 ebegin "Cleaning ${i}..."
92                 rm -rf "${i}" || die
93                 eend
94         done
95
96         dodir ${cudadir}
97         mv * "${ED%/}${cudadir}" || die
98
99         cat > "${T}"/99cuda <<- EOF || die
100                 PATH=${ecudadir}/bin$(usex profiler ":${ecudadir}/libnvvp" "")
101                 ROOTPATH=${ecudadir}/bin
102                 LDPATH=${ecudadir}/lib64:${ecudadir}/lib:${ecudadir}/nvvm/lib64
103         EOF
104         doenvd "${T}"/99cuda
105
106         use profiler && \
107                 make_wrapper nvprof "${ecudadir}/bin/nvprof" "." "${ecudadir}/lib64:${ecudadir}/lib"
108
109         dobin "${T}"/cuda-config
110 }
111
112 pkg_postinst_check() {
113         local a b
114         a="$(version_sort $(cuda-config -s))"; a=( $a )
115         # greatest supported version
116         b="${a[${#a[@]}-1]}"
117
118         # if gcc and if not gcc-version is at least greatest supported
119         if tc-is-gcc && \
120                 ! version_is_at_least gcc-version ${b}; then
121                         ewarn ""
122                         ewarn "gcc >= ${b} will not work with CUDA"
123                         ewarn "Make sure you set an earlier version of gcc with gcc-config"
124                         ewarn "or append --compiler-bindir= pointing to a gcc bindir like"
125                         ewarn "--compiler-bindir=${EPREFIX}/usr/*pc-linux-gnu/gcc-bin/gcc${b}"
126                         ewarn "to the nvcc compiler flags"
127                         ewarn ""
128         fi
129 }
130
131 pkg_postinst() {
132         if [[ ${MERGE_TYPE} != binary ]]; then
133                 pkg_postinst_check
134         fi
135 }