From a72e31a1a2943b643334a8cd72bed07b946686c0 Mon Sep 17 00:00:00 2001 From: Ian Leonard Date: Fri, 26 Jun 2020 20:55:40 +0000 Subject: [PATCH] system: make configuration restore less selective on backup file names Restoring system settings expects a filename of 14 characters followed by .tar ($DATESTAMP.tar from the backup file the addon creates). Change to glob onto whatever *.tar file gets put into /storage/.restore/ at the busybox init and system restore level. The addon still creates and expects the $DATESTAMP.tar file, so users will need to use this feature by ssh or other method. Signed-off-by: Ian Leonard --- .../mediacenter/LibreELEC-settings/package.mk | 6 ++- .../LibreELEC-settings/scripts/backup-restore | 41 ++++++++----------- packages/sysutils/busybox/scripts/init | 2 +- 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/packages/mediacenter/LibreELEC-settings/package.mk b/packages/mediacenter/LibreELEC-settings/package.mk index fc5929b782..a18b39f1a4 100644 --- a/packages/mediacenter/LibreELEC-settings/package.mk +++ b/packages/mediacenter/LibreELEC-settings/package.mk @@ -14,14 +14,16 @@ PKG_LONGDESC="LibreELEC-settings: is a settings dialog for LibreELEC" PKG_MAKE_OPTS_TARGET="DISTRONAME=$DISTRONAME ROOT_PASSWORD=$ROOT_PASSWORD" if [ "$DISPLAYSERVER" = "x11" ]; then - PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET setxkbmap" + PKG_DEPENDS_TARGET+=" setxkbmap" else - PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bkeymaps" + PKG_DEPENDS_TARGET+=" bkeymaps" fi post_makeinstall_target() { mkdir -p $INSTALL/usr/lib/libreelec cp $PKG_DIR/scripts/* $INSTALL/usr/lib/libreelec + sed -e "s/@DISTRONAME@/$DISTRONAME/g" \ + -i $INSTALL/usr/lib/libreelec/backup-restore ADDON_INSTALL_DIR=$INSTALL/usr/share/kodi/addons/service.libreelec.settings diff --git a/packages/mediacenter/LibreELEC-settings/scripts/backup-restore b/packages/mediacenter/LibreELEC-settings/scripts/backup-restore index 3ed483a5e1..7e6a1b1057 100755 --- a/packages/mediacenter/LibreELEC-settings/scripts/backup-restore +++ b/packages/mediacenter/LibreELEC-settings/scripts/backup-restore @@ -2,39 +2,33 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv) . /usr/lib/libreelec/functions -# Get NAME, which is DISTRONAME, ie. LibreELEC -. /etc/os-release - hidecursor -BACKUP_FILE=`ls -1 /storage/.restore/??????????????.tar 2>/dev/null | tail -1` +BACKUP_FILE=$(find /storage/.restore/ -name "*.tar" -print -quit 2>/dev/null) -if [ -f "$BACKUP_FILE" ] ; then - echo "RESTORE IN PROGRESS" - echo "" - echo "Please do not reboot or turn off your ${NAME} device!" - echo "" + +if [ -f "${BACKUP_FILE}" ]; then + echo -e "RESTORE IN PROGRESS\n" + echo -e "Please do not reboot or turn off your @DISTRONAME@ device!\n" StartProgress spinner "Checking backup file... " - tar tf $BACKUP_FILE &>/dev/null - ret=$? + tar tf "${BACKUP_FILE}" &>/dev/null - if [ $ret -eq 0 ] ; then + if [ $? -eq 0 ]; then StopProgress "OK" - echo - echo "This may take some time to complete, please be patient." - echo + echo -e "\nThis may take some time to complete, please be patient.\n" StartProgress spinner "Restoring... " - rm -rf /storage/.kodi &>/dev/null - rm -rf /storage/.cache &>/dev/null - rm -rf /storage/.config &>/dev/null - tar xf $BACKUP_FILE -C / &>/dev/null - rm -f $BACKUP_FILE &>/dev/null + rm -rf /storage/.kodi \ + /storage/.cache \ + /storage/.config &>/dev/null + tar xf "${BACKUP_FILE}" -C / &>/dev/null + rm -f "${BACKUP_FILE}" &>/dev/null sync StopProgress "done!" @@ -43,12 +37,10 @@ if [ -f "$BACKUP_FILE" ] ; then else StopProgress "FAILED" - echo - echo "Backup file is not valid, or corrupt." + echo -e "\nBackup file is not valid, or corrupt.\n" - echo StartProgress spinner "Removing file to allow normal restart... " - rm -f $BACKUP_FILE &>/dev/null + rm -f "${BACKUP_FILE}" &>/dev/null sync StopProgress "done" @@ -57,5 +49,4 @@ if [ -f "$BACKUP_FILE" ] ; then fi fi -sync reboot -f diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 75836220d6..983a85e11c 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -1134,7 +1134,7 @@ if [ "$STORAGE_NETBOOT" = "yes" ]; then echo "" > /sysroot/dev/.storage_netboot fi -BACKUP_FILE=$(ls -1 /sysroot/storage/.restore/??????????????.tar 2>/dev/null | head -n 1) +BACKUP_FILE=$(ls -1 /sysroot/storage/.restore/*.tar 2>/dev/null | head -n 1) if [ -f /sysroot/storage/.please_resize_me ]; then INIT_UNIT="--unit=fs-resize.target"