distribution/packages/jelos/sources/post-update
fewtarius 170791a9c7
* Refactors setsettings to greatly improve performance.
* Fixes the memory and gpu governor function for RK3399 and S922X.
* Automatically set the aspect ratio in EmulationStation.
2023-07-19 15:29:53 +00:00

196 lines
5.4 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: Apache-2.0
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
. /etc/profile
LOG="/var/log/boot.log"
### This script contains items that we only want to execute after a JELOS upgrade,
### or after a fresh installation.
### Items in this block should always run after updates.
################################################################################
echo "Rebuild library cache..." >>${LOG}
### Rebuild the library cache
rm -f /storage/.cache/ld.so.cache
ldconfig -X
echo "Sync configuration files..." >>${LOG}
### Sync configurations
if [ -d "/storage/.config/system/configs" ]
then
EXCLUDE="--exclude=configs"
fi
### Remove and link es configs so they are managed with OS updates.
for es_cfg in es_features.cfg es_systems.cfg
do
mv /storage/.config/emulationstation/${es_cfg} /storage/.config/emulationstation/last_${es_cfg} >/dev/null 2>&1
ln -s /usr/config/emulationstation/${es_cfg} /storage/.config/emulationstation/${es_cfg} >/dev/null 2>&1
done
rsync -a --delete ${EXCLUDE} /usr/config/system/ /storage/.config/system/
rsync -a --ignore-existing /usr/config/game /storage/.config/
rsync -a /usr/config/modules /storage/.config/
echo "Update logo..." >>${LOG}
FBWIDTH=$(fbset | awk '/geometry/ {print $2}')
FBHEIGHT=$(fbset | awk '/geometry/ {print $3}')
ASPECT=$(printf "%.2f" $(echo "(${FBWIDTH} / ${FBHEIGHT})" | bc -l))
case ${ASPECT} in
1.50|0.67)
ASPECT="3:2"
;;
1.33|0.75)
ASPECT="4:3"
;;
1.67|0.60)
ASPECT="5:3"
;;
1.76|0.56)
ASPECT="16:9"
;;
1.6|0.62)
ASPECT="16:10"
;;
esac
### Set the aspect ratio in ES.
ES_CONFIG="/storage/.config/emulationstation/es_settings.cfg"
ES_ASPECT="${ASPECT/:/-}"
if [ "$(grep subset.aspect-ratio ${ES_CONFIG})" ]
then
sed -i 's|<string name="subset.aspect-ratio".*$|<string name="subset.aspect-ratio" value="'${ES_ASPECT}'"/>|g' ${ES_CONFIG}
else
sed -i '/<\/config>/i \\t<string name="subset.aspect-ratio" value="'${ES_ASPECT}'"/>' ${ES_CONFIG}
fi
if [ -f "/storage/.config/emulationstation/resources/logo.png" ]
then
rm -f /storage/.config/emulationstation/resources/logo.png ||:
fi
convert /usr/config/splash/splash.png \
-gravity center \
-crop ${ASPECT} +repage \
/tmp/.logo.png
convert /tmp/.logo.png \
-quality 100 \
-resize ${FBWIDTH}x${FBHEIGHT} \
-background black \
-gravity center \
/storage/.config/emulationstation/resources/logo.png
rm -f /tmp/.logo.png
echo "Sync modules..." >>${LOG}
rsync -a /usr/config/modules/* /storage/.config/modules/
cp -f /usr/config/retroarch/retroarch-core-options.cfg /storage/.config/retroarch/retroarch-core-options.cfg
### Apply developer ssh keys if they exist
echo "Apply dev keys if available..." >>${LOG}
if [ -e /usr/config/ssh/authorized_keys ]
then
cp /usr/config/ssh/authorized_keys /storage/.ssh
fi
### Sync rsync configs
echo "Update rsync configuration files..." >>${LOG}
rsync --ignore-existing /usr/config/rsync-rules.conf /storage/.config/
rsync --ignore-existing /usr/config/rsync.conf /storage/.config/
### Sync locale data
rsync -a --delete /usr/config/locale/* /storage/.config/locale/ >>/var/log/configure.log 2>&1
rm -rf /storage/.config/emulationstation/locale >>/var/log/configure.log 2>&1 ||:
ln -sf /usr/share/locale /storage/.config/emulationstation/locale >>/var/log/configure.log 2>&1 ||:
### Add items below this line that are safe to remove after a period of time.
################################################################################
### Fix docker storage path (dev build issue only)
if [ -e "/usr/bin/docker" ] && \
[ ! -d "/storage/.config/docker" ]
then
cp -rf /usr/config/docker /storage/.config
fi
### Ensure panel properties exist.
for DPROP in brightness contrast saturation hue
do
DBRI=$(get_setting display.${DPROP})
if [ -z "${DBRI}" ]
then
set_setting display.${DPROP} 50
fi
done
### Update JSListen
for JSL in jslisten_hotkeys jslisten_profile
do
cp -f /usr/config/${JSL} /storage/.config
done
### Add properties for enhanced power savings control.
AUDIOPOWERSAVE=$(get_setting system.power.audio)
if [ -z "${AUDIOPOWERSAVE}" ]
then
set_setting system.power.audio 1
fi
CPUPOWERSAVE=$(get_setting system.power.cpu)
if [ -z "${CPUPOWERSAVE}" ]
then
set_setting system.power.cpu 1
fi
PCIEPOWERSAVE=$(get_setting system.power.pcie)
if [ -z "${PCIEPOWERSAVE}" ]
then
set_setting system.power.pcie 0
fi
RTPM=$(get_setting system.power.rtpm)
if [ -z "${RTPM}" ]
then
set_setting system.power.rtpm 0
fi
WAKEEVENTS=$(get_setting system.power.wakeevents)
if [ -z "${WAKEEVENTS}" ]
then
set_setting system.power.wakeevents 0
fi
WIFIPOWERSAVE=$(get_setting system.power.wifi)
if [ -z "${WIFIPOWERSAVE}" ]
then
set_setting system.power.wifi 0
fi
AUDIBLEALERT=$(get_setting system.battery.warning)
if [ -z "${AUDIBLEALERT}" ]
then
set_setting system.battery.warning 1
fi
### Revert the recent ES PowerSavingMode change.
sed -i 's#<string name="PowerSaverMode".*$#<string name="PowerSaverMode" value="default"/>#g' /storage/.config/emulationstation/es_settings.cfg
### Remove properties containing "auto" from the system config.
sed -i "/^.*=auto/d" /storage/.config/system/configs/system.cfg
### Fix up music player to start selection
if [ -d "/storage/.local/share/gmu" ]
then
rm -rf /storage/.local/share/gmu
fi
if [ ! -d "/storage/.config/gmu/playlists" ]
then
mkdir -p /storage/.config/gmu/playlists
fi
cp -rf /usr/config/gmu/playlists/* /storage/.config/gmu/playlists/