Patchwork qemu.inc: Non deterministic compile of qemu

login
register
mail settings
Submitter Jason Wessel
Date March 1, 2013, 2:26 p.m.
Message ID <1362147965-42559-1-git-send-email-jason.wessel@windriver.com>
Download mbox | patch
Permalink /patch/45359/
State Accepted
Commit 79c620016b0be4dacc9fcfbd4baab5ea6c66a440
Headers show

Comments

Jason Wessel - March 1, 2013, 2:26 p.m.
When you using a qemuppc target and sstate you might end up with
the problem:

qemu-system-ppc: error while loading shared libraries:
   libfdt.so.1: cannot open shared object file: No such file or directory

The way you can force this to happen assuming you are using sstate is
as follows:

bitbake dtc-native
bitbake -c cleansstate qemu-native
bitbake qemu-native
bitbake -c clean dtc-native

Now go start qemu and it will fail.  The solution is to always build
the dtc libraries since they are used and needed by the qemuppc
simulator.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
 meta/recipes-devtools/qemu/qemu.inc |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Khem Raj - March 1, 2013, 3:41 p.m.
Sent from my iPad

On Mar 1, 2013, at 6:26 AM, Jason Wessel <jason.wessel@windriver.com> wrote:

> When you using a qemuppc target and sstate you might end up with
> the problem:
> 
> qemu-system-ppc: error while loading shared libraries:
>   libfdt.so.1: cannot open shared object file: No such file or directory
> 
> The way you can force this to happen assuming you are using sstate is
> as follows:
> 
> bitbake dtc-native
> bitbake -c cleansstate qemu-native
> bitbake qemu-native
> bitbake -c clean dtc-native
> 
> Now go start qemu and it will fail.  The solution is to always build
> the dtc libraries since they are used and needed by the qemuppc
> simulator.


I am carrying a local fix for same reason

Acked-by: Khem Raj <raj.khem@gmail.com>
> 
> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
> ---
> meta/recipes-devtools/qemu/qemu.inc |    4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> index 6c44b31..eb60d43 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -2,8 +2,8 @@ DESCRIPTION = "open source processor emulator"
> HOMEPAGE = "http://qemu.org"
> LICENSE = "GPLv2 & LGPLv2.1"
> DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman"
> -DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native"
> -DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman"
> +DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
> +DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
> RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"
> 
> require qemu-targets.inc
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Trevor Woerner - March 1, 2013, 4:05 p.m.
On Fri, Mar 1, 2013 at 9:26 AM, Jason Wessel <jason.wessel@windriver.com> wrote:
> When you using a qemuppc target and sstate you might end up with
> the problem:
>
> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> index 6c44b31..eb60d43 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -2,8 +2,8 @@ DESCRIPTION = "open source processor emulator"
>  HOMEPAGE = "http://qemu.org"
>  LICENSE = "GPLv2 & LGPLv2.1"
>  DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman"
> -DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native"
> -DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman"
> +DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
> +DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
>  RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"

Is there a way to instrument this in such a way that these depends are
included only when the target machine is qemuppc? Some sort of
@machine_depends or something?
Richard Purdie - March 2, 2013, 1:02 p.m.
On Fri, 2013-03-01 at 11:05 -0500, Trevor Woerner wrote:
> On Fri, Mar 1, 2013 at 9:26 AM, Jason Wessel <jason.wessel@windriver.com> wrote:
> > When you using a qemuppc target and sstate you might end up with
> > the problem:
> >
> > diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> > index 6c44b31..eb60d43 100644
> > --- a/meta/recipes-devtools/qemu/qemu.inc
> > +++ b/meta/recipes-devtools/qemu/qemu.inc
> > @@ -2,8 +2,8 @@ DESCRIPTION = "open source processor emulator"
> >  HOMEPAGE = "http://qemu.org"
> >  LICENSE = "GPLv2 & LGPLv2.1"
> >  DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman"
> > -DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native"
> > -DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman"
> > +DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
> > +DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
> >  RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"
> 
> Is there a way to instrument this in such a way that these depends are
> included only when the target machine is qemuppc? Some sort of
> @machine_depends or something?

You could do that but it would mean you'd have a -native recipe
rebuilding when changing machine. I'd not recommend it.

Cheers,

Richard

Patch

diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 6c44b31..eb60d43 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -2,8 +2,8 @@  DESCRIPTION = "open source processor emulator"
 HOMEPAGE = "http://qemu.org"
 LICENSE = "GPLv2 & LGPLv2.1"
 DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman"
-DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native"
-DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman"
+DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
+DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
 RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"
 
 require qemu-targets.inc