Add x11-drivers/nvidia-drivers-180.{29,60}.
[overlay.git] / x11-drivers / nvidia-drivers / nvidia-drivers-180.60.ebuild
1 # Copyright 1999-2009 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-180.60.ebuild,v 1.6 2009/08/03 00:47:30 cardoe Exp $
4
5 inherit eutils multilib versionator linux-mod flag-o-matic nvidia-driver
6
7 X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}"
8 AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
9 X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}"
10
11 DESCRIPTION="NVIDIA X11 driver and GLX libraries"
12 HOMEPAGE="http://www.nvidia.com/"
13 SRC_URI="x86? ( ftp://download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run )
14          amd64? ( ftp://download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run )
15          x86-fbsd? ( ftp://download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )"
16
17 LICENSE="NVIDIA"
18 SLOT="0"
19 KEYWORDS="-* amd64 x86 ~x86-fbsd"
20 IUSE="acpi custom-cflags gtk multilib kernel_linux"
21 RESTRICT="strip"
22 EMULTILIB_PKG="true"
23
24 COMMON="<x11-base/xorg-server-1.6.99
25         multilib? ( app-emulation/emul-linux-x86-xlibs )
26         kernel_FreeBSD? ( !media-video/nvidia-freebsd )
27         !app-emulation/emul-linux-x86-nvidia
28         !x11-drivers/nvidia-legacy-drivers"
29 DEPEND="${COMMON}
30         kernel_linux? ( virtual/linux-sources )
31         app-admin/eselect-opengl"
32 RDEPEND="${COMMON}
33         kernel_linux? ( virtual/modutils )
34         media-libs/mesa
35         acpi? ( sys-power/acpid )"
36 PDEPEND="gtk? ( media-video/nvidia-settings )"
37
38 QA_TEXTRELS_x86="usr/lib/libXvMCNVIDIA.so.${PV}
39         usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
40         usr/lib/opengl/nvidia/tls/libnvidia-tls.so.${PV}
41         usr/lib/opengl/nvidia/lib/libGL.so.${PV}
42         usr/lib/opengl/nvidia/lib/libnvidia-cfg.so.${PV}
43         usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
44         usr/lib/opengl/nvidia/extensions/libglx.so
45         usr/lib/xorg/modules/drivers/nvidia_drv.so
46         usr/lib/libcuda.so.${PV}
47         usr/lib/libvdpau_nvidia.so.${PV}"
48
49 QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko
50         usr/lib/opengl/nvidia/lib/libGL.so.1
51         usr/lib/opengl/nvidia/lib/libGLcore.so.1
52         usr/lib/opengl/nvidia/lib/libnvidia-cfg.so.1
53         usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.1
54         usr/lib/opengl/nvidia/extensions/libglx.so
55         usr/lib/xorg/modules/drivers/nvidia_drv.so"
56
57 QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/tls/libnvidia-tls.so.${PV}
58         usr/lib32/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
59         usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
60         usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
61         usr/lib32/opengl/nvidia/lib/libnvidia-cfg.so.${PV}
62         usr/lib32/libcuda.so.${PV}
63         usr/lib32/libvdpau_nvidia.so.${PV}"
64
65 QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV}
66         usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
67         usr/lib/opengl/nvidia/extensions/libglx.so"
68
69 QA_EXECSTACK_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
70         usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
71         usr/lib64/xorg/modules/drivers/nvidia_drv.so
72         usr/lib64/libXvMCNVIDIA.so.${PV}
73         usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.${PV}
74         usr/lib64/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
75         usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
76         usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
77         usr/lib64/opengl/nvidia/lib/libnvidia-cfg.so.${PV}
78         usr/lib64/opengl/nvidia/extensions/libglx.so
79         usr/bin/nvidia-xconfig
80         usr/lib64/libXvMCNVIDIA.a:NVXVMC.o"
81
82 QA_WX_LOAD_x86="usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
83         usr/lib/opengl/nvidia/lib/libGL.so.${PV}
84         usr/lib/opengl/nvidia/extensions/libglx.so
85         usr/lib/libXvMCNVIDIA.a"
86
87 QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
88         usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
89         usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
90         usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
91         usr/lib64/opengl/nvidia/extensions/libglx.so"
92
93 # we really should have QA_DT_HASH_x86 and QA_DT_HASH_amd64 but Portage
94 # does not support it. bug #271416
95
96 QA_DT_HASH="usr/lib32/libvdpau_trace.so.${PV}
97         usr/lib32/libvdpau.so.${PV}
98         usr/lib32/libcuda.so.${PV}
99         usr/lib32/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
100         usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV}
101         usr/lib32/opengl/nvidia/lib/libGL.so.${PV}
102         usr/lib32/opengl/nvidia/tls/libnvidia-tls.so.${PV}
103         usr/lib32/libvdpau_nvidia.so.${PV}
104         usr/bin/nvidia-xconfig
105         usr/lib64/libvdpau_trace.so.${PV}
106         usr/lib64/libvdpau.so.${PV}
107         usr/lib64/libcuda.so.${PV}
108         usr/lib64/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
109         usr/lib64/opengl/nvidia/lib/libnvidia-cfg.so.${PV}
110         usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV}
111         usr/lib64/opengl/nvidia/lib/libGL.so.${PV}
112         usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.${PV}
113         usr/lib64/opengl/nvidia/extensions/libwfb.so
114         usr/lib64/opengl/nvidia/extensions/libglx.so
115         usr/lib64/xorg/modules/drivers/nvidia_drv.so
116         usr/lib64/libXvMCNVIDIA.so.${PV}
117         usr/lib64/libvdpau_nvidia.so.${PV}
118
119         usr/lib/libvdpau_trace.so.${PV}
120         usr/lib/libvdpau.so.${PV}
121         usr/lib/libcuda.so.${PV}
122         usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.${PV}
123         usr/lib/opengl/nvidia/lib/libnvidia-cfg.so.${PV}
124         usr/lib/opengl/nvidia/lib/libGLcore.so.${PV}
125         usr/lib/opengl/nvidia/lib/libGL.so.${PV}
126         usr/lib/opengl/nvidia/tls/libnvidia-tls.so.${PV}
127         usr/lib/opengl/nvidia/extensions/libwfb.so
128         usr/lib/opengl/nvidia/extensions/libglx.so
129         usr/lib/xorg/modules/drivers/nvidia_drv.so
130         usr/lib/libXvMCNVIDIA.so.${PV}
131         usr/lib/libvdpau_nvidia.so.${PV}"
132
133 if use x86; then
134         PKG_V="-pkg0"
135         NV_PACKAGE="${X86_NV_PACKAGE}"
136 elif use amd64; then
137         PKG_V="-pkg2"
138         NV_PACKAGE="${AMD64_NV_PACKAGE}"
139 elif use x86-fbsd; then
140         PKG_V=""
141         NV_PACKAGE="${X86_FBSD_NV_PACKAGE}"
142 fi
143
144 S="${WORKDIR}/${NV_PACKAGE}${PKG_V}"
145
146 mtrr_check() {
147         ebegin "Checking for MTRR support"
148         linux_chkconfig_present MTRR
149         eend $?
150
151         if [[ $? -ne 0 ]] ; then
152                 eerror "Please enable MTRR support in your kernel config, found at:"
153                 eerror
154                 eerror "  Processor type and features"
155                 eerror "    [*] MTRR (Memory Type Range Register) support"
156                 eerror
157                 eerror "and recompile your kernel ..."
158                 die "MTRR support not detected!"
159         fi
160 }
161
162 pkg_setup() {
163         # try to turn off distcc and ccache for people that have a problem with it
164         export DISTCC_DISABLE=1
165         export CCACHE_DISABLE=1
166
167         if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then
168                 eerror "This ebuild doesn't currently support changing your default abi."
169                 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
170         fi
171
172         if use kernel_linux; then
173                 linux-mod_pkg_setup
174                 MODULE_NAMES="nvidia(video:${S}/usr/src/nv)"
175                 BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
176                 SYSOUT=${KV_OUT_DIR} HOST_CC=$(tc-getBUILD_CC)"
177                 mtrr_check
178         fi
179
180         # On BSD userland it wants real make command
181         use userland_BSD && MAKE="$(get_bmake)"
182
183         export _POSIX2_VERSION="199209"
184
185         # Since Nvidia ships 3 different series of drivers, we need to give the user
186         # some kind of guidance as to what version they should install. This tries
187         # to point the user in the right direction but can't be perfect. check
188         # nvidia-driver.eclass
189         nvidia-driver-check-warning
190
191         # set variables to where files are in the package structure
192         if use kernel_FreeBSD; then
193                 NV_DOC="${S}/doc"
194                 NV_EXEC="${S}/obj"
195                 NV_SRC="${S}/src"
196         elif use kernel_linux; then
197                 NV_DOC="${S}/usr/share/doc"
198                 NV_EXEC="${S}/usr/bin"
199                 NV_SRC="${S}/usr/src/nv"
200         else
201                 die "Could not determine proper NVIDIA package"
202         fi
203 }
204
205 src_unpack() {
206         if use kernel_linux && kernel_is lt 2 6 7; then
207                 echo
208                 ewarn "Your kernel version is ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
209                 ewarn "This is not officially supported for ${P}. It is likely you"
210                 ewarn "will not be able to compile or use the kernel module."
211                 ewarn "It is recommended that you upgrade your kernel to a version >= 2.6.7"
212                 echo
213                 ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored."
214         fi
215
216         if ! use x86-fbsd; then
217                 mkdir "${S}"
218                 cd "${S}"
219                 unpack_makeself
220         else
221                 unpack ${A}
222         fi
223
224         # Patches go below here, add brief description
225         cd "${S}"
226         use x86-fbsd && cd doc
227
228         # Use the correct defines to make gtkglext build work
229         epatch "${FILESDIR}"/NVIDIA_glx-defines.patch
230         # Use some more sensible gl headers and make way for new glext.h
231         epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch
232
233         # only apply for > 2.6.30
234         if use kernel_linux && kernel_is gt 2 6 30; then
235                 # fix for >2.6.30.* kernels
236                 epatch "${FILESDIR}"/linux-kernel-agp_memory.patch
237         fi
238
239         # only apply for > 2.6.30
240         if use kernel_linux && kernel_is gt 2 6 29; then
241                 # fix for >2.6.30.* kernels
242                 epatch "${FILESDIR}"/linux-kernel-i2c-client-register.patch
243         fi
244
245         if use kernel_linux; then
246                 # Quiet down warnings the user does not need to see
247                 sed -i \
248                         -e 's:-Wpointer-arith::g' \
249                         -e 's:-Wsign-compare::g' \
250                         "${NV_SRC}"/Makefile.kbuild
251
252                 # If you set this then it's your own fault when stuff breaks :)
253                 use custom-cflags && sed -i "s:-O:${CFLAGS}:" "${NV_SRC}"/Makefile.*
254
255                 # If greater than 2.6.5 use M= instead of SUBDIR=
256                 convert_to_m "${NV_SRC}"/Makefile.kbuild
257         fi
258 }
259
260 src_compile() {
261         # This is already the default on Linux, as there's no toplevel Makefile, but
262         # on FreeBSD there's one and triggers the kernel module build, as we install
263         # it by itself, pass this.
264
265         cd "${NV_SRC}"
266         if use x86-fbsd; then
267                 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
268                         LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
269         elif use kernel_linux; then
270                 linux-mod_src_compile
271         fi
272 }
273
274 src_install() {
275         local MLTEST=$(type dyn_unpack)
276
277         cd "${S}"
278
279         if use kernel_linux; then
280                 linux-mod_src_install
281
282                 VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)"
283                 if [ -z "$VIDEOGROUP" ]; then
284                         eerror "Failed to determine the video group gid."
285                         die "Failed to determine the video group gid."
286                 fi
287
288                 # Add the aliases
289                 [ -f "${FILESDIR}/nvidia" ] || die "nvidia missing in FILESDIR"
290                 sed -e 's:PACKAGE:'${PF}':g' \
291                         -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia-169.07 > \
292                         "${WORKDIR}"/nvidia
293                 insinto /etc/modprobe.d
294                 newins "${WORKDIR}"/nvidia nvidia.conf || die
295         elif use x86-fbsd; then
296                 insinto /boot/modules
297                 doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" || die
298
299                 exeinto /boot/modules
300                 doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" || die
301         fi
302
303         if has_multilib_profile ; then
304                 local OABI=${ABI}
305                 for ABI in $(get_install_abis) ; do
306                         src_install-libs
307                 done
308                 ABI=${OABI}
309                 unset OABI
310         elif use amd64 ; then
311                 src_install-libs lib32 $(get_multilibdir)
312                 src_install-libs lib $(get_libdir)
313
314                 rm -rf "${D}"/usr/$(get_multilibdir)/opengl/nvidia/include
315                 rm -rf "${D}"/usr/$(get_multilibdir)/opengl/nvidia/extensions
316         else
317                 src_install-libs
318         fi
319
320         is_final_abi || return 0
321
322         # Documentation
323         dodoc "${NV_DOC}"/{XF86Config.sample,Copyrights}
324         dohtml "${NV_DOC}"/html/*
325         if use x86-fbsd; then
326                 dodoc "${NV_DOC}/README"
327         else
328                 # Docs
329                 newdoc "${NV_DOC}/README.txt" README
330                 dodoc "${NV_DOC}/NVIDIA_Changelog"
331         fi
332
333         # Helper Apps
334         dobin ${NV_EXEC}/nvidia-xconfig || die
335         dobin ${NV_EXEC}/nvidia-bug-report.sh || die
336 }
337
338 # Install nvidia library:
339 # the first parameter is the place where to install it
340 # the second parameter is the base name of the library
341 # the third parameter is the provided soversion
342 donvidia() {
343         dodir $1
344         exeinto $1
345
346         libname=$(basename $2)
347
348         # libnvidia-cfg.so is no longer supplied in lib32; step over it gracefully
349         if [ -e $2.$3 ] ; then
350                 doexe $2.$3
351                 dosym ${libname}.$3 $1/${libname}
352                 [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1
353         fi
354 }
355
356 src_install-libs() {
357         local pkglibdir=lib
358         local inslibdir=$(get_libdir)
359
360         if [[ ${#} -eq 2 ]] ; then
361                 pkglibdir=${1}
362                 inslibdir=${2}
363         elif has_multilib_profile && [[ ${ABI} == "x86" ]] ; then
364                 pkglibdir=lib32
365         fi
366
367         local usrpkglibdir=usr/${pkglibdir}
368         local libdir=usr/X11R6/${pkglibdir}
369         local drvdir=${libdir}/modules/drivers
370         local extdir=${libdir}/modules/extensions
371         local incdir=usr/include/GL
372         local sover=${PV}
373         local NV_ROOT="/usr/${inslibdir}/opengl/nvidia"
374         local NO_TLS_ROOT="${NV_ROOT}/no-tls"
375         local TLS_ROOT="${NV_ROOT}/tls"
376         local X11_LIB_DIR="/usr/${inslibdir}/xorg"
377
378         if use x86-fbsd; then
379                 # on FreeBSD everything is on obj/
380                 pkglibdir=obj
381                 usrpkglibdir=obj
382                 x11pkglibdir=obj
383                 drvdir=obj
384                 extdir=obj
385
386                 # don't ask me why the headers are there.. glxext.h is missing
387                 incdir=doc
388
389                 # on FreeBSD it has just .1 suffix
390                 sover=1
391         fi
392
393         # The GLX libraries
394         donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libGL.so ${sover}
395         donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libGLcore.so ${sover}
396
397         donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libnvidia-cfg.so ${sover}
398
399         dodir ${NO_TLS_ROOT}
400         donvidia ${NO_TLS_ROOT} ${usrpkglibdir}/libnvidia-tls.so ${sover}
401
402         if ! use x86-fbsd; then
403                 donvidia ${TLS_ROOT} ${usrpkglibdir}/tls/libnvidia-tls.so ${sover}
404         fi
405
406         if want_tls ; then
407                 dosym ../tls/libnvidia-tls.so ${NV_ROOT}/lib
408                 dosym ../tls/libnvidia-tls.so.1 ${NV_ROOT}/lib
409                 dosym ../tls/libnvidia-tls.so.${sover} ${NV_ROOT}/lib
410         else
411                 dosym ../no-tls/libnvidia-tls.so ${NV_ROOT}/lib
412                 dosym ../no-tls/libnvidia-tls.so.1 ${NV_ROOT}/lib
413                 dosym ../no-tls/libnvidia-tls.so.${sover} ${NV_ROOT}/lib
414         fi
415
416         if ! use x86-fbsd; then
417                 # Install the .la file for libtool, to prevent e.g. bug #176423
418                 [ -f "${FILESDIR}/libGL.la-r2" ] || die "libGL.la-r2 missing in FILESDIR"
419                 local ver1=$(get_version_component_range 1)
420                 local ver2=$(get_version_component_range 2)
421                 local ver3=$(get_version_component_range 3)
422                 sed -e "s:\${PV}:${PV}:"     \
423                         -e "s:\${ver1}:${ver1}:" \
424                         -e "s:\${ver2}:${ver2}:" \
425                         -e "s:\${ver3}:${ver3}:" \
426                         -e "s:\${libdir}:${inslibdir}:" \
427                         "${FILESDIR}"/libGL.la-r2 > "${D}"/${NV_ROOT}/lib/libGL.la
428         fi
429
430         exeinto ${X11_LIB_DIR}/modules/drivers
431
432         [[ -f ${drvdir}/nvidia_drv.so ]] && \
433                 doexe ${drvdir}/nvidia_drv.so
434
435         insinto /usr/${inslibdir}
436         [[ -f ${libdir}/libXvMCNVIDIA.a ]] && \
437                 doins ${libdir}/libXvMCNVIDIA.a
438         exeinto /usr/${inslibdir}
439         # fix Bug 131315
440         [[ -f ${libdir}/libXvMCNVIDIA.so.${PV} ]] && \
441                 doexe ${libdir}/libXvMCNVIDIA.so.${PV} && \
442                 dosym libXvMCNVIDIA.so.${PV} \
443                         /usr/${inslibdir}/libXvMCNVIDIA.so
444
445         exeinto ${NV_ROOT}/extensions
446         [[ -f ${libdir}/modules/libnvidia-wfb.so.${sover} ]] && \
447                 newexe ${libdir}/modules/libnvidia-wfb.so.${sover} libwfb.so
448         [[ -f ${extdir}/libglx.so.${sover} ]] && \
449                 newexe ${extdir}/libglx.so.${sover} libglx.so
450
451         # Includes
452         insinto ${NV_ROOT}/include
453         doins ${incdir}/*.h
454
455         #cuda
456         if [[ -f usr/include/cuda/cuda.h ]]; then
457                 dodir /usr/include/cuda
458                 insinto /usr/include/cuda
459                 doins usr/include/cuda/*.h
460
461                 if [[ -f usr/${pkglibdir}/libcuda.so.${PV} ]]; then
462                         dolib.so usr/${pkglibdir}/libcuda.so.${PV}
463                         dosym libcuda.so.${PV} /usr/${inslibdir}/libcuda.so.1
464                         dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so
465                 fi
466         fi
467
468         #vdpau
469         if [[ -f usr/include/vdpau/vdpau.h ]]; then
470                 dodir /usr/include/vdpau
471                 insinto /usr/include/vdpau
472                 doins usr/include/vdpau/*.h
473
474                 for vdpaulib in vdpau_nvidia vdpau vdpau_trace; do
475                         dolib.so usr/${pkglibdir}/lib${vdpaulib}.so.${PV}
476                         dosym lib${vdpaulib}.so.${PV} /usr/${inslibdir}/lib${vdpaulib}.so.1
477                         dosym lib${vdpaulib}.so.1 /usr/${inslibdir}/lib${vdpaulib}.so
478                 done
479         fi
480 }
481
482 pkg_preinst() {
483
484         # Clean the dynamic libGL stuff's home to ensure
485         # we dont have stale libs floating around
486         if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then
487                 rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
488         fi
489         # Make sure we nuke the old nvidia-glx's env.d file
490         if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
491                 rm -f "${ROOT}"/etc/env.d/09nvidia
492         fi
493 }
494
495 pkg_postinst() {
496         if use kernel_linux; then
497                 linux-mod_pkg_postinst
498         fi
499
500         # Switch to the nvidia implementation
501         eselect opengl set --use-old nvidia
502
503         echo
504         elog "You must be in the video group to use the NVIDIA device"
505         elog "For more info, read the docs at"
506         elog "http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6"
507         elog
508
509         elog "This ebuild installs a kernel module and X driver. Both must"
510         elog "match explicitly in their version. This means, if you restart"
511         elog "X, you most modprobe -r nvidia before starting it back up"
512         elog
513
514         elog "To use the NVIDIA GLX, run \"eselect opengl set nvidia\""
515         elog
516         elog "nVidia has requested that any bug reports submitted have the"
517         elog "output of /usr/bin/nvidia-bug-report.sh included."
518         elog
519         elog "To work with compiz, you must enable the AddARGBGLXVisuals option."
520         elog
521         elog "If you are having resolution problems, try disabling DynamicTwinView."
522         echo
523 }
524
525 want_tls() {
526         # For uclibc or anything non glibc, return false
527         has_version sys-libs/glibc || return 1
528
529         # Old versions of glibc were lt/no-tls only
530         has_version '<sys-libs/glibc-2.3.2' && return 1
531
532         if use x86 ; then
533                 case ${CHOST/-*} in
534                         i486|i586|i686) ;;
535                         *) return 1 ;;
536                 esac
537         fi
538
539         # If we've got nptl, we've got tls
540         built_with_use --missing true sys-libs/glibc nptl && return 0
541
542         # 2.3.5 turned off tls for linuxthreads glibc on i486 and i586
543         if use x86 && has_version '>=sys-libs/glibc-2.3.5' ; then
544                 case ${CHOST/-*} in
545                         i486|i586) return 1 ;;
546                 esac
547         fi
548
549         # These versions built linuxthreads version to support tls, too
550         has_version '>=sys-libs/glibc-2.3.4.20040619-r2' && return 0
551
552         return 1
553 }
554
555 pkg_postrm() {
556         if use kernel_linux; then
557                 linux-mod_pkg_postrm
558         fi
559         eselect opengl set --use-old xorg-x11
560 }