Skip to contentSkip to conversation

runqemu - improve auto-detection of rootfs filenames

PATCH Applied Scott Garman 2 participants 3 messages Sep 9, 2011

lore
Share & tools
lore
#0 lore raw

cover runqemu - improve auto-detection of rootfs filenames

Hello,

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].

- Scott

The following changes since commit ae4db0bacb9d40489499f77905f26502f3bcaa19:

python-native: add link for python2 (2011-09-08 09:56:23 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib sgarman/runqemu-fixes2
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/runqemu-fixes2

Scott Garman (1):
runqemu: improve auto-detection of rootfs filenames

 scripts/runqemu |   35 +++++++++++++++--------------------
 1 files changed, 15 insertions(+), 20 deletions(-)
#1 lore raw

PATCH 1/1 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].

---
 scripts/runqemu |   35 +++++++++++++++--------------------
 1 files changed, 15 insertions(+), 20 deletions(-)
scripts/runqemu +15 -20
index 74938f7..8f44c0d 100755
@@ -241,31 +241,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
@@ -302,26 +295,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
 }
 
@@ -378,7 +373,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]"
Signature · 1 line
1.7.1
#2 lore raw
In reply to Scott Garman
Quoted 14 lines · Scott Garman

Hello,

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].

- Scott

The following changes since commit ae4db0bacb9d40489499f77905f26502f3bcaa19:

Quoted 8 lines

python-native: add link for python2 (2011-09-08 09:56:23 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib sgarman/runqemu-fixes2
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/runqemu-fixes2

Scott Garman (1):
runqemu: improve auto-detection of rootfs filenames

Merged to master, thanks.

Richard