Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 276363 (video_cards_nvidia) - Introduce versioned VIDEO_CARDS entries: nvidia-{76,96,173,180}
Summary: Introduce versioned VIDEO_CARDS entries: nvidia-{76,96,173,180}
Status: RESOLVED WONTFIX
Alias: video_cards_nvidia
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: All Linux
: High enhancement
Assignee: Doug Goldstein (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-03 11:14 UTC by Jeroen Roovers (RETIRED)
Modified: 2009-08-20 11:40 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Test ebuild to check what portage does with conflicting nvidia-NNN (xorg-server-9999.ebuild,598 bytes, text/plain)
2009-07-03 13:22 UTC, Jeroen Roovers (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jeroen Roovers (RETIRED) gentoo-dev 2009-07-03 11:14:30 UTC
== The problem ==

Right now users of nvidia-drivers have to package.mask anything higher than their gfx card's appropriate highest version, like >x11-drivers/nvidia-drivers-97 for a user of the =x11-drivers/nvidia-drivers-96* series. While functional, it's awkward and could be done better, by adding VIDEO_CARDS entries for all major versions of nvidia-drivers. Instead of learning how to set a proper package.mask entry that you never need to change again until you replace the gfx card.

 == The solution ;) ==

Needed changes:
* profiles/desc/video_cards.desc needs new entries:
nvidia-76 -
nvidia-96 -
nvidia-173 -
nvidia-180 -

* All ebuilds that depend on x11-drivers/nvidia-drivers (maybe that's just xorg-server)
* http://www.gentoo.org/doc/en/nvidia-guide.xml should point not to the release page, but to http://www.nvidia.com/Download/index.aspx?lang=en-us , where any user can enter the type of card and platform they have, and get a major version to roll out that they can append as VIDEO_CARDS=nvidia-[NN] in make.conf
Comment 1 Rémi Cardona (RETIRED) gentoo-dev 2009-07-03 12:51:43 UTC
NAK on the xorg-server side. I just don't see how this is possible without ranged deps and/or slots and/or different packages.

Feel free to prove me wrong though :)

Cheers
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2009-07-03 13:09:42 UTC
(In reply to comment #1)
> NAK on the xorg-server side. I just don't see how this is possible without
> ranged deps and/or slots and/or different packages.

We'll need some mechanism saying VIDEO_CARDS="nvidia-96 nvidia-173" is wrong. We can't possibly persuade Xorg to handle two versions, or indeed Nvidia.

> Feel free to prove me wrong though :)

Er, it's not us and them... I don't want a Yes or No right now. I think it's a better way to handle nvidia-drivers versions and I haven't seen any argument against that yet.
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2009-07-03 13:22:57 UTC
Created attachment 196512 [details]
Test ebuild to check what portage does with conflicting nvidia-NNN

(In reply to comment #1)
> NAK on the xorg-server side. I just don't see how this is possible without
> ranged deps and/or slots and/or different packages.

astrid /keeps/gentoo/local/x11-base/xorg-server # VIDEO_CARDS="nvidia-96 nvidia-71" emerge -vp =xorg-server-9999

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     UD] x11-drivers/nvidia-drivers-71.86.09 [96.43.13] USE="acpi custom-cflags gtk (-multilib)" 5,151 kB [0]
[ebuild     U ] x11-base/xorg-server-9999 [1.5.3-r6] USE="-bar% -foo% (-3dfx%) (-debug%) (-dmx%) (-hal%) (-ipv6%*) (-kdrive%) (-minimal%) (-nptl%*) (-sdl%*) (-tslib%) (-xorg%*)" INPUT_DEVICES="(-acecad%) (-aiptek%) (-calcomp%) (-citron%) (-digitaledge%) (-dmc%) (-dynapro%) (-elo2300%) (-elographics%) (-evdev%*) (-fpit%) (-hyperpen%) (-jamstudio%) (-joystick%) (-keyboard%*) (-magellan%) (-microtouch%) (-mouse%*) (-mutouch%) (-palmax%) (-penmount%) (-spaceorb%) (-summa%) (-synaptics%) (-tek4957%) (-tslib%) (-ur98%) (-virtualbox%) (-vmmouse%) (-void%) (-wacom%*)" VIDEO_CARDS="nvidia-71%* nvidia-96%* -nvidia-173% -nvidia-180% (-apm%) (-ark%) (-ast%) (-chips%) (-cirrus%) (-dummy%) (-epson%) (-fbdev%) (-fglrx%) (-geode%) (-glint%) (-i128%) (-i740%) (-impact%) (-imstt%) (-intel%) (-mach64%) (-mga%) (-neomagic%) (-newport%) (-nv%) (-nvidia%*) (-r128%) (-radeon%) (-radeonhd%) (-rendition%) (-s3%) (-s3virge%) (-savage%) (-siliconmotion%) (-sis%) (-sisusb%) (-sunbw2%) (-suncg14%) (-suncg3%) (-suncg6%) (-sunffb%) (-sunleo%) (-suntcx%) (-tdfx%) (-tga%) (-trident%) (-tseng%) (-v4l%) (-vermilion%) (-vesa%) (-via%) (-virtualbox%) (-vmware%) (-voodoo%) (-xgi%)" 0 kB [0=>1]

Total: 2 packages (1 upgrade, 1 downgrade), Size of downloads: 5,151 kB
Portage tree and overlays:
 [0] /keeps/gentoo/portage
 [1] /keeps/gentoo/local

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

x11-base/xorg-server:0

  ('installed', '/', 'x11-base/xorg-server-1.5.3-r6', 'nomerge') pulled in by
    <x11-base/xorg-server-1.6.99 required by ('ebuild', '/', 'x11-drivers/nvidia-drivers-71.86.09', 'merge')

  ('ebuild', '/', 'x11-base/xorg-server-9999', 'merge') pulled in by
    =xorg-server-9999

x11-drivers/nvidia-drivers:0

  ('ebuild', '/', 'x11-drivers/nvidia-drivers-71.86.09', 'merge') pulled in by
    =x11-drivers/nvidia-drivers-71* required by ('ebuild', '/', 'x11-base/xorg-server-9999', 'merge')

  ('installed', '/', 'x11-drivers/nvidia-drivers-96.43.13', 'nomerge') pulled in by
    =x11-drivers/nvidia-drivers-96* required by ('ebuild', '/', 'x11-base/xorg-server-9999', 'merge')


It may be possible to solve this problem by using package.mask to
prevent one of those packages from being selected. However, it is also
possible that conflicting dependencies exist such that they are
impossible to satisfy simultaneously. If such a conflict exists in the
dependencies of two different packages, then those packages can not be
installed simultaneously.

For more information, see MASKED PACKAGES section in the emerge man page
or refer to the Gentoo Handbook.

astrid /keeps/gentoo/local/x11-base/xorg-server # VIDEO_CARDS="nvidia-71" emerge -vp =xorg-server-9999

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     UD] x11-drivers/nvidia-drivers-71.86.09 [96.43.13] USE="acpi custom-cflags gtk (-multilib)" 5,151 kB [0]
[ebuild     U ] x11-base/xorg-server-9999 [1.5.3-r6] USE="-bar% -foo% (-3dfx%) (-debug%) (-dmx%) (-hal%) (-ipv6%*) (-kdrive%) (-minimal%) (-nptl%*) (-sdl%*) (-tslib%) (-xorg%*)" INPUT_DEVICES="(-acecad%) (-aiptek%) (-calcomp%) (-citron%) (-digitaledge%) (-dmc%) (-dynapro%) (-elo2300%) (-elographics%) (-evdev%*) (-fpit%) (-hyperpen%) (-jamstudio%) (-joystick%) (-keyboard%*) (-magellan%) (-microtouch%) (-mouse%*) (-mutouch%) (-palmax%) (-penmount%) (-spaceorb%) (-summa%) (-synaptics%) (-tek4957%) (-tslib%) (-ur98%) (-virtualbox%) (-vmmouse%) (-void%) (-wacom%*)" VIDEO_CARDS="nvidia-71%* -nvidia-173% -nvidia-180% -nvidia-96% (-apm%) (-ark%) (-ast%) (-chips%) (-cirrus%) (-dummy%) (-epson%) (-fbdev%) (-fglrx%) (-geode%) (-glint%) (-i128%) (-i740%) (-impact%) (-imstt%) (-intel%) (-mach64%) (-mga%) (-neomagic%) (-newport%) (-nv%) (-nvidia%*) (-r128%) (-radeon%) (-radeonhd%) (-rendition%) (-s3%) (-s3virge%) (-savage%) (-siliconmotion%) (-sis%) (-sisusb%) (-sunbw2%) (-suncg14%) (-suncg3%) (-suncg6%) (-sunffb%) (-sunleo%) (-suntcx%) (-tdfx%) (-tga%) (-trident%) (-tseng%) (-v4l%) (-vermilion%) (-vesa%) (-via%) (-virtualbox%) (-vmware%) (-voodoo%) (-xgi%)" 0 kB [0=>1]

