[yocto] bash specific syntax in bbclass files

seth bollinger seth.boll at gmail.com
Wed May 1 17:13:19 PDT 2013


Hello All,

I recently ran into a problem in 
meta-raspberrypi/classes/sdcard_image-rpi.bbclass

The following was run through my default debian dash shell (I thought I 
switched a while back, but I must have reverted my VM image or 
something...).

   # If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
   if [[ "$SDIMG_ROOTFS_TYPE" == *.xz ]]
   then

The bash specific syntax ([[) failed in dash causing the "else" path to 
be traversed instead of the correct "then" path.  The failure was silent 
and resulted in a blind copy of a compressed rootfs to the sdcard 
image.  Of course this didn't run.  :)

1.  Is there particular shell syntax that class files should stick too?
2.  I couldn't find a wildcard string search in dash.  Can anyone 
suggest a more shell agnostic way to do this?
3.  Is there a way to guarantee we're running in bash if we're using 
bash specific syntax?

My solution was the following, but it's less readable.

if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz"

Thanks,

Seth




More information about the yocto mailing list