Patchwork gpu-viv-bin-mx6q, mesa: fix virtual/libgl dependencies

login
register
mail settings
Submitter Simon Braunschmidt
Date July 18, 2013, 1:19 p.m.
Message ID <1374153565-17732-2-git-send-email-sb@emlix.com>
Download mbox | patch
Permalink /patch/53957/
State Accepted
Delegated to: Otavio Salvador
Headers show

Comments

Simon Braunschmidt - July 18, 2013, 1:19 p.m.
Fixes [YOCTO #4850]

findings:
* meta-fsl-arm/recipes-graphics/mesa/mesa_9.1.3.bbappend is used to
  delete libGL.* after compilation of mesa

* ./recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.0.35-4.0.0.bb, via
  gpu-viv-bin-mx6q.inc, provides its own version of libGL

* gpu-viv-bin-mx6q does not advertise "virtual/libgl" in "PROVIDES +="

* but mesa (via mesa.inc) does:
  PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl"

* so the statement in imx-base.inc
   PREFERRED_PROVIDER_virtual/libgl_mx6 ?= "gpu-viv-bin-mx6q"
  does not have effect, because mesa is still the only provider
  of virtual/libgl

* packages depending on virtual/libgl only get mesa, which will not contain
  the libGL library

* in fact, we still use the gl headers from mesa, but the binary blob library
  from gpu-viv-bin-mx6q (gpu-viv-bin-mx6q does not provide the headers),
  so a package compiling against GL needs both mesa and gpu-viv-bin-mx6q

conclusion:
* so i suggest having gpu-viv-bin-mx6q depend on mesa to draw in the
  gl header package, advertising "virtual/libgl" for gpu-viv-bin-mx6q
  via "PROVIDES +=" and not advertising virtual/libgl for mesa via the
  .bbappend file

Signed-off-by: Simon Braunschmidt <sb@emlix.com>
---
 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc          |    4 ++--
 recipes-graphics/mesa/mesa_9.1.3.bbappend          |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
Eric BENARD - July 18, 2013, 1:26 p.m.
Hi Simon,

Le Thu, 18 Jul 2013 15:19:25 +0200,
Simon Braunschmidt <sb@emlix.com> a écrit :

> Fixes [YOCTO #4850]
> 
> findings:
> * meta-fsl-arm/recipes-graphics/mesa/mesa_9.1.3.bbappend is used to
>   delete libGL.* after compilation of mesa
> 
> * ./recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.0.35-4.0.0.bb, via
>   gpu-viv-bin-mx6q.inc, provides its own version of libGL
> 
> * gpu-viv-bin-mx6q does not advertise "virtual/libgl" in "PROVIDES +="
> 
> * but mesa (via mesa.inc) does:
>   PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl"
> 
> * so the statement in imx-base.inc
>    PREFERRED_PROVIDER_virtual/libgl_mx6 ?= "gpu-viv-bin-mx6q"
>   does not have effect, because mesa is still the only provider
>   of virtual/libgl
> 
> * packages depending on virtual/libgl only get mesa, which will not contain
>   the libGL library
> 
> * in fact, we still use the gl headers from mesa, but the binary blob library
>   from gpu-viv-bin-mx6q (gpu-viv-bin-mx6q does not provide the headers),
>   so a package compiling against GL needs both mesa and gpu-viv-bin-mx6q
> 
> conclusion:
> * so i suggest having gpu-viv-bin-mx6q depend on mesa to draw in the
>   gl header package, advertising "virtual/libgl" for gpu-viv-bin-mx6q
>   via "PROVIDES +=" and not advertising virtual/libgl for mesa via the
>   .bbappend file
> 
> Signed-off-by: Simon Braunschmidt <sb@emlix.com>
> ---
>  .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc          |    4 ++--
>  recipes-graphics/mesa/mesa_9.1.3.bbappend          |    2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
> index b007079..3354854 100644
> --- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
> +++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
> @@ -6,8 +6,8 @@ DESCRIPTION = "GPU driver and apps for imx6"
>  SECTION = "libs"
>  LICENSE = "Proprietary"
>  LIC_FILES_CHKSUM = "file://usr/include/gc_vdk.h;endline=11;md5=19f5925343fa3da65596eeaa4ddb5fd3"
> -DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)}"
> -PROVIDES += "virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
> +DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)} mesa"
> +PROVIDES += "virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
>  
this may also fix this problem :
| Collected errors:
|  * satisfy_dependencies_for: Cannot satisfy the following
dependencies for packagegroup-core-x11-base: |  *    libgl-mesa (>=
9.0.2) * |  * opkg_install_cmd: Cannot install package
packagegroup-core-x11-base.

