#!/bin/sh
HOMEDIR=`pwd`
TMP=.tmp
NEXT_LIST=.tmp2

GROUP=$1
SVNUSER=$2
SVNPASS=$3
SVNURL=$4
SVNPORT=$5
MAKETYPE=$6
CPUTYPE=$7

if [ ! -e "$HOMEDIR"/.firstrun ]; then
	echo "[make-ipk] first run remove old ipkg-build and ipkg-make-index links"
	sudo rm /bin/ipkg-build
	sudo rm /sbin/ipkg-build
	sudo rm /bin/ipkg-make-index
	sudo rm /sbin/ipkg-make-index
	touch "$HOMEDIR"/.firstrun 
fi

if [ `which ipkg-build | wc -l` -eq 0 ]; then
	sudo ln -s $HOMEDIR/ipkg-utils-050831/ipkg-build /bin
fi
if [ `which ipkg-make-index | wc -l` -eq 0 ]; then
	sudo ln -s $HOMEDIR/ipkg-utils-050831/ipkg-make-index /bin
fi
if [ `which gzip | wc -l` -eq 0 ]; then
	echo "[make-ipk] install gzip"
	echo "[make-ipk] apt-get install gzip"
	exit
elif [ `which python2.6 | wc -l` -eq 0 ]; then
	echo "[make-ipk] install python2.6 | search python2.6_2.6.1-1_i386.deb"
	exit
elif [ `which wput | wc -l` -eq 0 ]; then
	echo "[make-ipk] install wput v0.6.2"
	echo "[make-ipk] apt-get install wput"
	exit
fi

if [ "$MAKETYPE" = "online" ];then
	WPUTCHECK=`wput --version | tr " " "\n" | tail -n1 | sed 's/\.//' | sed 's/\.//'`
	echo WPUTCHECK $WPUTCHECK
	if [ "$WPUTCHECK" -gt "061" ]; then
		echo "[make-flash] wput0.6.2 ok"
	else
		echo "[make-ipk] install wput0.6.2"
		echo "[make-ipk] cd /src"
		echo "[make-ipk] wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/wput-0.6.2.tar.gz"
		echo "[make-ipk] tar -zxvf wput-0.6.2.tar.gz"
		echo "[make-ipk] cd wput-0.6.2"
		echo "[make-ipk] ./configure"
		echo "[make-ipk] make"
		echo "[make-ipk] make install"
		exit
	fi
fi

