distribution/packages/jelos/sources/scripts/system-upgrade

113 lines
3.1 KiB
Text
Raw Normal View History

2022-03-08 11:48:16 +00:00
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2020-present Fewtarius
. /etc/profile
ORGANIZATION="JustEnoughLinuxOS"
2022-04-11 22:14:56 +00:00
BRANCH="$(get_setting updates.branch)"
if [ "${BRANCH}" == "dev" ]
then
PROJECT="distribution-dev"
else
PROJECT="distribution"
fi
2022-04-11 22:14:56 +00:00
FORCE="$(get_setting updates.force)"
GIT_REPO="https://github.com/${ORGANIZATION}/${PROJECT}"
GIT_API="https://api.github.com/repos/${ORGANIZATION}/${PROJECT}"
2022-03-08 11:48:16 +00:00
UPDATE_PATH="/storage/.update"
EXTENSION="tar"
2022-03-08 11:48:16 +00:00
function check_network() {
GW=$(ip route | awk '/eth0/ {a=$0} END{print $1}')
if [[ ${GW} =~ [0-9] ]]
then
echo true
else
echo false
fi
}
get_available() {
echo $(df | awk '/'$1'/ {printf $4; exit}')
}
get_size() {
echo $(df | awk '/'$1'/ {printf $2; exit}')
}
check_space() {
MYSIZE="$(get_$1 $2)"
VOLNAME="$3"
REQUIRED="$4"
if [ "${MYSIZE}" -lt "${REQUIRED}" ]
then
NEEDED=$(( (${REQUIRED} - ${MYSIZE} ) / 1024 ))
echo -e "There is not enough free space available ${VOLNAME} to install this update. Free up an additional ${NEEDED}MB, or reflash the newer version."
echo "Exiting in 5 seconds..." && sleep 5
2022-03-08 11:48:16 +00:00
exit 1
fi
}
ONLINE_STATUS=$(check_network)
if [ ! "${ONLINE_STATUS}" == true ]
then
echo "System not online, cannot continue..."
echo "Exiting in 5 seconds..." && sleep 5
2022-03-08 11:48:16 +00:00
exit 0
fi
echo -e "=> ${OS_NAME} UPGRADE UTILITY"
2022-03-08 11:48:16 +00:00
# Check storage
check_space size flash boot 2048000 2>/dev/null
if [ "$(mountpoint -q /storage/roms)" ]
then
check_space available .update GAMES 4096000 2>/dev/null
fi
2022-03-08 11:48:16 +00:00
# Download
LATEST_RELEASE_TAG=$(curl -H 'Cache-Control: no-cache' -Ls "${GIT_API}/releases" | python -c "import sys, json; print(json.load(sys.stdin)[0]['tag_name'])")
2022-04-11 22:14:56 +00:00
if [ "${OS_VERSION}" -ge "${LATEST_RELEASE_TAG}" ] && [ ! "${FORCE}" = "1" ]
2022-03-08 11:48:16 +00:00
then
echo "No new updates are available..."
echo "Exiting in 5 seconds..." && sleep 5
2022-03-08 11:48:16 +00:00
exit 0
fi
echo -e "\nFetching: ${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION}"
curl -Lo "${UPDATE_PATH}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION}" "${GIT_REPO}/releases/download/${LATEST_RELEASE_TAG}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.tar"
echo -e "Fetching: ${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION}.sha256"
curl -Lo "${UPDATE_PATH}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION}.sha256" "${GIT_REPO}/releases/download/${LATEST_RELEASE_TAG}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.tar.sha256"
2022-03-08 11:48:16 +00:00
echo -e "\nVerifying download, please wait..."
2022-03-08 11:48:16 +00:00
# Verify
MYSUM=$(sha256sum ${UPDATE_PATH}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION} | awk '{print $1}')
DLSUM=$(cat ${UPDATE_PATH}/${OS_NAME}-${HW_DEVICE}.${HW_ARCH}-${LATEST_RELEASE_TAG}.${EXTENSION}.sha256 | awk '{print $1}')
2022-03-08 11:48:16 +00:00
if [ ! "${MYSUM}" == "${DLSUM}" ]
then
echo "Verification failed, cleaning up and exiting..."
2022-03-12 11:15:45 +00:00
rm -f ${UPDATE_PATH}/*
sleep 5
clear
2022-03-08 11:48:16 +00:00
exit 1
else
echo "Verification successful..."
2022-03-08 11:48:16 +00:00
fi
2022-04-11 22:14:56 +00:00
if [ "${FORCE}" == "1" ]
then
set_setting updates.force 0
fi
echo -e "\nRebooting to complete OS upgrade..."
2022-03-08 11:48:16 +00:00
sync
sleep 3
2022-03-08 11:48:16 +00:00
reboot