123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- #!/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}"
|