#!/bin/sh
# python upgrade during boot
# Cypress Solutions (c) 2020
VER=1.0.0

if [ -s /etc/functions-common.sh ]; then
    source /etc/functions-common.sh
fi

TMP_PYTHON_IMG="/var/data/upgrade_python_tmp_img.tar"
PYTHON_UPGRADE_RUNNING_FLAG="/tmp/python_upgrade"

cleanup_before_exit()
{
    rm ${TMP_PYTHON_IMG} &> /dev/null
    rm ${PYTHON_UPGRADE_RUNNING_FLAG} &> /dev/null
    /usr/bin/cmd pwr override 0
}

err_cleanup_and_exit()
{
    echo "Error: Install of Python3 Failed: $1" > /dev/kmsg
    evt_logger "Python installation failed: $1"
    sync
    cleanup_before_exit
    exit $2
}

evt_logger "Python installation started"
sync

/usr/bin/cmd pwr override 1
touch ${PYTHON_UPGRADE_RUNNING_FLAG}

# strip everything until the last slash
pythonimg=$(echo $1 | awk -F'/' '{print $NF}')
echo "Start installing ${pythonimg}" > /dev/kmsg

if [ -z ${pythonimg} ];then
    err_cleanup_and_exit "No python image specified!" 1
fi

echo "Installing python from local console" > /dev/kmsg

mv ${pythonimg} ${TMP_PYTHON_IMG}

# extract tar
# /var/data dir for payload
rm -rf /var/data/.py_upgrade >/dev/null
mkdir /var/data/.py_upgrade
echo "Extracting python image files" > /dev/kmsg
action=$(tar xvf ${TMP_PYTHON_IMG} -C /var/data/.py_upgrade)

cd /var/data/.py_upgrade
echo "Installing python3" > /dev/kmsg
opkg remove *python3*
opkg install *.ipk -d pydir --force-reinstall --nodeps
ret=$?

# clean out all the .pyc files
find /var/data/python/usr/lib/python3.8 -name *.pyc -type f -delete

cd /var/data
rm -rf /var/data/.py_upgrade

if [ "$ret" = "0" ]; then
    echo "Python update completed successfully" > /dev/kmsg
    evt_logger "Python installation successful"
    sync
    cleanup_before_exit
else
    err_cleanup_and_exit "Python installation failed with return code $ret" 1
fi
