distribution/packages/jelos/sources/post-update

175 lines
5.2 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.
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
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}
if [ ! -L "/storage/.config/emulationstation/resources/logo.png" ]
then
rm -f /storage/.config/emulationstation/resources/logo.png ||:
ln -sf /usr/config/splash/splash.png /storage/.config/emulationstation/resources/logo.png
fi
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
echo "Sync theme..." >>${LOG}
cd /usr/share/themes
for theme in *
do
if [ ! -L /storage/.config/emulationstation/themes/${theme} ] && \
[ ! -e /storage/.config/emulationstation/themes/${theme} ]
then
ln -s /usr/share/themes/${theme} /storage/.config/emulationstation/themes
fi
done
cd -
### 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/
### Replace es_systems and es_features with links to manage them
echo "Sync ES configuration files..." >>${LOG}
for es_cfg in es_features.cfg es_systems.cfg
do
if [ -e "/storage/.config/emulationstation/${es_cfg}" ]
then
mv -f /storage/.config/emulationstation/${es_cfg} /storage/.config/emulationstation/last_${es_cfg}
fi
ln -s /usr/config/emulationstation/${es_cfg} /storage/.config/emulationstation/${es_cfg}
done
# Default modules need to be updated to use the new stop/start ui function.
echo "Sync modules (tools)..." >>${LOG}
rsync -av /usr/config/modules/* /storage/.config/modules/
rm -f /storage/.config/modules/{"351Files.sh","Start 32bit Retroarch.sh","JelosAddOns.sh","PortMaster.sh","ThemeMaster.sh"} ||:
# Swap es_input back to a writeable file so external controller configuration works properly.
echo "Make sure es_input isn't a link..." >>${LOG}
if [ -L "/storage/.config/emulationstation/es_input.cfg" ]
then
rm -f /storage/.config/emulationstation/es_input.cfg
cp -f /usr/config/emulationstation/es_input.cfg /storage/.config/emulationstation/es_input.cfg
fi
# Disable integer scaling by default on Handheld
if [[ "${HW_DEVICE}" =~ handheld ]]
then
echo "No integer scaling (Handheld only)..." >>${LOG}
sed -i "s#.integerscale=1#.integerscale=0#g" /storage/.config/system/configs/system.cfg
fi
# If smb.conf doesn't exist in ~/.config, add it.
if [ ! -e "/storage/.config/smb.conf" ]
then
echo "Make sure smb.conf is in .config..." >>${LOG}
cp -f /usr/config/smb.conf /storage/.config
fi
# Set enhanced power saving off by default
ENHPOWER=$(get_setting system.powersave)
if [ -z "${ENHPOWER}" ]
then
echo "Set up enhanced power saving..." >>${LOG}
set_setting system.powersave 0
fi
# Set automatic hotkey management by default.
AUTOHOTKEYS=$(get_setting system.autohotkeys)
if [ -z "${AUTOHOTKEYS}" ]
then
echo "Set up hotkey management..." >>${LOG}
set_setting system.autohotkeys 1
fi
# Swap to schedutil as the default governor
GOVERNOR=$(get_setting system.cpugovernor)
if [ "${GOVERNOR}" = "interactive" ]
then
set_setting system.cpugovernor schedutil
schedutil
fi
# Set the default weston startup to ES
WESTONSTARTUP=$(get_setting weston.startup)
if [ -z "${WESTONSTARTUP}" ]
then
echo "Make sure weston is our default." >>${LOG}
set_setting weston.startup "/usr/bin/start_es.sh"
fi
# Disable PCSX2SA auto update check
if [ -e "/storage/.config/PCSX2/inis/PCSX2.ini" ] && \
[ ! "$(grep -i AutoUpdater /storage/.config/PCSX2/inis/PCSX2.ini)" ]
then
cat <<EOF >>/storage/.config/PCSX2/inis/PCSX2.ini
[AutoUpdater]
CheckAtStartup = false
EOF
fi
# the controller profile has been renamed.
if [ -e "/storage/.config/profile.d/99-controller" ]
then
rm -f /storage/.config/profile.d/99-controller
mkcontroller
fi
# Set a default GPU power savings mode
GPUMODE=$(get_setting system.gpuperf)
if [ -z "${GPUMODE}" ]
then
echo "Set a default GPU power savings mode." >>${LOG}
set_setting system.gpuperf auto
fi
# Set a default for the audio preamp
PREAMP=$(get_setting audio.preamp)
if [ -z "${PREAMP}" ]
then
echo "Set default preamp." >>${LOG}
set_setting audio.preamp 50
fi
# Disable IPv6 by default
IPV6=$(get_setting ipv6.enabled)
if [ -z "${IPV6}" ]
then
echo "Disable ipv6." >>${LOG}
set_setting ipv6.enabled 0
fi
### Force everyone to the stable repo
set_setting updates.branch stable