#!/bin/bash # # Copyright (c) 2005-2010 Wind River Systems, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 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` IMAGE_PATH=` bitbake -e | grep ^COREBASE | cut -d '=' -f2 | cut -d '"' -f2`/build/tmp/deploy/images/ ECHO() { echo -e "${green}$@" tput sgr0 } exit_check() { if [ ! $? -eq 0 ]; then exit $? fi } usage() { ECHO "${red}usage:you should input one of the next commmands according to detailed target platform:" ECHO "creat-lsb-image x86" ECHO "creat-lsb-image x86_64" ECHO "creat-lsb-image ppc32" } #There should be a patameter to get machine type if [ $# -ne 1 ]; then usage exit 1 fi #check lsb image if [ ! -d $IMAGE_PATH ];then ECHO "${red}There isn't image directory" exit 1 fi ECHO "Enter directory $IMAGE_PATH" cd $IMAGE_PATH #get architecture PN=`find . -name core-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 \"core-image-lsb\" to generate lsb image" exit 1 fi if [ $PN -eq 0 ];then ECHO "${red}Can't ${MACHINE_ARCH} rootfs.tar.gz,Please run core-image-lsb to get lsb image" exit 1 fi #set varible ARCH if [ ${ARCH} == x86 ];then T_ARCH=ia32 P_ARCH=i486 elif [ ${ARCH} == x86_64 ];then T_ARCH=ia64 P_ARCH=ia64 else P_ARCH=ppc T_ARCH=${ARCH} fi #umount lsbtmp if [ -d lsbtmp ];then 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 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 "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 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 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 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 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 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 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 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 exit_check else ECHO "Can't find lsb test suite for ${MACHINE_ARCH}" fi cd .. if [ -L core-image-lsb-${MACHINE_ARCH}.ext3 ];then /bin/rm core-image-lsb-${MACHINE_ARCH}.ext3 exit_check fi #creat lsb image if [ -f core-image-lsb-${MACHINE_ARCH}-test.ext3 ];then if [ -d lsbtmp ];then sudo umount lsbtmp fi ECHO "Remove old lsb image..." /bin/rm core-image-lsb-${MACHINE_ARCH}-test.ext3 fi ECHO "creat a big ext3 file for lsb image with 5G..." dd if=/dev/zero of=core-image-lsb-${MACHINE_ARCH}-test.ext3 bs=1M count=5000 exit_check ECHO "Format ext3 image,please input \"y\"" mkfs.ext3 core-image-lsb-${MACHINE_ARCH}-test.ext3 tune2fs -j core-image-lsb-${MACHINE_ARCH}-test.ext3 ECHO "get a lsb image with lsb test suite" if [ ! -d lsbtmp ];then mkdir lsbtmp fi #install file system and lsb test suite to lsb image sudo mount -o loop core-image-lsb-${MACHINE_ARCH}-test.ext3 lsbtmp exit_check ECHO " ->Install file system..." sudo tar jxf core-image-lsb-${MACHINE_ARCH}-${PN}.rootfs.tar.bz2 -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 exit_check sudo mkdir ../lsbtmp/lsb-Application sudo cp *.rpm ../lsbtmp/lsb-Application exit_check cd .. if [ -f modules-*-${MACHINE_ARCH}.tgz ];then ECHO " ->Install moules of driver..." sudo tar zxf modules-*-${MACHINE_ARCH}.tgz -C lsbtmp/ fi #unmount lsbtmp sudo umount lsbtmp exit_check sudo rm -rf lsbtmp #change file attribute sudo chown ${USER}:${USER} core-image-lsb-${MACHINE_ARCH}-test.ext3 exit_check sudo chmod 755 core-image-lsb-${MACHINE_ARCH}-test.ext3 exit_check #set up link if [ -L core-image-lsb-${MACHINE_ARCH}.ext3 ];then ECHO "Set up link" /bin/rm core-image-lsb-${MACHINE_ARCH}.ext3 exit_check fi ln -s core-image-lsb-${MACHINE_ARCH}-test.ext3 core-image-lsb-${MACHINE_ARCH}.ext3 ECHO "LSB test environment is set successfully, Please run this image on platform ${MACHINE_ARCH}"