Eric
Otavio Salvador - July 18, 2013, 1:29 p.m.
On Thu, Jul 18, 2013 at 10:26 AM, Eric Bénard <eric@eukrea.com> wrote:
> Hi Simon,
>
> Le Thu, 18 Jul 2013 15:19:25 +0200,
> Simon Braunschmidt <sb@emlix.com> a écrit :
>
>> Fixes [YOCTO #4850]
>>
>> findings:
>> * meta-fsl-arm/recipes-graphics/mesa/mesa_9.1.3.bbappend is used to
>>   delete libGL.* after compilation of mesa
>>
>> * ./recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.0.35-4.0.0.bb, via
>>   gpu-viv-bin-mx6q.inc, provides its own version of libGL
>>
>> * gpu-viv-bin-mx6q does not advertise "virtual/libgl" in "PROVIDES +="
>>
>> * but mesa (via mesa.inc) does:
>>   PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl"
>>
>> * so the statement in imx-base.inc
>>    PREFERRED_PROVIDER_virtual/libgl_mx6 ?= "gpu-viv-bin-mx6q"
>>   does not have effect, because mesa is still the only provider
>>   of virtual/libgl
>>
>> * packages depending on virtual/libgl only get mesa, which will not contain
>>   the libGL library
>>
>> * in fact, we still use the gl headers from mesa, but the binary blob library
>>   from gpu-viv-bin-mx6q (gpu-viv-bin-mx6q does not provide the headers),
>>   so a package compiling against GL needs both mesa and gpu-viv-bin-mx6q
>>
>> conclusion:
>> * so i suggest having gpu-viv-bin-mx6q depend on mesa to draw in the
>>   gl header package, advertising "virtual/libgl" for gpu-viv-bin-mx6q
>>   via "PROVIDES +=" and not advertising virtual/libgl for mesa via the
>>   .bbappend file
>>
>> Signed-off-by: Simon Braunschmidt <sb@emlix.com>
>> ---
>>  .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc          |    4 ++--
>>  recipes-graphics/mesa/mesa_9.1.3.bbappend          |    2 +-
>>  2 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
>> index b007079..3354854 100644
>> --- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
>> +++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
>> @@ -6,8 +6,8 @@ DESCRIPTION = "GPU driver and apps for imx6"
>>  SECTION = "libs"
>>  LICENSE = "Proprietary"
>>  LIC_FILES_CHKSUM = "file://usr/include/gc_vdk.h;endline=11;md5=19f5925343fa3da65596eeaa4ddb5fd3"
>> -DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)}"
>> -PROVIDES += "virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
>> +DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)} mesa"
>> +PROVIDES += "virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
>>
> this may also fix this problem :
> | Collected errors:
> |  * satisfy_dependencies_for: Cannot satisfy the following
> dependencies for packagegroup-core-x11-base: |  *    libgl-mesa (>=
> 9.0.2) * |  * opkg_install_cmd: Cannot install package
> packagegroup-core-x11-base.

I think so. Can you give it a try Eric? I am putting this in my
autobuilder (master-next) and will let it building for a while.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750

Patch

diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
index b007079..3354854 100644
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
@@ -6,8 +6,8 @@  DESCRIPTION = "GPU driver and apps for imx6"
 SECTION = "libs"
 LICENSE = "Proprietary"
 LIC_FILES_CHKSUM = "file://usr/include/gc_vdk.h;endline=11;md5=19f5925343fa3da65596eeaa4ddb5fd3"
-DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)}"
-PROVIDES += "virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
+DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)} mesa"
+PROVIDES += "virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
 
 INC_PR = "r5"
 
diff --git a/recipes-graphics/mesa/mesa_9.1.3.bbappend b/recipes-graphics/mesa/mesa_9.1.3.bbappend
index b0535a7..9308952 100644
--- a/recipes-graphics/mesa/mesa_9.1.3.bbappend
+++ b/recipes-graphics/mesa/mesa_9.1.3.bbappend
@@ -23,7 +23,7 @@  python __anonymous () {
 
         # Remove itens from provides
         provides = d.getVar('PROVIDES', True).split()
-        take_out = ['virtual/libgles1', 'virtual/libgles2', 'virtual/egl']
+        take_out = ['virtual/libgles1', 'virtual/libgles2', 'virtual/egl', 'virtual/libgl']
         new_provides = []
         for i in provides:
             if i not in take_out: