Solved Poudriere and legacy Nvidia ports

I've been using ports-mgmt/poudriere to manage my desktop with good results for a while now.

The recent upgrade of the x11/nvidia-driver seems to have dropped support for my graphics card however.

I would like ports-mgmt/poudriere to manage building the older driver that will work, x11/nvidia-driver-340. However even if this legacy driver is specified in my pkglist file, other ports with dependencies to the newer Nvidia driver are still pulled in.

I have just tried removing all previous built packages and starting fresh with poudriere, poudriere bulk -c -f /usr/local/etc/poudriere.d/10_1x64.pkglist -j 10_1x64 however this did not work and both the newer and older versions of the Nvidia driver were built.

Is there any way to specify the legacy Nvidia port so that poudriere doesn't use the newer Nvidia driver for other port dependencies?
 
Sorry for replying to my own post, but I wanted to update with some new information.

Basically to summarize, if I have the x11/nvidia-driver-340 specified in my poudriere pkglist file, the newer Nvidia port (which I don't want) is being pulled in, x11-nvidia-driver.

I have tracked down where this is being pulled in from (which I should have done in the first place). The newer Nvidia port is being pulled in because I set the following option
Code:
[x] NVIDIA_GL  Use GL driver from nvidia-driver
in the emulators/linux-c6 port.

The emulators/linux-c6 has the following code in its Makefile:

Code:
OPTIONS_DEFINE= NVIDIA_GL
NVIDIA_GL_DESC= Use GL driver from nvidia-driver

NVIDIA_GL_RUN_DEPENDS=  ${LINUXBASE}/usr/lib/libGL.so.1:${PORTSDIR}/x11/nvidia-driver \
                        linux-c6-libGLU>0:${PORTSDIR}/graphics/linux-c6-libGLU
NVIDIA_GL_RUN_DEPENDS_OFF=      linux-c6-dri>0:${PORTSDIR}/graphics/linux-c6-dri

Is it possible to have the emulators/linux-c6 use a "generic" Nvidia driver? If I specify to use a legacy Nvidia driver, this port will not recognize this? Is this something that should be reported?
 
Hi @blahblah_1981.8942,

As you build your packages yourself you can remedy this.
The 'nvidia-driver' is hardcoded in this 3 ports:

emulators/linux-c6
graphics/linux-c6-glx-utils
x11-toolkits/linux-c6-qt47-x11

You need to set 'nvidia' option ( make config) for this 3 ports, not to conflict with linux-dri port.

Change the NVIDIA_GL_RUN_DEPENDS line for emulators/linux-c6:
Code:
NVIDIA_GL_RUN_DEPENDS=  linux-c6-libGLU>0:${PORTSDIR}/graphics/linux-c6-libGLU
Comment out the line or delete it for the other 2 Ports: i.e:
Code:
#NVIDIA_GL_RUN_DEPENDS= ${LINUXBASE}/usr/lib/libGL.so.1:${PORTSDIR}/x11/nvidia-driver
Rebuild it, and your resulting packages do not 'pull-in' any nvidia-driver, you have to install it (the correct one) manually.
 
Thanks, auge.

Yes, I was afraid this is what I would need to do, but I had just wanted to see if it was possible to set a usage flag or something for legacy Nvidia ports.

For completeness, in the end what I did was to modify the following Makefiles:

Code:
vi /usr/ports/emulators/linux-c6/Makefile
vi /usr/ports/graphics/linux-c6-glx-utils/Makefile
vi /usr/ports/x11-toolkits/linux-c6-qt47-x11/Makefile

In those Makefiles I basically changed the lines from:
Code:
NVIDIA_GL_RUN_DEPENDS=  ${LINUXBASE}/usr/lib/libGL.so.1:${PORTSDIR}/x11/nvidia-driver

to:
Code:
NVIDIA_GL_RUN_DEPENDS=  ${LINUXBASE}/usr/lib/libGL.so.1:${PORTSDIR}/x11/nvidia-driver-340

Doing this allowed me to build those ports against the legacy Nvidia drivers without pulling in the current driver.

While this is another thing that I'll need to keep track of, I might simply write a Puppet module to keep a lookout on these ports.
 
Back
Top