if [ $# -ne 7 ]; then
	echo "|------------------------------------------------------------------------------------|"
	echo "|                                                                                    |"
	echo "| IPK Make Script                                                                    |"
	echo "|                                                                                    |"
	echo '| use ./make-ipk <group> <svnuser> <svnpass> <svnurl> <svnport> <maketype> <cputype> |'
	echo "|                                                                                    |"
	echo "| for group <dev|update>                                                             |"
	echo "| for svnuser <your>                                                                 |"
	echo "| for svnpass <your>                                                                 |"
	echo "| for svnurl <your>                                                                  |"
	echo "| for svnport <your>                                                                 |"
	echo "| for maketype <online|offline>                                                      |"
	echo "| for cputype <sh4|mipsel>                                                           |"
	echo "|                                                                                    |"
	echo "|------------------------------------------------------------------------------------|"
	echo "|                                                          v1.1@dev-team             |"
	echo "|------------------------------------------------------------------------------------|"
	exit 1
fi

if [ $GROUP = "dev" ] || [ $GROUP = "update" ];then
	echo "[make-ipk] group=$GROUP"
else
	echo "[make-ipk] group <dev|update>"
	exit 1
fi

if [ $MAKETYPE = "online" ] || [ $MAKETYPE = "offline" ];then
	echo "[make-ipk] maketype=$MAKETYPE"
else
	echo "[make-ipk] maketype <online|offline>"
	exit 1
fi

if [ $CPUTYPE = "sh4" ] || [ $CPUTYPE = "mipsel" ];then
	echo "[make-ipk] cputype=$CPUTYPE"
else
	echo "[make-ipk] cputype <sh4|mipsel>"
	exit 1
fi

rm -rf "$HOMEDIR"/BUILD
rm -rf "$HOMEDIR"/BUILDRELEASE

mkdir -p "$HOMEDIR"/BUILD
mkdir -p "$HOMEDIR"/BUILDRELEASE

svn co --username $SVNUSER --password $SVNPASS svn://"$SVNURL":"$SVNPORT"/image/scripts $HOMEDIR/scripts
svn co --username $SVNUSER --password $SVNPASS svn://"$SVNURL":"$SVNPORT"/image/config $HOMEDIR/config

. ./config/make-config

if [ $CPUTYPE = "sh4" ];then
	cp -a "$HOMEDIR"/source.sh4/* "$HOMEDIR"/BUILD
elif [ $CPUTYPE = "mipsel" ];then
	cp -a "$HOMEDIR"/source.sh4/spinner* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/settings* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/radio* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/p* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/m* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/i* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/game* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/fonts* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/epg* "$HOMEDIR"/BUILD
	cp -a "$HOMEDIR"/source.sh4/editor* "$HOMEDIR"/BUILD
	sleep 5
	rm -r "$HOMEDIR"/BUILD/*/CONTROL/pre*
	sed -i 's/sh4/mipsel/g' "$HOMEDIR"/BUILD/*/CONTROL/control
	cp -a "$HOMEDIR"/source.mipsel/* "$HOMEDIR"/BUILD
fi

ls -1 "$HOMEDIR"/BUILD > aaf-flashbeta.txt
cp -a "$HOMEDIR"/bootvideos "$HOMEDIR"/BUILDRELEASE/boot

LIST_LINE=`cat aaf-flashbeta.txt`
ALLOWED=`cat "$HOMEDIR"/aaf-flashbeta_allowed`

cd "$HOMEDIR"/BUILD	

echo "[make-ipk] set executable Folder rights 755 to CONTROL bin sbin emu"
chmod -R 755 `find "$HOMEDIR"/BUILD -type d -name "CONTROL"` > /dev/null 2>&1
chmod -R 755 `find "$HOMEDIR"/BUILD -type d -name "bin"` > /dev/null 2>&1
chmod -R 755 `find "$HOMEDIR"/BUILD -type d -name "sbin"` > /dev/null 2>&1	
chmod -R 755 `find "$HOMEDIR"/BUILD -type d -name "emu"` > /dev/null 2>&1

for ROUND in $ALLOWED; do
	for DIR in $LIST_LINE; do
		echo $DIR > $TMP
		if [ ! `grep "$ROUND" $TMP | wc -l` -eq 0 ]; then 
			echo "[make-ipk] ROUND $ROUND == $DIR DIR"
			echo $DIR >> $NEXT_LIST
		fi	
	done
done

LIST=`cat $NEXT_LIST`

echo LIST: $LIST

rm -rf `find "$HOMEDIR"/BUILD -type d -name "*.svn"`

###################  SHRINK PYTHON FILES  #########################

"$HOMEDIR"/scripts/kf-pyshrink.sh ./ "$HOMEDIR"/BUILD "$PYTHONVER" "$SKIPPEDSHRINK"

###
cd $HOMEDIR
echo make py var
ls -R -1 "$HOMEDIR"/BUILD | grep "/" | sed 's/.$//' > tmp.txt
LINE=`cat tmp.txt`
for DIR in $LINE; do
	cd $HOMEDIR
	cd $DIR
	echo "[make-ipk] dir $DIR"
	ls -1 *.py > "$HOMEDIR"/pylist.tmp
	PYLINE=`cat "$HOMEDIR"/pylist.tmp`
	for RPY in $PYLINE; do
		python2.6 -OO "$HOMEDIR"/scripts/mkpyc.py $RPY
		PYO=`echo "$RPY" | sed "s/.py$/.pyo/"`
		PYC=`echo "$RPY" | sed "s/.py$/.pyc/"`
		if [ $CPUTYPE = "sh4" ];then
			mv $PYO $PYC
		elif [ $CPUTYPE = "mipsel" ];then
			mv $PYC $PYO
		fi
		if [ $? -ne 0 ]; then
			echo "[make-ipk] Fehler beim kompilieren $RPY"
		fi
	done
done
cd $HOMEDIR
###
rm "$HOMEDIR"/pylist.tmp
rm -rf `find "$HOMEDIR"/BUILD -type f -name "*.py" -print`
if [ $CPUTYPE = "sh4" ];then
	rm -rf `find "$HOMEDIR"/BUILD -type f -name "*.pyo" -print`
elif [ $CPUTYPE = "mipsel" ];then
	rm -rf `find "$HOMEDIR"/BUILD -type f -name "*.pyc" -print`
fi
rm -rf "$HOMEDIR"/preview
mkdir "$HOMEDIR"/preview

###################  SHRINK PNG FILES  #########################

PNGFILES=`find "$HOMEDIR"/BUILD -type f -name "*.png" -print`

for DIR in $PNGFILES; do
	echo "[make-ipk] PNG: $DIR"
	/usr/bin/advpng -4 -z $DIR #> /dev/null 2>&1
done

###################  STRIPPED ALL FILES  #########################
if [ $CPUTYPE = "sh4" ];then
	FILEALL=`find "$HOMEDIR"/BUILD -name "*" -print`

	if ( test -f "$HOMEDIR"/scripts/sh4-linux-strip ); then
		echo ""
		echo "[make-ipk] Files strippen"
		echo ""
		for FILE in $FILEALL
		do
			echo $FILE | grep ".ko" >/dev/null 2>&1
			if [ $? -eq 0 ]; then param="--strip-unneeded --remove-section=.comment"; else param="-s --remove-section=.comment"; fi
			"$HOMEDIR"/scripts/sh4-linux-strip $param $FILE > /dev/null 2>&1
			if [ $? -eq 0 ]; then
				echo "[make-ipk] Strippe: $FILE"
			fi
		done
	else
		echo ""
		echo "[make-ipk] Files strippen konnte nicht durchgefuehrt werden, da sh4-linux-strip fehlt."
	fi
fi

for DIR in $LIST; do
	echo "[make-ipk] $DIR"
	NAME=`cat "$HOMEDIR"/BUILD/"$DIR"/CONTROL/control | grep Package: | tr " " "\n" | tr "-" "\n" | tail -n 1 | cut -d . -f1 | head -n1`
#	ARCH=`cat "$HOMEDIR"/BUILD/"$DIR"/CONTROL/control | grep Architecture: | tr " " "\n" | tail -n 1`
#	cp "$HOMEDIR"/BUILD/"$DIR"/preview/prev.png "$HOMEDIR"/preview/enigma2-pluginpreview-"$NAME"_"$ARCH".ipk.png
	cp "$HOMEDIR"/BUILD/"$DIR"/preview/prev.png "$HOMEDIR"/preview/enigma2-pluginpreview-"$NAME".png
	rm -r "$HOMEDIR"/BUILD/"$DIR"/preview
done


cd "$HOMEDIR"/BUILDRELEASE

for DIR in $LIST; do
	ipkg-build "$HOMEDIR"/BUILD/"$DIR"
done

date=`date`
echo "[make-ipk] make-index"
rm Packages*

ipkg-make-index -l Packages.filelist -p Packages -v .

echo "Here is the public AAF-Flash-PlugList" > PlugList
echo "" >> PlugList
cat Packages | grep Filename: | sed "s/Filename: enigma2-plugin-//" | sed "s/.ipk//" | sed "s/_sh4//" | sed "s/_/ V/" >> PlugList
rm test.txt
echo "" >> PlugList
echo "mfg AAF-TEAM @ $date" >> PlugList
echo "done"

rm .tmp*
rm tmprc

cd "$HOMEDIR"
tar czvf Packages.preview.tar.gz ./preview

mv "$HOMEDIR"/Packages.preview.tar.gz "$HOMEDIR"/BUILDRELEASE

cd "$HOMEDIR"/BUILDRELEASE

PACKAGESLIST=`ls -1 Packages*`
IPKLIST=`ls -1 *.ipk`

if [ $GROUP = "update" ] && [ $MAKETYPE = "online" ] && [ $CPUTYPE = "sh4" ];then
	for ROUND in $PACKAGESLIST; do
		wput -u "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
	done
	for ROUND in $IPKLIST; do
		wput -u "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
	done
	wput "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/PlugList
	wput "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/Packages.preview.tar.gz
	cd boot
	BOOTLIST=`ls -1`
	for ROUND in $BOOTLIST; do
		wput -u "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/boot/"$ROUND"
	done
elif [ $GROUP = "dev" ] && [ $MAKETYPE = "online" ] && [ $CPUTYPE = "sh4" ];then
	BTIME=`date +"%Y.%m.%d_%H.%M.%S"`
	echo quote USER $URLBETAUSER >"$HOMEDIR"/ftp.txt
	echo quote PASS $URLBETAPASS >>"$HOMEDIR"/ftp.txt
#	echo cd "$WWWMAIN"/"$IPKGCROSS_BETA" >>"$HOMEDIR"/ftp.txt
#        echo cd "$WWWMAIN" >>"$HOMEDIR"//ftp.txt
	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages >>"$HOMEDIR"/ftp.txt
	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.filelist >>"$HOMEDIR"/ftp.txt
	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.gz >>"$HOMEDIR"/ftp.txt
	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/PlugList >>"$HOMEDIR"/ftp.txt
	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.preview.tar.gz >>"$HOMEDIR"/ftp.txt

#	echo rename aaf-flash-beta aaf-flash-beta_old_"$URLBETAUSER"_"$BTIME" >>"$HOMEDIR"/ftp.txt
	echo quit >>"$HOMEDIR"/ftp.txt
	ftp -n "$URLBETA" < "$HOMEDIR"/ftp.txt 

	sleep 5
	for ROUND in $PACKAGESLIST; do
		wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
	done
	for ROUND in $IPKLIST; do
		wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
	done
	wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/PlugList
	wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.preview.tar.gz

	cd boot
	BOOTLIST=`ls -1`
	for ROUND in $BOOTLIST; do
		wput -u "$BETARELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/boot/"$ROUND"
	done
fi

echo "[make-ipk] done"

exit 0
