Gentoo Archives: gentoo-commits

From: "Doug Goldstein (cardoe)" <cardoe@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in x11-drivers/nvidia-drivers: ChangeLog nvidia-drivers-275.21.ebuild nvidia-drivers-96.43.20.ebuild nvidia-drivers-173.14.31.ebuild
Date: Wed, 27 Jul 2011 14:45:29
Message-Id: 20110727144517.C3C992004B@flycatcher.gentoo.org
1 cardoe 11/07/27 14:45:17
2
3 Modified: ChangeLog
4 Added: nvidia-drivers-275.21.ebuild
5 nvidia-drivers-96.43.20.ebuild
6 nvidia-drivers-173.14.31.ebuild
7 Log:
8 Version bumps. Adds support for xorg-server 1.10 in the legacy drivers. Fix KDE4 KWin issues in the 173.14.x series. Fix a multitude of issues in the 275.x series.
9
10 (Portage version: 2.1.10.7/cvs/Linux x86_64)
11
12 Revision Changes Path
13 1.292 x11-drivers/nvidia-drivers/ChangeLog
14
15 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog?rev=1.292&view=markup
16 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog?rev=1.292&content-type=text/plain
17 diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog?r1=1.291&r2=1.292
18
19 Index: ChangeLog
20 ===================================================================
21 RCS file: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog,v
22 retrieving revision 1.291
23 retrieving revision 1.292
24 diff -u -r1.291 -r1.292
25 --- ChangeLog 19 Jul 2011 06:47:35 -0000 1.291
26 +++ ChangeLog 27 Jul 2011 14:45:17 -0000 1.292
27 @@ -1,6 +1,17 @@
28 # ChangeLog for x11-drivers/nvidia-drivers
29 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
30 -# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog,v 1.291 2011/07/19 06:47:35 angelos Exp $
31 +# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog,v 1.292 2011/07/27 14:45:17 cardoe Exp $
32 +
33 +*nvidia-drivers-275.21 (26 Jul 2011)
34 +*nvidia-drivers-173.14.31 (26 Jul 2011)
35 +*nvidia-drivers-96.43.20 (26 Jul 2011)
36 +
37 + 26 Jul 2011; Doug Goldstein <cardoe@g.o>
38 + +nvidia-drivers-96.43.20.ebuild, +nvidia-drivers-173.14.31.ebuild,
39 + +nvidia-drivers-275.21.ebuild:
40 + Version bumps. Adds support for xorg-server 1.10 in the legacy drivers. Fix
41 + KDE4 KWin issues in the 173.14.x series. Fix a multitude of issues in the
42 + 275.x series.
43
44 19 Jul 2011; Christoph Mende <angelos@g.o>
45 nvidia-drivers-270.41.19.ebuild:
46
47
48
49 1.1 x11-drivers/nvidia-drivers/nvidia-drivers-275.21.ebuild
50
51 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-275.21.ebuild?rev=1.1&view=markup
52 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-275.21.ebuild?rev=1.1&content-type=text/plain
53
54 Index: nvidia-drivers-275.21.ebuild
55 ===================================================================
56 # Copyright 1999-2011 Gentoo Foundation
57 # Distributed under the terms of the GNU General Public License v2
58 # $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-275.21.ebuild,v 1.1 2011/07/27 14:45:17 cardoe Exp $
59
60 EAPI="2"
61
62 inherit eutils multilib versionator linux-mod flag-o-matic nvidia-driver
63
64 X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}"
65 AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
66 X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}"
67
68 DESCRIPTION="NVIDIA X11 driver and GLX libraries"
69 HOMEPAGE="http://www.nvidia.com/"
70 SRC_URI="x86? ( http://us.download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}.run )
71 amd64? ( http://us.download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
72 x86-fbsd? ( http://us.download.nvidia.com/XFree86/FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )"
73
74 LICENSE="NVIDIA"
75 SLOT="0"
76 KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
77 IUSE="acpi custom-cflags gtk multilib kernel_linux"
78 RESTRICT="strip"
79 EMULTILIB_PKG="true"
80
81 COMMON="<x11-base/xorg-server-1.10.99
82 kernel_linux? ( >=sys-libs/glibc-2.6.1 )
83 multilib? ( app-emulation/emul-linux-x86-xlibs )
84 >=app-admin/eselect-opengl-1.0.9
85 !<media-video/nvidia-settings-256.52"
86 DEPEND="${COMMON}
87 kernel_linux? ( virtual/linux-sources )"
88 RDEPEND="${COMMON}
89 x11-libs/libXvMC
90 acpi? ( sys-power/acpid )"
91 PDEPEND=">=x11-libs/libvdpau-0.3-r1
92 gtk? ( media-video/nvidia-settings )"
93
94 QA_TEXTRELS_x86="
95 usr/lib/libOpenCL.so.1.0.0
96 usr/lib/libXvMCNVIDIA.so.${PV}
97 usr/lib/libcuda.so.${PV}
98 usr/lib/libnvcuvid.so.${PV}
99 usr/lib/libnvidia-cfg.so.${PV}
100 usr/lib/libnvidia-compiler.so.${PV}
101 usr/lib/libnvidia-glcore.so.${PV}
102 usr/lib/libnvidia-ml.so.${PV}
103 usr/lib/libvdpau_nvidia.so.${PV}
104 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
105 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
106 usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
107 usr/lib/xorg/modules/drivers/nvidia_drv.so"
108
109 QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko
110 usr/lib/opengl/nvidia/lib/libGL.so.1
111 usr/lib/libnvidia-glcore.so.1
112 usr/lib/libnvidia-cfg.so.1
113 usr/lib/libnvidia-ml.so.1
114 usr/lib/opengl/nvidia/extensions/libglx.so.1
115 usr/lib/xorg/modules/drivers/nvidia_drv.so"
116
117 QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
118 usr/lib32/libnvidia-glcore.so.${PV}
119 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
120 usr/lib32/libcuda.so.${PV}
121 usr/lib32/libvdpau_nvidia.so.${PV}
122 usr/lib32/libOpenCL.so.1.0.0
123 usr/lib32/libnvidia-compiler.so.${PV}"
124
125 QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV}
126 usr/lib/libnvidia-glcore.so.${PV}
127 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
128 usr/lib64/libXvMCNVIDIA.so.${PV}
129 usr/lib/libXvMCNVIDIA.a:NVXVMC.o
130 usr/lib/libnvidia-compiler.so.${PV}
131 usr/lib/libvdpau_nvidia.so.${PV}
132 usr/lib/libcuda.so.${PV}
133 usr/lib/libOpenCL.so.1.0.0"
134
135 QA_EXECSTACK_amd64="usr/lib32/libnvidia-glcore.so.${PV}
136 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
137 usr/lib32/libnvidia-compiler.so.${PV}
138 usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
139 usr/lib32/libvdpau_nvidia.so.${PV}
140 usr/lib32/libcuda.so.${PV}
141 usr/lib32/libOpenCL.so.1.0.0
142 usr/lib64/libnvidia-compiler.so.${PV}
143 usr/lib64/libXvMCNVIDIA.a:NVXVMC.o
144 usr/lib64/libnvidia-cfg.so.${PV}
145 usr/lib64/libnvidia-ml.so.${PV}
146 usr/lib64/libvdpau_nvidia.so.${PV}
147 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
148 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
149 usr/lib64/libnvidia-glcore.so.${PV}
150 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
151 usr/lib64/libXvMCNVIDIA.so.${PV}
152 usr/lib64/libcuda.so.${PV}
153 usr/lib64/libOpenCL.so.1.0.0
154 usr/lib64/xorg/modules/drivers/nvidia_drv.so
155 usr/bin/nvidia-smi
156 usr/bin/nvidia-xconfig
157 usr/bin/nvidia-settings"
158
159 QA_WX_LOAD_x86="usr/lib/libnvidia-glcore.so.${PV}
160 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
161 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
162 usr/lib/libXvMCNVIDIA.a
163 usr/lib64/libXvMCNVIDIA.so.${PV}"
164
165 QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
166 usr/lib32/libnvidia-glcore.so.${PV}
167 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
168 usr/lib64/libnvidia-glcore.so.${PV}
169 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
170 usr/lib64/libXvMCNVIDIA.so.${PV}"
171
172 QA_SONAME_x86="usr/lib/libnvidia-compiler.so.${PV}"
173
174 QA_SONAME_amd64="usr/lib64/libnvidia-compiler.so.${PV}
175 usr/lib32/libnvidia-compiler.so.${PV}"
176
177 QA_DT_HASH_amd64="usr/lib32/libcuda.so.${PV}
178 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
179 usr/lib32/libnvidia-glcore.so.${PV}
180 usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
181 usr/lib32/libvdpau_nvidia.so.${PV}
182 usr/lib32/libOpenCL.so.1.0.0
183 usr/lib32/libnvidia-compiler.so.${PV}
184 usr/lib64/libXvMCNVIDIA.so.${PV}
185 usr/lib64/libcuda.so.${PV}
186 usr/lib64/libnvidia-cfg.so.${PV}
187 usr/lib64/libnvidia-glcore.so.${PV}
188 usr/lib64/libnvidia-ml.so.${PV}
189 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
190 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
191 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
192 usr/lib64/xorg/modules/drivers/nvidia_drv.so
193 usr/lib64/libvdpau_nvidia.so.${PV}
194 usr/lib64/libOpenCL.so.1.0.0
195 usr/lib64/libnvidia-compiler.so.${PV}
196 usr/lib64/libnvcuvid.so.${PV}
197 usr/bin/nvidia-smi
198 usr/bin/nvidia-xconfig
199 usr/bin/nvidia-settings"
200
201 QA_DT_HASH_x86="usr/lib/libcuda.so.${PV}
202 usr/lib/libnvidia-cfg.so.${PV}
203 usr/lib/libnvidia-glcore.so.${PV}
204 usr/lib/libnvidia-ml.so.${PV}
205 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
206 usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
207 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
208 usr/lib/xorg/modules/drivers/nvidia_drv.so
209 usr/lib/libXvMCNVIDIA.so.${PV}
210 usr/lib/libvdpau_nvidia.so.${PV}
211 usr/lib/libOpenCL.so.1.0.0
212 usr/lib/libnvidia-compiler.so.${PV}
213 usr/lib/libnvcuvid.so.${PV}
214 usr/bin/nvidia-smi
215 usr/bin/nvidia-xconfig
216 usr/bin/nvidia-settings"
217
218 S="${WORKDIR}/"
219
220 mtrr_check() {
221 ebegin "Checking for MTRR support"
222 linux_chkconfig_present MTRR
223 eend $?
224
225 if [[ $? -ne 0 ]] ; then
226 eerror "Please enable MTRR support in your kernel config, found at:"
227 eerror
228 eerror " Processor type and features"
229 eerror " [*] MTRR (Memory Type Range Register) support"
230 eerror
231 eerror "and recompile your kernel ..."
232 die "MTRR support not detected!"
233 fi
234 }
235
236 lockdep_check() {
237 if linux_chkconfig_present LOCKDEP; then
238 eerror "You've enabled LOCKDEP -- lock tracking -- in the kernel."
239 eerror "Unfortunately, this option exports the symbol "
240 eerror "'lockdep_init_map' as GPL-only which will prevent "
241 eerror "${P} from compiling."
242 eerror "Please make sure the following options have been unset:"
243 eerror
244 eerror " Kernel hacking --->"
245 eerror " [ ] Lock debugging: detect incorrect freeing of live locks"
246 eerror " [ ] Lock debugging: prove locking correctness"
247 eerror " [ ] Lock usage statistics"
248 eerror "in 'menuconfig'"
249 die "LOCKDEP enabled"
250 fi
251 }
252
253 pkg_setup() {
254 # try to turn off distcc and ccache for people that have a problem with it
255 export DISTCC_DISABLE=1
256 export CCACHE_DISABLE=1
257
258 if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then
259 eerror "This ebuild doesn't currently support changing your default abi."
260 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
261 fi
262
263 if use kernel_linux; then
264 linux-mod_pkg_setup
265 MODULE_NAMES="nvidia(video:${S}/kernel)"
266 BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
267 SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)"
268 mtrr_check
269 lockdep_check
270 fi
271
272 # On BSD userland it wants real make command
273 use userland_BSD && MAKE="$(get_bmake)"
274
275 export _POSIX2_VERSION="199209"
276
277 # Since Nvidia ships 3 different series of drivers, we need to give the user
278 # some kind of guidance as to what version they should install. This tries
279 # to point the user in the right direction but can't be perfect. check
280 # nvidia-driver.eclass
281 nvidia-driver-check-warning
282
283 # set variables to where files are in the package structure
284 if use kernel_FreeBSD; then
285 NV_DOC="${S}/doc"
286 NV_EXEC="${S}/obj"
287 NV_LIB="${S}/obj"
288 NV_SRC="${S}/src"
289 NV_MAN="${S}/x11/man"
290 NV_X11="${S}/obj"
291 NV_X11_DRV="${NV_X11}"
292 NV_X11_EXT="${NV_X11}"
293 NV_SOVER=1
294 elif use kernel_linux; then
295 NV_DOC="${S}"
296 NV_EXEC="${S}"
297 NV_LIB="${S}"
298 NV_SRC="${S}/kernel"
299 NV_MAN="${S}"
300 NV_X11="${S}"
301 NV_X11_DRV="${NV_X11}"
302 NV_X11_EXT="${NV_X11}"
303 NV_SOVER=${PV}
304 else
305 die "Could not determine proper NVIDIA package"
306 fi
307 }
308
309 src_unpack() {
310 if use kernel_linux && kernel_is lt 2 6 7; then
311 echo
312 ewarn "Your kernel version is ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
313 ewarn "This is not officially supported for ${P}. It is likely you"
314 ewarn "will not be able to compile or use the kernel module."
315 ewarn "It is recommended that you upgrade your kernel to a version >= 2.6.7"
316 echo
317 ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored."
318 fi
319
320 if ! use x86-fbsd; then
321 cd "${S}"
322 unpack_makeself
323 else
324 unpack ${A}
325 fi
326 }
327
328 src_prepare() {
329 # Please add a brief description for every added patch
330 use x86-fbsd && cd doc
331
332 if use kernel_linux; then
333 # Quiet down warnings the user does not need to see
334 sed -i \
335 -e 's:-Wsign-compare::g' \
336 "${NV_SRC}"/Makefile.kbuild
337
338 epatch "${FILESDIR}"/256.35-unified-arch.patch
339
340 # If you set this then it's your own fault when stuff breaks :)
341 use custom-cflags && sed -i "s:-O:${CFLAGS}:" "${NV_SRC}"/Makefile.*
342
343 # If greater than 2.6.5 use M= instead of SUBDIR=
344 convert_to_m "${NV_SRC}"/Makefile.kbuild
345 fi
346 }
347
348 src_compile() {
349 # This is already the default on Linux, as there's no toplevel Makefile, but
350 # on FreeBSD there's one and triggers the kernel module build, as we install
351 # it by itself, pass this.
352
353 cd "${NV_SRC}"
354 if use x86-fbsd; then
355 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
356 LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
357 elif use kernel_linux; then
358 linux-mod_src_compile
359 fi
360 }
361
362 src_install() {
363 if use kernel_linux; then
364 linux-mod_src_install
365
366 VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)"
367 if [ -z "$VIDEOGROUP" ]; then
368 eerror "Failed to determine the video group gid."
369 die "Failed to determine the video group gid."
370 fi
371
372 # Add the aliases
373 [ -f "${FILESDIR}/nvidia-169.07" ] || die "nvidia missing in FILESDIR"
374 sed -e 's:PACKAGE:'${PF}':g' \
375 -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia-169.07 > \
376 "${WORKDIR}"/nvidia
377 insinto /etc/modprobe.d
378 newins "${WORKDIR}"/nvidia nvidia.conf || die
379 elif use x86-fbsd; then
380 insinto /boot/modules
381 doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" || die
382
383 exeinto /boot/modules
384 doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" || die
385 fi
386
387 # NVIDIA kernel <-> userspace driver config lib
388 dolib.so ${NV_LIB}/libnvidia-cfg.so.${NV_SOVER} || \
389 die "failed to install libnvidia-cfg"
390 dosym /usr/$(get_libdir)/libnvidia-cfg.so.${NV_SOVER} \
391 /usr/$(get_libdir)/libnvidia-cfg.so || \
392 die "failed to create libnvidia-cfg.so symlink"
393
394 # NVIDIA monitoring library
395 dolib.so ${NV_LIB}/libnvidia-ml.so.${NV_SOVER} || \
396 die "failed to install libnvidia-ml"
397 dosym /usr/$(get_libdir)/libnvidia-ml.so.${NV_SOVER} \
398 /usr/$(get_libdir)/libnvidia-ml.so || \
399 die "failed to create libnvidia-ml.so symlink"
400
401 # NVIDIA video decode <-> CUDA
402 dolib.so ${NV_LIB}/libnvcuvid.so.${NV_SOVER} || \
403 die "failed to install libnvcuvid.so"
404 dosym /usr/$(get_libdir)/libnvcuvid.so.${NV_SOVER} \
405 /usr/$(get_libdir)/libnvcuvid.so || \
406 die "failed to create libnvcuvid.so symlink"
407
408 # Xorg DDX driver
409 insinto /usr/$(get_libdir)/xorg/modules/drivers
410 doins ${NV_X11_DRV}/nvidia_drv.so || die "failed to install nvidia_drv.so"
411
412 # Xorg GLX driver
413 insinto /usr/$(get_libdir)/opengl/nvidia/extensions
414 doins ${NV_X11_EXT}/libglx.so.${NV_SOVER} || \
415 die "failed to install libglx.so"
416 dosym /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so.${NV_SOVER} \
417 /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so || \
418 die "failed to create libglx.so symlink"
419
420 # XvMC driver
421 dolib.a ${NV_X11}/libXvMCNVIDIA.a || \
422 die "failed to install libXvMCNVIDIA.so"
423 dolib.so ${NV_X11}/libXvMCNVIDIA.so.${NV_SOVER} || \
424 die "failed to install libXvMCNVIDIA.so"
425 dosym libXvMCNVIDIA.so.${NV_SOVER} /usr/$(get_libdir)/libXvMCNVIDIA.so || \
426 die "failed to create libXvMCNVIDIA.so symlink"
427
428 # OpenCL ICD for NVIDIA
429 if use kernel_linux; then
430 dodir /etc/OpenCL/vendors
431 insinto /etc/OpenCL/vendors
432 doins nvidia.icd
433 fi
434
435 # Documentation
436 dohtml ${NV_DOC}/html/*
437 if use x86-fbsd; then
438 dodoc "${NV_DOC}/README"
439 doman "${NV_MAN}/nvidia-xconfig.1"
440 use gtk && doman "${NV_MAN}/nvidia-settings.1"
441 else
442 # Docs
443 newdoc "${NV_DOC}/README.txt" README
444 dodoc "${NV_DOC}/NVIDIA_Changelog"
445 doman "${NV_MAN}/nvidia-smi.1.gz"
446 doman "${NV_MAN}/nvidia-xconfig.1.gz"
447 use gtk && doman "${NV_MAN}/nvidia-settings.1.gz"
448 fi
449
450 # Helper Apps
451 dobin ${NV_EXEC}/nvidia-xconfig || die
452 if use gtk; then
453 dobin ${NV_EXEC}/nvidia-settings || die
454 fi
455 dobin ${NV_EXEC}/nvidia-bug-report.sh || die
456 if use kernel_linux; then
457 dobin ${NV_EXEC}/nvidia-smi || die
458 fi
459
460 # Desktop entries for nvidia-settings
461 if use gtk; then
462 sed -e 's:__UTILS_PATH__:/usr/bin:' \
463 -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' \
464 -i "${NV_EXEC}/nvidia-settings.desktop"
465 domenu ${NV_EXEC}/nvidia-settings.desktop
466
467 doicon ${NV_EXEC}/nvidia-settings.png
468 fi
469
470 if has_multilib_profile ; then
471 local OABI=${ABI}
472 for ABI in $(get_install_abis) ; do
473 src_install-libs
474 done
475 ABI=${OABI}
476 unset OABI
477 else
478 src_install-libs
479 fi
480
481 is_final_abi || die "failed to iterate through all ABIs"
482 }
483
484 # Install nvidia library:
485 # the first parameter is the place where to install it
486 # the second parameter is the base name of the library
487 # the third parameter is the provided soversion
488 donvidia() {
489 dodir $1
490 exeinto $1
491
492 libname=$(basename $2)
493
494 doexe $2.$3 || die "failed to install $2"
495 dosym ${libname}.$3 $1/${libname} || die "failed to symlink $2"
496 [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1
497 }
498
499 src_install-libs() {
500 local inslibdir=$(get_libdir)
501 local NV_ROOT="/usr/${inslibdir}/opengl/nvidia"
502 local libdir= sover=
503
504 if use kernel_linux; then
505 if has_multilib_profile && [[ ${ABI} == "x86" ]] ; then
506 libdir=32
507 else
508 libdir=.
509 fi
510 sover=${PV}
511 else
512 libdir=obj
513 # on FreeBSD it has just .1 suffix
514 sover=1
515 fi
516
517 # The GLX libraries
518 donvidia ${NV_ROOT}/lib ${libdir}/libGL.so ${sover}
519 donvidia /usr/${inslibdir} ${libdir}/libnvidia-glcore.so ${sover}
520 if use x86-fbsd; then
521 donvidia ${NV_ROOT}/lib ${libdir}/libnvidia-tls.so ${sover}
522 else
523 donvidia ${NV_ROOT}/lib ${libdir}/tls/libnvidia-tls.so ${sover}
524 fi
525
526 # VDPAU
527 donvidia /usr/${inslibdir} ${libdir}/libvdpau_nvidia.so ${sover}
528
529 # CUDA & OpenCL
530 if use kernel_linux; then
531 donvidia /usr/${inslibdir} ${libdir}/libcuda.so ${sover}
532 donvidia /usr/${inslibdir} ${libdir}/libnvidia-compiler.so ${sover}
533 donvidia /usr/${inslibdir} ${libdir}/libOpenCL.so 1.0.0
534 dosym libOpenCL.so.1 /usr/${inslibdir}/libOpenCL.so
535 fi
536 }
537
538 pkg_preinst() {
539 if use kernel_linux; then
540 linux-mod_pkg_postinst
541 fi
542
543 # Clean the dynamic libGL stuff's home to ensure
544 # we dont have stale libs floating around
545 if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then
546 rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
547 fi
548 # Make sure we nuke the old nvidia-glx's env.d file
549 if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
550 rm -f "${ROOT}"/etc/env.d/09nvidia
551 fi
552 }
553
554 pkg_postinst() {
555 if use kernel_linux; then
556 linux-mod_pkg_postinst
557 fi
558
559 # Switch to the nvidia implementation
560 eselect opengl set --use-old nvidia
561
562 echo
563 elog "You must be in the video group to use the NVIDIA device"
564 elog "For more info, read the docs at"
565 elog "http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6"
566 elog
567
568 elog "This ebuild installs a kernel module and X driver. Both must"
569 elog "match explicitly in their version. This means, if you restart"
570 elog "X, you must modprobe -r nvidia before starting it back up"
571 elog
572
573 elog "To use the NVIDIA GLX, run \"eselect opengl set nvidia\""
574 elog
575 elog "NVIDIA has requested that any bug reports submitted have the"
576 elog "output of /usr/bin/nvidia-bug-report.sh included."
577 elog
578 elog "To work with compiz, you must enable the AddARGBGLXVisuals option."
579 elog
580 elog "If you are having resolution problems, try disabling DynamicTwinView."
581 elog
582
583 if ! use gtk; then
584 elog "USE=gtk controls whether the nvidia-settings application"
585 elog "is installed. If you would like to use it, enable that"
586 elog "flag and re-emerge this ebuild. media-video/nvidia-settings"
587 elog "no longer installs nvidia-settings but only installs the"
588 elog "associated user space libraries."
589 fi
590 }
591
592 pkg_postrm() {
593 if use kernel_linux; then
594 linux-mod_pkg_postrm
595 fi
596 eselect opengl set --use-old xorg-x11
597 }
598
599
600
601 1.1 x11-drivers/nvidia-drivers/nvidia-drivers-96.43.20.ebuild
602
603 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.20.ebuild?rev=1.1&view=markup
604 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.20.ebuild?rev=1.1&content-type=text/plain
605
606 Index: nvidia-drivers-96.43.20.ebuild
607 ===================================================================
608 # Copyright 1999-2011 Gentoo Foundation
609 # Distributed under the terms of the GNU General Public License v2
610 # $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.20.ebuild,v 1.1 2011/07/27 14:45:17 cardoe Exp $
611
612 EAPI="2"
613
614 inherit eutils multilib versionator linux-mod flag-o-matic nvidia-driver
615
616 X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}"
617 AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
618 X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}"
619
620 DESCRIPTION="NVIDIA X11 driver and GLX libraries"
621 HOMEPAGE="http://www.nvidia.com/"
622 SRC_URI="x86? ( ftp://download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run )
623 amd64? ( ftp://download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run )
624 x86-fbsd? ( ftp://download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )"
625
626 LICENSE="NVIDIA"
627 SLOT="0"
628 KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
629 IUSE="acpi custom-cflags gtk multilib kernel_linux"
630 RESTRICT="strip"
631 EMULTILIB_PKG="true"
632
633 COMMON="<x11-base/xorg-server-1.11
634 gtk? (
635 !media-video/nvidia-settings
636 dev-libs/atk
637 dev-libs/glib
638 x11-libs/gdk-pixbuf
639 x11-libs/gtk+:2
640 x11-libs/libX11
641 x11-libs/libXext
642 x11-libs/pango
643 )
644 kernel_linux? ( >=sys-libs/glibc-2.6.1 )
645 multilib? ( app-emulation/emul-linux-x86-opengl )
646 >=app-admin/eselect-opengl-1.0.9"
647 DEPEND="${COMMON}
648 kernel_linux? ( virtual/linux-sources )"
649 RDEPEND="${COMMON}
650 acpi? ( sys-power/acpid )"
651
652 QA_TEXTRELS_x86="usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
653 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
654 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
655 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
656 usr/lib/xorg/modules/drivers/nvidia_drv.so
657 usr/lib/libcuda.so.${PV}
658 usr/lib/libnvidia-cfg.so.${PV}
659 usr/lib/libvdpau_nvidia.so.${PV}
660 usr/lib/libXvMCNVIDIA.so.${PV}"
661
662 QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko
663 usr/lib/opengl/nvidia/lib/libGL.so.1
664 usr/lib/opengl/nvidia/lib/libGLcore.so.1
665 usr/lib/libnvidia-cfg.so.1
666 usr/lib/opengl/nvidia/extensions/libglx.so.1
667 usr/lib/xorg/modules/drivers/nvidia_drv.so"
668
669 QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
670 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
671 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
672 usr/lib32/libcuda.so.${PV}
673 usr/lib32/libvdpau_nvidia.so.${PV}"
674
675 QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV}
676 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
677 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
678 usr/lib/xorg/modules/drivers/nvidia_drv.so
679 usr/lib/libXvMCNVIDIA.a:NVXVMC.o"
680
681 QA_EXECSTACK_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
682 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
683 usr/lib64/libnvcompiler.so.${PV}
684 usr/lib64/libXvMCNVIDIA.so.${PV}
685 usr/lib64/libXvMCNVIDIA.a:NVXVMC.o
686 usr/lib64/libnvidia-cfg.so.${PV}
687 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
688 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
689 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
690 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
691 usr/lib64/xorg/modules/drivers/nvidia_drv.so
692 usr/bin/nvidia-settings
693 usr/bin/nvidia-smi
694 usr/bin/nvidia-xconfig"
695
696 QA_WX_LOAD_x86="usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
697 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
698 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
699 usr/lib/libXvMCNVIDIA.a"
700
701 QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
702 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
703 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
704 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
705 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}"
706
707 QA_SONAME_amd64="usr/lib64/libnvcompiler.so.${PV}"
708
709 QA_DT_HASH_amd64="usr/lib32/libcuda.so.${PV}
710 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
711 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
712 usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
713 usr/lib32/libvdpau_nvidia.so.${PV}
714 usr/lib64/libXvMCNVIDIA.so.${PV}
715 usr/lib64/libcuda.so.${PV}
716 usr/lib64/libnvidia-cfg.so.${PV}
717 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
718 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
719 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
720 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
721 usr/lib64/xorg/modules/drivers/nvidia_drv.so
722 usr/lib64/libvdpau_nvidia.so.${PV}
723 usr/bin/nvidia-settings
724 usr/bin/nvidia-smi
725 usr/bin/nvidia-xconfig"
726
727 QA_DT_HASH_x86="usr/lib/libcuda.so.${PV}
728 usr/lib/libnvidia-cfg.so.${PV}
729 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
730 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
731 usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
732 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
733 usr/lib/xorg/modules/drivers/nvidia_drv.so
734 usr/lib/libXvMCNVIDIA.so.${PV}
735 usr/lib/libvdpau_nvidia.so.${PV}
736 usr/bin/nvidia-settings
737 usr/bin/nvidia-smi
738 usr/bin/nvidia-xconfig"
739
740 if use x86; then
741 PKG_V="-pkg0"
742 NV_PACKAGE="${X86_NV_PACKAGE}"
743 elif use amd64; then
744 PKG_V="-pkg2"
745 NV_PACKAGE="${AMD64_NV_PACKAGE}"
746 elif use x86-fbsd; then
747 PKG_V=""
748 NV_PACKAGE="${X86_FBSD_NV_PACKAGE}"
749 fi
750
751 S="${WORKDIR}/${NV_PACKAGE}${PKG_V}"
752
753 mtrr_check() {
754 ebegin "Checking for MTRR support"
755 linux_chkconfig_present MTRR
756 eend $?
757
758 if [[ $? -ne 0 ]] ; then
759 eerror "Please enable MTRR support in your kernel config, found at:"
760 eerror
761 eerror " Processor type and features"
762 eerror " [*] MTRR (Memory Type Range Register) support"
763 eerror
764 eerror "and recompile your kernel ..."
765 die "MTRR support not detected!"
766 fi
767 }
768
769 lockdep_check() {
770 if linux_chkconfig_present LOCKDEP; then
771 eerror "You've enabled LOCKDEP -- lock tracking -- in the kernel."
772 eerror "Unfortunately, this option exports the symbol 'lockdep_init_map' as GPL-only"
773 eerror "which will prevent ${P} from compiling."
774 eerror "Please make sure the following options have been unset:"
775 eerror " Kernel hacking --->"
776 eerror " [ ] Lock debugging: detect incorrect freeing of live locks"
777 eerror " [ ] Lock debugging: prove locking correctness"
778 eerror " [ ] Lock usage statistics"
779 eerror "in 'menuconfig'"
780 die "LOCKDEP enabled"
781 fi
782 }
783
784 pkg_setup() {
785 # try to turn off distcc and ccache for people that have a problem with it
786 export DISTCC_DISABLE=1
787 export CCACHE_DISABLE=1
788
789 if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then
790 eerror "This ebuild doesn't currently support changing your default abi."
791 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
792 fi
793
794 if use kernel_linux; then
795 linux-mod_pkg_setup
796 MODULE_NAMES="nvidia(video:${S}/usr/src/nv)"
797 BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
798 SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)"
799 mtrr_check
800 lockdep_check
801 fi
802
803 # On BSD userland it wants real make command
804 use userland_BSD && MAKE="$(get_bmake)"
805
806 export _POSIX2_VERSION="199209"
807
808 # Since Nvidia ships 3 different series of drivers, we need to give the user
809 # some kind of guidance as to what version they should install. This tries
810 # to point the user in the right direction but can't be perfect. check
811 # nvidia-driver.eclass
812 nvidia-driver-check-warning
813
814 # set variables to where files are in the package structure
815 if use kernel_FreeBSD; then
816 NV_DOC="${S}/doc"
817 NV_EXEC="${S}/obj"
818 NV_LIB="${S}/obj"
819 NV_SRC="${S}/src"
820 NV_MAN="${S}/x11/man"
821 NV_X11="${S}/obj"
822 NV_X11_DRV="${NV_X11}"
823 NV_X11_EXT="${NV_X11}"
824 NV_SOVER=1
825 elif use kernel_linux; then
826 NV_DOC="${S}/usr/share/doc"
827 NV_EXEC="${S}/usr/bin"
828 NV_LIB="${S}/usr/lib"
829 NV_SRC="${S}/usr/src/nv"
830 NV_MAN="${S}/usr/share/man/man1"
831 NV_X11="${S}/usr/X11R6/lib"
832 NV_X11_DRV="${NV_X11}/modules/drivers"
833 NV_X11_EXT="${NV_X11}/modules/extensions"
834 NV_SOVER=${PV}
835 else
836 die "Could not determine proper NVIDIA package"
837 fi
838 }
839
840 src_unpack() {
841 if use kernel_linux && kernel_is lt 2 6 7; then
842 echo
843 ewarn "Your kernel version is ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
844 ewarn "This is not officially supported for ${P}. It is likely you"
845 ewarn "will not be able to compile or use the kernel module."
846 ewarn "It is recommended that you upgrade your kernel to a version >= 2.6.7"
847 echo
848 ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored."
849 fi
850
851 if ! use x86-fbsd; then
852 mkdir "${S}"
853 cd "${S}"
854 unpack_makeself
855 else
856 unpack ${A}
857 fi
858 }
859
860 src_prepare() {
861 # Please add a brief description for every added patch
862 use x86-fbsd && cd doc
863
864 # Use the correct defines to make gtkglext build work
865 epatch "${FILESDIR}"/NVIDIA_glx-defines.patch
866 # Use some more sensible gl headers and make way for new glext.h
867 epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch
868
869 if use kernel_linux; then
870 # Quiet down warnings the user does not need to see
871 sed -i \
872 -e 's:-Wpointer-arith::g' \
873 -e 's:-Wsign-compare::g' \
874 "${NV_SRC}"/Makefile.kbuild
875
876 epatch "${FILESDIR}"/${PN}-173.14.30-2.6.39.patch #368939
877
878 # If you set this then it's your own fault when stuff breaks :)
879 use custom-cflags && sed -i "s:-O:${CFLAGS}:" "${NV_SRC}"/Makefile.*
880
881 # If greater than 2.6.5 use M= instead of SUBDIR=
882 convert_to_m "${NV_SRC}"/Makefile.kbuild
883 fi
884 }
885
886 src_compile() {
887 # This is already the default on Linux, as there's no toplevel Makefile, but
888 # on FreeBSD there's one and triggers the kernel module build, as we install
889 # it by itself, pass this.
890
891 cd "${NV_SRC}"
892 if use x86-fbsd; then
893 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
894 LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
895 elif use kernel_linux; then
896 linux-mod_src_compile
897 fi
898 }
899
900 src_install() {
901 if use kernel_linux; then
902 linux-mod_src_install
903
904 VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)"
905 if [ -z "$VIDEOGROUP" ]; then
906 eerror "Failed to determine the video group gid."
907 die "Failed to determine the video group gid."
908 fi
909
910 # Add the aliases
911 [ -f "${FILESDIR}/nvidia-169.07" ] || die "nvidia missing in FILESDIR"
912 sed -e 's:PACKAGE:'${PF}':g' \
913 -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia-169.07 > \
914 "${WORKDIR}"/nvidia
915 insinto /etc/modprobe.d
916 newins "${WORKDIR}"/nvidia nvidia.conf || die
917 elif use x86-fbsd; then
918 insinto /boot/modules
919 doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" || die
920
921 exeinto /boot/modules
922 doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" || die
923 fi
924
925 # NVIDIA kernel <-> userspace driver config lib
926 dolib.so ${NV_LIB}/libnvidia-cfg.so.${NV_SOVER} || \
927 die "failed to install libnvidia-cfg"
928
929 # Xorg DDX driver
930 insinto /usr/$(get_libdir)/xorg/modules/drivers
931 doins ${NV_X11_DRV}/nvidia_drv.so || die "failed to install nvidia_drv.so"
932
933 # Xorg GLX driver
934 insinto /usr/$(get_libdir)/opengl/nvidia/extensions
935 doins ${NV_X11_EXT}/libglx.so.${NV_SOVER} || \
936 die "failed to install libglx.so"
937 dosym /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so.${NV_SOVER} \
938 /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so || \
939 die "failed to create libglx.so symlink"
940
941 # XvMC driver
942 dolib.a ${NV_X11}/libXvMCNVIDIA.a || \
943 die "failed to install libXvMCNVIDIA.so"
944 dolib.so ${NV_X11}/libXvMCNVIDIA.so.${NV_SOVER} || \
945 die "failed to install libXvMCNVIDIA.so"
946 dosym libXvMCNVIDIA.so.${NV_SOVER} /usr/$(get_libdir)/libXvMCNVIDIA.so || \
947 die "failed to create libXvMCNVIDIA.so symlink"
948
949 # CUDA headers (driver to come)
950 if [[ -d ${S}/usr/include/cuda ]]; then
951 dodir /usr/include/cuda
952 insinto /usr/include/cuda
953 doins usr/include/cuda/*.h || die "failed to install cuda headers"
954 fi
955
956 # OpenCL headers (driver to come)
957 if [[ -d ${S}/usr/include/CL ]]; then
958 dodir /usr/include/CL
959 insinto /usr/include/CL
960 doins usr/include/CL/*.h || die "failed to install OpenCL headers"
961 fi
962
963 # Documentation
964 dodoc ${NV_DOC}/XF86Config.sample
965 dohtml ${NV_DOC}/html/*
966 if use x86-fbsd; then
967 dodoc "${NV_DOC}/README"
968 doman "${NV_MAN}/nvidia-xconfig.1"
969 else
970 # Docs
971 newdoc "${NV_DOC}/README.txt" README
972 dodoc "${NV_DOC}/NVIDIA_Changelog"
973 # doman "${NV_MAN}/nvidia-smi.1.gz"
974 doman "${NV_MAN}/nvidia-xconfig.1.gz"
975 fi
976
977 # Helper Apps
978 dobin ${NV_EXEC}/nvidia-xconfig || die
979 dobin ${NV_EXEC}/nvidia-bug-report.sh || die
980 if use gtk; then
981 dobin usr/bin/nvidia-settings || die
982 fi
983 # if use kernel_linux; then
984 # dobin ${NV_EXEC}/nvidia-smi || die
985 # fi
986
987 if has_multilib_profile ; then
988 local OABI=${ABI}
989 for ABI in $(get_install_abis) ; do
990 src_install-libs
991 done
992 ABI=${OABI}
993 unset OABI
994 else
995 src_install-libs
996 fi
997
998 is_final_abi || die "failed to iterate through all ABIs"
999 }
1000
1001 # Install nvidia library:
1002 # the first parameter is the place where to install it
1003 # the second parameter is the base name of the library
1004 # the third parameter is the provided soversion
1005 donvidia() {
1006 dodir $1
1007 exeinto $1
1008
1009 libname=$(basename $2)
1010
1011 doexe $2.$3 || die "failed to install $2"
1012 dosym ${libname}.$3 $1/${libname} || die "failed to symlink $2"
1013 [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1
1014 }
1015
1016 src_install-libs() {
1017 local inslibdir=$(get_libdir)
1018 local NV_ROOT="/usr/${inslibdir}/opengl/nvidia"
1019 local libdir= sover=
1020
1021 if use kernel_linux; then
1022 if has_multilib_profile && [[ ${ABI} == "x86" ]] ; then
1023 libdir=usr/lib32
1024 else
1025 libdir=usr/lib
1026 fi
1027 sover=${PV}
1028 else
1029 libdir=obj
1030 # on FreeBSD it has just .1 suffix
1031 sover=1
1032 fi
1033
1034 # The GLX libraries
1035 donvidia ${NV_ROOT}/lib ${libdir}/libGL.so ${sover}
1036 donvidia ${NV_ROOT}/lib ${libdir}/libGLcore.so ${sover}
1037 if use x86-fbsd; then
1038 donvidia ${NV_ROOT}/lib ${libdir}/libnvidia-tls.so ${sover}
1039 else
1040 donvidia ${NV_ROOT}/lib ${libdir}/tls/libnvidia-tls.so ${sover}
1041 fi
1042
1043 #cuda
1044 if [[ -f ${libdir}/libcuda.so.${sover} ]]; then
1045 dolib.so ${libdir}/libcuda.so.${sover}
1046 [[ "${sover}" != "1" ]] && dosym libcuda.so.${sover} /usr/${inslibdir}/libcuda.so.1
1047 dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so
1048 fi
1049
1050 #vdpau
1051 if [[ -f ${libdir}/libvdpau_nvidia.so.${sover} ]]; then
1052 dolib.so ${libdir}/libvdpau_nvidia.so.${sover}
1053 dosym libvdpau_nvidia.so.${sover} /usr/${inslibdir}/libvdpau_nvidia.so
1054 fi
1055
1056 # OpenCL
1057 # NOTE: This isn't currently available in the publicly released drivers.
1058 if [[ -f ${libdir}/libOpenCL.so.1.0.0 ]]; then
1059
1060 dolib.so ${libdir}/libnvcompiler.so.${sover}
1061 [[ "${sover}" != "1" ]] && dosym libnvcompiler.so.${sover} /usr/${inslibdir}/libnvcompiler.so.1
1062 dosym libnvcompiler.so.1 /usr/${inslibdir}/libnvcompiler.so
1063
1064 dolib.so ${libdir}/libOpenCL.so.1.0.0
1065 dosym libOpenCL.so.1.0.0 /usr/${inslibdir}/libOpenCL.so.1
1066 dosym libOpenCL.so.1 /usr/${inslibdir}/libOpenCL.so
1067 fi
1068 }
1069
1070 pkg_preinst() {
1071 if use kernel_linux; then
1072 linux-mod_pkg_postinst
1073 fi
1074
1075 # Clean the dynamic libGL stuff's home to ensure
1076 # we dont have stale libs floating around
1077 if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then
1078 rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
1079 fi
1080 # Make sure we nuke the old nvidia-glx's env.d file
1081 if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
1082 rm -f "${ROOT}"/etc/env.d/09nvidia
1083 fi
1084 }
1085
1086 pkg_postinst() {
1087 if use kernel_linux; then
1088 linux-mod_pkg_postinst
1089 fi
1090
1091 # Switch to the nvidia implementation
1092 eselect opengl set --use-old nvidia
1093
1094 echo
1095 elog "You must be in the video group to use the NVIDIA device"
1096 elog "For more info, read the docs at"
1097 elog "http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6"
1098 elog
1099
1100 elog "This ebuild installs a kernel module and X driver. Both must"
1101 elog "match explicitly in their version. This means, if you restart"
1102 elog "X, you must modprobe -r nvidia before starting it back up"
1103 elog
1104
1105 elog "To use the NVIDIA GLX, run \"eselect opengl set nvidia\""
1106 elog
1107 elog "NVIDIA has requested that any bug reports submitted have the"
1108 elog "output of /usr/bin/nvidia-bug-report.sh included."
1109 elog
1110 elog "To work with compiz, you must enable the AddARGBGLXVisuals option."
1111 elog
1112 elog "If you are having resolution problems, try disabling DynamicTwinView."
1113 echo
1114 }
1115
1116 pkg_postrm() {
1117 if use kernel_linux; then
1118 linux-mod_pkg_postrm
1119 fi
1120 eselect opengl set --use-old xorg-x11
1121 }
1122
1123
1124
1125 1.1 x11-drivers/nvidia-drivers/nvidia-drivers-173.14.31.ebuild
1126
1127 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.31.ebuild?rev=1.1&view=markup
1128 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.31.ebuild?rev=1.1&content-type=text/plain
1129
1130 Index: nvidia-drivers-173.14.31.ebuild
1131 ===================================================================
1132 # Copyright 1999-2011 Gentoo Foundation
1133 # Distributed under the terms of the GNU General Public License v2
1134 # $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.31.ebuild,v 1.1 2011/07/27 14:45:17 cardoe Exp $
1135
1136 EAPI="2"
1137
1138 inherit eutils multilib versionator linux-mod flag-o-matic nvidia-driver
1139
1140 X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}"
1141 AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
1142 X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}"
1143
1144 DESCRIPTION="NVIDIA X11 driver and GLX libraries"
1145 HOMEPAGE="http://www.nvidia.com/"
1146 SRC_URI="x86? ( ftp://download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run )
1147 amd64? ( ftp://download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run )
1148 x86-fbsd? ( ftp://download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )"
1149
1150 LICENSE="NVIDIA"
1151 SLOT="0"
1152 KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
1153 IUSE="acpi custom-cflags gtk multilib kernel_linux"
1154 RESTRICT="strip"
1155 EMULTILIB_PKG="true"
1156
1157 COMMON="<x11-base/xorg-server-1.11
1158 kernel_linux? ( >=sys-libs/glibc-2.6.1 )
1159 multilib? ( app-emulation/emul-linux-x86-opengl )
1160 >=app-admin/eselect-opengl-1.0.9"
1161 DEPEND="${COMMON}
1162 kernel_linux? ( virtual/linux-sources )"
1163 RDEPEND="${COMMON}
1164 acpi? ( sys-power/acpid )"
1165 PDEPEND="gtk? ( media-video/nvidia-settings )"
1166
1167 QA_TEXTRELS_x86="usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1168 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
1169 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
1170 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
1171 usr/lib/xorg/modules/drivers/nvidia_drv.so
1172 usr/lib/libcuda.so.${PV}
1173 usr/lib/libnvidia-cfg.so.${PV}
1174 usr/lib/libvdpau_nvidia.so.${PV}
1175 usr/lib/libXvMCNVIDIA.so.${PV}"
1176
1177 QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko
1178 usr/lib/opengl/nvidia/lib/libGL.so.1
1179 usr/lib/opengl/nvidia/lib/libGLcore.so.1
1180 usr/lib/libnvidia-cfg.so.1
1181 usr/lib/opengl/nvidia/extensions/libglx.so.1
1182 usr/lib/xorg/modules/drivers/nvidia_drv.so"
1183
1184 QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1185 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
1186 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
1187 usr/lib32/libcuda.so.${PV}
1188 usr/lib32/libvdpau_nvidia.so.${PV}"
1189
1190 QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV}
1191 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
1192 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
1193 usr/lib/xorg/modules/drivers/nvidia_drv.so
1194 usr/lib/libXvMCNVIDIA.a:NVXVMC.o"
1195
1196 QA_EXECSTACK_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
1197 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
1198 usr/lib64/libnvcompiler.so.${PV}
1199 usr/lib64/libXvMCNVIDIA.so.${PV}
1200 usr/lib64/libXvMCNVIDIA.a:NVXVMC.o
1201 usr/lib64/libnvidia-cfg.so.${PV}
1202 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1203 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
1204 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
1205 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
1206 usr/lib64/xorg/modules/drivers/nvidia_drv.so
1207 usr/bin/nvidia-smi
1208 usr/bin/nvidia-xconfig"
1209
1210 QA_WX_LOAD_x86="usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
1211 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
1212 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
1213 usr/lib/libXvMCNVIDIA.a"
1214
1215 QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
1216 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
1217 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
1218 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
1219 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}"
1220
1221 QA_SONAME_amd64="usr/lib64/libnvcompiler.so.${PV}"
1222
1223 QA_DT_HASH_amd64="usr/lib32/libcuda.so.${PV}
1224 usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
1225 usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
1226 usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1227 usr/lib32/libvdpau_nvidia.so.${PV}
1228 usr/lib64/libXvMCNVIDIA.so.${PV}
1229 usr/lib64/libcuda.so.${PV}
1230 usr/lib64/libnvidia-cfg.so.${PV}
1231 usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
1232 usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
1233 usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1234 usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}
1235 usr/lib64/xorg/modules/drivers/nvidia_drv.so
1236 usr/lib64/libvdpau_nvidia.so.${PV}
1237 usr/bin/nvidia-smi
1238 usr/bin/nvidia-xconfig"
1239
1240 QA_DT_HASH_x86="usr/lib/libcuda.so.${PV}
1241 usr/lib/libnvidia-cfg.so.${PV}
1242 usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
1243 usr/lib/opengl/nvidia/lib/libGL.so.${PV}
1244 usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV}
1245 usr/lib/opengl/nvidia/extensions/libglx.so.${PV}
1246 usr/lib/xorg/modules/drivers/nvidia_drv.so
1247 usr/lib/libXvMCNVIDIA.so.${PV}
1248 usr/lib/libvdpau_nvidia.so.${PV}
1249 usr/bin/nvidia-smi
1250 usr/bin/nvidia-xconfig"
1251
1252 if use x86; then
1253 PKG_V="-pkg0"
1254 NV_PACKAGE="${X86_NV_PACKAGE}"
1255 elif use amd64; then
1256 PKG_V="-pkg2"
1257 NV_PACKAGE="${AMD64_NV_PACKAGE}"
1258 elif use x86-fbsd; then
1259 PKG_V=""
1260 NV_PACKAGE="${X86_FBSD_NV_PACKAGE}"
1261 fi
1262
1263 S="${WORKDIR}/${NV_PACKAGE}${PKG_V}"
1264
1265 mtrr_check() {
1266 ebegin "Checking for MTRR support"
1267 linux_chkconfig_present MTRR
1268 eend $?
1269
1270 if [[ $? -ne 0 ]] ; then
1271 eerror "Please enable MTRR support in your kernel config, found at:"
1272 eerror
1273 eerror " Processor type and features"
1274 eerror " [*] MTRR (Memory Type Range Register) support"
1275 eerror
1276 eerror "and recompile your kernel ..."
1277 die "MTRR support not detected!"
1278 fi
1279 }
1280
1281 lockdep_check() {
1282 if linux_chkconfig_present LOCKDEP; then
1283 eerror "You've enabled LOCKDEP -- lock tracking -- in the kernel."
1284 eerror "Unfortunately, this option exports the symbol 'lockdep_init_map' as GPL-only"
1285 eerror "which will prevent ${P} from compiling."
1286 eerror "Please make sure the following options have been unset:"
1287 eerror " Kernel hacking --->"
1288 eerror " [ ] Lock debugging: detect incorrect freeing of live locks"
1289 eerror " [ ] Lock debugging: prove locking correctness"
1290 eerror " [ ] Lock usage statistics"
1291 eerror "in 'menuconfig'"
1292 die "LOCKDEP enabled"
1293 fi
1294 }
1295
1296 pkg_setup() {
1297 # try to turn off distcc and ccache for people that have a problem with it
1298 export DISTCC_DISABLE=1
1299 export CCACHE_DISABLE=1
1300
1301 if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then
1302 eerror "This ebuild doesn't currently support changing your default abi."
1303 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
1304 fi
1305
1306 if use kernel_linux; then
1307 linux-mod_pkg_setup
1308 MODULE_NAMES="nvidia(video:${S}/usr/src/nv)"
1309 BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
1310 SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)"
1311 mtrr_check
1312 lockdep_check
1313 fi
1314
1315 # On BSD userland it wants real make command
1316 use userland_BSD && MAKE="$(get_bmake)"
1317
1318 export _POSIX2_VERSION="199209"
1319
1320 # Since Nvidia ships 3 different series of drivers, we need to give the user
1321 # some kind of guidance as to what version they should install. This tries
1322 # to point the user in the right direction but can't be perfect. check
1323 # nvidia-driver.eclass
1324 nvidia-driver-check-warning
1325
1326 # set variables to where files are in the package structure
1327 if use kernel_FreeBSD; then
1328 NV_DOC="${S}/doc"
1329 NV_EXEC="${S}/obj"
1330 NV_LIB="${S}/obj"
1331 NV_SRC="${S}/src"
1332 NV_MAN="${S}/x11/man"
1333 NV_X11="${S}/obj"
1334 NV_X11_DRV="${NV_X11}"
1335 NV_X11_EXT="${NV_X11}"
1336 NV_SOVER=1
1337 elif use kernel_linux; then
1338 NV_DOC="${S}/usr/share/doc"
1339 NV_EXEC="${S}/usr/bin"
1340 NV_LIB="${S}/usr/lib"
1341 NV_SRC="${S}/usr/src/nv"
1342 NV_MAN="${S}/usr/share/man/man1"
1343 NV_X11="${S}/usr/X11R6/lib"
1344 NV_X11_DRV="${NV_X11}/modules/drivers"
1345 NV_X11_EXT="${NV_X11}/modules/extensions"
1346 NV_SOVER=${PV}
1347 else
1348 die "Could not determine proper NVIDIA package"
1349 fi
1350 }
1351
1352 src_unpack() {
1353 if use kernel_linux && kernel_is lt 2 6 7; then
1354 echo
1355 ewarn "Your kernel version is ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
1356 ewarn "This is not officially supported for ${P}. It is likely you"
1357 ewarn "will not be able to compile or use the kernel module."
1358 ewarn "It is recommended that you upgrade your kernel to a version >= 2.6.7"
1359 echo
1360 ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored."
1361 fi
1362
1363 if ! use x86-fbsd; then
1364 mkdir "${S}"
1365 cd "${S}"
1366 unpack_makeself
1367 else
1368 unpack ${A}
1369 fi
1370 }
1371
1372 src_prepare() {
1373 # Please add a brief description for every added patch
1374 use x86-fbsd && cd doc
1375
1376 # Use the correct defines to make gtkglext build work
1377 epatch "${FILESDIR}"/NVIDIA_glx-defines.patch
1378 # Use some more sensible gl headers and make way for new glext.h
1379 epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch
1380
1381 if use kernel_linux; then
1382 # Quiet down warnings the user does not need to see
1383 sed -i \
1384 -e 's:-Wpointer-arith::g' \
1385 -e 's:-Wsign-compare::g' \
1386 "${NV_SRC}"/Makefile.kbuild
1387
1388 # If you set this then it's your own fault when stuff breaks :)
1389 use custom-cflags && sed -i "s:-O:${CFLAGS}:" "${NV_SRC}"/Makefile.*
1390
1391 # If greater than 2.6.5 use M= instead of SUBDIR=
1392 convert_to_m "${NV_SRC}"/Makefile.kbuild
1393 fi
1394 }
1395
1396 src_compile() {
1397 # This is already the default on Linux, as there's no toplevel Makefile, but
1398 # on FreeBSD there's one and triggers the kernel module build, as we install
1399 # it by itself, pass this.
1400
1401 cd "${NV_SRC}"
1402 if use x86-fbsd; then
1403 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
1404 LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
1405 elif use kernel_linux; then
1406 linux-mod_src_compile
1407 fi
1408 }
1409
1410 src_install() {
1411 if use kernel_linux; then
1412 linux-mod_src_install
1413
1414 VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)"
1415 if [ -z "$VIDEOGROUP" ]; then
1416 eerror "Failed to determine the video group gid."
1417 die "Failed to determine the video group gid."
1418 fi
1419
1420 # Add the aliases
1421 [ -f "${FILESDIR}/nvidia-169.07" ] || die "nvidia missing in FILESDIR"
1422 sed -e 's:PACKAGE:'${PF}':g' \
1423 -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia-169.07 > \
1424 "${WORKDIR}"/nvidia
1425 insinto /etc/modprobe.d
1426 newins "${WORKDIR}"/nvidia nvidia.conf || die
1427 elif use x86-fbsd; then
1428 insinto /boot/modules
1429 doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" || die
1430
1431 exeinto /boot/modules
1432 doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" || die
1433 fi
1434
1435 # NVIDIA kernel <-> userspace driver config lib
1436 dolib.so ${NV_LIB}/libnvidia-cfg.so.${NV_SOVER} || \
1437 die "failed to install libnvidia-cfg"
1438
1439 # Xorg DDX driver
1440 insinto /usr/$(get_libdir)/xorg/modules/drivers
1441 doins ${NV_X11_DRV}/nvidia_drv.so || die "failed to install nvidia_drv.so"
1442
1443 # Xorg GLX driver
1444 insinto /usr/$(get_libdir)/opengl/nvidia/extensions
1445 doins ${NV_X11_EXT}/libglx.so.${NV_SOVER} || \
1446 die "failed to install libglx.so"
1447 dosym /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so.${NV_SOVER} \
1448 /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so || \
1449 die "failed to create libglx.so symlink"
1450
1451 # XvMC driver
1452 dolib.a ${NV_X11}/libXvMCNVIDIA.a || \
1453 die "failed to install libXvMCNVIDIA.so"
1454 dolib.so ${NV_X11}/libXvMCNVIDIA.so.${NV_SOVER} || \
1455 die "failed to install libXvMCNVIDIA.so"
1456 dosym libXvMCNVIDIA.so.${NV_SOVER} /usr/$(get_libdir)/libXvMCNVIDIA.so || \
1457 die "failed to create libXvMCNVIDIA.so symlink"
1458
1459 # CUDA headers (driver to come)
1460 if use kernel_linux && [[ -d ${S}/usr/include/cuda ]]; then
1461 dodir /usr/include/cuda
1462 insinto /usr/include/cuda
1463 doins usr/include/cuda/*.h || die "failed to install cuda headers"
1464 fi
1465
1466 # OpenCL headers (driver to come)
1467 if [[ -d ${S}/usr/include/CL ]]; then
1468 dodir /usr/include/CL
1469 insinto /usr/include/CL
1470 doins usr/include/CL/*.h || die "failed to install OpenCL headers"
1471 fi
1472
1473 # Documentation
1474 dodoc ${NV_DOC}/XF86Config.sample
1475 dohtml ${NV_DOC}/html/*
1476 if use x86-fbsd; then
1477 dodoc "${NV_DOC}/README"
1478 doman "${NV_MAN}/nvidia-xconfig.1"
1479 else
1480 # Docs
1481 newdoc "${NV_DOC}/README.txt" README
1482 dodoc "${NV_DOC}/NVIDIA_Changelog"
1483 # doman "${NV_MAN}/nvidia-smi.1.gz"
1484 doman "${NV_MAN}/nvidia-xconfig.1.gz"
1485 fi
1486
1487 # Helper Apps
1488 dobin ${NV_EXEC}/nvidia-xconfig || die
1489 dobin ${NV_EXEC}/nvidia-bug-report.sh || die
1490 if use kernel_linux; then
1491 dobin ${NV_EXEC}/nvidia-smi || die
1492 fi
1493
1494 if has_multilib_profile ; then
1495 local OABI=${ABI}
1496 for ABI in $(get_install_abis) ; do
1497 src_install-libs
1498 done
1499 ABI=${OABI}
1500 unset OABI
1501 else
1502 src_install-libs
1503 fi
1504
1505 is_final_abi || die "failed to iterate through all ABIs"
1506 }
1507
1508 # Install nvidia library:
1509 # the first parameter is the place where to install it
1510 # the second parameter is the base name of the library
1511 # the third parameter is the provided soversion
1512 donvidia() {
1513 dodir $1
1514 exeinto $1
1515
1516 libname=$(basename $2)
1517
1518 doexe $2.$3 || die "failed to install $2"
1519 dosym ${libname}.$3 $1/${libname} || die "failed to symlink $2"
1520 [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1
1521 }
1522
1523 src_install-libs() {
1524 local inslibdir=$(get_libdir)
1525 local NV_ROOT="/usr/${inslibdir}/opengl/nvidia"
1526 local libdir= sover=
1527
1528 if use kernel_linux; then
1529 if has_multilib_profile && [[ ${ABI} == "x86" ]] ; then
1530 libdir=usr/lib32
1531 else
1532 libdir=usr/lib
1533 fi
1534 sover=${PV}
1535 else
1536 libdir=obj
1537 # on FreeBSD it has just .1 suffix
1538 sover=1
1539 fi
1540
1541 # The GLX libraries
1542 donvidia ${NV_ROOT}/lib ${libdir}/libGL.so ${sover}
1543 donvidia ${NV_ROOT}/lib ${libdir}/libGLcore.so ${sover}
1544 if use x86-fbsd; then
1545 donvidia ${NV_ROOT}/lib ${libdir}/libnvidia-tls.so ${sover}
1546 else
1547 donvidia ${NV_ROOT}/lib ${libdir}/tls/libnvidia-tls.so ${sover}
1548 fi
1549
1550 #cuda
1551 if [[ -f ${libdir}/libcuda.so.${sover} ]]; then
1552 dolib.so ${libdir}/libcuda.so.${sover}
1553 [[ "${sover}" != "1" ]] && dosym libcuda.so.${sover} /usr/${inslibdir}/libcuda.so.1
1554 dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so
1555 fi
1556
1557 #vdpau
1558 if [[ -f ${libdir}/libvdpau_nvidia.so.${sover} ]]; then
1559 dolib.so ${libdir}/libvdpau_nvidia.so.${sover}
1560 dosym libvdpau_nvidia.so.${sover} /usr/${inslibdir}/libvdpau_nvidia.so
1561 fi
1562
1563 # OpenCL
1564 # NOTE: This isn't currently available in the publicly released drivers.
1565 if [[ -f ${libdir}/libOpenCL.so.1.0.0 ]]; then
1566
1567 dolib.so ${libdir}/libnvcompiler.so.${sover}
1568 [[ "${sover}" != "1" ]] && dosym libnvcompiler.so.${sover} /usr/${inslibdir}/libnvcompiler.so.1
1569 dosym libnvcompiler.so.1 /usr/${inslibdir}/libnvcompiler.so
1570
1571 dolib.so ${libdir}/libOpenCL.so.1.0.0
1572 dosym libOpenCL.so.1.0.0 /usr/${inslibdir}/libOpenCL.so.1
1573 dosym libOpenCL.so.1 /usr/${inslibdir}/libOpenCL.so
1574 fi
1575 }
1576
1577 pkg_preinst() {
1578 if use kernel_linux; then
1579 linux-mod_pkg_postinst
1580 fi
1581
1582 # Clean the dynamic libGL stuff's home to ensure
1583 # we dont have stale libs floating around
1584 if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then
1585 rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
1586 fi
1587 # Make sure we nuke the old nvidia-glx's env.d file
1588 if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
1589 rm -f "${ROOT}"/etc/env.d/09nvidia
1590 fi
1591 }
1592
1593 pkg_postinst() {
1594 if use kernel_linux; then
1595 linux-mod_pkg_postinst
1596 fi
1597
1598 # Switch to the nvidia implementation
1599 eselect opengl set --use-old nvidia
1600
1601 echo
1602 elog "You must be in the video group to use the NVIDIA device"
1603 elog "For more info, read the docs at"
1604 elog "http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6"
1605 elog
1606
1607 elog "This ebuild installs a kernel module and X driver. Both must"
1608 elog "match explicitly in their version. This means, if you restart"
1609 elog "X, you must modprobe -r nvidia before starting it back up"
1610 elog
1611
1612 elog "To use the NVIDIA GLX, run \"eselect opengl set nvidia\""
1613 elog
1614 elog "NVIDIA has requested that any bug reports submitted have the"
1615 elog "output of /usr/bin/nvidia-bug-report.sh included."
1616 elog
1617 elog "To work with compiz, you must enable the AddARGBGLXVisuals option."
1618 elog
1619 elog "If you are having resolution problems, try disabling DynamicTwinView."
1620 echo
1621 }
1622
1623 pkg_postrm() {
1624 if use kernel_linux; then
1625 linux-mod_pkg_postrm
1626 fi
1627 eselect opengl set --use-old xorg-x11
1628 }