git: b44acc9409bd - main - graphics/mesa-libs: enable libglvnd support

Kevin Bowling kevin.bowling at kev009.com
Fri Jun 18 22:46:17 UTC 2021


On Fri, Jun 18, 2021 at 1:25 PM Baptiste Daroussin <bapt at freebsd.org> wrote:
>
>
> 17 juin 2021 06:26:08 Kevin Bowling <kbowling at FreeBSD.org>:
>
> > The branch main has been updated by kbowling:
> >
> > URL: https://cgit.FreeBSD.org/ports/commit/?id=b44acc9409bd3bdd92e86e35c06d50e2134b02f2
> >
> > commit b44acc9409bd3bdd92e86e35c06d50e2134b02f2
> > Author:     Jan Beich <jbeich at FreeBSD.org>
> > AuthorDate: 2021-06-16 15:48:02 +0000
> > Commit:     Kevin Bowling <kbowling at FreeBSD.org>
> > CommitDate: 2021-06-17 04:25:27 +0000
> >
> >     graphics/mesa-libs: enable libglvnd support
> >
> >     PR:             246767
> >     Reviewed by:    kbowling
> >     Tested by:      kbowling
> >     Differential Revision:  https://reviews.freebsd.org/D25020
>
>
> As I privately told Kevin, I am now replying here as it can be useful for other committers.
>
> This commit causes a situation I would call an impossible upgrades. If you have an ancient version of mesa-libs installed you cannot uograde to the new version of mesa-libs you need to first remove mesa-libs then install libglvnd then install mesa-libs. Pkg knows how to deal with such situation up to a limit.
>
> So first it is complicated because during that manipulation the system is in an instable situation: lack of mesa-libs while things still depends on it.
>
> Second if anything installed depends on mesa-libs but does not itself has to be reinstall from the repo it will block the removal (sat solver blablabla message)
>
> To help it when you do such modification please bump portrevision of all reverse dependencies! It should have be done anyway but most committers often miss doing it.
>
> Best regards,
> Bapt

I'm fine prepping a review of this, I just want to be clear, increment
PORTREVISION on around 800 ports that depended on mesa-libs?

I've only seen the one report of SAT failures with xephyr so far.  The
SAT solver worked fine on my kde5 desktops.  But I'd like to
facilitate a smooth transition for everyone so happy to do whatever is
needed.

Regards,
Kevin