Total: 2 packages (1 upgrade, 1 downgrade), Size of downloads: 5,151 kB
Portage tree and overlays:
 [0] /keeps/gentoo/portage
 [1] /keeps/gentoo/local

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

x11-base/xorg-server:0

  ('installed', '/', 'x11-base/xorg-server-1.5.3-r6', 'nomerge') pulled in by
    <x11-base/xorg-server-1.6.99 required by ('ebuild', '/', 'x11-drivers/nvidia-drivers-71.86.09', 'merge')

  ('ebuild', '/', 'x11-base/xorg-server-9999', 'merge') pulled in by
    =xorg-server-9999


It may be possible to solve this problem by using package.mask to
prevent one of those packages from being selected. However, it is also
possible that conflicting dependencies exist such that they are
impossible to satisfy simultaneously. If such a conflict exists in the
dependencies of two different packages, then those packages can not be
installed simultaneously.

For more information, see MASKED PACKAGES section in the emerge man page
or refer to the Gentoo Handbook.

astrid /keeps/gentoo/local/x11-base/xorg-server # VIDEO_CARDS="nvidia-96" emerge -vp =xorg-server-9999

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] x11-base/xorg-server-9999 [1.5.3-r6] USE="-bar% -foo% (-3dfx%) (-debug%) (-dmx%) (-hal%) (-ipv6%*) (-kdrive%) (-minimal%) (-nptl%*) (-sdl%*) (-tslib%) (-xorg%*)" INPUT_DEVICES="(-acecad%) (-aiptek%) (-calcomp%) (-citron%) (-digitaledge%) (-dmc%) (-dynapro%) (-elo2300%) (-elographics%) (-evdev%*) (-fpit%) (-hyperpen%) (-jamstudio%) (-joystick%) (-keyboard%*) (-magellan%) (-microtouch%) (-mouse%*) (-mutouch%) (-palmax%) (-penmount%) (-spaceorb%) (-summa%) (-synaptics%) (-tek4957%) (-tslib%) (-ur98%) (-virtualbox%) (-vmmouse%) (-void%) (-wacom%*)" VIDEO_CARDS="nvidia-96%* -nvidia-173% -nvidia-180% -nvidia-71% (-apm%) (-ark%) (-ast%) (-chips%) (-cirrus%) (-dummy%) (-epson%) (-fbdev%) (-fglrx%) (-geode%) (-glint%) (-i128%) (-i740%) (-impact%) (-imstt%) (-intel%) (-mach64%) (-mga%) (-neomagic%) (-newport%) (-nv%) (-nvidia%*) (-r128%) (-radeon%) (-radeonhd%) (-rendition%) (-s3%) (-s3virge%) (-savage%) (-siliconmotion%) (-sis%) (-sisusb%) (-sunbw2%) (-suncg14%) (-suncg3%) (-suncg6%) (-sunffb%) (-sunleo%) (-suntcx%) (-tdfx%) (-tga%) (-trident%) (-tseng%) (-v4l%) (-vermilion%) (-vesa%) (-via%) (-virtualbox%) (-vmware%) (-voodoo%) (-xgi%)" 0 kB [0=>1]

