Compare commits

...

9 commits

6 changed files with 75 additions and 21 deletions

View file

@ -185,14 +185,28 @@ jobs:
echo "[DEBUG] CHECKPOINT 8" 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" - name: "Build flatpak: download only"
id: flatpak-download 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 # Sometimes flatpak download fails, in this case it tries a second time
- name: "Build flatpak: download only (retry)" - name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure' if: steps.flatpak-download.outcome == 'failure'
run: | 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 "Download failed, maybe some hash changed since the build start."
echo "Recalculating hashes and retrying download..." echo "Recalculating hashes and retrying download..."
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" 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 # 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" # 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/050_save_migration.sh
source /app/libexec/checks.sh source /app/libexec/checks.sh
source /app/libexec/compression.sh source /app/libexec/compression.sh
source /app/libexec/dialogs.sh source /app/libexec/dialogs.sh
source /app/libexec/logger.sh
source /app/libexec/other_functions.sh source /app/libexec/other_functions.sh
source /app/libexec/multi_user.sh source /app/libexec/multi_user.sh
source /app/libexec/framework.sh source /app/libexec/framework.sh
@ -23,7 +28,6 @@ source /app/libexec/run_game.sh
# Static variables # Static variables
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path 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_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 config="/app/retrodeck/config" # folder with all the default emulator configs
rd_defaults="$config/retrodeck/retrodeck.cfg" # A default RetroDECK config file 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 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 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_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 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 # Godot data transfer temp files
@ -139,9 +142,6 @@ mamedefconf="/var/config/mame/cfg/default.cfg"
if [ ! -d "$rd_logs_folder" ]; then if [ ! -d "$rd_logs_folder" ]; then
create_dir "$rd_logs_folder" create_dir "$rd_logs_folder"
fi 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 # Initialize location of Godot temp data files, if it doesn't exist
if [[ ! -d "/var/config/retrodeck/godot" ]]; then if [[ ! -d "/var/config/retrodeck/godot" ]]; then

View file

@ -91,9 +91,40 @@ log() {
# Write the log message to the log file # Write the log message to the log file
if [ ! -f "$logfile" ]; then 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" touch "$logfile"
fi fi
echo "$log_message" >> "$logfile" echo "$log_message" >> "$logfile"
fi 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/gamelists" "/var/config/ES-DE/gamelists"
dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections" 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 "$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" log d "Generating roms system folders"
#es-de --home /var/config/ES-DE --create-system-dirs
es-de --create-system-dirs es-de --create-system-dirs
update_splashscreens update_splashscreens
fi fi
@ -891,6 +889,9 @@ prepare_component() {
chmod +x "/var/data/PortMaster/PortMaster.sh" chmod +x "/var/data/PortMaster/PortMaster.sh"
rm -f "$roms_folder/portmaster/PortMaster.sh" rm -f "$roms_folder/portmaster/PortMaster.sh"
install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$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 fi
if [[ "$component" =~ ^(ruffle|all)$ ]]; then 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 url: https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz
sha256: RETRODECKGZDOOMLATEST sha256: RETRODECKGZDOOMLATEST
# TEMPORARLY DISABLED # Pancakes
# Ryujinx Appimage
# https://ryujinx.org/download
# This version was reported as working with symlinks: https://discord.com/channels/951662718102962256/951715885968654418/1264882000658169866 # - name: Pancakes
# - name: Ryujinx-reported-working-version
# buildsystem: simple # buildsystem: simple
# build-commands: # build-commands:
# - | # - mkdir -p "${FLATPAK_DEST}"
# tar -zxvf *.tar.gz # - mv *.so* "${FLATPAK_DEST}/retrodeck/tmplib/"
# mv -v publish ${FLATPAK_DEST}/ryujinx # - mv R*x* "${FLATPAK_DEST}/bin/"
# ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx.sh # - chmod +x "${FLATPAK_DEST}/bin/R*x"*
# - mkdir -p "${FLATPAK_DEST}/retrodeck/licenses"
# - mv LICENSE.txt "${FLATPAK_DEST}/retrodeck/licenses"
# sources: # sources:
# - type: file # - type: file
# url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.1297/ryujinx-1.1.1297-linux_x64.tar.gz # url: https://github.com/RetroDECK/Pancakes/releases/download/1.1.0.1403/pancakes-Release-linux_x64.tar.gz
# sha256: 28b38754e7d2e92083b313b23278c180ae54ac025edbbd0276ec03baec0cec0f # sha256: cc7d25b6a2f2ad16533e3d72ba9477a4d77b8cfbb450f0db3d0c05ffde5e1281
# XEMU # XEMU
# https://xemu.app/docs/download/#download-for-linux # https://xemu.app/docs/download/#download-for-linux