> > ---
> > Mk/Uses/gl.mk                      | 10 ++---
> > Mk/bsd.default-versions.mk         |  4 +-
> > graphics/glad/Makefile             |  2 +-
> > graphics/libglvnd/Makefile         |  4 +-
> > graphics/mesa-devel/Makefile       |  1 +
> > graphics/mesa-libs/Makefile        |  9 ++++-
> > graphics/mesa-libs/pkg-plist       | 76 +++++++++++++++++++-------------------
> > misc/raspberrypi-userland/Makefile |  2 +-
> > x11/nvidia-driver/Makefile         | 30 +++++++++------
> > x11/nvidia-driver/pkg-plist        |  6 +--
> > 10 files changed, 81 insertions(+), 63 deletions(-)
> >
> > diff --git a/Mk/Uses/gl.mk b/Mk/Uses/gl.mk
> > index eb8850774b29..7d71d9724d92 100644
> > --- a/Mk/Uses/gl.mk
> > +++ b/Mk/Uses/gl.mk
> > @@ -13,12 +13,12 @@
> > .if !defined(_INCLUDE_USES_GL_MK)
> > _INCLUDE_USES_GL_MK=yes
> >
> > -_GL_egl_LIB_DEPENDS=   libEGL.so:graphics/mesa-libs
> > -_GL_gbm_LIB_DEPENDS=   libgbm.so:graphics/mesa-libs
> > -_GL_gl_LIB_DEPENDS=    libGL.so:graphics/mesa-libs
> > +_GL_egl_LIB_DEPENDS=   libEGL.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> > +_GL_gbm_LIB_DEPENDS=   libgbm.so:graphics/${GL_DEFAULT:S/,/ /g:[-1]}
> > +_GL_gl_LIB_DEPENDS=    libGL.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> > _GL_gl_USE_XORG=   xorgproto
> > -_GL_glesv1_LIB_DEPENDS=    libGLESv1_CM.so:graphics/mesa-libs
> > -_GL_glesv2_LIB_DEPENDS=    libGLESv2.so:graphics/mesa-libs
> > +_GL_glesv1_LIB_DEPENDS=    libGLESv1_CM.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> > +_GL_glesv2_LIB_DEPENDS=    libGLESv2.so:graphics/${GL_DEFAULT:S/,/ /g:[1]}
> > _GL_glew_LIB_DEPENDS=    libGLEW.so:graphics/glew
> > _GL_glu_LIB_DEPENDS=   libGLU.so:graphics/libGLU
> > _GL_glu_USE_XORG=    xorgproto
> > diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
> > index f923ca84ff36..a3b836ea2fee 100644
> > --- a/Mk/bsd.default-versions.mk
> > +++ b/Mk/bsd.default-versions.mk
> > @@ -17,7 +17,7 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes
> >
> > LOCALBASE?=  /usr/local
> >
> > -.for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT \
> > +.for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT GL \
> >   IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL NINJA PERL5 \
> >   PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH
> > .if defined(${lang}_DEFAULT)
> > @@ -51,6 +51,8 @@ GCC_DEFAULT?=   8
> > .else
> > GCC_DEFAULT?=    10
> > .endif
> > +# Possible values (tuple): libglvnd, mesa-libs, mesa-devel
> > +GL_DEFAULT?=   libglvnd,mesa-libs
> > # Possible values: 7, 8, 9, agpl
> > GHOSTSCRIPT_DEFAULT?=  agpl
> > # Possible values: 6, 6-nox11, 7, 7-nox11
> > diff --git a/graphics/glad/Makefile b/graphics/glad/Makefile
> > index df7f0cb77d73..e1508f82da6e 100644
> > --- a/graphics/glad/Makefile
> > +++ b/graphics/glad/Makefile
> > @@ -16,6 +16,6 @@ USE_LDCONFIG= yes
> >
> > CMAKE_ON=  GLAD_INSTALL BUILD_SHARED_LIBS GLAD_REPRODUCIBLE
> >
> > -CONFLICTS_INSTALL= mesa-libs # include/KHR/khrplatform.h, see https://github.com/Dav1dde/glad/issues/260
> > +CONFLICTS_INSTALL= libglvnd # include/KHR/khrplatform.h, see https://github.com/Dav1dde/glad/issues/260
> >
> > .include <bsd.port.mk>
> > diff --git a/graphics/libglvnd/Makefile b/graphics/libglvnd/Makefile
> > index f0f2e55f8c1d..c8babe24ac12 100644
> > --- a/graphics/libglvnd/Makefile
> > +++ b/graphics/libglvnd/Makefile
> > @@ -2,14 +2,12 @@ PORTNAME= libglvnd
> > DISTVERSION= 1.3.2
> > CATEGORIES=  graphics
> >
> > -MAINTAINER=  greg at unrelenting.technology
> > +MAINTAINER=  x11 at FreeBSD.org
> > COMMENT= GL Vendor-Neutral Dispatch library
> >
> > LICENSE= APACHE20 MIT
> > LICENSE_COMB=  multi
> >
> > -CONFLICTS_INSTALL= mesa-libs # include/GL/gl.h
> > -
> > USES=    localbase meson pkgconfig
> > USE_LDCONFIG=  yes
> >
> > diff --git a/graphics/mesa-devel/Makefile b/graphics/mesa-devel/Makefile
> > index 55792878a42d..07eec60ddd30 100644
> > --- a/graphics/mesa-devel/Makefile
> > +++ b/graphics/mesa-devel/Makefile
> > @@ -1,6 +1,7 @@
> > PORTNAME=  mesa
> > DISTVERSION= 21.1-branchpoint-3077
> > DISTVERSIONSUFFIX= -geb272f65715
> > +PORTREVISION=  1
> > CATEGORIES=  graphics
> > PKGNAMESUFFIX= -devel
> >
> > diff --git a/graphics/mesa-libs/Makefile b/graphics/mesa-libs/Makefile
> > index 02155a2ace99..5ebe41c1078e 100644
> > --- a/graphics/mesa-libs/Makefile
> > +++ b/graphics/mesa-libs/Makefile
> > @@ -2,11 +2,12 @@
> >
> > PORTNAME=  mesa-libs
> > PORTVERSION= ${MESAVERSION}
> > +PORTREVISION=  1
> > CATEGORIES=  graphics
> >
> > COMMENT= OpenGL libraries that support GLX and EGL clients
> >
> > -CONFLICTS_INSTALL= libglvnd # include/GL/gl.h
> > +BUILD_DEPENDS= libglvnd>0:graphics/libglvnd
> >
> > OPTIONS_GROUP=     PLATFORM
> > OPTIONS_GROUP_PLATFORM=    PLATFORM_X11 PLATFORM_WAYLAND
> > @@ -43,6 +44,7 @@ MESON_ARGS+=  -Dgallium-drivers="" \
> >     -Degl=enabled \
> >     -Dgbm=enabled \
> >     -Dvulkan-drivers="" \
> > +   -Dglvnd=true \
> >     -Dprefer-iris=true
> > # Building EGL and GBM requires a dri driver so add swrast
> > MESON_ARGS+= -Ddri-drivers="swrast"
> > @@ -72,4 +74,9 @@ USE_GCC=  yes
> >
> > .include "${MASTERDIR}/Makefile.targets"
> >
> > +post-install:
> > +# Fallback if GLX_EXT_libglvnd is missing or vendor library doesn't exist
> > + @${ECHO_CMD} "libGLX_indirect.so.0 libGLX_mesa.so.0" \
> > +   >${STAGEDIR}${PREFIX}/etc/libmap.d/mesa.conf
> > +
> > .include <bsd.port.post.mk>
> > diff --git a/graphics/mesa-libs/pkg-plist b/graphics/mesa-libs/pkg-plist
> > index 04dcaa4f87a5..4f4924cfd8b1 100644
> > --- a/graphics/mesa-libs/pkg-plist
> > +++ b/graphics/mesa-libs/pkg-plist
> > @@ -1,41 +1,42 @@
> > -include/EGL/egl.h
> > -include/EGL/eglext.h
> > +etc/libmap.d/mesa.conf
> > + at comment include/EGL/egl.h
> > + at comment include/EGL/eglext.h
> > include/EGL/eglextchromium.h
> > include/EGL/eglmesaext.h
> > -include/EGL/eglplatform.h
> > -include/GL/gl.h
> > -include/GL/glcorearb.h
> > -include/GL/glext.h
> > -%%GLX%%include/GL/glx.h
> > -%%GLX%%include/GL/glxext.h
> > + at comment include/EGL/eglplatform.h
> > + at comment include/GL/gl.h
> > + at comment include/GL/glcorearb.h
> > + at comment include/GL/glext.h
> > +%%GLX%%@comment include/GL/glx.h
> > +%%GLX%%@comment include/GL/glxext.h
> > @comment include/GL/internal/dri_interface.h
> > -include/GLES/egl.h
> > -include/GLES/gl.h
> > -include/GLES/glext.h
> > -include/GLES/glplatform.h
> > -include/GLES2/gl2.h
> > -include/GLES2/gl2ext.h
> > -include/GLES2/gl2platform.h
> > -include/GLES3/gl3.h
> > -include/GLES3/gl31.h
> > -include/GLES3/gl32.h
> > -include/GLES3/gl3ext.h
> > -include/GLES3/gl3platform.h
> > -include/KHR/khrplatform.h
> > + at comment include/GLES/egl.h
> > + at comment include/GLES/gl.h
> > + at comment include/GLES/glext.h
> > + at comment include/GLES/glplatform.h
> > + at comment include/GLES2/gl2.h
> > + at comment include/GLES2/gl2ext.h
> > + at comment include/GLES2/gl2platform.h
> > + at comment include/GLES3/gl3.h
> > + at comment include/GLES3/gl31.h
> > + at comment include/GLES3/gl32.h
> > + at comment include/GLES3/gl3ext.h
> > + at comment include/GLES3/gl3platform.h
> > + at comment include/KHR/khrplatform.h
> > include/gbm.h
> > @comment lib/dri/swrast_dri.so
> > -lib/libEGL.so
> > -lib/libEGL.so.1
> > -lib/libEGL.so.1.0.0
> > -%%GLX%%lib/libGL.so
> > -%%GLX%%lib/libGL.so.1
> > -%%GLX%%lib/libGL.so.1.2.0
> > -lib/libGLESv1_CM.so
> > -lib/libGLESv1_CM.so.1
> > -lib/libGLESv1_CM.so.1.1.0
> > -lib/libGLESv2.so
> > -lib/libGLESv2.so.2
> > -lib/libGLESv2.so.2.0.0
> > +lib/libEGL_mesa.so
> > +lib/libEGL_mesa.so.0
> > +lib/libEGL_mesa.so.0.0.0
> > + at comment lib/libGLESv1_CM.so
> > + at comment lib/libGLESv1_CM.so.1
> > + at comment lib/libGLESv1_CM.so.1.1.0
> > + at comment lib/libGLESv2.so
> > + at comment lib/libGLESv2.so.2
> > + at comment lib/libGLESv2.so.2.0.0
> > +%%GLX%%lib/libGLX_mesa.so
> > +%%GLX%%lib/libGLX_mesa.so.0
> > +%%GLX%%lib/libGLX_mesa.so.0.0.0
> > lib/libgbm.so
> > lib/libgbm.so.1
> > lib/libgbm.so.1.0.0
> > @@ -43,9 +44,10 @@ lib/libglapi.so
> > lib/libglapi.so.0
> > lib/libglapi.so.0.0.0
> > @comment libdata/pkgconfig/dri.pc
> > -libdata/pkgconfig/egl.pc
> > + at comment libdata/pkgconfig/egl.pc
> > libdata/pkgconfig/gbm.pc
> > -%%GLX%%libdata/pkgconfig/gl.pc
> > -libdata/pkgconfig/glesv1_cm.pc
> > -libdata/pkgconfig/glesv2.pc
> > +%%GLX%%@comment libdata/pkgconfig/gl.pc
> > + at comment libdata/pkgconfig/glesv1_cm.pc
> > + at comment libdata/pkgconfig/glesv2.pc
> > @comment share/drirc.d/00-mesa-defaults.conf
> > +share/glvnd/egl_vendor.d/50_mesa.json
> > diff --git a/misc/raspberrypi-userland/Makefile b/misc/raspberrypi-userland/Makefile
> > index 5dfa743da18c..42fad99b9736 100644
> > --- a/misc/raspberrypi-userland/Makefile
> > +++ b/misc/raspberrypi-userland/Makefile
> > @@ -11,7 +11,7 @@ LICENSE=  BSD3CLAUSE
> >
> > ONLY_FOR_ARCHS=  armv6 armv7
> >
> > -CONFLICTS_INSTALL= mesa-libs
> > +CONFLICTS_INSTALL= libglvnd
> >
> > USES=    cmake pkgconfig shebangfix
> >
> > diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile
> > index daa727149404..23efd76bbbda 100644
> > --- a/x11/nvidia-driver/Makefile
> > +++ b/x11/nvidia-driver/Makefile
> > @@ -16,7 +16,7 @@
> > PORTNAME?= nvidia-driver
> > DISTVERSION?=  460.80
> > # Always try to set PORTREVISION as it can be overridden by the slave ports
> > -PORTREVISION?= 0
> > +PORTREVISION?= 1
> > CATEGORIES=  x11
> > MASTER_SITES=  NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION}
> > DISTNAME=  NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION}
> > @@ -32,6 +32,7 @@ LICENSE_FILE= ${WRKSRC}/doc/license.txt
> > # obj/libEGL_nvidia.so.0 (see below)
> > .if ${NVVERSION} >= 410.057
> > PATCH_DEPENDS= gsed:textproc/gsed
> > +BUILD_DEPENDS= pkg-config:devel/pkgconf libglvnd>0:graphics/libglvnd
> > .endif
> >
> > USES=    kmod uidfix xorg
> > @@ -281,6 +282,7 @@ post-install: .SILENT
> > .elif ${NVVERSION} < 465.01901
> >   ${REINPLACE_CMD} -e '/lib32\/libnvidia-glvkspirv\.so/d' ${TMPPLIST}
> > .endif
> > +.if ${NVVERSION} < 410.057
> > # Rename some libraries and install a libmap file to resolve conflict with
> > # Mesa libraries.
> >   ${LN} -sf libGL-NVIDIA.so.1 \
> > @@ -288,7 +290,7 @@ post-install: .SILENT
> >   ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so.1 \
> >     ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1
> >   ${RM} ${STAGEDIR}${PREFIX}/lib/libGL.so
> > -.if ${NVVERSION} >= 331.013
> > +.  if ${NVVERSION} >= 331.013
> >   ${LN} -sf libEGL-NVIDIA.so.1 \
> >     ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so
> >   ${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so.1 \
> > @@ -301,14 +303,14 @@ post-install: .SILENT
> >   ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so.2 \
> >     ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2
> >   ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so
> > -.endif
> > -# Configuration of Nvidia as secondary GPU requires preserving Mesa libraries
> > -# as default implementation; a libmap must not override in this case.
> > -.if !defined(LIBGLDIR)
> > +.  endif
> > +# Configuration of Nvidia as secondary GPU requires preserving libglvnd or mesa
> > +# libraries as default implementation; a libmap must not override in this case.
> > +.  if !defined(LIBGLDIR)
> >   @${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/
> >   ${INSTALL_DATA} ${WRKDIR}/nvidia.conf \
> >     ${STAGEDIR}${PREFIX}/etc/libmap.d/
> > -.else
> > +.  else
> > # libgl proxies require a library path containing unrenamed lib*GL*.so
> >   ${MKDIR} ${STAGEDIR}${PREFIX}/${LIBGLDIR}
> >   ${RLN} ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 \
> > @@ -317,17 +319,23 @@ post-install: .SILENT
> >     ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libEGL.so.1
> >   ${RLN} ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 \
> >     ${STAGEDIR}${PREFIX}/${LIBGLDIR}/libGLESv2.so.2
> > -.endif
> > +.  endif
> > # Configuration of Nvidia as secondary GPU requires preserving xorg-server's
> > # libglx.so and moving Nvidia's glx to where it can be found by a secondary
> > # Xorg instance.
> > # Not needed since 410.057: Nvidia driver finds libglxserver_nvidia.so instead.
> > -.if ${NVVERSION} < 410.057
> > -.if ${EXTENSIONSDIR} != ${MODULESDIR}/extensions/.nvidia
> > +.  if ${EXTENSIONSDIR} != ${MODULESDIR}/extensions/.nvidia
> >   ${MKDIR} ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR}
> >   ${MV} ${STAGEDIR}${PREFIX}/${MODULESDIR}/extensions/.nvidia/* \
> >     ${STAGEDIR}${PREFIX}/${EXTENSIONSDIR}/
> > -.endif
> > +.  endif
> > +.else
> > + ${REINPLACE_CMD} -E '/-NVIDIA/d ; \
> > +   /lib(Open)?E?GLX?(ESv[12](_CM)?|dispatch)?\.so/d' \
> > +   ${TMPPLIST}
> > +# Override mesa.conf if GLX_EXT_libglvnd is missing
> > + @${ECHO_CMD} "libGLX_indirect.so.0 libGLX_nvidia.so.0" \
> > +   >${STAGEDIR}${PREFIX}/etc/libmap.d/nvidia.conf
> > .endif
> >
> > .include <bsd.port.post.mk>
> > diff --git a/x11/nvidia-driver/pkg-plist b/x11/nvidia-driver/pkg-plist
> > index 85156cdb6eff..caa1dc84ae52 100644
> > --- a/x11/nvidia-driver/pkg-plist
> > +++ b/x11/nvidia-driver/pkg-plist
> > @@ -17,9 +17,9 @@ lib/libGLESv2-NVIDIA.so
> > lib/libGLESv2-NVIDIA.so.2
> > lib/libGLESv2_nvidia.so
> > lib/libGLESv2_nvidia.so.2
> > -lib/libGLX.so
> > -lib/libGLX.so.0
> > -lib/libGLX_indirect.so.0
> > +%%LIBGLDIR%%/libGLX.so
> > +%%LIBGLDIR%%/libGLX.so.0
> > + at comment lib/libGLX_indirect.so.0
> > lib/libGLX_nvidia.so
> > lib/libGLX_nvidia.so.0
> > lib/libGLdispatch.so


More information about the dev-commits-ports-main mailing list