summaryrefslogtreecommitdiff
path: root/scripts/create-lsb-image
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/create-lsb-image')
-rwxr-xr-xscripts/create-lsb-image228
1 files changed, 228 insertions, 0 deletions
diff --git a/scripts/create-lsb-image b/scripts/create-lsb-image
new file mode 100755
index 000000000..94cb33767
--- /dev/null
+++ b/scripts/create-lsb-image
@@ -0,0 +1,228 @@
+#!/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=${ARCH}
+ 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}"