From: Laurentiu Palcu Date: Fri, 26 Apr 2013 08:03:58 +0000 (+0300) Subject: qemuwrapper: use fallback in case the ELF binary is wrong X-Git-Tag: rev_ivi_2015_02_04~12743 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a6de8060af1adc355428904c0997937485cc22bb;p=scm%2Fbb%2Ftizen-distro.git qemuwrapper: use fallback in case the ELF binary is wrong This wrapper script is called mainly from intercept hooks and allarch packages postinstalls. When multilib is used, the qemuwrapper script points to the binary that matches the MACHINE architecture. For example: if MACHINE=qemux86_64 and we activate multilib, then the postinstalls for lib32 packages would call qemu-x86_64 with 32 bit binaries and they would certainly fail. This patch adds just a fallback method if the exit code of the previous qemu call corresponds to "Invalid ELF image for this architecture" error. This will allow us to have all postinstalls run on host. (From OE-Core rev: 0c6ddb84043f0f917543cdaf4814efc15cd0273f) Signed-off-by: Laurentiu Palcu Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb index 41617a6..18f1892 100644 --- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb +++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb @@ -9,7 +9,33 @@ do_install () { install -d ${D}${bindir_crossscripts}/ echo "#!/bin/sh" > ${D}${bindir_crossscripts}/qemuwrapper - echo exec env ${@qemu_target_binary(d)} \"\$@\" >> ${D}${bindir_crossscripts}/qemuwrapper + qemu_binary=${@qemu_target_binary(d)} + echo "$qemu_binary \"\$@\"" >> ${D}${bindir_crossscripts}/qemuwrapper + fallback_qemu_bin= + case $qemu_binary in + "qemu-i386") + fallback_qemu_bin=qemu-x86_64 + ;; + "qemu-x86_64") + fallback_qemu_bin=qemu-i386 + ;; + *) + ;; + esac + + if [ -n "$fallback_qemu_bin" ]; then + + cat >> ${D}${bindir_crossscripts}/qemuwrapper << EOF +rc=\$? +if [ \$rc = 255 ]; then + $fallback_qemu_bin "\$@" + rc=\$? +fi +exit \$rc +EOF + + fi + chmod +x ${D}${bindir_crossscripts}/qemuwrapper }