runqemu: improve auto-detection of rootfs filenames

This refactors the way rootfs filenames are auto-detected when you
run the runqemu script without an explicit rootfs filename argument.
It allows the script to use rootfs files generated by hob, and when
there are mutliple rootfs files to choose from, it will pick the
most recently created one.

Fixes [YOCTO #1437].

(From OE-Core rev: 094453f443ed592d814dfb4182a0a02f0a2552e4)

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Garman 2011-09-09 02:59:27 -07:00 committed by Richard Purdie
parent c505815742
commit 9c740e0425
1 changed files with 15 additions and 20 deletions

View File

@ -239,31 +239,24 @@ machine2=`echo $MACHINE | tr 'a-z' 'A-Z' | sed 's/-/_/'`
# Defaults used when these vars need to be inferred
QEMUX86_DEFAULT_KERNEL=bzImage-qemux86.bin
QEMUX86_DEFAULT_FSTYPE=ext3
QEMUX86_DEFAULT_ROOTFS="core-image-sato-sdk core-image-sato core-image-lsb core-image-basic core-image-minimal"
QEMUX86_64_DEFAULT_KERNEL=bzImage-qemux86-64.bin
QEMUX86_64_DEFAULT_FSTYPE=ext3
QEMUX86_64_DEFAULT_ROOTFS="core-image-sato-sdk core-image-sato core-image-lsb core-image-basic core-image-minimal"
QEMUARM_DEFAULT_KERNEL=zImage-qemuarm.bin
QEMUARM_DEFAULT_FSTYPE=ext3
QEMUARM_DEFAULT_ROOTFS="core-image-sato-sdk core-image-sato core-image-lsb core-image-basic core-image-minimal"
QEMUMIPS_DEFAULT_KERNEL=vmlinux-qemumips.bin
QEMUMIPS_DEFAULT_FSTYPE=ext3
QEMUMIPS_DEFAULT_ROOTFS="core-image-sato-sdk core-image-sato core-image-lsb core-image-basic core-image-minimal"
QEMUPPC_DEFAULT_KERNEL=zImage-qemuppc.bin
QEMUPPC_DEFAULT_FSTYPE=ext3
QEMUPPC_DEFAULT_ROOTFS="core-image-sato-sdk core-image-sato core-image-lsb core-image-basic core-image-minimal"
AKITA_DEFAULT_KERNEL=zImage-akita.bin
AKITA_DEFAULT_FSTYPE=jffs2
AKITA_DEFAULT_ROOTFS="core-image-sato"
SPITZ_DEFAULT_KERNEL=zImage-spitz.bin
SPITZ_DEFAULT_FSTYPE=ext3
SPITZ_DEFAULT_ROOTFS="core-image-sato"
setup_tmpdir() {
if [ -z "$TMPDIR" ]; then
@ -300,26 +293,28 @@ setup_sysroot() {
fi
}
# Locate a rootfs image based on defaults defined above
# Locate a rootfs image to boot which matches our expected
# machine and fstype.
findimage() {
where=$1
machine=$2
extension=$3
names=$4
for name in $names; do
fullname=$where/$name-$machine.$extension
if [ -e "$fullname" ]; then
ROOTFS=$fullname
# Sort rootfs candidates by modification time - the most
# recently created one is the one we most likely want to boot.
filenames=`ls -t $where/*core-image*$machine.$extension 2>/dev/null | xargs`
for name in $filenames; do
if [[ "$name" =~ core-image-sato-sdk ||
"$name" =~ core-image-sato ||
"$name" =~ core-image-lsb ||
"$name" =~ core-image-basic ||
"$name" =~ core-image-minimal ]]; then
ROOTFS=$name
return
fi
done
echo "Couldn't find image in $where. Attempted image names were:"
for name in $names; do
echo $name-$machine.$extension
fi
done
echo "Couldn't find a $machine rootfs image in $where."
exit 1
}
@ -376,7 +371,7 @@ if [ -z "$ROOTFS" ]; then
setup_tmpdir
T=$TMPDIR/deploy/images
eval rootfs_list=\$${machine2}_DEFAULT_ROOTFS
findimage $T $MACHINE $FSTYPE "$rootfs_list"
findimage $T $MACHINE $FSTYPE
if [ -z "$ROOTFS" ]; then
echo "Error: Unable to determine default rootfs for MACHINE [$MACHINE]"