mesa: sort out PROVIDES for the glvnd case

If mesa is built with GLVND enabled, it doesn't provide GL / GL ES / EGL
libraries directly. Instead it provides two ICD libraries: libEGL_mesa.0
and libGLX_mesa.so.0. Remove virtual provides from the glvnd case
(dropping incorrect virtual/libglx provider while we are at it) and
replace those with runtime providers (to be used by libglvnd in order to
pull corresponding ICDs).

(From OE-Core rev: 9d3b4c9bc40392ba87f110ec5db0dedf381b8c4a)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dmitry Baryshkov 2025-05-22 20:13:32 +03:00 committed by Richard Purdie
parent 3ad50d41db
commit f39d11ea79
2 changed files with 11 additions and 4 deletions

View File

@ -7,8 +7,9 @@ PREFERRED_PROVIDER_virtual/xserver-xf86 ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libsdl2 ?= "libsdl2" PREFERRED_PROVIDER_virtual/libsdl2 ?= "libsdl2"
PREFERRED_PROVIDER_virtual/libsdl2-native ?= "libsdl2-native" PREFERRED_PROVIDER_virtual/libsdl2-native ?= "libsdl2-native"
PREFERRED_PROVIDER_virtual/egl ?= "mesa" PREFERRED_PROVIDER_virtual/egl ?= "mesa"
PREFERRED_PROVIDER_virtual/libegl-icd ?= "mesa"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa" PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libglx ?= "mesa" PREFERRED_PROVIDER_virtual/libglx-icd ?= "mesa"
PREFERRED_PROVIDER_virtual/libgl-native ?= "mesa-native" PREFERRED_PROVIDER_virtual/libgl-native ?= "mesa-native"
PREFERRED_PROVIDER_virtual/nativesdk-libgl ?= "nativesdk-mesa" PREFERRED_PROVIDER_virtual/nativesdk-libgl ?= "nativesdk-mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"

View File

@ -37,11 +37,13 @@ do_install:append() {
DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native" DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native"
EXTRANATIVEPATH += "chrpath-native" EXTRANATIVEPATH += "chrpath-native"
PROVIDES = " \ GLPROVIDES = " \
${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'glvnd', 'virtual/libglx', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
"
PROVIDES = " \
${@bb.utils.contains('PACKAGECONFIG', 'glvnd', '', d.getVar('GLPROVIDES'), d)} \
${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
virtual/mesa \ virtual/mesa \
" "
@ -274,7 +276,11 @@ python __anonymous() {
d.setVar("DEBIAN_NOAUTONAME:%slibopencl-mesa%s" % (mlprefix, suffix), "1") d.setVar("DEBIAN_NOAUTONAME:%slibopencl-mesa%s" % (mlprefix, suffix), "1")
if 'glvnd' not in pkgconfig: if 'glvnd' in pkgconfig:
for p in ("libegl", "libglx"):
fullp = mlprefix + p + "-mesa" + suffix
d.appendVar("RPROVIDES:" + fullp, '%s-icd' % p)
else:
for p in (("egl", "libegl", "libegl1"), for p in (("egl", "libegl", "libegl1"),
("opengl", "libgl", "libgl1"), ("opengl", "libgl", "libgl1"),
("gles", "libgles1", "libglesv1-cm1"), ("gles", "libgles1", "libglesv1-cm1"),