Created attachment 355832 [details] sys-firmware/nouveau-firmware ebuild This is an ebuild for extracting firmware from the nvidia-drivers blob and making it available at the paths expected by the linux kernel and mesa. More details available at http://nouveau.freedesktop.org/wiki/VideoAcceleration/ . Basically all newer (geforce 8+) series require firmware to operate the video decoding hw. There's varying quantities of software support for it in various kernels/mesa versions. But the *very* bleeding edge can run all the (useful) revisions of the video decoding hw to at least some extent, and that's making its way slowly into released versions.
Ah, you mailed me about that. Sorry I didn't respond quicker. I guess it should be called "nvidia-firmware" since it relates closely to nvidia-drivers and not at all to the open source nouveau drivers...
latest extract_firmware.py support 325.08 nvidia-drivers so there is fxd version https://github.com/init6/init_6/blob/master/x11-drivers/nouveau-firmware/nouveau-firmware-0.0.1.ebuild
Andrey: The firmware is arch-independent, and the x86 files are the smallest ones. Also the exact version of the nvidia blob doesn't really matter -- the extracted fw should be identical for all supported versions. (I had to hard-code the lengths of the fws in the extractor.) Ideally there'd be a way of saying "use one of these files if already downloaded, otherwise grab the first one", but there isn't.
Ilia: "The firmware is arch-independent" sure. I'm on x86_64. Why do I need to download x86? Especially since in view of that many are moving from nvidia to nouveau. And usually nvidia drivers at them already downloaded.
So by that logic, every time that nvidia releases new firmware, this package should also be updated, in order to match the version that the user has most likely downloaded. I don't think that's desired or sustainable. Given that portage can't support || in SRC_URI, I still think that just picking a known-good version is the simplest way forward.
Hello Licenses team The attached ebuild by Ilia extracts the firmware from the binaries provided in the SOFTWARE by NVIDIA Corporation (the same SOFTWARE the nvidia-drivers package fetches); is this legally conform to the LICENSE /usr/portage/licenses/NVIDIA-r1? Relevant sections are 2.1.2 and 2.1.3; in 2.1.2 it is mentioned that it "may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files)" which depends on how redistributed is to be interpreted (we don't copy or redistribute hosting wise, but what about what we do on the client?), whereas in 2.1.3 there is stated that one may not disassemble the SOFTWARE or separate it (does attachment do this?). Can you review this and let us know if this package is fit for the Portage tree licensing wise? Thank you very much in advance.
(In reply to Tom Wijsman (TomWij) from comment #6) > The attached ebuild by Ilia extracts the firmware from the binaries provided > in the SOFTWARE by NVIDIA Corporation (the same SOFTWARE the nvidia-drivers > package fetches); is this legally conform to the LICENSE > /usr/portage/licenses/NVIDIA-r1? > > Relevant sections are 2.1.2 and 2.1.3; in 2.1.2 it is mentioned that it "may > be copied and redistributed, provided that the binary files thereof are not > modified in any way (except for unzipping of compressed files)" which > depends on how redistributed is to be interpreted (we don't copy or > redistribute hosting wise, but what about what we do on the client?), > whereas in 2.1.3 there is stated that one may not disassemble the SOFTWARE > or separate it (does attachment do this?). For Gentoo this should be fine, because we don't distribute any separate components of Nvidia's driver. However, the situation on the user's site is less clear. Section 2.1.3 would apply there, which forbids separation of components. The question is if such a clause is enforcable: The user who has acquired a video card from Nvidia certainly has the right to use it, which is not possible without their firmware. As always: IANAL, TINLA.
Adding a -bindist constraint is enough to get it in portage.
Created attachment 369552 [details] sys-firmware/nvidia-firmware ebuild Updated to new version of script (and fresher firmware) so that it can also extract pgraph fw, which is generally not needed, but sometimes the nouveau fw doesn't work right.
http://us.download.nvidia.com/XFree86/Linux-x86_64/334.21/NVIDIA-Linux-x86_64-334.21.run
Meant to say works for me (NVE7). Wondering if firmware has changed with release I posted link to above. Sorry for extra post.
Created attachment 374278 [details] nvidia-firmware/nvidia-firmware-325.15.ebuild
I edited the ebuild to make it more appetizingly to the gentoo developers Changes: add header changed filename of python script to a more specific one to avoid a possible file name clash in $DISTDIR change hardcoded firmware source filename to a variable reduce usage of ${S} Note that it is not possible to use *any* version of the nvidia driver, the extraction script as an internal list of known-good versions. As of today 325.15 is the most recent one.
(In reply to Martin Dummer from comment #13) > I edited the ebuild to make it more appetizingly to the gentoo developers > > Changes: > add header > changed filename of python script to a more specific one to avoid a > possible file name clash in $DISTDIR > change hardcoded firmware source filename to a variable Ooh, nice, didn't know you could do that. Perhaps the script name should be changed to be versioned too, since the contents may change at some point (I might make an effort and do like 334.x, as that has Maxwell firmware). I did run into annoying issues where I had to manually clear it out from /usr/portage/distfiles when I wanted to update it, but perhaps only because I was actually making the ebuild. > Note that it is not possible to use *any* version of the nvidia driver, the > extraction script as an internal list of known-good versions. > As of today 325.15 is the most recent one. That's right -- more recent drivers have updated some of the firmware enough that the script doesn't latch onto it (and besides, the lengths are all hardcoded and need to be updated), and have added more pgraph archives that we need to figure out what they're for.
(In reply to Martin Dummer from comment #13) > I edited the ebuild to make it more appetizingly to the gentoo developers > > Changes: > add header > changed filename of python script to a more specific one to avoid a > possible file name clash in $DISTDIR > change hardcoded firmware source filename to a variable > reduce usage of ${S} > > > Note that it is not possible to use *any* version of the nvidia driver, the > extraction script as an internal list of known-good versions. > As of today 325.15 is the most recent one. When is support going to be added for more recent versions?
(In reply to Matthew Schultz from comment #15) > (In reply to Martin Dummer from comment #13) > > Note that it is not possible to use *any* version of the nvidia driver, the > > extraction script as an internal list of known-good versions. > > As of today 325.15 is the most recent one. > > When is support going to be added for more recent versions? Eventually... but it doesn't really matter for the ebuild. It's unlikely that it will support exactly the version that you have installed, so it'll still try to download one. There's no way to do a conditional in SRC_URI.
> (In reply to Martin Dummer from comment #13) There's no way to do a conditional in SRC_URI. So the ebuild version would mirror the nvidia driver version it supports then?
sys-firmware/nvidia-firmware-325.15 has just been added. Thanks guys!