Gentoo Archives: gentoo-commits

From: Marius Brehler <marbre@××××××××××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: dev-util/nvidia-cuda-toolkit/, dev-util/nvidia-cuda-toolkit/files/
Date: Mon, 30 May 2016 08:52:21
Message-Id: 1464598015.3e04fe220a83ff6b2d7e68ead0707bc5e0566508.marbre@gentoo
1 commit: 3e04fe220a83ff6b2d7e68ead0707bc5e0566508
2 Author: Marius Brehler <marbre <AT> linux <DOT> sungazer <DOT> de>
3 AuthorDate: Mon May 30 08:46:55 2016 +0000
4 Commit: Marius Brehler <marbre <AT> linux <DOT> sungazer <DOT> de>
5 CommitDate: Mon May 30 08:46:55 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=3e04fe22
7
8 dev-util/nvidia-cuda-toolkit: New CUDA 8 Release Candidate
9
10 Package-Manager: portage-2.2.28
11
12 dev-util/nvidia-cuda-toolkit/files/cuda-config.in | 28 ++++
13 dev-util/nvidia-cuda-toolkit/metadata.xml | 17 +++
14 .../nvidia-cuda-toolkit-8.0.27.ebuild | 153 +++++++++++++++++++++
15 3 files changed, 198 insertions(+)
16
17 diff --git a/dev-util/nvidia-cuda-toolkit/files/cuda-config.in b/dev-util/nvidia-cuda-toolkit/files/cuda-config.in
18 new file mode 100644
19 index 0000000..ca0d1d7
20 --- /dev/null
21 +++ b/dev-util/nvidia-cuda-toolkit/files/cuda-config.in
22 @@ -0,0 +1,28 @@
23 +#!/bin/bash
24 +
25 +SUPPORT_GCC_VERSIONS_BY_CUDA="CUDA_SUPPORTED_GCC"
26 +
27 +_print_help() {
28 + cat <<- EOF
29 + Usage:
30 + $(basename $0) [options]
31 +
32 + -s | --supported Returns by current CUDA supported gcc versions
33 + -h | --help Shows this help
34 + EOF
35 +}
36 +
37 +case ${1} in
38 + -s|--supported)
39 + echo "${SUPPORT_GCC_VERSIONS_BY_CUDA}"
40 + exit 0
41 + ;;
42 + -h|--help)
43 + _print_help
44 + exit -1
45 + ;;
46 + *)
47 + _print_help
48 + exit 1
49 + ;;
50 +esac
51
52 diff --git a/dev-util/nvidia-cuda-toolkit/metadata.xml b/dev-util/nvidia-cuda-toolkit/metadata.xml
53 new file mode 100644
54 index 0000000..ad6a397
55 --- /dev/null
56 +++ b/dev-util/nvidia-cuda-toolkit/metadata.xml
57 @@ -0,0 +1,17 @@
58 +<?xml version="1.0" encoding="UTF-8"?>
59 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
60 +<pkgmetadata>
61 + <maintainer type="project">
62 + <email>sci@g.o</email>
63 + <name>Gentoo Science Project</name>
64 + </maintainer>
65 + <use>
66 + <flag name="profiler">
67 + Installs the NVIDIA CUDA visual profiler.
68 + </flag>
69 + <flag name="debugger">
70 + Installs the CUDA debugger.
71 + </flag>
72 + <flag name="eclipse">Install plugins for eclipse</flag>
73 + </use>
74 +</pkgmetadata>
75
76 diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-8.0.27.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-8.0.27.ebuild
77 new file mode 100644
78 index 0000000..df53170
79 --- /dev/null
80 +++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-8.0.27.ebuild
81 @@ -0,0 +1,153 @@
82 +# Copyright 1999-2016 Gentoo Foundation
83 +# Distributed under the terms of the GNU General Public License v2
84 +# $Id$
85 +
86 +EAPI=6
87 +
88 +inherit check-reqs cuda unpacker versionator
89 +
90 +MYD=$(get_version_component_range 1-2)
91 +
92 +DESCRIPTION="NVIDIA CUDA Toolkit (compiler and friends)"
93 +HOMEPAGE="https://developer.nvidia.com/cuda-downloads"
94 +CURI="https://developer.nvidia.com/cuda-release-candidate-download"
95 +SRC_URI="cuda_${PV}_linux.run"
96 +
97 +SLOT="0/${PV}"
98 +LICENSE="NVIDIA-CUDA"
99 +KEYWORDS="-* ~amd64 ~amd64-linux"
100 +IUSE="debugger doc eclipse profiler"
101 +
102 +DEPEND=""
103 +RDEPEND="${DEPEND}
104 + >=sys-devel/gcc-4.7[cxx]
105 + >=x11-drivers/nvidia-drivers-361.42[uvm]
106 + debugger? (
107 + sys-libs/libtermcap-compat
108 + sys-libs/ncurses[tinfo]
109 + )
110 + eclipse? ( >=virtual/jre-1.6 )
111 + profiler? ( >=virtual/jre-1.6 )"
112 +RESTRICT="fetch"
113 +
114 +pkg_nofetch() {
115 + einfo "Please download the RHEL 7 \"runfile (local)\" installer"
116 + einfo " - cuda_${P}_rc_linux.run"
117 + einfo "from ${CURI} and place it in ${DISTDIR}"
118 +}
119 +
120 +S="${WORKDIR}"
121 +
122 +QA_PREBUILT="opt/cuda/*"
123 +
124 +CHECKREQS_DISK_BUILD="1500M"
125 +
126 +pkg_setup() {
127 + # We don't like to run cuda_pkg_setup as it depends on us
128 + check-reqs_pkg_setup
129 +}
130 +
131 +src_unpack() {
132 + unpacker
133 + unpacker run_files/cuda-linux*.run
134 +}
135 +
136 +src_prepare() {
137 + local cuda_supported_gcc
138 +
139 + cuda_supported_gcc="4.7 4.8 4.9 5.3"
140 +
141 + sed \
142 + -e "s:CUDA_SUPPORTED_GCC:${cuda_supported_gcc}:g" \
143 + "${FILESDIR}"/cuda-config.in > "${T}"/cuda-config || die
144 +
145 + default
146 +}
147 +
148 +src_install() {
149 + local i j
150 + local remove="doc jre run_files install-linux.pl "
151 + local cudadir=/opt/cuda
152 + local ecudadir="${EPREFIX}"${cudadir}
153 +
154 + # dodoc doc/*txt
155 + if use doc; then
156 + dodoc doc/pdf/*
157 + dohtml -r doc/html/*
158 + fi
159 +
160 + mv doc/man/man3/{,cuda-}deprecated.3 || die
161 + doman doc/man/man*/*
162 +
163 + use debugger || remove+=" bin/cuda-gdb extras/Debugger"
164 + ( use profiler || use eclipse ) || remove+=" libnsight"
165 + remove+=" cuda-installer.pl"
166 +
167 + if use profiler; then
168 + # hack found in install-linux.pl
169 + for j in nvvp nsight; do
170 + cat > bin/${j} <<- EOF
171 + #!${EPREFIX}/bin/sh
172 + LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:${ecudadir}/lib:${ecudadir}/lib64 \
173 + UBUNTU_MENUPROXY=0 LIBOVERLAY_SCROLLBAR=0 \
174 + ${ecudadir}/lib${j}/${j} -vm ${EPREFIX}/usr/bin/java
175 + EOF
176 + chmod a+x bin/${j}
177 + done
178 + else
179 + use eclipse || remove+=" libnvvp"
180 + remove+=" extras/CUPTI"
181 + fi
182 +
183 + for i in ${remove}; do
184 + ebegin "Cleaning ${i}..."
185 + if [[ -e ${i} ]]; then
186 + find ${i} -delete || die
187 + eend
188 + else
189 + eend $1
190 + fi
191 + done
192 +
193 + ln -sf lib lib32 || die
194 +
195 + dodir ${cudadir}
196 + mv * "${ED}"${cudadir} || die
197 +
198 + cat > "${T}"/99cuda <<- EOF
199 + PATH=${ecudadir}/bin$(use profiler && echo ":${ecudadir}/libnvvp")
200 + ROOTPATH=${ecudadir}/bin
201 + LDPATH=${ecudadir}/lib64:${ecudadir}/lib:${ecudadir}/nvvm/lib64
202 + EOF
203 + doenvd "${T}"/99cuda
204 +
205 + use profiler && \
206 + make_wrapper nvprof "${EPREFIX}"${cudadir}/bin/nvprof "." ${ecudadir}/lib64:${ecudadir}/lib
207 +
208 + dobin "${T}"/cuda-config
209 +}
210 +
211 +pkg_postinst_check() {
212 + local a b
213 + a="$(version_sort $(cuda-config -s))"; a=( $a )
214 + # greatest supported version
215 + b=${a[${#a[@]}-1]}
216 +
217 + # if gcc and if not gcc-version is at least greatesst supported
218 + if [[ $(tc-getCC) == *gcc* ]] && \
219 + ! version_is_at_least $(gcc-version) ${b}; then
220 + echo
221 + ewarn "gcc >= ${b} will not work with CUDA"
222 + ewarn "Make sure you set an earlier version of gcc with gcc-config"
223 + ewarn "or append --compiler-bindir= pointing to a gcc bindir like"
224 + ewarn "--compiler-bindir=${EPREFIX}/usr/*pc-linux-gnu/gcc-bin/gcc${b}"
225 + ewarn "to the nvcc compiler flags"
226 + echo
227 + fi
228 +}
229 +
230 +pkg_postinst() {
231 + if [[ ${MERGE_TYPE} != binary ]]; then
232 + pkg_postinst_check
233 + fi
234 +}