#!/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 ^POKYBASE | 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 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
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
    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 poky-image-lsb-${MACHINE_ARCH}.ext3 ];then
    /bin/rm poky-image-lsb-${MACHINE_ARCH}.ext3
    exit_check
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
fi	
ECHO "creat 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
exit_check
ECHO "Format ext3 image,please input \"y\""
mkfs.ext3 poky-image-lsb-${MACHINE_ARCH}-test.ext3
tune2fs -j  poky-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 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
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} poky-image-lsb-${MACHINE_ARCH}-test.ext3 
exit_check
sudo chmod 755 poky-image-lsb-${MACHINE_ARCH}-test.ext3
exit_check

#set up link
if [ -L poky-image-lsb-${MACHINE_ARCH}.ext3 ];then
ECHO "Set up link"
    /bin/rm poky-image-lsb-${MACHINE_ARCH}.ext3
    exit_check
fi
ln -s poky-image-lsb-${MACHINE_ARCH}-test.ext3 poky-image-lsb-${MACHINE_ARCH}.ext3

ECHO "LSB test environment is set successfully, Please run this image on platform ${MACHINE_ARCH}"