Patchwork [1/2] mesa: add -mesa suffix to GL packages, RPROVIDE their generic names

login
register
mail settings
Submitter Ross Burton
Date Nov. 19, 2012, 4:04 p.m.
Message ID <1353341095-11669-1-git-send-email-ross.burton@intel.com>
Download mbox | patch
Permalink /patch/39257/
State Accepted
Commit 64c77bf395310e55b4d8e0ec754fa19e9034ab35
Headers show

Comments

Ross Burton - Nov. 19, 2012, 4:04 p.m.
When Debian-renaming, all packages that provide GL libraries get renamed to the
same name, and it's entirley possible for a feed to have multiple GL libraries
in.  This obviously creates conflicts.

Resolve this for Mesa by forcing the package names to be of the form libgl-mesa,
and RPROVIDE libgl.

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 meta/recipes-graphics/mesa/mesa-common.inc   |   46 +++++++++++++++++++-------
 meta/recipes-graphics/mesa/mesa-dri_8.0.4.bb |    2 +-
 meta/recipes-graphics/mesa/mesa-dri_git.bb   |    2 +-
 3 files changed, 36 insertions(+), 14 deletions(-)

Patch

diff --git a/meta/recipes-graphics/mesa/mesa-common.inc b/meta/recipes-graphics/mesa/mesa-common.inc
index 460877c..8e71378 100644
--- a/meta/recipes-graphics/mesa/mesa-common.inc
+++ b/meta/recipes-graphics/mesa/mesa-common.inc
@@ -41,13 +41,13 @@  EXCLUDE_FROM_WORLD = "1"
 # Remove the mesa-dri dependency on mesa-dri-dev, as mesa-dri is empty
 RDEPENDS_${PN}-dev = ""
 
-PACKAGES =+ "libegl libegl-dev \
+PACKAGES =+ "libegl-mesa libegl-mesa-dev \
              libosmesa libosmesa-dev \
-             libgl libgl-dev \
+             libgl-mesa libgl-mesa-dev \
              libglapi libglapi-dev \
              libgbm libgbm-dev \
-             libgles1 libgles1-dev \
-             libgles2 libgles2-dev \
+             libgles1-mesa libgles1-mesa-dev \
+             libgles2-mesa libgles2-mesa-dev \
             "
 
 do_install_append () {
@@ -55,20 +55,42 @@  do_install_append () {
     rm -f ${D}${includedir}/GL/glu*
 }
 
-FILES_libegl = "${libdir}/libEGL.so.* ${libdir}/egl/*.so"
+# For the packages that make up the OpenGL interfaces, inject variables so that
+# they don't get Debian-renamed (which would remove the -mesa suffix), and
+# RPROVIDEs/RCONFLICTs on the generic libgl name.
+python __anonymous() {
+    for p in (("libegl", "libegl1"), ("libgl", "libgl1"),
+              ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2")):
+        fullp = p[0] + "-mesa"
+        pkgs = " ".join(p)
+        d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+        d.appendVar("RREPLACES_" + fullp, pkgs)
+        d.appendVar("RPROVIDES_" + fullp, pkgs)
+        d.appendVar("RCONFLICTS_" + fullp, pkgs)
+        
+        # For -dev, the first element is both the Debian and original name
+        fullp += "-dev"
+        pkgs = p[0]
+        d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+        d.appendVar("RREPLACES_" + fullp, pkgs)
+        d.appendVar("RPROVIDES_" + fullp, pkgs)
+        d.appendVar("RCONFLICTS_" + fullp, pkgs)
+}
+
+FILES_libegl-mesa = "${libdir}/libEGL.so.* ${libdir}/egl/*.so"
 FILES_libgbm = "${libdir}/libgbm.so.*"
-FILES_libgles1 = "${libdir}/libGLESv1*.so.*"
-FILES_libgles2 = "${libdir}/libGLESv2.so.*"
-FILES_libgl = "${libdir}/libGL.so.*"
+FILES_libgles1-mesa = "${libdir}/libGLESv1*.so.*"
+FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*"
+FILES_libgl-mesa = "${libdir}/libGL.so.*"
 FILES_libglapi = "${libdir}/libglapi.so.*"
 FILES_libosmesa = "${libdir}/libOSMesa.so.*"
 
-FILES_libegl-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
 FILES_libgbm-dev = "${libdir}/libgbm* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
-FILES_libgl-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
+FILES_libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
 FILES_libglapi-dev = "${libdir}/libglapi.*"
-FILES_libgles1-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
-FILES_libgles2-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
+FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
+FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
 FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/osmesa.h"
 
 FILES_${PN}-dbg += "${libdir}/dri/.debug/* ${libdir}/egl/.debug/*"
diff --git a/meta/recipes-graphics/mesa/mesa-dri_8.0.4.bb b/meta/recipes-graphics/mesa/mesa-dri_8.0.4.bb
index fb35676..fabb99d 100644
--- a/meta/recipes-graphics/mesa/mesa-dri_8.0.4.bb
+++ b/meta/recipes-graphics/mesa/mesa-dri_8.0.4.bb
@@ -1,4 +1,4 @@ 
 require mesa-common.inc
 require mesa-${PV}.inc
 require mesa-dri.inc
-PR = "${INC_PR}.2"
+PR = "${INC_PR}.3"
diff --git a/meta/recipes-graphics/mesa/mesa-dri_git.bb b/meta/recipes-graphics/mesa/mesa-dri_git.bb
index de1aa14..5f8697a 100644
--- a/meta/recipes-graphics/mesa/mesa-dri_git.bb
+++ b/meta/recipes-graphics/mesa/mesa-dri_git.bb
@@ -5,4 +5,4 @@  require mesa-dri.inc
 # this needs to be lower than -1 because all mesa-dri have -1 and git version has highest PV, but shouldn't be default
 DEFAULT_PREFERENCE = "-2"
 
-PR = "${INC_PR}.1"
+PR = "${INC_PR}.2"