Re: x11/nvidia-driver update from 460.80 to 460.80_1: libglvnd

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Thu, 17 Jun 2021 11:53:26 UTC
David Wolfskill <david@catwhisker.org> writes:

> On my laptops, I have been using x11/nvidia-driver (quite successfully)
> for several years.
>
> As I update FreeBSD base and installed ports daily on those machines, I
> have
>
> PORTS_MODULES+=x11/nvidia-driver
>
> in /etc/src.conf, so the kernel modules get rebuilt when the kernel
> does; that has all worked quite well.
>
> This morning, things didn't go according to plan:
>
> ...
> ===>  Cleaning for nvidia-driver-460.80_1
> ===>  License NVIDIA accepted by the user
> ===>   nvidia-driver-460.80_1 depends on file: /usr/local/sbin/pkg - found
> ===> Fetching all distfiles required by nvidia-driver-460.80_1 for building
> ===>  Extracting for nvidia-driver-460.80_1
> => SHA256 Checksum OK for NVIDIA-FreeBSD-x86_64-460.80.tar.gz.
> ===>  Patching for nvidia-driver-460.80_1
> ===>   nvidia-driver-460.80_1 depends on executable: gsed - found
> ===>  Applying extra patch /common/ports/x11/nvidia-driver/files/460-patch-lib-libGLX_nvidia-Makefile
> ===>  Applying extra patch /common/ports/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_ctl.c
> ===>  Applying extra patch /common/ports/x11/nvidia-driver/files/460-patch-src-nvidia-nvidia_linux.c
> ===>  Applying extra patch /common/ports/x11/nvidia-driver/files/460-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c
> ===>  Applying extra patch /common/S1/obj/usr/src/amd64.amd64/sys/CANARY/common/ports/x11/nvidia-driver/work/extra-patch-src-Makefile
> ===>  Applying extra patch /common/S1/obj/usr/src/amd64.amd64/sys/CANARY/common/ports/x11/nvidia-driver/work/extra-patch-src-nv-freebsd.h
> ===>  Applying extra patch /common/S1/obj/usr/src/amd64.amd64/sys/CANARY/common/ports/x11/nvidia-driver/work/extra-patch-src-nv-misc.h
> ===>  Applying extra patch /common/S1/obj/usr/src/amd64.amd64/sys/CANARY/common/ports/x11/nvidia-driver/work/extra-patch-src-nvidia_dev.c
> ===>  Applying extra patch /common/S1/obj/usr/src/amd64.amd64/sys/CANARY/common/ports/x11/nvidia-driver/work/extra-patch-src-nvidia_pci.c
> No such line 404 in input file, ignoring
> ===>  Applying FreeBSD patches for nvidia-driver-460.80_1 from /common/ports/x11/nvidia-driver/files
> ===>   nvidia-driver-460.80_1 depends on executable: pkg-config - found
> ===>   nvidia-driver-460.80_1 depends on package: libglvnd>0 - not found
> *** [all] Stopped -- signal 22
>
> Sure enough:
>
> g1-55(12.2-S)[9] pkg info -o libglvnd\*
> pkg: No package(s) matching libglvnd*
>
> So I tried building/installing it ... only to find:
>
> ===>  Installing for libglvnd-1.3.2
> ===>   Registering installation for libglvnd-1.3.2
> Installing libglvnd-1.3.2...
> pkg-static: libglvnd-1.3.2 conflicts with mesa-libs-20.2.3 (installs files into the same place).  Problematic file: /usr/local/include/EGL/egl.h
> *** Error code 1
>
> So... let's see what uses mesa-libs-20.2.3, eh?
>
> g1-55(12.2-S)[7] pkg info -r mesa-libs\*
> mesa-libs-20.2.3:
>         firefox-89.0.1,2
>         iqpuzzle-1.2.5
>         libepoxy-1.5.8
>         xlockmore-5.66
>         cairo-1.17.4,3
>         chromium-90.0.4430.212_1
>         jasper-2.0.32
>         sdl2-2.0.12_4
>         nvidia-settings-460.73.01
>         xorg-nestserver-1.20.11,2
>         xorg-server-1.20.11,1
>         qt5-gui-5.15.2_4
>         mplayer-1.4.0.20210314
>         mesa-dri-20.2.3_1
>         pinball-0.3.20201218
>         qt5-multimedia-5.15.2_1
>         qt5-opengl-5.15.2_1
>         qt5-declarative-5.15.2
>         freeglut-3.0.0_2
>         libGLU-9.0.1
>         ftgl-2.4.0,1
>         xf86-video-openchrome-0.6.0_4
>         xdriinfo-1.0.6_3
> g1-55(12.2-S)[8] 
>
> So... at this point, I am unclear on how to make both x11/nvidia-driver
> and things from the above list like ... Web browsers (for example) able
> to coexist on the same system.

Force-remove mesa-libs then rebuild all its direct dependencies.
libGL, libEGL, libGLESv2, etc. moved to libglvnd but libgbm, libglapi
remained in mesa-libs, so some of the ports (e.g., mesa-dri, xorg-server, sdl2)
would depend on *both* libglvnd and mesa-libs.

Can you test the following?

$ pkg delete -f mesa-libs
$ portmaster -a || portupgrade -a

Binary package users have to wait for the package cluster to catch up
but poudriere users can just "pkg upgrade" without doing anything special.