Total: 1 package (1 upgrade), Size of downloads: 0 kB
Portage tree and overlays:
 [0] /keeps/gentoo/portage
 [1] /keeps/gentoo/local
Comment 4 Doug Goldstein (RETIRED) gentoo-dev 2009-07-05 04:26:37 UTC
I really don't like this for multiple reasons. The versions don't convey anything productive to the user. I've added the automatic ewarn message for users. Also there's no nice way to handle newer version. Technically I'm going to be pulling the 180 series from the tree soon-ish and replacing it with 185 versions. After that I'll be replacing those with 190 versions. There will also be another series of drivers coming out shortly for newer series of cards which will drop GeForce 6 cards and potentially GeForce 7 series. This means that there will be 5. The amount of additional work this will add is hardly worth the benefit.

A while back I made each driver ebuild state exactly what versions of the xorg-server they support. This has been working great, except for the minor setback that the X11 herd keeps blowing away the changes and reverting back to nvidia-driver depends in xorg-server from about 2 years ago. This was because the fix to depends was made by a X11 herd developer but never in their overlay. They merely copy their overlay ebuild to the tree so the nvidia-driver changes kept getting lost. Recently I worked with the X11 herd guys to make sure it won't happen again.

However, going forward, we've got the xorg-server guys making the xorg-server capable of reporting the ABI version and the nvidia-driver then matching it. This will just merely allow us to depend nicely.

As far as people knowing what version they should depend on..

VIDEO_CARDS=nvidia-71 is meaningless for most users, they haven't a clue what that means. However, when they emerge any version of the driver, it will use information based on the current card they've got in their machine giving them explicit instructions on how to install a driver that works for their system.
Comment 5 Rémi Cardona (RETIRED) gentoo-dev 2009-08-20 11:40:24 UTC
In fact, we're pretty much thinking of removing drivers PDEPEND from xorg-server.

The current idea is to go with a "xorg-drivers" meta ebuild xorg-server would PDEPEND on.

As nVidia employees are probably the only folks who understand their version numbering philosophy, having that show up in VIDEO_CARDS would probably confuse users even more.

IMHO, a nice einfo in all nvidia ebuilds pointing to the nvforums page where the alpha/beta/stable versions are explained is more than enough, and reduces the risk of us misunderstanding what upstream thinks.

Closing since we pretty much all agree.