From 7eb1e58dc4cc0ad2058624a6d6690b117ba1d932 Mon Sep 17 00:00:00 2001 From: Chris Gianelloni Date: Thu, 29 May 2008 20:33:25 +0000 Subject: Adding a local copy of nvidia-drivers which installs nvidia-smi and the man pages. svn path=/; revision=184 --- profiles/categories | 4 +- x11-drivers/nvidia-drivers/ChangeLog | 539 ++++++++++++++++++ x11-drivers/nvidia-drivers/Manifest | 13 + .../nvidia-drivers/files/NVIDIA_glx-defines.patch | 11 + .../nvidia-drivers/files/NVIDIA_glx-glheader.patch | 13 + .../nvidia-drivers/files/NVIDIA_i2c-hwmon.patch | 17 + .../files/NVIDIA_kernel-173.14.05-2419292.diff | 624 +++++++++++++++++++++ x11-drivers/nvidia-drivers/files/libGL.la-r2 | 32 ++ x11-drivers/nvidia-drivers/files/nvidia | 14 + x11-drivers/nvidia-drivers/metadata.xml | 9 + .../nvidia-drivers/nvidia-drivers-173.14.05.ebuild | 515 +++++++++++++++++ 11 files changed, 1790 insertions(+), 1 deletion(-) create mode 100644 x11-drivers/nvidia-drivers/ChangeLog create mode 100644 x11-drivers/nvidia-drivers/Manifest create mode 100644 x11-drivers/nvidia-drivers/files/NVIDIA_glx-defines.patch create mode 100644 x11-drivers/nvidia-drivers/files/NVIDIA_glx-glheader.patch create mode 100644 x11-drivers/nvidia-drivers/files/NVIDIA_i2c-hwmon.patch create mode 100644 x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff create mode 100644 x11-drivers/nvidia-drivers/files/libGL.la-r2 create mode 100644 x11-drivers/nvidia-drivers/files/nvidia create mode 100644 x11-drivers/nvidia-drivers/metadata.xml create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-173.14.05.ebuild diff --git a/profiles/categories b/profiles/categories index 80b6549..21b6fb3 100644 --- a/profiles/categories +++ b/profiles/categories @@ -1,12 +1,14 @@ app-backup app-misc dev-util +games-action games-arcade games-fps -games-rpg games-strategy media-gfx media-libs net-misc sys-apps sys-kernel +x11-drivers +x11-misc diff --git a/x11-drivers/nvidia-drivers/ChangeLog b/x11-drivers/nvidia-drivers/ChangeLog new file mode 100644 index 0000000..d5690e8 --- /dev/null +++ b/x11-drivers/nvidia-drivers/ChangeLog @@ -0,0 +1,539 @@ +# ChangeLog for x11-drivers/nvidia-drivers +# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/ChangeLog,v 1.99 2008/05/29 14:44:30 chainsaw Exp $ + +*nvidia-drivers-173.14.05 (28 May 2008) + + 28 May 2008; + +files/NVIDIA_kernel-173.14.05-2419292.diff, + +nvidia-drivers-173.14.05.ebuild: + Version bump. Supported release, upstream release highlights are at + http://www.nvnews.net/vbulletin/showthread.php?t=113919. + + 21 May 2008; + +files/NVIDIA_kernel-71.86.04-2305230.diff, + nvidia-drivers-71.86.04.ebuild: + Add patch to allow building on 2.6.25 kernels; thanks to Andreas + . No revision bump, the module didnt build + for affected users. Closes bug #223047. + + 09 May 2008; Mark Loeser + nvidia-drivers-173.08.ebuild: + Works on x86 for me, marking ~x86 + + 08 May 2008; + files/NVIDIA_kernel-173.08-2404825.diff: + Upstream corrected the patch after the fact, update it. No revision bump + as the package is masked. + + 07 May 2008; + nvidia-drivers-71.86.01.ebuild, nvidia-drivers-71.86.04.ebuild, + nvidia-drivers-96.43.01.ebuild, nvidia-drivers-96.43.05.ebuild, + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild, + nvidia-drivers-100.14.19.ebuild, nvidia-drivers-100.14.23.ebuild: + Quote variables where appropriate. + +*nvidia-drivers-173.08 (07 May 2008) + + 07 May 2008; + +files/NVIDIA_kernel-173.08-2404825.diff, +nvidia-drivers-173.08.ebuild: + Masked beta driver 173.08 with upstream patch from Zander ( + http://www.nvnews.net/vbulletin/showpost.php?p=1648357&postcount=35 ) for + >=2.6.26-rc1 compatibility. Dropped keywords as this has only been tested + on 2.6.26-rc1-00166-gc0a1811 SMP x86_64 so far. Now installs module + control file in modprobe.d where it belongs. Upstream advises to use PAT + over MTRR. Some reports of low performance and 2D corruption, tread + carefully. + + 18 Apr 2008; Mike Frysinger + +files/NVIDIA_kernel-96.43.05-2290218.diff, + nvidia-drivers-96.43.05.ebuild: + Add fix from upstream for building with linux-2.6.25 #218178. + + 18 Apr 2008; Mike Frysinger + +files/NVIDIA_kernel-169.12-2286310.diff, nvidia-drivers-169.12.ebuild: + Add fix from upstream for building with linux-2.6.25 #218178. + + 10 Apr 2008; Doug Goldstein + nvidia-drivers-169.09-r1.ebuild: + revert previous commit due to it breaking the stable tree. it also flies + in the face of nvidia-drivers maintenance policies. + + 10 Apr 2008; William L. Thomson Jr. + nvidia-drivers-169.09-r1.ebuild: + De-stablizing package, lost 3+ hours debugging why a stable machine X was + at 99% for any 2d operation, thunderbird etc. + + 19 Mar 2008; Raúl Porcel + nvidia-drivers-96.43.05.ebuild: + x86 stable + + 05 Mar 2008; Christian Faulhammer + nvidia-drivers-169.09-r1.ebuild: + stable x86, bug 212290 + + 04 Mar 2008; Olivier Crête + nvidia-drivers-169.09-r1.ebuild: + Stable on amd64, bug #212290 + +*nvidia-drivers-169.12 (28 Feb 2008) + + 28 Feb 2008; Doug Klima +nvidia-drivers-169.12.ebuild: + version bump + + 18 Feb 2008; Doug Klima + nvidia-drivers-169.09-r1.ebuild: + revert libwfb.so change requested in bug #202978 + +*nvidia-drivers-169.09-r1 (15 Feb 2008) + + 15 Feb 2008; Doug Klima + +nvidia-drivers-169.09-r1.ebuild: + new ebuild that should fix bug #207298, #207299, #167413, #184593, #188552, + and #187149. and #202978, depending on the results of the discussion and + added work around for bug #137000 + +*nvidia-drivers-96.43.05 (04 Feb 2008) +*nvidia-drivers-71.86.04 (04 Feb 2008) + + 04 Feb 2008; Doug Klima + +nvidia-drivers-71.86.04.ebuild, +nvidia-drivers-96.43.05.ebuild: + new legacy driver releases for newer kernels and X.org servers + +*nvidia-drivers-169.09 (22 Jan 2008) + + 22 Jan 2008; Doug Klima nvidia-drivers-169.07.ebuild, + +nvidia-drivers-169.09.ebuild: + QA_WX_LOAD addition. new nvidia-drivers version + + 22 Jan 2008; Doug Klima +files/nvidia-169.07, + nvidia-drivers-169.07.ebuild: + provide newer /etc/modules.d file + +*nvidia-drivers-169.07 (16 Jan 2008) + + 16 Jan 2008; Doug Klima +nvidia-drivers-169.07.ebuild: + starting to rewrite the ebuild a bit. commiting masked so people can tinker + + 26 Dec 2007; Doug Klima + nvidia-drivers-100.14.19.ebuild, nvidia-drivers-100.14.23.ebuild: + fix patch to nvidia-xconfig on FreeBSD. bug #199761 + + 21 Dec 2007; Doug Klima + -nvidia-drivers-1.0.7185.ebuild, -nvidia-drivers-1.0.9639.ebuild: + remove old versions + + 21 Dec 2007; Doug Klima + nvidia-drivers-100.14.19.ebuild, nvidia-drivers-100.14.23.ebuild: + apply patch only when linux. bug #199759 + + 20 Nov 2007; Christian Faulhammer + nvidia-drivers-71.86.01.ebuild: + stable x86, bug 186490 + + 14 Nov 2007; Steve Dibb + nvidia-drivers-71.86.01.ebuild, nvidia-drivers-96.43.01.ebuild: + amd64 stable, bug 186490 + + 12 Nov 2007; Peter Weller + nvidia-drivers-100.14.19.ebuild: + Stable on amd64 wrt bug 186490 + +*nvidia-drivers-100.14.23 (01 Nov 2007) + + 01 Nov 2007; Doug Goldstein + +nvidia-drivers-100.14.23.ebuild: + adding beta NVIDIA driver for user demand. bug #196679 + + 31 Oct 2007; Raúl Porcel + nvidia-drivers-96.43.01.ebuild: + x86 stable + + 29 Oct 2007; Markus Ullmann + nvidia-drivers-100.14.19.ebuild: + Stable on x86 + + 29 Oct 2007; Doug Goldstein + nvidia-drivers-100.14.19.ebuild: + add x86-fbsd support for 100.14.19 since it's been released now + + 07 Oct 2007; Doug Goldstein + nvidia-drivers-1.0.7185.ebuild, nvidia-drivers-1.0.9639.ebuild, + nvidia-drivers-71.86.01.ebuild, nvidia-drivers-96.43.01.ebuild, + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild, + nvidia-drivers-100.14.19.ebuild: + Quote some old $ROOT usage + + 07 Oct 2007; Doug Goldstein + nvidia-drivers-71.86.01.ebuild, nvidia-drivers-96.43.01.ebuild, + nvidia-drivers-100.14.19.ebuild: + nvidia-driver uses ACPI if it's installed. Add USE based dep on it. + + 01 Oct 2007; Doug Goldstein + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild: + mark the depends as not supporting xorg-server 1.4 + +*nvidia-drivers-96.43.01 (27 Sep 2007) +*nvidia-drivers-71.86.01 (27 Sep 2007) + + 27 Sep 2007; Doug Goldstein + +nvidia-drivers-71.86.01.ebuild, +nvidia-drivers-96.43.01.ebuild, + nvidia-drivers-100.14.19.ebuild: + bump both nvidia legacy drivers to their latest revisions. Remove hack since + it's no longer needed. + + 20 Sep 2007; Chris Gianelloni -files/nvidia-2, + -files/NVIDIA_kernel-2.6.19.patch, files/nvidia, + nvidia-drivers-1.0.7185.ebuild, -nvidia-drivers-1.0.8776-r1.ebuild, + -nvidia-drivers-1.0.9631-r1.ebuild, nvidia-drivers-1.0.9639.ebuild, + -nvidia-drivers-1.0.9746-r1.ebuild, -nvidia-drivers-1.0.9755-r1.ebuild, + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild, + nvidia-drivers-100.14.19.ebuild: + Removing older ebuilds where newer ebuilds in the same class have the same + KEYWORDS or better, moving nvidia-2 to nvidia, since nothing uses the old + file anymore, simplified sed by changing ${PACKAGE} to PACKAGE, and changed + a newins to doins, since we were not renaming anything. + +*nvidia-drivers-100.14.19 (18 Sep 2007) + + 18 Sep 2007; Doug Goldstein + +nvidia-drivers-100.14.19.ebuild: + new drivers from nVidia. no FreeBSD support. + + 26 Aug 2007; Anant Narayanan Manifest: + Fix Manifest + + 30 Jul 2007; Donnie Berkholz ; + nvidia-drivers-1.0.7185.ebuild, nvidia-drivers-1.0.8776-r1.ebuild, + nvidia-drivers-1.0.9631-r1.ebuild, nvidia-drivers-1.0.9639.ebuild, + nvidia-drivers-1.0.9746-r1.ebuild, nvidia-drivers-1.0.9755-r1.ebuild, + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild: + Move eselect-opengl into DEPEND only, so it can be uninstalled later. + + 28 Jul 2007; Steve Dibb + nvidia-drivers-1.0.7185.ebuild, nvidia-drivers-1.0.9639.ebuild, + nvidia-drivers-100.14.09.ebuild: + amd64 stable, bug 183567 + + 20 Jul 2007; Doug Goldstein + nvidia-drivers-1.0.7185.ebuild: + remove i2c-hwmon, libnvidia-cfg, nvidia-xconfig, and README.txt from 7185 + since they don't exist + + 19 Jul 2007; Raúl Porcel + nvidia-drivers-1.0.7185.ebuild, nvidia-drivers-1.0.9639.ebuild, + nvidia-drivers-100.14.09.ebuild + x86 stable wrt security #183567 + + 19 Jul 2007; Doug Goldstein + +nvidia-drivers-100.14.09.ebuild: + adding back 100.14.09 based off 100.14.11 ebuild + + 18 Jul 2007; Doug Goldstein + nvidia-drivers-1.0.7185.ebuild, nvidia-drivers-1.0.9639.ebuild, + nvidia-drivers-100.14.11.ebuild: + QA EXECSTACK handling + +*nvidia-drivers-1.0.7185 (14 Jul 2007) + + 14 Jul 2007; Doug Goldstein + +nvidia-drivers-1.0.7185.ebuild: + add 1.0.7185 drivers + +*nvidia-drivers-1.0.9639 (14 Jul 2007) + + 14 Jul 2007; Doug Goldstein + -files/nvidia-settings.desktop, -files/nvidia-settings.png, + +nvidia-drivers-1.0.9639.ebuild, -nvidia-drivers-100.14.09.ebuild, + nvidia-drivers-100.14.11.ebuild: + add ebuild for 1.0.9639 drivers. Merge in updates from 100.14.11 drivers. + Removed old 100.14.09 drivers. No longer build nvidia-settings part of the + drivers but PDEPEND on it via gtk USE flag. Other misc cleanups. + + 13 Jul 2007; Doug Goldstein + nvidia-drivers-100.14.11.ebuild: + fix bug #185171 + + 12 Jul 2007; Doug Goldstein + nvidia-drivers-100.14.11.ebuild: + Fixes #177231, #182622, #184432, #184795 + + 07 Jul 2007; Doug Goldstein +files/nvidia-2, + +files/NVIDIA_i2c-hwmon.patch, +files/nvidia-settings.desktop, + +files/nvidia-settings.png, nvidia-drivers-100.14.11.ebuild: + work in progress. fixes bug #183567, #169740, #182933, #184432. More will be + fixed before unmask + + 05 Jul 2007; Mike Frysinger + nvidia-drivers-1.0.8776-r1.ebuild, nvidia-drivers-1.0.9631-r1.ebuild, + nvidia-drivers-1.0.9746-r1.ebuild, nvidia-drivers-1.0.9755-r1.ebuild, + nvidia-drivers-100.14.09.ebuild, nvidia-drivers-100.14.11.ebuild: + If glibc does not have IUSE=nptl, assume it is enabled as newer versions + only support nptl. + +*nvidia-drivers-100.14.11 (04 Jul 2007) + + 04 Jul 2007; Christian Parpart + +nvidia-drivers-100.14.11.ebuild: + version bump to 100.14.11 + + 02 Jul 2007; Piotr Jaroszyński + nvidia-drivers-1.0.8776-r1.ebuild, nvidia-drivers-1.0.9631-r1.ebuild: + (QA) RESTRICT clean up. + + 01 Jul 2007; Piotr Jaroszyński + nvidia-drivers-1.0.8776-r1.ebuild, nvidia-drivers-1.0.9631-r1.ebuild, + nvidia-drivers-1.0.9746-r1.ebuild, nvidia-drivers-1.0.9755-r1.ebuild, + nvidia-drivers-100.14.09.ebuild: + (QA) RESTRICT="multilib-pkg-force" -> EMULTILIB_PKG="true" + +*nvidia-drivers-100.14.09 (19 Jun 2007) + + 19 Jun 2007; Christian Parpart + +nvidia-drivers-100.14.09.ebuild: + version bump. wrt bug #176135 and bug #175674 + + 13 Apr 2007; Chris Gianelloni + -nvidia-drivers-1.0.8776.ebuild, nvidia-drivers-1.0.8776-r1.ebuild: + Stable on amd64/x86 wrt bug #114893. + +*nvidia-drivers-1.0.9755-r1 (13 Mar 2007) +*nvidia-drivers-1.0.9746-r1 (13 Mar 2007) +*nvidia-drivers-1.0.9631-r1 (13 Mar 2007) +*nvidia-drivers-1.0.8776-r1 (13 Mar 2007) + + 13 Mar 2007; Jeremy Huddleston + +nvidia-drivers-1.0.8776-r1.ebuild, -nvidia-drivers-1.0.9631.ebuild, + +nvidia-drivers-1.0.9631-r1.ebuild, -nvidia-drivers-1.0.9746.ebuild, + +nvidia-drivers-1.0.9746-r1.ebuild, -nvidia-drivers-1.0.9755.ebuild, + +nvidia-drivers-1.0.9755-r1.ebuild: + Install libnvidia-cfg.so. Fixes bug #114893. + +*nvidia-drivers-1.0.9755 (07 Mar 2007) + + 07 Mar 2007; Chris Gianelloni + +nvidia-drivers-1.0.9755.ebuild: + Version bump to latest version of the drivers. + + 19 Feb 2007; Chris Gianelloni + nvidia-drivers-1.0.8776.ebuild, nvidia-drivers-1.0.9631.ebuild, + nvidia-drivers-1.0.9746.ebuild: + Removing dlloader USE flag wrt bug #166759. + + 07 Feb 2007; Chris Gianelloni + nvidia-drivers-1.0.8776.ebuild, nvidia-drivers-1.0.9631.ebuild, + nvidia-drivers-1.0.9746.ebuild: + Fixed the executable stack warnings with a patch from Vlastimil Babka + and closing bug #114894. + + 07 Feb 2007; Chris Gianelloni + -nvidia-drivers-1.0.8774.ebuild, -nvidia-drivers-1.0.9742.ebuild: + Cleaning up some older versions. + +*nvidia-drivers-1.0.9746 (28 Dec 2006) + + 28 Dec 2006; Chris Gianelloni + +nvidia-drivers-1.0.9746.ebuild: + Added version 9746 and closing bug #158889. + + 26 Dec 2006; Mike Frysinger + nvidia-drivers-1.0.9742.ebuild: + Style touchups and create relative symlinks in /usr/lib. + + 12 Dec 2006; Chris Gianelloni + nvidia-drivers-1.0.9631.ebuild, nvidia-drivers-1.0.9742.ebuild: + Update Gentoo/FreeBSD support with a patch from Timothy Redaelli + . Closing bug #157625. + + 06 Dec 2006; Chris Gianelloni + -nvidia-drivers-1.0.9629.ebuild, nvidia-drivers-1.0.9742.ebuild: + Added patch from Joshua Napoli to install + libnvidia-wfb and closing bug #155532. Removing 9629, as it has problems + with NV2x cards. + + 05 Dec 2006; Chris Gianelloni + files/NVIDIA_kernel-2.6.19.patch: + Updated the NVIDIA_kernel-2.6.19.patch and closing bug #156978. + +*nvidia-drivers-1.0.9631 (05 Dec 2006) + + 05 Dec 2006; Chris Gianelloni + +nvidia-drivers-1.0.9631.ebuild: + Version bump to 1.0.9631 for bug #157194. This should also close bug + #105656, bug #150080, bug #154739, and bug #156886. + + 05 Dec 2006; Chris Gianelloni files/nvidia: + Updated the nvidia file which installs to /etc/modules.d for bug #139756. + + 04 Dec 2006; Chris Gianelloni + nvidia-drivers-1.0.8774.ebuild, nvidia-drivers-1.0.8776.ebuild, + nvidia-drivers-1.0.9629.ebuild, nvidia-drivers-1.0.9742.ebuild: + Fixing up executable stacks and closing bug #114894. + + 10 Nov 2006; Chris Gianelloni + -files/1.0.9626/NVIDIA-1.0.9626-i2c.diff, -nvidia-drivers-1.0.9626.ebuild: + Removing the 1.0-9626 driver, since it has been known to cause a black + screen at X startup and is superceded by the 9629 driver. + +*nvidia-drivers-1.0.9742 (09 Nov 2006) +*nvidia-drivers-1.0.9629 (09 Nov 2006) + + 09 Nov 2006; Kristopher Kersey + +nvidia-drivers-1.0.9629.ebuild, +nvidia-drivers-1.0.9742.ebuild: + Added new stable driver 1.0.9629 and unstable driver 1.0.9742. + + 24 Oct 2006; Simon Stelling + nvidia-drivers-1.0.8776.ebuild: + stable on amd64 + + 24 Oct 2006; Joshua Jackson + nvidia-drivers-1.0.8776.ebuild: + Stable x86; bug #151635 + + 20 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8774.ebuild, nvidia-drivers-1.0.8776.ebuild, + nvidia-drivers-1.0.9626.ebuild: + Added fix for bug #145968. + +*nvidia-drivers-1.0.8776 (20 Oct 2006) + + 20 Oct 2006; Chris Gianelloni + -files/1.0.8178/NVIDIA-1.0.8178-1423627.diff, + -files/1.0.8178/NVIDIA-1.0.8178-1427453.diff, + -files/1.0.8178/NVIDIA-1.0.8178-1435131.diff, + -files/1.0.8178/NVIDIA-1.0.8178-1450608.diff, + -files/1.0.8178/NVIDIA-1.0.8178-1453708.diff, + -files/1.0.8178/NVIDIA-1.0.8178-U012206.diff, + -nvidia-drivers-1.0.8178.ebuild, +nvidia-drivers-1.0.8776.ebuild: + Added 8776 for bug #151635 and removing 8178, since it is vulnerable. + + 18 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8178.ebuild, nvidia-drivers-1.0.8774.ebuild, + nvidia-drivers-1.0.9626.ebuild: + Use pkg2 for AMD64 since the other ones don't ship the 32-bit libraries. How + lame is that? Closing bug #151759. + + 17 Oct 2006; Chris Gianelloni + -files/1.0.9625/NVIDIA-1.0.9625-i2c.diff, + +files/1.0.9626/NVIDIA-1.0.9626-i2c.diff, nvidia-drivers-1.0.8178.ebuild, + nvidia-drivers-1.0.8774.ebuild, -nvidia-drivers-1.0.9625.ebuild, + nvidia-drivers-1.0.9626.ebuild: + Changed pkg1 and pkg2 to pkg0 for bug #146182. + + 17 Oct 2006; Olivier Crête + nvidia-drivers-1.0.9626.ebuild: + Patch version is 1.0.9625 + + 16 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.9626.ebuild: + It looks like the i2c patch is still needed. + +*nvidia-drivers-1.0.9626 (16 Oct 2006) + + 16 Oct 2006; Chris Gianelloni + +nvidia-drivers-1.0.9626.ebuild: + Updated to 1.0.9626, which adds support for NVIDIA Quadro Plex configurations. + + 13 Oct 2006; Chris Gianelloni + +files/NVIDIA_kernel-2.6.19.patch: + Added patch from Daniel Drake for compiling on 2.6.19 and + closing bug #151177. + + 12 Oct 2006; Chris Gianelloni + +files/1.0.8178/NVIDIA-1.0.8178-1423627.diff, + +files/1.0.8178/NVIDIA-1.0.8178-1427453.diff, + +files/1.0.8178/NVIDIA-1.0.8178-1435131.diff, + +files/1.0.8178/NVIDIA-1.0.8178-1450608.diff, + +files/1.0.8178/NVIDIA-1.0.8178-1453708.diff, + +files/1.0.8178/NVIDIA-1.0.8178-U012206.diff, + ,files/1.0.8762/NVIDIA-1.0.8762-U062606.diff: + Added patches from nvnews.net for 8178, removing 8762, and adding a notice + to 9625 about AddARGBGLXVisuals for compiz. + + 09 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8178.ebuild, -nvidia-drivers-1.0.8762.ebuild, + nvidia-drivers-1.0.8762-r1.ebuild, nvidia-drivers-1.0.8774.ebuild, + nvidia-drivers-1.0.9625.ebuild: + Removed virtual/x11 from dependencies, removed blocker on nvidia-kernel and + nvidia-glx, since they're no longer in the tree, changed nostrip to strip, + and added QA variables for TEXTRELS and EXECSTACK for amd64 and x86. Closing + bug #114894. + + 04 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8178.ebuild, nvidia-drivers-1.0.8762.ebuild, + nvidia-drivers-1.0.8762-r1.ebuild, nvidia-drivers-1.0.8774.ebuild, + nvidia-drivers-1.0.9625.ebuild: + Removed PROVIDE=virtual/opengl since opengl is a new-style virtual. + + 04 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8774.ebuild: + Stable on amd64/x86 for bug #144549. + + 04 Oct 2006; Chris Gianelloni + nvidia-drivers-1.0.8178.ebuild: + Stable on amd64/x86 for bug #143814. + + 25 Sep 2006; Chris Gianelloni + +files/1.0.9625/NVIDIA-1.0.9625-i2c.diff, nvidia-drivers-1.0.9625.ebuild: + Added patch from Zander to remove i2c functionality from the drivers until + it is fixed upstream. + + 25 Sep 2006; Chris Gianelloni + nvidia-drivers-1.0.8178.ebuild, nvidia-drivers-1.0.8762.ebuild, + nvidia-drivers-1.0.8762-r1.ebuild, nvidia-drivers-1.0.8774.ebuild, + nvidia-drivers-1.0.9625.ebuild: + Commented out the Makefile patch. + +*nvidia-drivers-1.0.9625 (25 Sep 2006) +*nvidia-drivers-1.0.8178 (25 Sep 2006) + + 25 Sep 2006; Chris Gianelloni + +files/NVIDIA_glx-makefile.patch, +nvidia-drivers-1.0.8178.ebuild, + nvidia-drivers-1.0.8762.ebuild, nvidia-drivers-1.0.8762-r1.ebuild, + nvidia-drivers-1.0.8774.ebuild, +nvidia-drivers-1.0.9625.ebuild: + Added 8178 ebuild for bug #143814. Also added a (masked) 9625 beta ebuild. + + 27 Aug 2006; Hanno Boeck files/libGL.la-r2: + Fix libdir in libGL.la (bug #140982). + + 27 Aug 2006; Donnie Berkholz + nvidia-drivers-1.0.8774.ebuild: + Remove blocker on xorg-server 1.1. + + 25 Aug 2006; Donnie Berkholz +metadata.xml: + Someone forgot to add metadata. + +*nvidia-drivers-1.0.8774 (25 Aug 2006) + + 25 Aug 2006; Kristopher Kersey + +nvidia-drivers-1.0.8774.ebuild: + Added ebuild for NVIDIA driver release 1.0-8774. + + 08 Aug 2006; Joshua Jackson + nvidia-drivers-1.0.8762-r1.ebuild: + Stable x86; bug #140922 + + 06 Aug 2006; Simon Stelling + nvidia-drivers-1.0.8762-r1.ebuild: + stable on amd64 + +*nvidia-drivers-1.0.8762-r1 (07 Jul 2006) + + 07 Jul 2006; Kristopher Kersey + +files/1.0.8762/NVIDIA-1.0.8762-U062606.diff, + +nvidia-drivers-1.0.8762-r1.ebuild: + Added Zander's patch to allow building with latest kernels (>= + 2.6.17-rc4-mm1, >= 2.6.17-git7). + + 06 Jul 2006; Kristopher Kersey + nvidia-drivers-1.0.8762.ebuild: + Quick fix to close bug #133138. + +*nvidia-drivers-1.0.8762 (06 Jul 2006) + + 06 Jul 2006; Kristopher Kersey +files/09nvidia, + +files/NVIDIA_glx-defines.patch, +files/NVIDIA_glx-glheader.patch, + +files/libGL.la-r2, +files/nvidia, +nvidia-drivers-1.0.8762.ebuild: + Initial import of x11-drivers/nvidia-drivers that will take the place of + media-video/nvidia-kernel and media-video/nvidia-glx. + diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest new file mode 100644 index 0000000..f09cd1d --- /dev/null +++ b/x11-drivers/nvidia-drivers/Manifest @@ -0,0 +1,13 @@ +AUX NVIDIA_glx-defines.patch 437 RMD160 7cc38de0663c51d9e3718f02035a940a5d31e53c SHA1 eef9bcae32d4e00133b205e27ce766488d5c6cdb SHA256 0007f3d962edb87da4788ce58869679c1b10f28223a6bf1c23696fede57305da +AUX NVIDIA_glx-glheader.patch 380 RMD160 ee9a10cfbed10d5711f58a80553ffebeea5853bf SHA1 72abfedb9dfb7dae7dc23a5701d3e00282fef2c0 SHA256 f630e24067bf6199a64f8fe8c5d6fc158cb4b153bda65ffc3f97b36a9cb08faf +AUX NVIDIA_i2c-hwmon.patch 669 RMD160 812e7081d8f31116031edb0d8eb9c570b09caf89 SHA1 b0f132851cb1a7d8bdd9f205b4f187fcaf9e87d8 SHA256 0aaa05e1167bd722e00fcb90bd9853413ceb4ce3b00b308c314330f47c82f21a +AUX NVIDIA_kernel-173.14.05-2419292.diff 18598 RMD160 f6874805f482776a47c87e18d9fa8545bb73b9bf SHA1 3941162a0f353a92b9c2db5ae10511ff73efbc92 SHA256 ad6c2da9a508fae7b8728628e1980319dc3c7f62694c34a80ddc0343a1361aec +AUX libGL.la-r2 733 RMD160 479612ab30c04ca0683c7d9edaf9ab3de783e4a9 SHA1 88656b7e7234ade4f5564373fd6eb5c040167655 SHA256 4856e7a2c31763ade41c93a395f3e80a2705ac2ab4dbd73e5161cdba132f407b +AUX nvidia 639 RMD160 8baddb6fd1bf7f0e2688870a78e8ace051d62e3f SHA1 b30487ba2a24a6b1359d1fd831eeb1705060953c SHA256 a8c4860f008d53776fda7a17b59524f271236559af688e9a2c9845cbbcba1577 +DIST NVIDIA-FreeBSD-x86-173.14.05.tar.gz 15856727 RMD160 cc5f41ee785adadfcd0d3d689a9b477dfc49c848 SHA1 37871cb844b0b52d919886b351ae98e30e606dae SHA256 a8b1782656ee0faaa1e60f7f49a5d922c126785273de642deac3ae935dcc2556 +DIST NVIDIA-Linux-x86-173.14.05-pkg0.run 11552082 RMD160 2d322a9969e59733725c6c748976eec9360ff6ef SHA1 5a9238ef276813ac71b4c3be6689e8e45b27b436 SHA256 2b1aa7b4dc1388d64dbeca8d7362b647cb6adf47c0a5020af46d2fc46b3509da +DIST NVIDIA-Linux-x86_64-173.14.05-pkg2.run 17959744 RMD160 ad603536e99ee232fb95bf916d9aa54c9738ef26 SHA1 5912aa5b481e2b94641e1751e9153e1b11e369e4 SHA256 3ee8aabc824fac1d5c917979aca288ad600da0d0bd34001f9c5f0c0254b1af36 +EBUILD nvidia-drivers-173.14.05.ebuild 15173 RMD160 367992bb773c089016bd3c4fea47543efd2528eb SHA1 35a398b59c2dfe7765a29263941e8fc65d852044 SHA256 13368a83a5100c32eceaee22bed627cc7479b677ea64894e2fa4cfcdaedcb1f3 +MISC .nvidia-drivers-173.14.05.ebuild.swp 32768 RMD160 32dc72c9aa68adb63a57c1c57e699f5db9587813 SHA1 e1ca3d6607a0278e9ee5df992c8aa48d1713db33 SHA256 9a8be45dce851a600d15b1f4699dbb405cbebbae9f442b48ffb86a741cf21505 +MISC ChangeLog 21351 RMD160 a5c9a457cb4528ff4e3257deddbd4befbeb8a46e SHA1 4a8d03a637dcf12cbf20bd1d33655224b67e9aae SHA256 8aa9a02862a26827c6d4512f65de5c078d07db5144d5b971da209f1c18a18f22 +MISC metadata.xml 292 RMD160 f5979fce13f28cf69ea0ce27655361d3a399d73e SHA1 f98b700a2945e5b0a256b0aad118b7e08880c4a8 SHA256 9e76022e1a4ab0c738f94b9109e4f509f1a416dc63b71e03e1f0735c82ca9fb4 diff --git a/x11-drivers/nvidia-drivers/files/NVIDIA_glx-defines.patch b/x11-drivers/nvidia-drivers/files/NVIDIA_glx-defines.patch new file mode 100644 index 0000000..da9933f --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/NVIDIA_glx-defines.patch @@ -0,0 +1,11 @@ +diff -ur NVIDIA_GLX-1.0-4191/usr/include/GL/glx.h NVIDIA_GLX-1.0-4191.new/usr/include/GL/glx.h +--- NVIDIA_GLX-1.0-4191/usr/include/GL/glx.h 2002-12-09 21:26:55.000000000 +0100 ++++ NVIDIA_GLX-1.0-4191.new/usr/include/GL/glx.h 2003-01-30 18:20:23.000000000 +0100 +@@ -39,6 +39,7 @@ + typedef XID GLXPixmap; + typedef XID GLXDrawable; + typedef XID GLXPbuffer; ++typedef XID GLXPbufferSGIX; + typedef XID GLXWindow; + typedef XID GLXFBConfigID; + diff --git a/x11-drivers/nvidia-drivers/files/NVIDIA_glx-glheader.patch b/x11-drivers/nvidia-drivers/files/NVIDIA_glx-glheader.patch new file mode 100644 index 0000000..e0393e1 --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/NVIDIA_glx-glheader.patch @@ -0,0 +1,13 @@ +--- usr/include/GL/gl.g.orig 2004-07-17 19:56:59.789410584 +1000 ++++ usr/include/GL/gl.h 2004-07-17 19:59:08.844791184 +1000 +@@ -66,6 +66,10 @@ + typedef double GLclampd; + typedef void GLvoid; + ++/* Patching for some better defines in the global system */ ++#ifndef GL_GLEXT_LEGACY ++#include ++#endif + + /*************************************************************/ + diff --git a/x11-drivers/nvidia-drivers/files/NVIDIA_i2c-hwmon.patch b/x11-drivers/nvidia-drivers/files/NVIDIA_i2c-hwmon.patch new file mode 100644 index 0000000..f9fdc27 --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/NVIDIA_i2c-hwmon.patch @@ -0,0 +1,17 @@ +--- + usr/src/nv/nv-i2c.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- NVIDIA-Linux-x86-1.0-9746-pkg1.orig/usr/src/nv/nv-i2c.c 2006-12-15 19:32:58.000000000 +0100 ++++ NVIDIA-Linux-x86-1.0-9746-pkg1/usr/src/nv/nv-i2c.c 2007-01-06 16:50:48.000000000 +0100 +@@ -250,6 +250,10 @@ void* NV_API_CALL nv_i2c_add_adapter(nv_ + snprintf(pI2cAdapter->name, I2C_NAME_SIZE, + "NVIDIA i2c adapter %u at %x:%02x.%u", port, nv->bus, + nv->slot, PCI_FUNC(nvl->dev->devfn)); ++#ifdef I2C_CLASS_HWMON ++ if (port == 2) ++ pI2cAdapter->class = I2C_CLASS_HWMON; ++#endif + + // add our data to the structure + pI2cAdapter->algo_data = (void *)nv; diff --git a/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff b/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff new file mode 100644 index 0000000..1c10533 --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff @@ -0,0 +1,624 @@ +diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2419292/Makefile.kbuild +--- usr/src/nv/Makefile.kbuild 2008-05-19 00:37:02.000000000 -0700 ++++ usr/src/nv.2419292/Makefile.kbuild 2008-05-21 12:07:57.551201274 -0700 +@@ -166,10 +166,6 @@ + CFLAGS += -DNV_MAP_REGISTERS_EARLY + endif + +-ifeq ($(shell echo $(NV_BUILD_NV_PAT_SUPPORT)),1) +-CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT +-endif +- + ifneq ($(PATCHLEVEL), 4) + COMPILE_TESTS = \ + remap_page_range \ +diff -ru usr/src/nv/Makefile.nvidia usr/src/nv.2419292/Makefile.nvidia +--- usr/src/nv/Makefile.nvidia 2008-05-19 00:37:02.000000000 -0700 ++++ usr/src/nv.2419292/Makefile.nvidia 2008-05-21 12:08:08.771840702 -0700 +@@ -56,10 +56,6 @@ + CFLAGS += -DNV_MAP_REGISTERS_EARLY + endif + +-ifeq ($(shell echo $(NV_BUILD_NV_PAT_SUPPORT)),1) +-CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT +-endif +- + INCLUDES += -I$(KERNEL_HEADERS) + + COMPILE_TESTS = \ +diff -ru usr/src/nv/nv-linux.h usr/src/nv.2419292/nv-linux.h +--- usr/src/nv/nv-linux.h 2008-05-19 00:37:01.000000000 -0700 ++++ usr/src/nv.2419292/nv-linux.h 2008-05-21 12:07:19.741046595 -0700 +@@ -145,16 +145,19 @@ + #endif + + #if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && !defined(CONFIG_XEN) +-#define NV_BUILD_NV_PAT_SUPPORT 1 ++#define NV_ENABLE_PAT_SUPPORT + #endif + +-#if defined(NV_BUILD_NV_PAT_SUPPORT) +-#include "pat.h" ++#define NV_PAT_MODE_DISABLED 0 ++#define NV_PAT_MODE_KERNEL 1 ++#define NV_PAT_MODE_BUILTIN 2 ++ ++extern int nv_pat_mode; ++ + #if defined(CONFIG_HOTPLUG_CPU) + #include /* CPU hotplug support */ + #include /* struct notifier_block, etc */ + #endif +-#endif + + #if (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) + #include +@@ -681,6 +684,13 @@ + #define nv_down(lock) down(&lock) + #define nv_up(lock) up(&lock) + ++#define NV_INIT_MUTEX(mutex) \ ++ { \ ++ struct semaphore __mutex = \ ++ __SEMAPHORE_INITIALIZER(*(mutex), 1); \ ++ *(mutex) = __mutex; \ ++ } ++ + #if defined (KERNEL_2_4) + # define NV_IS_SUSER() suser() + # define NV_PCI_DEVICE_NAME(dev) ((dev)->name) +@@ -1029,20 +1039,6 @@ + return new_prot; + } + #endif +- +-#if defined(NV_BUILD_NV_PAT_SUPPORT) && !defined (pgprot_writecombined) +-static inline pgprot_t pgprot_writecombined(pgprot_t old_prot) +- { +- pgprot_t new_prot = old_prot; +- if (boot_cpu_data.x86 > 3) +- { +- pgprot_val(old_prot) &= ~(_PAGE_PCD | _PAGE_PWT); +- new_prot = __pgprot(pgprot_val(old_prot) | _PAGE_WRTCOMB); +- } +- return new_prot; +- } +-#endif +- + #endif /* defined(NVCPU_X86) || defined(NVCPU_X86_64) */ + + #if defined(KERNEL_2_4) && defined(NVCPU_X86) && !defined(pfn_to_page) +@@ -1142,8 +1138,6 @@ + struct semaphore at_lock; + } nv_linux_state_t; + +-extern int nv_pat_enabled; +- + #if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED) + /* + * acpi data storage structure +diff -ru usr/src/nv/nv-reg.h usr/src/nv.2419292/nv-reg.h +--- usr/src/nv/nv-reg.h 2008-05-19 00:37:01.000000000 -0700 ++++ usr/src/nv.2419292/nv-reg.h 2008-05-21 12:07:23.313250167 -0700 +@@ -471,6 +471,37 @@ + #define __NV_RM_EDGE_INTR_CHECK RMEdgeIntrCheck + #define NV_REG_RM_EDGE_INTR_CHECK NV_REG_STRING(__NV_RM_EDGE_INTR_CHECK) + ++/* ++ * Option: UsePageAttributeTable ++ * ++ * Description: ++ * ++ * Enable/disable use of the page attribute table (PAT) available in ++ * modern x86/x86-64 processors to set the effective memory type of memory ++ * mappings to write-combining (WC). If disabled, the driver will fall ++ * back to using MTRRs, if possible. ++ * ++ * If enabled, an x86 processor with PAT support is present and the host ++ * system's Linux kernel did not configure one of the PAT entries to ++ * indicate the WC memory type, the driver will change the second entry in ++ * the PAT from its default (write-through (WT)) to WC at module load ++ * time. If the kernel did update one of the PAT entries, the driver will ++ * not modify the PAT. ++ * ++ * In both cases, the driver will honor attempts to map memory with the WC ++ * memory type by selecting the appropriate PAT entry using the correct ++ * set of PTE flags. ++ * ++ * Possible values: ++ * ++ * ~0 = use the NVIDIA driver's default logic (default) ++ * 1 = enable use of the PAT for WC mappings. ++ * 0 = disable use of the PAT for WC mappings. ++ */ ++ ++#define __NV_USE_PAGE_ATTRIBUTE_TABLE UsePageAttributeTable ++#define NV_USE_PAGE_ATTRIBUTE_TABLE NV_REG_STRING(__NV_USE_PAGE_ATTRIBUTE_TABLE) ++ + + + #if defined(NV_DEFINE_REGISTRY_KEY_TABLE) +@@ -495,6 +526,7 @@ + NV_DEFINE_REG_ENTRY(__NV_UPDATE_MEMORY_TYPES, ~0); + NV_DEFINE_REG_ENTRY(__NV_USE_VBIOS, 1); + NV_DEFINE_REG_ENTRY(__NV_RM_EDGE_INTR_CHECK, 1); ++NV_DEFINE_REG_ENTRY(__NV_USE_PAGE_ATTRIBUTE_TABLE, ~0); + + #if defined(NV_LINUX) + NV_DEFINE_REG_STRING_ENTRY(__NV_REGISTRY_DWORDS, NULL); +@@ -540,6 +572,7 @@ + NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_UPDATE_MEMORY_TYPES), + NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_VBIOS), + NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_RM_EDGE_INTR_CHECK), ++ NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_PAGE_ATTRIBUTE_TABLE), + {NULL, NULL, NULL} + }; + +diff -ru usr/src/nv/nv.c usr/src/nv.2419292/nv.c +--- usr/src/nv/nv.c 2008-05-19 00:37:01.000000000 -0700 ++++ usr/src/nv.2419292/nv.c 2008-05-21 12:07:28.313535114 -0700 +@@ -22,10 +22,9 @@ + #endif + + #if defined(KERNEL_2_4) && (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) +-// weak linking? + extern int i2c_add_adapter (struct i2c_adapter *) __attribute__ ((weak)); + extern int i2c_del_adapter (struct i2c_adapter *) __attribute__ ((weak)); +-#endif // defined(KERNEL_2_4) && (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) ++#endif + + /* + * our global state; one per device +@@ -41,14 +40,7 @@ + static struct pm_dev *apm_nv_dev[NV_MAX_DEVICES] = { 0 }; + #endif + +-int nv_pat_enabled = 0; +- +-#if !defined(NV_BUILD_NV_PAT_SUPPORT) +-static int nv_disable_pat = 1; +-#else +-static int nv_disable_pat = 0; +-NV_MODULE_PARAMETER(nv_disable_pat); +-#endif ++int nv_pat_mode = NV_PAT_MODE_DISABLED; + + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) + NvU64 __nv_supported_pte_mask = ~_PAGE_NX; +@@ -611,7 +603,7 @@ + nv_state_t *nv; + nv_linux_state_t *nvl; + +- proc_nvidia = create_proc_entry("nvidia", d_flags, proc_root_driver); ++ proc_nvidia = create_proc_entry("driver/nvidia", d_flags, NULL); + if (!proc_nvidia) + goto failed; + +@@ -863,18 +855,20 @@ + static int __nv_enable_pat_support (void); + static void __nv_disable_pat_support (void); + +-#if defined(NV_BUILD_NV_PAT_SUPPORT) ++#if defined(NV_ENABLE_PAT_SUPPORT) + /* +- * Private PAT support for use by the NVIDIA driver. This is an +- * interim solution until the kernel offers PAT support. ++ * Private PAT support for use by the NVIDIA driver. This is used on ++ * kernels that do not modify the PAT to include a write-combining ++ * entry. + */ +-static int __check_pat_support (void); ++static int __determine_pat_mode (void); + static void __nv_setup_pat_entries (void *); + static void __nv_restore_pat_entries (void *); + +-#define NV_READ_PAT_ENTRIES(pat1, pat2) rdmsr(IA32_CR_PAT, (pat1), (pat2)) +-#define NV_WRITE_PAT_ENTRIES(pat1, pat2) wrmsr(IA32_CR_PAT, (pat1), (pat2)) +-#define NV_PAT_ENTRY(pat, index) (((pat) & (0xff<<((index)*8)))>>((index)*8)) ++#define NV_READ_PAT_ENTRIES(pat1, pat2) rdmsr(0x277, (pat1), (pat2)) ++#define NV_WRITE_PAT_ENTRIES(pat1, pat2) wrmsr(0x277, (pat1), (pat2)) ++#define NV_PAT_ENTRY(pat, index) \ ++ (((pat) & (0xff << ((index)*8))) >> ((index)*8)) + + static inline void __nv_disable_caches(unsigned long *cr4) + { +@@ -895,39 +889,47 @@ + if (cr4 & 0x80) write_cr4(cr4); + } + +-static int __check_pat_support() ++static int __determine_pat_mode() + { + unsigned int pat1, pat2, i; ++ U008 PAT_WC_index; + +- if (!test_bit(X86_FEATURE_PAT, (volatile unsigned long *)&boot_cpu_data.x86_capability)) ++ if (!test_bit(X86_FEATURE_PAT, ++ (volatile unsigned long *)&boot_cpu_data.x86_capability)) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: CPU does not support the PAT, falling back to MTRRs.\n"); +- return 0; ++ return NV_PAT_MODE_DISABLED; + } + + NV_READ_PAT_ENTRIES(pat1, pat2); ++ PAT_WC_index = 0xf; + + for (i = 0; i < 4; i++) + { +- // we plan to mark PAT entry 1 as WC. if it's already marked such, +- // that's fine, since it would be no different than us setting it. +- if ((i != 1) && NV_PAT_ENTRY(pat1, i) == 1) +- { +- nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i); +- nv_printf(NV_DBG_ERRORS, "NVRM: Aborting, due to PAT already being configured\n"); +- return 0; +- } +- +- if (NV_PAT_ENTRY(pat2, i) == 1) +- { +- nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i + 4); +- nv_printf(NV_DBG_ERRORS, "NVRM: Aborting, due to PAT already being configured\n"); +- return 0; +- } ++ if (NV_PAT_ENTRY(pat1, i) == 0x01) ++ { ++ PAT_WC_index = i; ++ break; ++ } ++ ++ if (NV_PAT_ENTRY(pat2, i) == 0x01) ++ { ++ PAT_WC_index = (i + 4); ++ break; ++ } + } + +- return 1; ++ if (PAT_WC_index == 1) ++ return NV_PAT_MODE_KERNEL; ++ else if (PAT_WC_index != 0xf) ++ { ++ nv_printf(NV_DBG_ERRORS, ++ "NVRM: PAT configuration unsupported, falling back to MTRRs.\n"); ++ return NV_PAT_MODE_DISABLED; ++ } ++ else ++ return NV_PAT_MODE_BUILTIN; + } + + static unsigned long orig_pat1, orig_pat2; +@@ -978,19 +980,30 @@ + __nv_enable_caches(cr4); + NV_RESTORE_FLAGS(eflags); + } +- +-#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ ++#endif + + static int __nv_enable_pat_support() + { +-#if defined(NV_BUILD_NV_PAT_SUPPORT) ++#if defined(NV_ENABLE_PAT_SUPPORT) + unsigned long pat1, pat2; + +- if (nv_pat_enabled) ++ if (nv_pat_mode != NV_PAT_MODE_DISABLED) + return 1; + +- if (!__check_pat_support()) +- return 0; ++ nv_pat_mode = __determine_pat_mode(); ++ ++ switch (nv_pat_mode) ++ { ++ case NV_PAT_MODE_DISABLED: ++ /* avoid the PAT if unavailable/unusable */ ++ return 0; ++ case NV_PAT_MODE_KERNEL: ++ /* inherit the kernel's PAT layout */ ++ return 1; ++ case NV_PAT_MODE_BUILTIN: ++ /* use builtin code to modify the PAT layout */ ++ break; ++ } + + NV_READ_PAT_ENTRIES(orig_pat1, orig_pat2); + nv_printf(NV_DBG_SETUP, "saved orig pats as 0x%lx 0x%lx\n", orig_pat1, orig_pat2); +@@ -1001,31 +1014,28 @@ + return 0; + } + +- nv_pat_enabled = 1; +- + NV_READ_PAT_ENTRIES(pat1, pat2); + nv_printf(NV_DBG_SETUP, "changed pats to 0x%lx 0x%lx\n", pat1, pat2); +-#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ +- ++#endif + return 1; + } + + static void __nv_disable_pat_support() + { +-#if defined(NV_BUILD_NV_PAT_SUPPORT) ++#if defined(NV_ENABLE_PAT_SUPPORT) + unsigned long pat1, pat2; + +- if (!nv_pat_enabled) ++ if (nv_pat_mode != NV_PAT_MODE_BUILTIN) + return; + + if (nv_execute_on_all_cpus(__nv_restore_pat_entries, NULL) != 0) + return; + +- nv_pat_enabled = 0; ++ nv_pat_mode = NV_PAT_MODE_DISABLED; + + NV_READ_PAT_ENTRIES(pat1, pat2); + nv_printf(NV_DBG_SETUP, "restored orig pats as 0x%lx 0x%lx\n", pat1, pat2); +-#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ ++#endif + } + + #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) +@@ -1273,7 +1283,7 @@ + #endif + } + +-#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) ++#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) + static int + nv_kern_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) + { +@@ -1305,8 +1315,7 @@ + .notifier_call = nv_kern_cpu_callback, + .priority = 0 + }; +- +-#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) */ ++#endif + + + /*** +@@ -1315,7 +1324,7 @@ + + static int __init nvidia_init_module(void) + { +- int rc; ++ int rc, disable_pat = 0; + U032 i, count, data; + nv_state_t *nv = NV_STATE_PTR(&nv_ctl_device); + nv_stack_t *sp = NULL; +@@ -1443,18 +1452,6 @@ + nv_printf(NV_DBG_ERRORS, "NVRM: pte cache allocation failed\n"); + goto failed; + } +- +-#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) +- if (!nv_disable_pat) +- { +- if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0) +- { +- rc = -EIO; +- nv_printf(NV_DBG_ERRORS, "NVRM: CPU hotplug notifier registration failed!\n"); +- goto failed; +- } +- } +-#endif + + #if defined(NV_SG_MAP_BUFFERS) + rm_read_registry_dword(sp, nv, "NVreg", "RemapLimit", &nv_remap_limit); +@@ -1532,8 +1529,30 @@ + + nvos_proc_add_warning_file("README", __README_warning); + +- if (!nv_disable_pat) ++ rc = rm_read_registry_dword(sp, nv, ++ "NVreg", NV_USE_PAGE_ATTRIBUTE_TABLE, &data); ++ if ((rc == 0) && ((int)data != ~0)) ++ { ++ disable_pat = (data == 0); ++ } ++ ++ if (!disable_pat) ++ { + __nv_enable_pat_support(); ++#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) ++ if (nv_pat_mode == NV_PAT_MODE_BUILTIN) ++ { ++ if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0) ++ { ++ __nv_disable_pat_support(); ++ rc = -EIO; ++ nv_printf(NV_DBG_ERRORS, ++ "NVRM: CPU hotplug notifier registration failed!\n"); ++ goto failed; ++ } ++ } ++#endif ++ } + else + { + nv_printf(NV_DBG_ERRORS, +@@ -1686,10 +1705,10 @@ + rm_unregister_compatible_ioctls(sp); + #endif + +- if (nv_pat_enabled) ++ if (nv_pat_mode == NV_PAT_MODE_BUILTIN) + { + __nv_disable_pat_support(); +-#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) ++#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) + unregister_hotcpu_notifier(&nv_hotcpu_nfb); + #endif + } +@@ -1825,6 +1844,8 @@ + } + } + ++#if !defined(NV_VM_INSERT_PAGE_PRESENT) ++static + struct page *nv_kern_vma_nopage( + struct vm_area_struct *vma, + unsigned long address, +@@ -1835,22 +1856,21 @@ + #endif + ) + { +-#if !defined(NV_VM_INSERT_PAGE_PRESENT) + struct page *page; + + page = pfn_to_page(vma->vm_pgoff); + get_page(page); + + return page; +-#else +- return NOPAGE_SIGBUS; +-#endif + } ++#endif + + struct vm_operations_struct nv_vm_ops = { + .open = nv_kern_vma_open, + .close = nv_kern_vma_release, /* "close" */ ++#if !defined(NV_VM_INSERT_PAGE_PRESENT) + .nopage = nv_kern_vma_nopage, ++#endif + }; + + static nv_file_private_t * +@@ -1864,7 +1884,7 @@ + + memset(nvfp, 0, sizeof(nv_file_private_t)); + +- sema_init(&nvfp->sp_lock, 1); ++ NV_INIT_MUTEX(&nvfp->sp_lock); + + // initialize this file's event queue + init_waitqueue_head(&nvfp->waitqueue); +@@ -2214,11 +2234,12 @@ + break; + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) + case NV_MEMORY_WRITECOMBINED: +-#if defined(NV_BUILD_NV_PAT_SUPPORT) +- if (nv_pat_enabled && +- (memory_type != NV_MEMORY_TYPE_REGISTERS)) ++#if defined(NV_ENABLE_PAT_SUPPORT) ++ if ((nv_pat_mode != NV_PAT_MODE_DISABLED) && ++ (memory_type != NV_MEMORY_TYPE_REGISTERS)) + { +- *prot = pgprot_writecombined(*prot); ++ pgprot_val(*prot) &= ~(_PAGE_PSE | _PAGE_PCD | _PAGE_PWT); ++ *prot = __pgprot(pgprot_val(*prot) | _PAGE_PWT); + break; + } + #endif +@@ -2242,7 +2263,6 @@ + return 1; + #endif + case NV_MEMORY_CACHED: +- //case NV_MEMORY_WRITEBACK: + #if !defined(NVCPU_X86) && !defined(NVCPU_X86_64) + if (memory_type != NV_MEMORY_TYPE_REGISTERS) + break; +@@ -2264,8 +2284,6 @@ + if (memory_type == NV_MEMORY_TYPE_SYSTEM) + break; + #endif +- //case NV_MEMORY_WRITETHRU: +- //case NV_MEMORY_WRITEPROTECT: + default: + if(nv_ext_encode_caching(prot, cache_type, memory_type) == 0) + return 0; +@@ -3502,6 +3520,10 @@ + BOOL kern + ) + { ++#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) ++ nv_printf(NV_DBG_ERRORS, ++ "NVRM: can't translate address in nv_get_phys_address()!\n"); ++#else + struct mm_struct *mm; + pgd_t *pgd = NULL; + pmd_t *pmd = NULL; +@@ -3514,15 +3536,7 @@ + down_read(&mm->mmap_sem); + } + else +- { +-#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) +- nv_printf(NV_DBG_ERRORS, +- "NVRM: can't translate KVA in nv_get_phys_address()!\n"); +- return 0; +-#else + mm = NULL; +-#endif +- } + + pgd = NV_PGD_OFFSET(address, kern, mm); + if (!NV_PGD_PRESENT(pgd)) +@@ -3550,6 +3564,7 @@ + failed: + if (!kern) + up_read(&mm->mmap_sem); ++#endif + return 0; + } + +@@ -3790,8 +3805,9 @@ + + nv_init_lock(nvl->rm_lock); + +- sema_init(&nvl->ldata_lock, 1); +- sema_init(&nvl->at_lock, 1); ++ NV_INIT_MUTEX(&nvl->ldata_lock); ++ NV_INIT_MUTEX(&nvl->at_lock); ++ + NV_ATOMIC_SET(nvl->usage_count, 0); + + nvl->rm_lock_cpu = -1; +diff -ru usr/src/nv/os-agp.c usr/src/nv.2419292/os-agp.c +--- usr/src/nv/os-agp.c 2008-05-19 00:37:01.000000000 -0700 ++++ usr/src/nv.2419292/os-agp.c 2008-05-21 12:07:30.437656163 -0700 +@@ -115,7 +115,7 @@ + goto release; + } + +- if (!nv_pat_enabled) ++ if (nv_pat_mode == NV_PAT_MODE_DISABLED) + { + #ifdef CONFIG_MTRR + /* +@@ -175,7 +175,7 @@ + + failed: + #ifdef CONFIG_MTRR +- if (!nv_pat_enabled) ++ if (nv_pat_mode == NV_PAT_MODE_DISABLED) + mtrr_del(-1, agp_info.aper_base, agp_info.aper_size << 20); + #endif + release: +@@ -205,7 +205,7 @@ + nvl = NV_GET_NVL_FROM_NV_STATE(nv); + + #ifdef CONFIG_MTRR +- if (!nv_pat_enabled) ++ if (nv_pat_mode == NV_PAT_MODE_DISABLED) + mtrr_del(-1, nv->agp.address, nv->agp.size); + #endif + +diff -ru usr/src/nv/os-interface.c usr/src/nv.2419292/os-interface.c +--- usr/src/nv/os-interface.c 2008-05-19 00:37:01.000000000 -0700 ++++ usr/src/nv.2419292/os-interface.c 2008-05-21 12:07:33.365823028 -0700 +@@ -1355,7 +1355,7 @@ + + BOOL NV_API_CALL os_pat_supported(void) + { +- return nv_pat_enabled; ++ return (nv_pat_mode != NV_PAT_MODE_DISABLED); + } + + void NV_API_CALL os_dump_stack() diff --git a/x11-drivers/nvidia-drivers/files/libGL.la-r2 b/x11-drivers/nvidia-drivers/files/libGL.la-r2 new file mode 100644 index 0000000..863d184 --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/libGL.la-r2 @@ -0,0 +1,32 @@ +# libGL.la - a libtool library file +# Generated by ltmain.sh - GNU libtool 1.4 (1.920 2001/04/24 23:26:18) +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libGL.so.1' + +# Names of this library. +library_names='libGL.so.${PV} libGL.so.1 libGL.so' + +# The name of the static archive. +old_library='' + +# Libraries that this one depends upon. +dependency_libs='-L/usr/${libdir} -lm -lX11 -lXext -ldl' + +# Version information for libGL. +current=${ver1} +age=${ver2} +revision=${ver3} + +# Is this an already installed library? +installed=yes + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/${libdir}' diff --git a/x11-drivers/nvidia-drivers/files/nvidia b/x11-drivers/nvidia-drivers/files/nvidia new file mode 100644 index 0000000..a96b0cd --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/nvidia @@ -0,0 +1,14 @@ +# Nvidia drivers support +alias char-major-195 nvidia +alias /dev/nvidiactl char-major-195 + +# To tweak the driver the following options can be used, note that +# you should be careful, as it could cause instability!! For more +# options see /usr/share/doc/PACKAGE/README +# +# !!! SECURITY WARNING !!! +# DO NOT MODIFY OR REMOVE THE DEVICE FILE RELATED OPTIONS UNLESS YOU KNOW +# WHAT YOU ARE DOING. +# ONLY ADD TRUSTED USERS TO THE VIDEO GROUP, THESE USERS MAY BE ABLE TO CRASH, +# COMPROMISE, OR IRREPARABLY DAMAGE THE MACHINE. +options nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=VIDEOGID NVreg_ModifyDeviceFiles=1 diff --git a/x11-drivers/nvidia-drivers/metadata.xml b/x11-drivers/nvidia-drivers/metadata.xml new file mode 100644 index 0000000..78aceb4 --- /dev/null +++ b/x11-drivers/nvidia-drivers/metadata.xml @@ -0,0 +1,9 @@ + + + +none + + chainsaw@gentoo.org + +NVIDIA X11 driver and GLX libraries + diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.05.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.05.ebuild new file mode 100644 index 0000000..f8cbcd7 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.05.ebuild @@ -0,0 +1,515 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.05.ebuild,v 1.1 2008/05/29 14:44:30 chainsaw Exp $ + +inherit eutils multilib versionator linux-mod flag-o-matic nvidia-driver + +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" + +DESCRIPTION="NVIDIA X11 driver and GLX libraries" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI="x86? ( http://us.download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run ) + amd64? ( http://us.download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run ) + x86-fbsd? ( http://us.download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )" + +LICENSE="NVIDIA" +SLOT="0" +KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd" +IUSE="acpi custom-cflags gtk multilib kernel_linux" +RESTRICT="strip" +EMULTILIB_PKG="true" + +COMMON="x11-base/xorg-server + multilib? ( app-emulation/emul-linux-x86-xlibs ) + kernel_FreeBSD? ( !media-video/nvidia-freebsd ) + !app-emulation/emul-linux-x86-nvidia + !x11-drivers/nvidia-legacy-drivers" +DEPEND="${COMMON} + kernel_linux? ( virtual/linux-sources ) + app-admin/eselect-opengl" +RDEPEND="${COMMON} + kernel_linux? ( virtual/modutils ) + media-libs/mesa + acpi? ( sys-power/acpid )" +PDEPEND="gtk? ( media-video/nvidia-settings )" + +QA_TEXTRELS_x86="usr/lib/libXvMCNVIDIA.so.${PV} + usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/tls/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libnvidia-cfg.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libcuda.so.${PV}" + +QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko + usr/lib/opengl/nvidia/lib/libGL.so.1 + usr/lib/opengl/nvidia/lib/libGLcore.so.1 + usr/lib/opengl/nvidia/lib/libnvidia-cfg.so.1 + usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.1 + usr/lib/opengl/nvidia/extensions/libglx.so + usr/lib/xorg/modules/drivers/nvidia_drv.so" + +QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/tls/libnvidia-tls.so.${PV} + usr/lib32/opengl/nvidia/no-tls/libnvidia-tls.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/opengl/nvidia/lib/libnvidia-cfg.so.${PV} + usr/lib32/libcuda.so.${PV}" + +QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so" + +QA_EXECSTACK_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/xorg/modules/drivers/nvidia_drv.so + usr/lib64/libXvMCNVIDIA.so.${PV} + usr/lib64/opengl/nvidia/tls/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/no-tls/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libnvidia-cfg.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so + usr/bin/nvidia-xconfig" + +QA_WX_LOAD_x86="usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so" + +QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so" + +if use x86; then + PKG_V="-pkg0" + NV_PACKAGE="${X86_NV_PACKAGE}" +elif use amd64; then + PKG_V="-pkg2" + NV_PACKAGE="${AMD64_NV_PACKAGE}" +elif use x86-fbsd; then + PKG_V="" + NV_PACKAGE="${X86_FBSD_NV_PACKAGE}" +fi + +S="${WORKDIR}/${NV_PACKAGE}${PKG_V}" + +mtrr_check() { + ebegin "Checking for MTRR support" + linux_chkconfig_present MTRR + eend $? + + if [[ $? -ne 0 ]] ; then + eerror "Please enable MTRR support in your kernel config, found at:" + eerror + eerror " Processor type and features" + eerror " [*] MTRR (Memory Type Range Register) support" + eerror + eerror "and recompile your kernel ..." + die "MTRR support not detected!" + fi +} + +paravirt_check() { + ebegin "Checking for Paravirtualized guest support" + linux_chkconfig_present PARAVIRT + + if [[ $? -eq 0 ]]; then + eerror "Please disable PARAVIRT in your kernel config, found at:" + eerror + eerror " Processor type and features" + eerror " [*] Paravirtualized guest support" + eerror + eerror "or XEN support" + eerror + eerror "and recompile your kernel .." + die "PARAVIRT support detected!" + fi +} + +pkg_setup() { + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default abi." + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux; then + linux-mod_pkg_setup + MODULE_NAMES="nvidia(video:${S}/usr/src/nv)" + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} HOST_CC=$(tc-getBUILD_CC)" + mtrr_check + paravirt_check + fi + + # On BSD userland it wants real make command + use userland_BSD && MAKE="$(get_bmake)" + + export _POSIX2_VERSION="199209" + + # Since Nvidia ships 3 different series of drivers, we need to give the user + # some kind of guidance as to what version they should install. This tries + # to point the user in the right direction but can't be perfect. check + # nvidia-driver.eclass + nvidia-driver-check-warning + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + NV_DOC="${S}/doc" + NV_EXEC="${S}/obj" + NV_SRC="${S}/src" + elif use kernel_linux; then + NV_DOC="${S}/usr/share/doc" + NV_EXEC="${S}/usr/bin" + NV_SRC="${S}/usr/src/nv" + else + die "Could not determine proper NVIDIA package" + fi +} + +src_unpack() { + if use kernel_linux && kernel_is lt 2 6 7; then + echo + ewarn "Your kernel version is ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" + ewarn "This is not officially supported for ${P}. It is likely you" + ewarn "will not be able to compile or use the kernel module." + ewarn "It is recommended that you upgrade your kernel to a version >= 2.6.7" + echo + ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored." + fi + + if ! use x86-fbsd; then + cd "${WORKDIR}" + bash "${DISTDIR}"/${NV_PACKAGE}${PKG_V}.run --extract-only + else + unpack ${A} + fi + + # Patches go below here, add brief description + cd "${S}" + use x86-fbsd && cd doc + + # Use the correct defines to make gtkglext build work + epatch "${FILESDIR}"/NVIDIA_glx-defines.patch + # Use some more sensible gl headers and make way for new glext.h + epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch + + # allow on board sensors to work with lm_sensors + if use kernel_linux; then + epatch "${FILESDIR}"/NVIDIA_i2c-hwmon.patch + + kernel_is ge 2 6 26 && epatch "${FILESDIR}"/NVIDIA_kernel-173.14.05-2419292.diff + fi + + if use kernel_linux; then + # Quiet down warnings the user does not need to see + sed -i \ + -e 's:-Wpointer-arith::g' \ + -e 's:-Wsign-compare::g' \ + "${NV_SRC}"/Makefile.kbuild + + # If you set this then it's your own fault when stuff breaks :) + use custom-cflags && sed -i "s:-O:${CFLAGS}:" Makefile.* + + # If greater than 2.6.5 use M= instead of SUBDIR= + convert_to_m "${NV_SRC}"/Makefile.kbuild + fi +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use x86-fbsd; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use kernel_linux; then + linux-mod_src_compile + fi +} + +src_install() { + local MLTEST=$(type dyn_unpack) + + cd "${S}" + + if use kernel_linux; then + linux-mod_src_install + + VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)" + if [ -z "$VIDEOGROUP" ]; then + eerror "Failed to determine the video group gid." + die "Failed to determine the video group gid." + fi + + # Add the aliases + [ -f "${FILESDIR}/nvidia" ] || die "nvidia missing in FILESDIR" + sed -e 's:PACKAGE:'${PF}':g' \ + -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia > \ + "${WORKDIR}"/nvidia + insinto /etc/modprobe.d + doins "${WORKDIR}"/nvidia || die + elif use x86-fbsd; then + insinto /boot/modules + doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" || die + + exeinto /boot/modules + doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" || die + fi + + if has_multilib_profile ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + elif use amd64 ; then + src_install-libs lib32 $(get_multilibdir) + src_install-libs lib $(get_libdir) + + rm -rf "${D}"/usr/$(get_multilibdir)/opengl/nvidia/include + rm -rf "${D}"/usr/$(get_multilibdir)/opengl/nvidia/extensions + else + src_install-libs + fi + + is_final_abi || return 0 + + # Documentation + dodoc "${NV_DOC}"/{XF86Config.sample,Copyrights} + dohtml "${NV_DOC}"/html/* + if use x86-fbsd; then + dodoc "${NV_DOC}/README" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${S}"/usr/share/man/nvidia-{smi,xconfig}.1.gz + fi + + # Helper Apps + dobin ${NV_EXEC}/nvidia-xconfig || die + dobin ${NV_EXEC}/nvidia-smi || die + dobin ${NV_EXEC}/nvidia-bug-report.sh || die +} + +# Install nvidia library: +# the first parameter is the place where to install it +# the second parameter is the base name of the library +# the third parameter is the provided soversion +donvidia() { + dodir $1 + exeinto $1 + + libname=$(basename $2) + + # libnvidia-cfg.so is no longer supplied in lib32; step over it gracefully + if [ -e $2.$3 ] ; then + doexe $2.$3 + dosym ${libname}.$3 $1/${libname} + [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1 + fi +} + +src_install-libs() { + local pkglibdir=lib + local inslibdir=$(get_libdir) + + if [[ ${#} -eq 2 ]] ; then + pkglibdir=${1} + inslibdir=${2} + elif has_multilib_profile && [[ ${ABI} == "x86" ]] ; then + pkglibdir=lib32 + fi + + local usrpkglibdir=usr/${pkglibdir} + local libdir=usr/X11R6/${pkglibdir} + local drvdir=${libdir}/modules/drivers + local extdir=${libdir}/modules/extensions + local incdir=usr/include/GL + local sover=${PV} + local NV_ROOT="/usr/${inslibdir}/opengl/nvidia" + local NO_TLS_ROOT="${NV_ROOT}/no-tls" + local TLS_ROOT="${NV_ROOT}/tls" + local X11_LIB_DIR="/usr/${inslibdir}/xorg" + + if use x86-fbsd; then + # on FreeBSD everything is on obj/ + pkglibdir=obj + usrpkglibdir=obj + x11pkglibdir=obj + drvdir=obj + extdir=obj + + # don't ask me why the headers are there.. glxext.h is missing + incdir=doc + + # on FreeBSD it has just .1 suffix + sover=1 + fi + + # The GLX libraries + donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libGL.so ${sover} + donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libGLcore.so ${sover} + + donvidia ${NV_ROOT}/lib ${usrpkglibdir}/libnvidia-cfg.so ${sover} + + dodir ${NO_TLS_ROOT} + donvidia ${NO_TLS_ROOT} ${usrpkglibdir}/libnvidia-tls.so ${sover} + + if ! use x86-fbsd; then + donvidia ${TLS_ROOT} ${usrpkglibdir}/tls/libnvidia-tls.so ${sover} + fi + + if want_tls ; then + dosym ../tls/libnvidia-tls.so ${NV_ROOT}/lib + dosym ../tls/libnvidia-tls.so.1 ${NV_ROOT}/lib + dosym ../tls/libnvidia-tls.so.${sover} ${NV_ROOT}/lib + else + dosym ../no-tls/libnvidia-tls.so ${NV_ROOT}/lib + dosym ../no-tls/libnvidia-tls.so.1 ${NV_ROOT}/lib + dosym ../no-tls/libnvidia-tls.so.${sover} ${NV_ROOT}/lib + fi + + if ! use x86-fbsd; then + # Install the .la file for libtool, to prevent e.g. bug #176423 + [ -f "${FILESDIR}/libGL.la-r2" ] || die "libGL.la-r2 missing in FILESDIR" + local ver1=$(get_version_component_range 1) + local ver2=$(get_version_component_range 2) + local ver3=$(get_version_component_range 3) + sed -e "s:\${PV}:${PV}:" \ + -e "s:\${ver1}:${ver1}:" \ + -e "s:\${ver2}:${ver2}:" \ + -e "s:\${ver3}:${ver3}:" \ + -e "s:\${libdir}:${inslibdir}:" \ + "${FILESDIR}"/libGL.la-r2 > "${D}"/${NV_ROOT}/lib/libGL.la + fi + + exeinto ${X11_LIB_DIR}/modules/drivers + + [[ -f ${drvdir}/nvidia_drv.so ]] && \ + doexe ${drvdir}/nvidia_drv.so + + insinto /usr/${inslibdir} + [[ -f ${libdir}/libXvMCNVIDIA.a ]] && \ + doins ${libdir}/libXvMCNVIDIA.a + exeinto /usr/${inslibdir} + # fix Bug 131315 + [[ -f ${libdir}/libXvMCNVIDIA.so.${PV} ]] && \ + doexe ${libdir}/libXvMCNVIDIA.so.${PV} && \ + dosym libXvMCNVIDIA.so.${PV} \ + /usr/${inslibdir}/libXvMCNVIDIA.so + + exeinto ${NV_ROOT}/extensions + [[ -f ${libdir}/modules/libnvidia-wfb.so.${sover} ]] && \ + newexe ${libdir}/modules/libnvidia-wfb.so.${sover} libwfb.so + [[ -f ${extdir}/libglx.so.${sover} ]] && \ + newexe ${extdir}/libglx.so.${sover} libglx.so + + # Includes + insinto ${NV_ROOT}/include + doins ${incdir}/*.h + + #cuda + if [[ -f usr/include/cuda/cuda.h ]]; then + dodir /usr/include/cuda + insinto /usr/include/cuda + doins usr/include/cuda/*.h + + dolib.so usr/${pkglibdir}/libcuda.so.${PV} + dosym libcuda.so.${PV} /usr/${inslibdir}/libcuda.so.1 + dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so + fi +} + +pkg_preinst() { + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + if use kernel_linux; then + linux-mod_pkg_postinst + fi + + # Switch to the nvidia implementation + eselect opengl set --use-old nvidia + + echo + elog "You must be in the video group to use the NVIDIA device" + elog "For more info, read the docs at" + elog "http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6" + elog + + elog "This ebuild installs a kernel module and X driver. Both must" + elog "match explicitly in their version. This means, if you restart" + elog "X, you most modprobe -r nvidia before starting it back up" + elog + + elog "To use the NVIDIA GLX, run \"eselect opengl set nvidia\"" + elog + elog "nVidia has requested that any bug reports submitted have the" + elog "output of /usr/bin/nvidia-bug-report.sh included." + elog + elog "To work with compiz, you must enable the AddARGBGLXVisuals option." + elog + elog "If you are having resolution problems, try disabling DynamicTwinView." + echo +} + +want_tls() { + # For uclibc or anything non glibc, return false + has_version sys-libs/glibc || return 1 + + # Old versions of glibc were lt/no-tls only + has_version '=sys-libs/glibc-2.3.5' ; then + case ${CHOST/-*} in + i486|i586) return 1 ;; + esac + fi + + # These versions built linuxthreads version to support tls, too + has_version '>=sys-libs/glibc-2.3.4.20040619-r2' && return 0 + + return 1 +} + +pkg_postrm() { + if use kernel_linux; then + linux-mod_pkg_postrm + fi + eselect opengl set --use-old xorg-x11 +} -- cgit v1.2.3-65-gdbad