[meta-intel] [PATCH 5/5] mesa: make the recipe MACHINE independent

Darren Hart dvhart at linux.intel.com
Wed Sep 4 21:20:38 PDT 2013


On Thu, 2013-09-05 at 03:38 +0000, nitin.a.kamble at intel.com wrote:
> From: Nitin A Kamble <nitin.a.kamble at intel.com>
> 
> This avoids rebuilding of the recipe when a different MACHINE is
> selected with the same arch.

For the occasional idiot such as myself that wants to really understand
what this commit does.... this commit message needs to spell it out a
bit more clearly :-)

> 
> Fixes bug:
> [YOCTO #5120]
> 
> Signed-off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
> ---
>  common/recipes-graphics/mesa/mesa_9.1.6.bbappend | 64 ++++++++++++++++--------
>  1 file changed, 44 insertions(+), 20 deletions(-)
> 
> diff --git a/common/recipes-graphics/mesa/mesa_9.1.6.bbappend b/common/recipes-graphics/mesa/mesa_9.1.6.bbappend
> index b92831d..0fe5534 100644
> --- a/common/recipes-graphics/mesa/mesa_9.1.6.bbappend
> +++ b/common/recipes-graphics/mesa/mesa_9.1.6.bbappend
> @@ -1,24 +1,48 @@
> -
>  # The emgd binary driver also provides egl, gles1, gles2 library & headers.
> -# To avoid conflict disable egl, gles1, gles2 from meta-dri if the BSP image
> -# is bundling the emgd driver.
> +# To avoid conflict do not populate sysroot with  egl, gles1, gles2 files
> +# from mesa-dri if the BSP image is bundling the emgd driver.
> +
> +STAGING_HOLD_DIR="${WORKDIR}/staging_hold"
>  
> -python __anonymous () {
> -    import re
> -    xserver = d.getVar('XSERVER', True)
> -    if xserver and 'emgd-driver-bin' in xserver.split(' '):
> -        extra_oeconf = d.getVar('EXTRA_OECONF', True).split()
> -        take_out = ["--enable-egl", "--enable-gles1", "--enable-gles2"]
> -        put_in = ["--disable-egl", "--disable-gles1", "--disable-gles2"]
> -        pattern = re.compile("--with-egl-platforms")
> -        new_extra_oeconf = [ ]
> -        for i in extra_oeconf:
> -            if ( i not in take_out ) and ( not pattern.match(i)):
> -                new_extra_oeconf.append(i)
> -        for i in put_in:
> -            new_extra_oeconf.append(i)
> +FILES_SKIP_POPULATE_SYSROOT="${libdir}/libGLESv2.so.2 \
> +                             ${libdir}/libEGL.so.1 \
> +                             ${libdir}/libGLESv2.so \
> +                             ${libdir}/libEGL.so \
> +                             ${libdir}/pkgconfig/egl.pc \
> +                             ${libdir}/pkgconfig/glesv2.pc \
> +                             ${includedir}/KHR/khrplatform.h \
> +                             ${includedir}/GLES/glext.h \
> +                             ${includedir}/GLES/glplatform.h \
> +                             ${includedir}/GLES/gl.h \
> +                             ${includedir}/EGL/eglext.h \
> +                             ${includedir}/EGL/eglplatform.h \
> +                             ${includedir}/EGL/egl.h \
> +                             ${includedir}/GLES2/gl2.h \
> +                             ${includedir}/GLES2/gl2platform.h \
> +                             ${includedir}/GLES2/gl2ext.h \
> +                 

So rather than build it differently, we list the conflicting files and
then.... (down below) ...

>             "
>  
> -        d.setVar('EXTRA_OECONF', ' '.join(new_extra_oeconf))
> -        depends = d.getVar('DEPENDS', True)
> -        d.setVar('DEPENDS', depends + " emgd-driver-bin")
> +# move away some files before populate_sysroot
> +do_pre_populate_sysroot () {
> +    if [[ "${XSERVER}" =~ "emgd-driver-bin" ]]; then
> +        mkdir -p ${STAGING_HOLD_DIR}
> +        for i in ${FILES_SKIP_POPULATE_SYSROOT}
> +        do
> +            mkdir -p ${STAGING_HOLD_DIR}/`dirname ${i}`
> +            mv ${D}/${i} ${STAGING_HOLD_DIR}/${i}
> +        done
> +    fi

Move them out of the <WHAT?> directory prior to calling populate_sysroot
which.... avoids them being put into the sysroot... OK.

>  }
> +
> +# move back the files for do_package
> +do_post_populate_sysroot () {
> +    if [[ "${XSERVER}" =~ "emgd-driver-bin" ]]; then
> +        for i in ${FILES_SKIP_POPULATE_SYSROOT}
> +        do
> +            mv ${STAGING_HOLD_DIR}/${i} ${D}/${i}
> +        done
> +    fi
> +}

But then we move them back..... why do we move them back?

Would it not make more sense for these particular files to be packaged
in a different package which the emgd-driver-bin could also provide and
be chosen in lieu of this one?

The above appears to be a well thought out approach, I'm sure I'm just
missing something, but moving them back afterward strikes me as going
through some awful contortions that may likely come back to bite us
later....

> +
> +addtask pre_populate_sysroot after do_install before do_populate_sysroot
> +addtask post_populate_sysroot after do_populate_sysroot before do_package

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel





More information about the meta-intel mailing list