#!/bin/sh

echo "Doing pre-install ..." > /dev/console

#
# NOTE: to handle package built by different tool chain issue
#       by andy 2012/01/30
#
# start
MONTAVISTA_LAST_REVISION="34713"
CUR_REVISION="`cat /zyxel/mnt/info/revision`"
INSTALLED_PKGS="/tmp/pkgs"
pkgsInstalled=""
RM_PKG_LIB_FLAG="/tmp/remove_package_libraries"

# check firmware revision
echo "*** current revision: ${CUR_REVISION}"
echo "*** montavista last revision: ${MONTAVISTA_LAST_REVISION}"
if [ ${CUR_REVISION} -le ${MONTAVISTA_LAST_REVISION} ]; then
        # save all package names to file "${INSTALLED_PKGS}"
        /usr/bin/ipkg-cl -f /etc/zyxel/zy-pkg.conf -t /usr/local/zy-pkgs/tmp list | egrep "(pkgName:)|(status:)" > ${INSTALLED_PKGS}

        # retrieve installed packages to "pkgsInstalled"
        while read line ; do
                foundpkg="`echo ${line} | grep "^pkgName:" | awk -F' ' '{print $2}'`"
                if [ "${foundpkg}" = "" ]; then
                        pkgstatus="`echo ${line} | grep "status:" | awk -F' ' '{print $2}'`"
                        if [ "${pkgstatus}" = "Built-in" ]; then
                                pkgsInstalled="${pkgsInstalled} ${pkgname}"
                        elif [ "${pkgstatus}" = "Enabled" ]; then
                                pkgsInstalled="${pkgsInstalled} ${pkgname}"
                        elif [ "${pkgstatus}" = "Disabled" ]; then
                                pkgsInstalled="${pkgsInstalled} ${pkgname}"
                        fi
                else
                        pkgname="${foundpkg}"
                fi
        done < ${INSTALLED_PKGS}

        # uninstall all installed packages
        if [ "${pkgsInstalled}" != "" ]; then
        	echo "*** package to be removed: ${pkgsInstalled}"
                /usr/bin/ipkg-cl -f /etc/zyxel/zy-pkg.conf -t /usr/local/zy-pkgs/tmp -recursive remove ${pkgsInstalled}
        else
                echo "*** no package installed now ***"
        fi
    # remove all zpkg files and ZYPKGS in admin/zy-pkgs
	rm /i-data/md0/admin/zy-pkgs/ZYPKGS
	rm /i-data/md0/admin/zy-pkgs/*.zpkg

        # show result
        /usr/bin/ipkg-cl -f /etc/zyxel/zy-pkg.conf -t /usr/local/zy-pkgs/tmp list | egrep "(pkgName:)|(status:)"

	# set flag to remove all package libraries
	touch ${RM_PKG_LIB_FLAG}
else
        echo "*** it's already new firmware, do nothing here. ***"
fi
# end

echo " ... pre-install finishes!" > /dev/console
exit 0

