poky/scripts/create-lsb-image
Xiaofeng Yan f8e02f31a7 create-lsb-iamge:Fix bugs
Change variables "${ARCH}" to "${1}"

(From OE-Core rev: 18ac34ad614adaa918daf4bf93ce0eb1f42413c1)

Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-04 00:54:39 +01:00

5.8 KiB
Executable File

#!/bin/bash

Copyright (C) 2010-2011 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'

#Get current owner OWNER=whoami #Get group GROUP=id -gn ${USER} MACHINE_ARCH=bitbake -e | sed -n 's/^MACHINE_ARCH=\"\(.*\)\"/\1/p' DEPLOY_DIR_IMAGE=bitbake -e | sed -n 's/^DEPLOY_DIR_IMAGE=\"\(.*\)\"/\1/p' #Get value of varibale MACHINE_INE and DEPLOY_DIR_IMAGE LSB_IMAGE=poky-image-lsb-${MACHINE_ARCH}-test.ext3

ECHO() { echo -e "${green}$@" tput sgr0 }

ERROR() { echo -e "${red}$@" tput sgr0 exit 1 }

exit_check() { [ ? -ne 0 ] && exit ? }

usage() { ECHO "Usage: PC$ create-lsb-image ARCH ROOTFS_IMAGE" ECHO " ARCH: x86 or x86-64 or ppc32" ECHO " ROOTFS_IMAGE:
Name of the rootfs image with suffix "tar.bz2""

ECHO ""
ECHO "Examples:"
ECHO "       PC\$ creat-lsb-image \

x86 poky-image-lsb-qemux86-20110317030443.rootfs.tar.bz2" exit 1 }

#There should be two parameters to get machine type and name of image if [ $# -ne 2 ]; then usage fi

#Get list for lsb test suite case ${1} in "x86") T_ARCH=ia32 P_ARCH=i486 COM_PACKAGE_LIST="lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz" ;; "x86-64") T_ARCH=amd64 P_ARCH=x86_64 MACHINE_ARCH=${MACHINE_ARCH/x86_64/x86-64} COM_PACKAGE_LIST="lsb-dist-testkit-4.1.0-5.${P_ARCH}.tar.gz" ;; "ppc32") P_ARCH=ppc T_ARCH=${1} COM_PACKAGE_LIST="lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz" ;; *) usage ;; esac

APP_PACKAGE_RPMLIST="lsb-apache-2.2.14-3.lsb4.${P_ARCH}.rpm
lsb-tcl-8.5.7-6.lsb4.${P_ARCH}.rpm
lsb-expect-5.43.0-11.lsb4.${P_ARCH}.rpm
lsb-groff-1.20.1-5.lsb4.${P_ARCH}.rpm
lsb-raptor-1.4.19-3.lsb4.${P_ARCH}.rpm
lsb-xpdf-1.01-10.lsb4.${P_ARCH}.rpm
lsb-samba-3.4.3-5.lsb4.${P_ARCH}.rpm
lsb-rsync-3.0.6-3.lsb4.${P_ARCH}.rpm"

APP_PACKAGE_SOURCELIST="expect-tests.tar
tcl-tests.tar
raptor-tests.tar
test1.pdf
test2.pdf"

PACKAGE_LIST="${COM_PACKAGE_LIST}
${APP_PACKAGE_RPMLIST}
${APP_PACKAGE_SOURCELIST}"

#Version for lsb test suite RELEASE=released-4.1.0 #Tools of download packages WGET="wget -c -t 5" SERVER1="
http://ftp.linuxfoundation.org/pub/lsb/bundles/${RELEASE}/dist-testkit" SERVER2="
http://ftp.linux-foundation.org/pub/lsb/app-battery/${RELEASE}/${T_ARCH}" SERVER3="http://ftp.linuxfoundation.org/pub/lsb/snapshots/appbat/tests"

#Function for downloading package from URL pointed download() {

for i in $@; do
    ECHO "  -->Downloading package \"${i}\""
    PACKAGE_NAME=${i}
    suffix=${PACKAGE_NAME##*.}
    if [ "$suffix" = "gz" ];then
        ${WGET} ${SERVER1}/${i}
    elif [ "$suffix" = "rpm" ];then
        ${WGET} ${SERVER2}/${i}
    else
        ${WGET} ${SERVER3}/${i}
    fi
done

}

#Check lsb image [ ! -d $DEPLOY_DIR_IMAGE ] && ERROR "\ Image directory does not exist: ${DEPLOY_DIR_IMAGE}"

ECHO "Entering directory $DEPLOY_DIR_IMAGE" cd $DEPLOY_DIR_IMAGE

if [ ! -f ${2} ]; then ECHO "rootfs image "${2}" not found in ${DEPLOY_DIR_IMAGE}" ECHO "Please copy "${2}" to "${DEPLOY_DIR_IMAGE}"" exit 1 fi

#Umount lsbtmp [ ! -d lsbtmp ] && mkdir lsbtmp

#Download lsb test suite mkdir -p lsb-test-suite-${MACHINE_ARCH} ||
ERROR "Couldn't find lsb test suite for ${MACHINE_ARCH}" cd lsb-test-suite-${MACHINE_ARCH} ECHO "Downloading lsb test suite, it would take some time..." download ${PACKAGE_LIST}

cd ..

#Creat lsb image if [ -f ${LSB_IMAGE} ];then sudo umount lsbtmp > /dev/null 2>&1 ECHO "Removing old lsb image..." /bin/rm ${LSB_IMAGE} > /dev/null 2>&1 fi

ECHO "Creating a 8GB file for the lsb image" dd if=/dev/zero of=${LSB_IMAGE} bs=1M count=8000 > /dev/null 2>&1 exit_check

ECHO "Formatting ext3 image..." mkfs.ext3 -q -F ${LSB_IMAGE} > /dev/null 2>&1 tune2fs -j ${LSB_IMAGE} > /dev/null 2>&1

ECHO "Generating final image" [ ! -d lsbtmp ] && mkdir lsbtmp

#Install file system and lsb test suite to lsb image sudo mount -o loop ${LSB_IMAGE} lsbtmp exit_check

ECHO " ->Installing rootfs..." sudo tar jpxf ${2} -C lsbtmp exit_check

ECHO " ->Installing lsb test suite..." cd lsb-test-suite-${MACHINE_ARCH} if [ "${1}" = "x86-64" ]; then sudo tar zpxf lsb-dist-testkit-4.1.0-5.${P_ARCH}.tar.gz -C ../lsbtmp else sudo tar zpxf lsb-dist-testkit-4.1.0-5.${T_ARCH}.tar.gz -C ../lsbtmp fi exit_check

sudo mkdir ../lsbtmp/lsb-Application sudo cp *.rpm *.tar *.pdf ../lsbtmp/lsb-Application exit_check cd ..

if [ -f modules--${MACHINE_ARCH}.tgz ];then ECHO " ->Installing moudles of driver..." sudo tar zpxf modules--${MACHINE_ARCH}.tgz -C lsbtmp/ fi

#Unmount lsbtmp sudo umount lsbtmp exit_check sudo rm -rf lsbtmp

#Change file attribute sudo chown ${OWNER}:${GROUP} ${LSB_IMAGE} exit_check sudo chmod 755 ${LSB_IMAGE} exit_check

#Set up link ln -sf ${LSB_IMAGE} poky-image-lsb-${MACHINE_ARCH}.ext3

ECHO "The LSB test environment has been setup successfully." ECHO "Please run this image on platform ${MACHINE_ARCH}"