Compare commits

...

9 commits

6 changed files with 75 additions and 21 deletions

View file

@ -185,14 +185,28 @@ jobs:
echo "[DEBUG] CHECKPOINT 8"
- name: Generate a token for Rekku
id: generate-rekku-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.REKKU_APP_ID }}
private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
repositories: "RetroDECK,Cooker"
owner: "RetroDECK"
- name: "Build flatpak: download only"
id: flatpak-download
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
run: |
git config --global credential.helper store
echo "https://${{ steps.generate-rekku-token.outputs.token }}@github.com" > ~/.git-credentials
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
# Sometimes flatpak download fails, in this case it tries a second time
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: |
git config --global credential.helper store
echo "https://${{ steps.generate-rekku-token.outputs.token }}@github.com" > ~/.git-credentials
echo "Download failed, maybe some hash changed since the build start."
echo "Recalculating hashes and retrying download..."
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"

View file

@ -0,0 +1,9 @@
{
"change_channel": false,
"first-run": true,
"release_channel": "stable",
"show_experimental": false,
"theme": "default_theme",
"theme-scheme": "Dracula",
"version": 2
}

View file

@ -6,11 +6,16 @@
# now disabled as we are importing everything in /app/lib. In case we are breaking something we need to restore this approach
# export LD_LIBRARY_PATH="/app/retrodeck/lib:/app/retrodeck/lib/debug:/app/retrodeck/lib/pkgconfig:$LD_LIBRARY_PATH"
: "${logging_level:=info}" # Initializing the log level variable if not already valued, this will be actually red later from the config file
rd_logs_folder="/var/config/retrodeck/logs" # Static location to write all RetroDECK-related logs
source /app/libexec/logger.sh
rotate_logs
log i "Initializing RetroDECK"
source /app/libexec/050_save_migration.sh
source /app/libexec/checks.sh
source /app/libexec/compression.sh
source /app/libexec/dialogs.sh
source /app/libexec/logger.sh
source /app/libexec/other_functions.sh
source /app/libexec/multi_user.sh
source /app/libexec/framework.sh
@ -23,7 +28,6 @@ source /app/libexec/run_game.sh
# Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update
rd_logs_folder="/var/config/retrodeck/logs" # Static location to write all RetroDECK-related logs
config="/app/retrodeck/config" # folder with all the default emulator configs
rd_defaults="$config/retrodeck/retrodeck.cfg" # A default RetroDECK config file
rd_update_patch="/var/config/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
@ -55,7 +59,6 @@ main_repository_name="RetroDECK"
features="$config/retrodeck/reference_lists/features.json" # A file where all the RetroDECK and component capabilities are kept for querying
es_systems="/app/share/es-de/resources/systems/linux/es_systems.xml" # ES-DE supported system list
es_find_rules="/app/share/es-de/resources/systems/linux/es_find_rules.xml" # ES-DE emulator find rules
logging_level="info" # Initializing this to avoid printing blank newlines, this will be actually red later from the config file
# Godot data transfer temp files
@ -139,9 +142,6 @@ mamedefconf="/var/config/mame/cfg/default.cfg"
if [ ! -d "$rd_logs_folder" ]; then
create_dir "$rd_logs_folder"
fi
if [[ ! -d "$rd_logs_folder/ES-DE" ]]; then
dir_prep "$rd_logs_folder/ES-DE" "$es_source_logs"
fi
# Initialize location of Godot temp data files, if it doesn't exist
if [[ ! -d "/var/config/retrodeck/godot" ]]; then

View file

@ -91,9 +91,40 @@ log() {
# Write the log message to the log file
if [ ! -f "$logfile" ]; then
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2
#echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2 # Disabled it as it's always appearing because of log rotation
touch "$logfile"
fi
echo "$log_message" >> "$logfile"
fi
}
# The rotate_logs function manages log file rotation to limit the number of logs retained.
# It compresses the current log file into a .tar.gz archive, increments the version of
# older log files (e.g., retrodeck.1.tar.gz to retrodeck.2.tar.gz), and deletes the oldest
# archive if it exceeds the maximum limit (default: 3 rotated logs). After rotation,
# the original log file is cleared for continued logging.
rotate_logs() {
local logfile="${1:-$rd_logs_folder/retrodeck.log}" # Default log file
local max_logs=3 # Maximum number of rotated logs to keep
# Rotate existing logs
for ((i=max_logs; i>0; i--)); do
if [[ -f "${logfile}.${i}.tar.gz" ]]; then
if (( i == max_logs )); then
# Remove the oldest log if it exceeds the limit
rm -f "${logfile}.${i}.tar.gz"
else
# Rename log file to the next number
mv "${logfile}.${i}.tar.gz" "${logfile}.$((i+1)).tar.gz"
fi
fi
done
# Compress the current log file if it exists
if [[ -f "$logfile" ]]; then
# Compress without directory structure and suppress tar output
tar -czf "${logfile}.1.tar.gz" -C "$(dirname "$logfile")" "$(basename "$logfile")" --remove-files &>/dev/null
fi
}

View file

@ -67,9 +67,7 @@ prepare_component() {
dir_prep "$rdhome/ES-DE/gamelists" "/var/config/ES-DE/gamelists"
dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections"
dir_prep "$rdhome/ES-DE/custom_systems" "/var/config/ES-DE/custom_systems"
#dir_prep "$rd_logs_folder/ES-DE" "$es_source_logs"
log d "Generating roms system folders"
#es-de --home /var/config/ES-DE --create-system-dirs
es-de --create-system-dirs
update_splashscreens
fi
@ -891,6 +889,9 @@ prepare_component() {
chmod +x "/var/data/PortMaster/PortMaster.sh"
rm -f "$roms_folder/portmaster/PortMaster.sh"
install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh"
create_dir "/var/data/PortMaster/config/"
cp "$config/portmaster/config.json" "/var/data/PortMaster/config/config.json"
fi
if [[ "$component" =~ ^(ruffle|all)$ ]]; then

View file

@ -558,22 +558,21 @@ modules:
url: https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz
sha256: RETRODECKGZDOOMLATEST
# TEMPORARLY DISABLED
# Ryujinx Appimage
# https://ryujinx.org/download
# Pancakes
# This version was reported as working with symlinks: https://discord.com/channels/951662718102962256/951715885968654418/1264882000658169866
# - name: Ryujinx-reported-working-version
# - name: Pancakes
# buildsystem: simple
# build-commands:
# - |
# tar -zxvf *.tar.gz
# mv -v publish ${FLATPAK_DEST}/ryujinx
# ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx.sh
# - mkdir -p "${FLATPAK_DEST}"
# - mv *.so* "${FLATPAK_DEST}/retrodeck/tmplib/"
# - mv R*x* "${FLATPAK_DEST}/bin/"
# - chmod +x "${FLATPAK_DEST}/bin/R*x"*
# - mkdir -p "${FLATPAK_DEST}/retrodeck/licenses"
# - mv LICENSE.txt "${FLATPAK_DEST}/retrodeck/licenses"
# sources:
# - type: file
# url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.1297/ryujinx-1.1.1297-linux_x64.tar.gz
# sha256: 28b38754e7d2e92083b313b23278c180ae54ac025edbbd0276ec03baec0cec0f
# url: https://github.com/RetroDECK/Pancakes/releases/download/1.1.0.1403/pancakes-Release-linux_x64.tar.gz
# sha256: cc7d25b6a2f2ad16533e3d72ba9477a4d77b8cfbb450f0db3d0c05ffde5e1281
# XEMU
# https://xemu.app/docs/download/#download-for-linux