[poky] [PATCH 1/1] creat-lsb-image: Modify some content for making a non-qemu lsb-image

Darren Hart dvhart at linux.intel.com
Mon Apr 4 11:19:10 PDT 2011


Hi Xiaofeng,

A couple of thoughts related to keeping our messages grammatically correct and also using variables and loops where appropriate to reduce the copy-and-paste effect...

On 04/01/2011 02:10 AM, Xiaofeng Yan wrote:
> From: Xiaofeng Yan<xiaofeng.yan at windriver.com>
> 
> For making a hardware lsb-image, delete qemu environment and add non qemu environment.
> 
> Signed-off-by: Xiaofeng Yan<xiaofeng.yan at windriver.com>
> ---
>   scripts/creat-lsb-image |  127 +++++++++++++++++++++++++++--------------------
>   1 files changed, 73 insertions(+), 54 deletions(-)
> 
> diff --git a/scripts/creat-lsb-image b/scripts/creat-lsb-image
> index 3802e2f..93b3042 100755
> --- a/scripts/creat-lsb-image
> +++ b/scripts/creat-lsb-image
> @@ -20,10 +20,10 @@ red='\E[31;40m'
>   green='\E[32;40m'
>   USER=`whoami`
>   ARCH=$1
> -MACHINE_ARCH=` bitbake -e | grep ^MACHINE_ARCH | cut -d '=' -f2 | cut -d '"' -f2`
> +PACKAGE=$2
> +MACHINE_ARCH=` bitbake -e | grep ^MACHINE_ARCH= | cut -d '=' -f2 | cut -d '"' -f2`
>   IMAGE_PATH=` bitbake -e | grep ^POKYBASE | cut -d '=' -f2 | cut -d '"' -f2`/build/tmp/deploy/images/
> 
> -
>   ECHO()
>   {
>       echo -e "${green}$@"
> @@ -39,14 +39,14 @@ exit_check()
> 
>   usage()
>   {
> -    ECHO "${red}usage:you should input one of the next commmands according to detailed target platform:"


A Usage statement doesn't typically display output in red. If this is only intended to be used from within another script, then you have some freedom here - but even then, the caller script should do the error detection and output a colored ERROR statement. In my opinion :)


> -    ECHO "creat-lsb-image x86"
> -    ECHO "creat-lsb-image x86_64"
> -    ECHO "creat-lsb-image ppc32"
> +    ECHO "${red}usage:you should input one of the next commmands according to detailed target platform, 
> Pease input detailed package to instead of \"poky-image-
> lsb-qemux86-20110317030443.rootfs.tar.bz2\""

"detailed target platform" doesn't make sense to me, what is this trying to say?

Complete that phrase with a period, rather than a comma.

Pease -> Please

"input detailed package to instead of" doesn't make sense to me either, can you try and rephrase?

Also, a usage statement should output a command argument summary, followed by a description of each argument, and optionally further text or examples.

I think the idea is to say that the input was bad and the user should instead try one of the following commands. Perhaps something like this:

Usage: create-lsb-image MACHINE_ARCH ROOTFS_IMG
    MACHINE_ARCH    according to 'bitbake -e | egrep "^MACHINE_ARCH="'
    ROOTFS_IMAGE    basename of the rootfs image, i.e.
                    poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2

    Examples:
        creat-lsb-image x86 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2
        creat-lsb-image x86_64 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2
        creat-lsb-image ppc32 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2


> +    ECHO "creat-lsb-image x86 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2"
> +    ECHO "creat-lsb-image x86_64 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2"
> +    ECHO "creat-lsb-image ppc32 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2"


Is this last one correct? ppc32 uses the qemux86 rootfs? I assume not.


>   }
> 
>   #There should be a patameter to get machine type
> -if [ $# -ne 1 ]; then
> +if [ $# -ne 2 ]; then
>       usage
>       exit 1
>   fi
> @@ -59,70 +59,85 @@ fi
>   ECHO "Enter directory $IMAGE_PATH"
>   cd $IMAGE_PATH
> 
> -#get architecture
> -PN=`find . -name poky-image-lsb-${MACHINE_ARCH}\*.rootfs.tar.bz2 -type f | awk -F- 'BEGIN{ max=0;} {if( NR!=0&&  $5>max ) max=$5 }END{ printf "%d" ,max ;}'`
> -if [ "XPN" == "X" ];then
> -   ECHO "${red}Don't find lsb image on platform, Please run \"poky-image-lsb\" to generate lsb image"
> -   exit 1
> +if [ ! -f ${2} ]; then
> +    ECHO "${red}${2} don't be found in the directory ${IMAGE_PATH},so"


replace "don't be" with "not" and just remove "the directory", delete ",so"
+    ECHO "${red}${2} not found in ${IMAGE_PATH}"


> +    ECHO "${red}Please copy \"${2}\" to directory \"${IMAGE_PATH}\""


s/directory//
+    ECHO "${red}Please copy \"${2}\" to \"${IMAGE_PATH}\""

I still suggest not using ${red} here.


> +    exit 1
>   fi
> 
> -if [ $PN -eq 0 ];then
> -	ECHO "${red}Can't ${MACHINE_ARCH} rootfs.tar.gz,Please run poky-image-lsb to get lsb image"
> -	exit 1
> -fi
>   #set varible ARCH
>   if [ ${ARCH} == x86 ];then
> -	T_ARCH=ia32
> +    T_ARCH=ia32
>       P_ARCH=i486
>   elif [ ${ARCH} == x86_64 ];then
> -	T_ARCH=ia64
> -    P_ARCH=ia64
> +    T_ARCH=amd64
> +    P_ARCH=x86_64
> +
>   else
> -	P_ARCH=ppc
> -	T_ARCH=${ARCH}
> +    P_ARCH=ppc
> +    T_ARCH=${ARCH}
>   fi
> 
>   #umount lsbtmp
>   if [ -d lsbtmp ];then
> -	sudo umount lsbtmp
> +    sudo umount lsbtmp
>   fi
> 
>   #download lsb test suite
>   mkdir -p lsb-test-suite-${MACHINE_ARCH}
>   if [ -d lsb-test-suite-${MACHINE_ARCH} ];then
> -	cd lsb-test-suite-${MACHINE_ARCH}
> -	ECHO "Download lsb test suite, it could take some time..."
> -    wget -c -t 5  http://ftp.linuxfoundation.org/pub/lsb/bundles/released-4.1.0/dist-testkit/lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz
> +    cd lsb-test-suite-${MACHINE_ARCH}
> +    ECHO "Download lsb test suite, it could take some time..."


Use the gerund here rather than the imperative:
+    ECHO "Downloading lsb test suite, this may take some time..."


> +    if [ ${ARCH} == x86_64 ];then
> +        wget -c -t 5  http://ftp.linuxfoundation.org/pub/lsb/bundles/released-4.1.0/dist-testkit/lsb-dist-testkit-4.1.0-5.${P_ARCH}.tar.gz
> +    else
> +        wget -c -t 5  http://ftp.linuxfoundation.org/pub/lsb/bundles/released-4.1.0/dist-testkit/lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz
> +    fi
> +    exit_check
> +    ECHO "Download lsb-xdg-utils-4.0.0-2.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/lsbdev/released-4.1.0/binary/${T_ARCH}/lsb-xdg-utils-4.0.0-2.${P_ARCH}.rpm
> +    exit_check
> +    ECHO "Download lsb-apache-2.2.8-2.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-apache-2.2.14-3.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Download lsb-xdg-utils-4.0.0-2.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/lsbdev/released-4.1.0/binary/${T_ARCH}/lsb-xdg-utils-4.0.0-2.${P_ARCH}.rpm
> +    ECHO "Download lsb-tcl-8.5.1-2.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-tcl-8.5.7-6.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-apache-2.2.8-2.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-apache-2.2.14-3.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-expect-5.43.0-7.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-expect-5.43.0-11.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-tcl-8.5.1-2.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-tcl-8.5.7-6.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-groff-1.19.2-4.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-groff-1.20.1-5.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-expect-5.43.0-7.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-expect-5.43.0-11.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-raptor-1.4.16-2.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-raptor-1.4.19-3.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-groff-1.19.2-4.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-groff-1.20.1-5.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-xpdf-1.01-7.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-xpdf-1.01-10.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-raptor-1.4.16-2.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-raptor-1.4.19-3.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-samba-3.0.28a-3.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-samba-3.4.3-5.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-xpdf-1.01-7.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-xpdf-1.01-10.lsb4.${P_ARCH}.rpm
> +    ECHO "Download lsb-rsync-3.0.0-2.lsb4.${P_ARCH}.rpm"
> +    wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-rsync-3.0.6-3.lsb4.${P_ARCH}.rpm
>       exit_check
> -	ECHO "Downlocad lsb-samba-3.0.28a-3.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-samba-3.4.3-5.lsb4.${P_ARCH}.rpm
> +    ECHO "Download expect-tests.tar"
> +    wget -c -t 5 http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests/expect-tests.tar
>       exit_check
> -	ECHO "Downlocad lsb-rsync-3.0.0-2.lsb4.${P_ARCH}.rpm"
> -	wget -c -t 5 http://ftp.linux-foundation.org/pub/lsb/app-battery/released-4.1.0/${T_ARCH}/lsb-rsync-3.0.6-3.lsb4.${P_ARCH}.rpm
> +    ECHO "Download tcl-tests.tar"
> +    wget -c -t 5 http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests/tcl-tests.tar
> +    exit_check
> +    ECHO "Download raptor-tests.tar"
> +    wget -c -t 5 http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests/raptor-tests.tar
> +    exit_check
> +    ECHO "Download test1.pdf"
> +    wget -c -t 5 http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests/test1.pdf
> +    exit_check
> +    ECHO "Download test2.pdf"
> +    wget -c -t 5 http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests/test2.pdf
>       exit_check


This is a huge list with a lot of duplication. Maintenance on this will be very error prone. I'd suggest:

1) use a couple variables for common URL parts
2) use a HERE DOC and a read loop to grab each URL and report on progress.

http://tldp.org/LDP/abs/html/here-docs.html

Indeed, this would fix the multiple copies of "Downlocad" (instead of "Download") above.


>   else
> -	ECHO "Can't find lsb test suite for ${MACHINE_ARCH}"
> +    ECHO "Can't find lsb test suite for ${MACHINE_ARCH}"
>   fi
>   cd ..
>   if [ -L poky-image-lsb-${MACHINE_ARCH}.ext3 ];then
> @@ -132,11 +147,11 @@ fi
> 
>   #creat lsb image
>   if [ -f poky-image-lsb-${MACHINE_ARCH}-test.ext3 ];then
> -	if [ -d lsbtmp ];then
> -    	sudo umount lsbtmp
> -	fi
> -	ECHO "Remove old lsb image..."
> -	/bin/rm poky-image-lsb-${MACHINE_ARCH}-test.ext3
> +    if [ -d lsbtmp ];then
> +        sudo umount lsbtmp
> +    fi
> +    ECHO "Remove old lsb image..."


Use the gerund here as well:
+    ECHO "Removing old lsb image..."


> +    /bin/rm poky-image-lsb-${MACHINE_ARCH}-test.ext3
>   fi	
>   ECHO "creat a big ext3 file for lsb image with 5G..."


Not part of your patch, but while your here...
Capitalize the first word, fix "creat":
+ ECHO Create a big ext3 file for lsb image with 5G...


>   dd if=/dev/zero of=poky-image-lsb-${MACHINE_ARCH}-test.ext3 bs=1M count=5000
> @@ -148,7 +163,7 @@ tune2fs -j  poky-image-lsb-${MACHINE_ARCH}-test.ext3
> 
>   ECHO "get a lsb image with lsb test suite"
>   if [ ! -d lsbtmp ];then
> -	mkdir lsbtmp
> +    mkdir lsbtmp


Is this replacing a tab with 3 spaces? I believe 4 is common in the file.


>   fi
> 
> 
> @@ -157,21 +172,25 @@ sudo mount -o loop poky-image-lsb-${MACHINE_ARCH}-test.ext3 lsbtmp
>   exit_check
> 
>   ECHO "  ->Install file system..."
> -sudo tar jxf poky-image-lsb-${MACHINE_ARCH}-${PN}.rootfs.tar.bz2 -C lsbtmp
> +sudo tar jxf ${PACKAGE} -C lsbtmp
>   exit_check
> 
>   ECHO "  ->Install lsb test suite..."
>   cd lsb-test-suite-${MACHINE_ARCH}
> -sudo tar zxf lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz -C ../lsbtmp
> +if [ ${ARCH} == x86_64 ]; then
> +    sudo tar zxf lsb-dist-testkit-4.1.0-5.${P_ARCH}.tar.gz -C ../lsbtmp
> +else
> +    sudo tar zxvf lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz -C ../lsbtmp
> +fi
>   exit_check
>   sudo mkdir ../lsbtmp/lsb-Application
> -sudo cp *.rpm ../lsbtmp/lsb-Application
> +sudo cp *.rpm *.tar *.pdf ../lsbtmp/lsb-Application
>   exit_check
>   cd ..
> 
>   if [ -f modules-*-${MACHINE_ARCH}.tgz ];then
>   ECHO "  ->Install moules of driver..."	


Another existing typo: moules -> modules, probably better as:
+   ECHO "  ->Install driver modules..."	


> -	sudo tar zxf modules-*-${MACHINE_ARCH}.tgz -C lsbtmp/
> +    sudo tar zxf modules-*-${MACHINE_ARCH}.tgz -C lsbtmp/
>   fi
> 
> 

Thanks,

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel



More information about the poky mailing list