From 746d3f145c5d890aa63e00a8261ee5934733eaac Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 21 Apr 2010 11:11:52 -0500 Subject: qemu: Move gcc version check, qemu-TARGET logic into qemu.bbclass Move the logic to determine what qemu-TARGET to run into qemu.bbclass so we can check for the right binary in sanity.bbclass. This code was duplicated by glibc-package and eglibc-package anyhow and with the new fn we can clean up the usage in these classes a bit. Now that we have a class for qemu stuff, and the gcc check is just for qemu, move it there. Conflicts: classes/base.bbclass classes/sanity.bbclass --- classes/base.bbclass | 13 ------------- classes/glibc-package.bbclass | 15 +++++---------- classes/qemu.bbclass | 27 +++++++++++++++++++++++++++ classes/sanity.bbclass | 5 +++-- recipes/eglibc/eglibc-package.bbclass | 14 +++++--------- recipes/qemu/qemu-gcc3-check.inc | 2 ++ 6 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 classes/qemu.bbclass diff --git a/classes/base.bbclass b/classes/base.bbclass index 384a67d3d6..e6cfeccc46 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -1307,19 +1307,6 @@ def check_app_exists(app, d): path = data.getVar('PATH', d, 1) return len(which(path, app)) != 0 -def check_gcc3(data): - # Primarly used by qemu to make sure we have a workable gcc-3.4.x. - # Start by checking for the program name as we build it, was not - # all host-provided gcc-3.4's will work. - - gcc3_versions = 'gcc-3.4.6 gcc-3.4.4 gcc34 gcc-3.4 gcc-3.4.7 gcc-3.3 gcc33 gcc-3.3.6 gcc-3.2 gcc32' - - for gcc3 in gcc3_versions.split(): - if check_app_exists(gcc3, data): - return gcc3 - - return False - # Patch handling inherit patch diff --git a/classes/glibc-package.bbclass b/classes/glibc-package.bbclass index 413ed14931..90b9bfd584 100644 --- a/classes/glibc-package.bbclass +++ b/classes/glibc-package.bbclass @@ -7,6 +7,8 @@ # "precompiled" - The binary locale files are pregenerated and already present # "ondevice" - The device will build the locale files upon first boot through the postinst +inherit qemu + GLIBC_INTERNAL_USE_BINARY_LOCALE ?= "ondevice" PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-static glibc-doc glibc-locale libcidn libmemusage libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" @@ -212,12 +214,6 @@ python package_do_split_gconvs () { bb.data.setVar('RDEPENDS_%s' % pkgname, legitimize_package_name('glibc-binary-localedata-%s' % glibc_name), d) def output_locale_binary(name, pkgname, locale, encoding): - target_arch = bb.data.getVar("TARGET_ARCH", d, 1) - if target_arch in ("i486", "i586", "i686"): - target_arch = "i386" - elif target_arch == "powerpc": - target_arch = "ppc" - # This is a hack till linux-libc-headers gets patched for the missing arm syscalls and all arm device kernels as well if bb.data.getVar("DISTRO_NAME", d, 1) == "Angstrom": kernel_ver = "2.6.24" @@ -226,10 +222,9 @@ python package_do_split_gconvs () { else: kernel_ver = bb.data.getVar("OLDEST_KERNEL", d, 1) - if kernel_ver is None: - qemu = "qemu-%s -s 1048576" % target_arch - else: - qemu = "qemu-%s -s 1048576 -r %s" % (target_arch, kernel_ver) + qemu = qemu_target_binary(d) + " -s 1048576" + if kernel_ver: + qemu += " -r %s" % (kernel_ver) pkgname = 'locale-base-' + legitimize_package_name(name) treedir = base_path_join(bb.data.getVar("WORKDIR", d, 1), "locale-tree") diff --git a/classes/qemu.bbclass b/classes/qemu.bbclass new file mode 100644 index 0000000000..40a3542450 --- /dev/null +++ b/classes/qemu.bbclass @@ -0,0 +1,27 @@ +# +# This class contains functions for recipes that need QEMU or test for its +# existance. +# + +def check_gcc3(data): + # Used by qemu to make sure we have a workable gcc-3.x. + # Start by checking for the program name as we build it as there + # are some distribtuion provided gcc-3.x's that will not work. + gcc3_versions = 'gcc-3.4.6 gcc-3.4.4 gcc34 gcc-3.4 gcc-3.4.7 gcc-3.3 gcc33 gcc-3.3.6 gcc-3.2 gcc32' + + for gcc3 in gcc3_versions.split(): + if check_app_exists(gcc3, data): + return gcc3 + + return False + +def qemu_target_binary(data): + import bb + + target_arch = bb.data.getVar("TARGET_ARCH", data, 1) + if target_arch in ("i486", "i586", "i686"): + target_arch = "i386" + elif target_arch == "powerpc": + target_arch = "ppc" + + return "qemu-" + target_arch diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass index f65df61c1d..7e087d8927 100644 --- a/classes/sanity.bbclass +++ b/classes/sanity.bbclass @@ -2,6 +2,8 @@ # Sanity check the users setup for common misconfigurations # +inherit qemu + def raise_sanity_error(msg): import bb bb.fatal(""" Openembedded's config sanity checker detected a potential misconfiguration. @@ -93,8 +95,7 @@ def check_sanity(e): missing = missing + "gcc-3.x (needed for qemu-native)," if "qemu-native" in assume_provided: - if not check_app_exists("qemu-arm", e.data): - messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH" + required_utilities += " %s" % (qemu_target_binary(e.data)) if os.path.exists("/proc/sys/vm/mmap_min_addr"): f = file("/proc/sys/vm/mmap_min_addr", "r") diff --git a/recipes/eglibc/eglibc-package.bbclass b/recipes/eglibc/eglibc-package.bbclass index fcaba47f6e..c5c73682f3 100644 --- a/recipes/eglibc/eglibc-package.bbclass +++ b/recipes/eglibc/eglibc-package.bbclass @@ -6,6 +6,8 @@ # See the note in gcc/gcc_3.4.0.oe # +inherit qemu + python __anonymous () { import bb, re uc_os = (re.match('.*uclibc*', bb.data.getVar('TARGET_OS', d, 1)) != None) @@ -287,16 +289,10 @@ python package_do_split_gconvs () { bb.data.setVar('pkg_postrm_%s' % pkgname, bb.data.getVar('locale_base_postrm', d, 1) % (locale, encoding, locale), d) def output_locale_binary(name, locale, encoding): - target_arch = bb.data.getVar("TARGET_ARCH", d, 1) - if target_arch in ("i486", "i586", "i686"): - target_arch = "i386" - elif target_arch == "powerpc": - target_arch = "ppc" + qemu = qemu_target_binary(d) + " -s 1048576" kernel_ver = bb.data.getVar("OLDEST_KERNEL", d, 1) - if kernel_ver is None: - qemu = "qemu-%s -s 1048576" % target_arch - else: - qemu = "qemu-%s -s 1048576 -r %s" % (target_arch, kernel_ver) + if kernel_ver: + qemu += " -r %s" % (kernel_ver) pkgname = 'locale-base-' + legitimize_package_name(name) m = re.match("(.*)\.(.*)", name) if m: diff --git a/recipes/qemu/qemu-gcc3-check.inc b/recipes/qemu/qemu-gcc3-check.inc index 81c3555b48..c55444acdd 100644 --- a/recipes/qemu/qemu-gcc3-check.inc +++ b/recipes/qemu/qemu-gcc3-check.inc @@ -1,3 +1,5 @@ +inherit qemu + python __anonymous() { from bb import which, data -- cgit v1.2.3