From 19376f69ca629c0d52e45c1d5d7900db54a9002e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 18 Oct 2024 14:55:32 +0900 Subject: [PATCH 001/107] Ryujinx: temp disabled [skip ci] --- net.retrodeck.retrodeck.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 4bef5bd5..82c92952 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -488,21 +488,22 @@ 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 # This version was reported as working with symlinks: https://discord.com/channels/951662718102962256/951715885968654418/1264882000658169866 - - name: Ryujinx-reported-working-version - 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 - 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 + # - name: Ryujinx-reported-working-version + # 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 + # 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 # XEMU # https://xemu.app/docs/download/#download-for-linux From bb9d023d71ae4140679ac8a97cedc95683a7488f Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:22:57 -0400 Subject: [PATCH 002/107] Add logging option setting to retrodeck.cfg --- config/retrodeck/retrodeck.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/config/retrodeck/retrodeck.cfg b/config/retrodeck/retrodeck.cfg index bfaef917..2035c51a 100644 --- a/config/retrodeck/retrodeck.cfg +++ b/config/retrodeck/retrodeck.cfg @@ -35,6 +35,7 @@ sound_effects=true volume_effects=10 font=1 cheevos_login=false +logging=none [cheevos] duckstation=false From 3d19ea6a144454d141ff216ea2ee18472a981ab3 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:25:34 -0400 Subject: [PATCH 003/107] Change logging setting name --- config/retrodeck/retrodeck.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/retrodeck/retrodeck.cfg b/config/retrodeck/retrodeck.cfg index 2035c51a..7604891d 100644 --- a/config/retrodeck/retrodeck.cfg +++ b/config/retrodeck/retrodeck.cfg @@ -35,7 +35,7 @@ sound_effects=true volume_effects=10 font=1 cheevos_login=false -logging=none +logging_level=none [cheevos] duckstation=false From 2e1a4618550137d6365875613e3acf84e043761d Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:25:54 -0400 Subject: [PATCH 004/107] Make writing to log file and showing terminal output depending on logging level --- functions/logger.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/functions/logger.sh b/functions/logger.sh index 9c2ea6c3..0b59cd65 100755 --- a/functions/logger.sh +++ b/functions/logger.sh @@ -85,14 +85,15 @@ log() { ;; esac - # Display the message in the terminal - echo -e "$colored_message" >&2 + if [[ ! $logging_level == "none" ]]; then + # Display the message in the terminal + echo -e "$colored_message" >&2 - # Write the log message to the log file - if [ ! -f "$logfile" ]; then - echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2 - touch "$logfile" + # Write the log message to the log file + if [ ! -f "$logfile" ]; then + echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2 + touch "$logfile" + fi + echo "$log_message" >> "$logfile" fi - echo "$log_message" >> "$logfile" - } From c8fcabec02dad14499f772d67d5aa3f3721ad513 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:27:41 -0400 Subject: [PATCH 005/107] Check logging level first for log() function for efficiency --- functions/logger.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/logger.sh b/functions/logger.sh index 0b59cd65..f5d26324 100755 --- a/functions/logger.sh +++ b/functions/logger.sh @@ -17,6 +17,7 @@ # log i "par" rekku.log -> logs an information with message in the specified log file inside the logs folder retrodeck/logs/rekku.log log() { + if [[ ! $logging_level == "none" ]]; then local level="$1" local message="$2" @@ -85,7 +86,7 @@ log() { ;; esac - if [[ ! $logging_level == "none" ]]; then + # Display the message in the terminal echo -e "$colored_message" >&2 From ef9b5024fdc6371365b258e5887f90f26883baf9 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:29:25 -0400 Subject: [PATCH 006/107] Rearrange logging checks based on verbosity --- functions/logger.sh | 127 ++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 64 deletions(-) diff --git a/functions/logger.sh b/functions/logger.sh index f5d26324..64ef5779 100755 --- a/functions/logger.sh +++ b/functions/logger.sh @@ -19,74 +19,73 @@ log() { if [[ ! $logging_level == "none" ]]; then - local level="$1" - local message="$2" - local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])" - local colorize_terminal + local level="$1" + local message="$2" + local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])" + local colorize_terminal - # Use specified logfile or default to retrodeck.log - local logfile - if [ -n "$3" ]; then - logfile="$3" - else - logfile="$rd_logs_folder/retrodeck.log" - fi + # Use specified logfile or default to retrodeck.log + local logfile + if [ -n "$3" ]; then + logfile="$3" + else + logfile="$rd_logs_folder/retrodeck.log" + fi - # Check if the shell is sh (not bash or zsh) to avoid colorization - if [ "${SHELL##*/}" = "sh" ]; then - colorize_terminal=false - else - colorize_terminal=true - fi + # Check if the shell is sh (not bash or zsh) to avoid colorization + if [ "${SHELL##*/}" = "sh" ]; then + colorize_terminal=false + else + colorize_terminal=true + fi - case "$level" in - w) - if [ "$colorize_terminal" = true ]; then - # Warning (yellow) for terminal - colored_message="\e[33m[WARN] $message\e[0m" - else - # Warning (no color for sh) for terminal - colored_message="$timestamp [WARN] $message" - fi - # Write to log file without colorization - log_message="$timestamp [WARN] $message" - ;; - e) - if [ "$colorize_terminal" = true ]; then - # Error (red) for terminal - colored_message="\e[31m[ERROR] $message\e[0m" - else - # Error (no color for sh) for terminal - colored_message="$timestamp [ERROR] $message" - fi - # Write to log file without colorization - log_message="$timestamp [ERROR] $message" - ;; - i) - # Write to log file without colorization for info message - log_message="$timestamp [INFO] $message" - colored_message=$log_message - ;; - d) - if [ "$colorize_terminal" = true ]; then - # Debug (green) for terminal - colored_message="\e[32m[DEBUG] $message\e[0m" - else - # Debug (no color for sh) for terminal - colored_message="$timestamp [DEBUG] $message" - fi - # Write to log file without colorization - log_message="$timestamp [DEBUG] $message" - ;; - *) - # Default (no color for other shells) for terminal - colored_message="$timestamp $message" - # Write to log file without colorization - log_message="$timestamp $message" - ;; - esac + case "$level" in + d) + if [ "$colorize_terminal" = true ]; then + # Debug (green) for terminal + colored_message="\e[32m[DEBUG] $message\e[0m" + else + # Debug (no color for sh) for terminal + colored_message="$timestamp [DEBUG] $message" + fi + # Write to log file without colorization + log_message="$timestamp [DEBUG] $message" + ;; + e) + if [ "$colorize_terminal" = true ]; then + # Error (red) for terminal + colored_message="\e[31m[ERROR] $message\e[0m" + else + # Error (no color for sh) for terminal + colored_message="$timestamp [ERROR] $message" + fi + # Write to log file without colorization + log_message="$timestamp [ERROR] $message" + ;; + w) + if [ "$colorize_terminal" = true ]; then + # Warning (yellow) for terminal + colored_message="\e[33m[WARN] $message\e[0m" + else + # Warning (no color for sh) for terminal + colored_message="$timestamp [WARN] $message" + fi + # Write to log file without colorization + log_message="$timestamp [WARN] $message" + ;; + i) + # Write to log file without colorization for info message + log_message="$timestamp [INFO] $message" + colored_message=$log_message + ;; + *) + # Default (no color for other shells) for terminal + colored_message="$timestamp $message" + # Write to log file without colorization + log_message="$timestamp $message" + ;; + esac - # Display the message in the terminal echo -e "$colored_message" >&2 From a5eba709d933dd9a6031fe033b2cf23715969571 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:40:28 -0400 Subject: [PATCH 007/107] Add conditional logging based on logging_level --- functions/logger.sh | 70 +++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/functions/logger.sh b/functions/logger.sh index 64ef5779..d628dd7c 100755 --- a/functions/logger.sh +++ b/functions/logger.sh @@ -40,45 +40,53 @@ log() { fi case "$level" in - d) - if [ "$colorize_terminal" = true ]; then - # Debug (green) for terminal - colored_message="\e[32m[DEBUG] $message\e[0m" - else - # Debug (no color for sh) for terminal - colored_message="$timestamp [DEBUG] $message" + d) + if [[ $logging_level == "debug" ]]; then + if [ "$colorize_terminal" = true ]; then + # Debug (green) for terminal + colored_message="\e[32m[DEBUG] $message\e[0m" + else + # Debug (no color for sh) for terminal + colored_message="$timestamp [DEBUG] $message" + fi + # Write to log file without colorization + log_message="$timestamp [DEBUG] $message" fi - # Write to log file without colorization - log_message="$timestamp [DEBUG] $message" ;; e) - if [ "$colorize_terminal" = true ]; then - # Error (red) for terminal - colored_message="\e[31m[ERROR] $message\e[0m" - else - # Error (no color for sh) for terminal - colored_message="$timestamp [ERROR] $message" + if [[ $logging_level == "debug" || $logging_level == "error" ]]; then + if [ "$colorize_terminal" = true ]; then + # Error (red) for terminal + colored_message="\e[31m[ERROR] $message\e[0m" + else + # Error (no color for sh) for terminal + colored_message="$timestamp [ERROR] $message" + fi + # Write to log file without colorization + log_message="$timestamp [ERROR] $message" fi - # Write to log file without colorization - log_message="$timestamp [ERROR] $message" ;; - w) - if [ "$colorize_terminal" = true ]; then - # Warning (yellow) for terminal - colored_message="\e[33m[WARN] $message\e[0m" - else - # Warning (no color for sh) for terminal - colored_message="$timestamp [WARN] $message" + w) + if [[ $logging_level == "debug" || $logging_level == "error" || $logging_level == "warn" ]]; then + if [ "$colorize_terminal" = true ]; then + # Warning (yellow) for terminal + colored_message="\e[33m[WARN] $message\e[0m" + else + # Warning (no color for sh) for terminal + colored_message="$timestamp [WARN] $message" + fi + # Write to log file without colorization + log_message="$timestamp [WARN] $message" fi - # Write to log file without colorization - log_message="$timestamp [WARN] $message" ;; - i) - # Write to log file without colorization for info message - log_message="$timestamp [INFO] $message" - colored_message=$log_message + i) + if [[ $logging_level == "debug" || $logging_level == "error" || $logging_level == "warn" || $logging_level == "info" ]]; then + # Write to log file without colorization for info message + log_message="$timestamp [INFO] $message" + colored_message=$log_message + fi ;; - *) + *) # Default (no color for other shells) for terminal colored_message="$timestamp $message" # Write to log file without colorization From e326bfa2f8bd8db41c05dacc100d01c5983fd718 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Fri, 18 Oct 2024 09:40:48 -0400 Subject: [PATCH 008/107] Add CLI one-time debug logging option --- retrodeck.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/retrodeck.sh b/retrodeck.sh index 146371f4..28499c9d 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -26,6 +26,7 @@ Arguments: -h, --help \t Print this help -v, --version \t Print RetroDECK version --info-msg \t Print paths and config informations + --debug \t Enable debug logging for this launch of RetroDECK (This may miss errors very early in the launch process) --configurator \t Starts the RetroDECK Configurator --compress-one \t Compresses target file to a compatible format --compress-all \t Compresses all supported games into a compatible format.\n\t\t\t\t\t\t Available formats are \"chd\", \"zip\", \"rvz\" and \"all\" @@ -60,6 +61,10 @@ https://retrodeck.net cat $rd_conf exit ;; + --debug*) + logging_level="debug" + shift + ;; --compress-one*) cli_compress_single_game "$2" exit From fc9c5549c6eaa3719d1df4ea34492212e6cfcbf0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 28 Oct 2024 10:01:44 +0900 Subject: [PATCH 009/107] feat/steam-rom-manager (#860) * SRM: adding Steam ROM Manager * SRM: adding electron base * Fixed SRM Fixed launching script of SRM * Updated for srm * Standard config for srm * Update with srm in place of boilr * Update with srm in place of boilr * Added steam-sync option * PREPARE_COMPONENTS: removing spaces from steam rom manager * SRM: adding it ot reset cli, boilr cleanup * SRM: boilr cleanup [skip ci] * Update and fixed script * Modified steam sync works * Update configurator.sh * STEAM_SYNC: fixing gameslist location * SRM: fixed path, whoops * Added file for resetting the configuration * Modified with external reset function * Modified with external reset function * Added msgbox during fav sync * STEAM_SYNC: fixed some texts * Modified if for remove everything if no favorite games * Fixed removing the games when no favs * STEAM_ROM_MANAGER: added to features.json * STEAM_ROM_MANAGER: casing names descriptions * Fixed some error * Moved away the creation of .sync folder * Uploaded standard exception * Added reset userExceptions * Revert missing entrypoint * STEAM_SYNC_SH: checkpoint, addToSteam is working * STEAM_SYNC_SH: fixed bad launcher filename generation * STEAM_SYNC_SH: fixed game names, unified in a single function, code cleanup * STEAM_SYNC_SH: removed deprecated commands [skip ci] * STEAM_SYNC_SH: fixed launcher with correct command [skip ci] * STEAM_SYNC_SH: added prepare_component [skip ci] * STEAM_SYNC_SH: code cleanup [skip ci] * STEAM_SYNC_SH: moved it on retrodeck quit instead of retrodeck start [skip ci] * STEAM_SYNC_SH: updated userConfigurations.json [skip ci] * STEAM_SYNC_SH: code cleanup * Triggering build * STEAM_SYNC: globalized steamsync_folder variable * STEAM_SYNC: standardized script name * STEAM_SYNC: fixing array * STEAM_SYNC: fixing array -part2 * POST_UPDATE: enhanced for steam_rom_manager * STEAM_SYNC: this variable is not correct here * STEAM_SYNC: fixing configuration * STEAM_SYNC: adding more sanitized games cases * STEAM_SYNC: fix framwork was shutting down before steam_sync * MANIFEST: fixed SRM wrapper to accept args * STEAM_SYNC: fixing SRM preparation * STEAM_SYNC: using run_game to build the launchers * STEAM_SYNC: added system to run_game be sure * STEAM_SYNC_SH: removed unused config file * FEATURES: indentation fix * PREPARE_COMPONENT: comments * STEAM_SYNC_SH: general optimization and bugfixes * STEAM_SYNC_SH: migrated launcher to the new run_game * FEATURES: rebased from cooker * FEATURES: fmt [skip ci] * STEAM_SYNC: using new start command + cleanup * STEAM_SYNC: migrated launches to .desktop files * STEAM_SYNC: reverted .desktop files * STEAM_SYNC: romed -s from launcher * STEAM_SYNC: comments for calling quit function [skip ci] * Create file only if does not exists + fixed syntax * Added full shortcut clean * Fixed check if file exists * Added remove no fav game * Fixed comment error and +x chmod --------- Co-authored-by: Lx32 --- .../retrodeck/reference_lists/features.json | 5 + config/retrodeck/retrodeck.cfg | 1 + .../steam-rom-manager/userConfigurations.json | 111 +++++ config/steam-rom-manager/userSettings.json | 30 ++ functions/other_functions.sh | 19 +- functions/post_update.sh | 3 + functions/prepare_component.sh | 16 + functions/steam-sync/steam-sync.py | 404 ++++++++++++++++++ functions/steam_sync.sh | 148 +++++++ net.retrodeck.retrodeck.yml | 49 ++- retrodeck.sh | 1 + tools/configurator.sh | 49 ++- 12 files changed, 833 insertions(+), 3 deletions(-) create mode 100644 config/steam-rom-manager/userConfigurations.json create mode 100644 config/steam-rom-manager/userSettings.json create mode 100644 functions/steam-sync/steam-sync.py create mode 100644 functions/steam_sync.sh diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 1a2cb6ab..aec2730a 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1132,6 +1132,11 @@ "url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/.", "launch": "es-de" }, + "steam-rom-manager": { + "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", + "name": "Steam ROM Manager", + "launch": "steam-rom-manager" + }, "portmaster": { "description": "PortMaster", "name": "PortMaster", diff --git a/config/retrodeck/retrodeck.cfg b/config/retrodeck/retrodeck.cfg index 7604891d..3b464318 100644 --- a/config/retrodeck/retrodeck.cfg +++ b/config/retrodeck/retrodeck.cfg @@ -31,6 +31,7 @@ default_user= developer_options=false kiroi_ponzu=false akai_ponzu=false +steam_sync=false sound_effects=true volume_effects=10 font=1 diff --git a/config/steam-rom-manager/userConfigurations.json b/config/steam-rom-manager/userConfigurations.json new file mode 100644 index 00000000..94243acf --- /dev/null +++ b/config/steam-rom-manager/userConfigurations.json @@ -0,0 +1,111 @@ +[ + { + "parserType": "Glob", + "configTitle": "RetroDECK", + "steamDirectory": "${steamdirglobal}", + "steamCategory": "RetroDECK", + "romDirectory": "${romsdirglobal}", + "executableArgs": "", + "executableModifier": "\"${exePath}\"", + "startInDirectory": "", + "titleModifier": "${fuzzyTitle}", + "imageProviders": [ + "SteamGridDB" + ], + "onlineImageQueries": "${${fuzzyTitle}}", + "imagePool": "${fuzzyTitle}", + "userAccounts": { + "specifiedAccounts": "" + }, + "executable": { + "path": "", + "shortcutPassthrough": false, + "appendArgsToExecutable": true + }, + "parserInputs": { + "glob": "${title}.sh" + }, + "titleFromVariable": { + "limitToGroups": "", + "caseInsensitiveVariables": false, + "skipFileIfVariableWasNotFound": false, + "tryToMatchTitle": false + }, + "fuzzyMatch": { + "replaceDiacritics": true, + "removeCharacters": true, + "removeBrackets": true + }, + "controllers": { + "ps4": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_ps4.vdf", + "profileType": "template" + }, + "ps5": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_ps5.vdf", + "profileType": "template" + }, + "xbox360": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_xbox360_simple.vdf", + "profileType": "template" + }, + "xboxone": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_xboxone_simple.vdf", + "profileType": "template" + }, + "switch_joycon_left": { + "title": "Controller", + "mappingId": "controller_switch_joycon_left_gamepad_joystick.vdf", + "profileType": "template" + }, + "switch_joycon_right": { + "title": "Controller", + "mappingId": "controller_switch_joycon_right_gamepad_joystick.vdf", + "profileType": "template" + }, + "switch_pro": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_switchpro.vdf", + "profileType": "template" + }, + "neptune": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_steamdeck_neptune_full.vdf", + "profileType": "template" + } + }, + "imageProviderAPIs": { + "SteamGridDB": { + "nsfw": false, + "humor": false, + "styles": [], + "stylesHero": [], + "stylesLogo": [], + "stylesIcon": [], + "imageMotionTypes": [ + "static" + ] + } + }, + "defaultImage": { + "tall": null, + "long": null, + "hero": null, + "logo": null, + "icon": null + }, + "localImages": { + "tall": null, + "long": null, + "hero": null, + "logo": null, + "icon": null + }, + "parserId": "1725539138664815", + "version": 15 + } +] diff --git a/config/steam-rom-manager/userSettings.json b/config/steam-rom-manager/userSettings.json new file mode 100644 index 00000000..0eeebea6 --- /dev/null +++ b/config/steam-rom-manager/userSettings.json @@ -0,0 +1,30 @@ +{ + "fuzzyMatcher": { + "verbose": false, + "filterProviders": true + }, + "environmentVariables": { + "steamDirectory": "", + "userAccounts": "${steamlogin}", + "romsDirectory": "", + "retroarchPath": "", + "raCoresDirectory": "", + "localImagesDirectory": "" + }, + "previewSettings": { + "retrieveCurrentSteamImages": true, + "deleteDisabledShortcuts": false, + "imageZoomPercentage": 30, + "preload": false + }, + "enabledProviders": [ + "SteamGridDB" + ], + "batchDownloadSize": 50, + "language": "en-US", + "theme": "Deck", + "offlineMode": false, + "navigationWidth": 0, + "clearLogOnTest": false, + "version": 6 +} diff --git a/functions/other_functions.sh b/functions/other_functions.sh index b10bb705..40b6e3e4 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -913,8 +913,25 @@ release_selector() { quit_retrodeck() { log i "Quitting ES-DE" pkill -f "es-de" + + # if steam sync is on do the magic + if [[ $steam_sync == "true" ]]; then + ( + source /app/libexec/steam_sync.sh + add_to_steam "$(ls "$rdhome/ES-DE/gamelists/")" + ) | + zenity --progress \ + --title="Syncing with Steam" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --text="Syncing favorite games with Steam, please wait." \ + --percentage=25 \ + --pulsate \ + --auto-close \ + --auto-kill + fi log i "Shutting down RetroDECK's framework" pkill -f "retrodeck" + log i "See you next time" } @@ -923,4 +940,4 @@ start_retrodeck() { ponzu log i "Starting RetroDECK v$version" es-de -} \ No newline at end of file +} diff --git a/functions/post_update.sh b/functions/post_update.sh index 97669f78..c7d63330 100644 --- a/functions/post_update.sh +++ b/functions/post_update.sh @@ -437,7 +437,10 @@ post_update() { prepare_component "reset" "es-de" prepare_component "reset" "portmaster" prepare_component "reset" "ruffle" + + log d "Steam Rom Manager was added, we need to prepare it" update_rd_conf + prepare_component "reset" "steam-rom-manager" # TODO: check this # rm /var/config/emulationstation/.emulationstation # remving the old symlink to .emulationstation as it might be not needed anymore diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index dea53a16..a0024745 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -81,6 +81,22 @@ prepare_component() { fi fi + if [[ "$component" =~ ^(steam-rom-manager|all)$ ]]; then + component_found="true" + log i "-----------------------------" + log i "Prepearing Steam ROM Manager" + log i "-----------------------------" + + local srm_userdata="/var/config/steam-rom-manager/userData" + create_dir -d "/var/config/steam-rom-manager" + create_dir -d "$srm_userdata" + cp -fv "$config/steam-rom-manager/"*.json $srm_userdata + + log i "Updating steamDirectory and romDirectory lines in $srm_userdata/userSettings.json" + jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json" + jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json" + fi + if [[ "$component" =~ ^(retroarch|all)$ ]]; then component_found="true" log i "--------------------------------" diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py new file mode 100644 index 00000000..4ce79e4c --- /dev/null +++ b/functions/steam-sync/steam-sync.py @@ -0,0 +1,404 @@ +"""Sync RetroDECK favorites games with steam shortcuts""" +import binascii +import os +import re +import shlex +import shutil +import glob +import sys +import time +import hashlib + +import xml.etree.ElementTree as ET + +from resetsync import resetfun + +command_list_default={ +"3do": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so", +"amiga": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"amiga1200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"amiga600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"amigacd32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"amstradcpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"arcade": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"arduboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so", +"astrocde": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"atari2600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", +"atari5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", +"atari7800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so", +"atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"atarijaguar": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", +"atarijaguarcd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", +"atarilynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", +"atarist": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so", +"atarixe": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"atomiswave": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"c64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", +"cavestory": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so", +"cdimono1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", +"cdtv": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"chailove": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so", +"channelf": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so", +"colecovision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"cps": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"cps1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"cps2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"cps3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"doom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", +"dos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", +"dreamcast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"easyrpg": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so", +"famicom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"flash": "TODO: I have to catch how it works", #TODO +"fba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", +"fbneo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"fds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"gameandwatch": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", +"gamegear": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"gb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"gba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"gbc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"genesis": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"gx4000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"intellivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so", +"j2me": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so", +"lcdgames": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", +"lutro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so", +"mame": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"mastersystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"megacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"megacdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"megadrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"megaduck": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so", +"mess": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so", +"model2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"moto": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", +"msx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"msx1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"msx2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"msxturbor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"multivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", +"n64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", +"n64dd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", +"naomi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"naomigd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"nds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", +"neogeo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"neogeocdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"nes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"ngp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"ngpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"odyssey2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", +"palm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so", +"pc88": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so", +"pc98": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", +"pcengine": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"pcenginecd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"pcfx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so", +"pokemini": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so", +"psx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", +"quake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", +"satellaview": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"saturnjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"scummvm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so", +"sega32x": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"sega32xjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"sega32xna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"segacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"sfc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"sg-1000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"sgb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", +"snes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"snesna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"spectravideo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"sufami": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"supergrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", +"supervision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so", +"tg16": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"tg-cd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"tic80": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so", +"to8": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", +"uzebox": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so", +"vectrex": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so", +"vic20": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so", +"videopac": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", +"virtualboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so", +"wasm4": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so", +"wonderswan": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", +"wonderswancolor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", +"x1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so", +"x68000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so", +"zx81": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so", +"zxspectrum": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so", +"switch": "flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g", +"n3ds": "flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck", +"ps2": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", +"wiiu": "flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g", +"gc": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"wii": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"xbox": "flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path", +"ps3": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", +"psp": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", +"pico8": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +} + +alt_command_list={ +"PUAE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"Caprice32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"Stella": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", +"a5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", +"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"Handy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", +"VICE x64sc Accurate": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", +"SAME CDi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", +"blueMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"PrBoom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", +"DOSBox-Pure": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", +"Mesen": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"Genesis Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"Gamebatte": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"ParaLLEI N64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", +"DeSmuME": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", +"NeoCD": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"Beetle NeoPop": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"Neko Project II Kai": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", +"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"Swanstation": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", +"TyrQuake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", +"Beetle Saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"Snes 9x - Current": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"Beetle SuperGrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", +"Yuzu (Standalone)": "flatpak run --command=yuzu net.retrodeck.retrodeck -f -g", +"Citra (Standalone)": "flatpak run --command=citra net.retrodeck.retrodeck", +"PCSX2 (Standalone)": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", +"Dolphin (Standalone)": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"RPCS3 Directory (Standalone)": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", +"PPSSPP (Standalone)": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", +"PICO-8 (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run", +"PUAE 2021": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so", +"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", +"CPCemu (Standalone)": "NYI", #NYI +"MAME 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so", +"MAME 2003-Plus": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so", +"MAME 2000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so", +"MAME (Standalone)": "NYI", #NYI +"FinalBurn Neo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"FinalBurn Neo (Standalone)": "NYI", #NYI +"FB Alpha 2012": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", +"Flycast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"Flycast (Standalone)": "NYI", #NYI +"Kronos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so", +"Supermodel (Standalone)": "NYI", #NYI +"Supermodel [Fullscreen] (Standalone)": "NYI", #NYI +"Shortcut or script": "TODO: I have to catch how it works", #TODO +"Atari800 (Standalone)": "NYI", #NYI +"Stella 2014": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so", +"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"Beetle Lynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so", +"VICE x64 Fast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so", +"VICE x64 SuperCPU": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so", +"VICE x128": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so", +"Frodo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so", +"CDi 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so", +"Gearcoleco": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so", +"FB Alpha 2012 CPS-1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so", +"FB Alpha 2012 CPS-2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so", +"FB Alpha 2012 CPS-3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so", +"Boom 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so", +"Boom 3 xp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so", +"DOSBox-Core": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so", +"DOSBox-SVN": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so", +"Keep ES-DE running": "TODO: I have to catch how it works", #TODO +"AppImage (Suspend ES-DE)": "TODO: I have to catch how it works", #TODO +"AppImage (Keep ES-DE running)": "TODO: I have to catch how it works", #TODO +"Nestopia UE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so", +"FCEUmm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so", +"QuickNES": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so", +"Genesis Plus GX Wide": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so", +"Gearsystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", +"SMS Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so", +"SameBoy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so", +"Gearboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so", +"TGB Dual": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so", +"Mesen-S": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", +"VBA-M": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so", +"bsnes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so", +"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"VBA Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so", +"gpSP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so", +"Dolphin": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so", +"PrimeHack (Standalone)": "flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e", +"PicoDrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"BlastEm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so", +"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", +"fMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so", +"Citra": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so", +"Citra 2018": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so", +"Mupen64Plus-Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", +"DeSmuME 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so", +"melonDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so", +"melonDS (Standalone)": "flatpak run --command=melonDS net.retrodeck.retrodeck", +"FinalBurn Neo neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so", +"RACE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so", +"Neko Project II": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so", +"Beetle PCE FAST": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so", +"PICO-8 Splore (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore", +"AppImage": "TODO: I have to catch how it works", #TODO +"LRPS2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", +"PCSX2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", +"RPCS3 Shortcut (Standalone)": "TODO: I have to catch how it works", #TODO +"PPSSPP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so", +"Beetle PSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so", +"Beetle PSX HW": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so", +"PCSX ReARMed": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so", +"DuckStation (Standalone)": "flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch", +"vitaQuake 2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so", +"vitaQuake 2 [Rogue]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so", +"vitaQuake 2 [Xatrix]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so", +"vitaQuake 2 [Zaero]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so", +"vitaQuake 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so", +"YabaSanshiro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so", +"Yabause": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so", +"Snes9x 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so", +"bsnes-hd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so", +"bsnes-mercury Accuracy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so", +"Beetle Supafaust": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so", +"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +} + +exit_file="/tmp/retrodeck_steam_sync_exit" +rdhome="" +roms_folder="" + +def create_shortcut_new_new(games): + ignore_game=rdhome+"/.sync/IGNORE.sh" + old_games=os.listdir(rdhome+"/.sync/").copy() + + for game in games: + try: + i=old_games.index(game[0]+".sh") + old_games[i]=0 + except ValueError: + print(game[0]+" is a new game!") + + path=rdhome+"/.sync/"+game[0]+".sh" + print("Go to path: "+path) + + fl=open(path,"w") + fl.write("#!/bin/bash\n\n") + fl.write('if test "$(whereis flatpak)" = "flatpak:"\n') + fl.write("then\n") + fl.write("flatpak-spawn --host "+game[1]+"\n") + fl.write("else\n") + fl.write(game[1]+"\n") + fl.write("fi\n") + fl.close() + + st=os.stat(path) + os.chmod(path, st.st_mode | 0o0111) + + print("Start removing") + print(old_games) + for game in old_games: + if game: + os.remove(rdhome+"/.sync/"+game) + + dir=os.listdir(rdhome+"/.sync/") + if len(dir)==0: + print("No game found, removing all") + fl=open(ignore_game,"w") + fl.close() + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager remove") + os.remove(ignore_game) + else: + print("Adding the games") + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager add") + +def addToSteam(systems): + games=[] + for system in systems: + print("Start parsing system: {}".format(system)) + + f=open(rdhome+"/ES-DE/gamelists/"+system+"/gamelist.xml","r") + f.readline() + parser=ET.XMLParser() + parser.feed(b'') + parser.feed(f.read()) + parser.feed(b'') + root=parser.close() + f.close() + + globalAltEmu="" + for subroot in root: + if subroot.tag=="alternativeEmulator": + for alt in subroot: + globalAltEmu=alt.text + else: + for game in subroot: + path="" + name="" + favorite="" + altemulator=globalAltEmu + for tag in game: + if tag.tag=="path": + path=tag.text + elif tag.tag=="name": + name=tag.text + elif tag.tag=="favorite": + favorite=tag.text + elif tag.tag=="altemulator": + altemulator=tag.text + + if favorite=="true" and altemulator=="": + print("Find favorite game: {}".format(name)) + games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"]) + elif favorite=="true": + print("Find favorite game with alternative emulator: {}, {}".format(name,altemulator)) + if ("neogeocd" in system) and altemulator=="FinalBurn Neo": + games.append([name,alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'"]) + print(alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'") + elif system=="pico8" and altemulator=="PICO-8 Splore (Standalone)": + games.append([name,alt_command_list[altemulator]]) + print(alt_command_list[altemulator]) + else: + games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"]) + print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'") + create_shortcut_new_new(games) + +def start_config(): + global rdhome + global roms_folder + global command_list_default + global alt_command_list + + print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) + + fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") + lines=fl.readlines() + for line in lines: + if "rdhome" in line: + rdhome=line[7:-1] + elif "roms_folder" in line: + roms_folder=line[12:-1] + fl.close() + + command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8") + alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8") + + srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") + if not os.path.isfile(srm_path): + print("Steam ROM Manager configuration not initialized! Initializing now.") + resetfun(rdhome) + + if not os.path.exists(rdhome+"/.sync/"): + os.makedirs(rdhome+"/.sync/") + +if __name__=="__main__": + start_config() + addToSteam(os.listdir(rdhome+"/ES-DE/gamelists/")) + print("Finished!") diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh new file mode 100644 index 00000000..1fecdbc1 --- /dev/null +++ b/functions/steam_sync.sh @@ -0,0 +1,148 @@ +#!/bin/bash + + +# Add games to Steam function +add_to_steam() { + log "i" "Starting Steam Sync" + + steamsync_folder="$rdhome/.sync" + steamsync_folder_tmp="$rdhome/.sync-tmp" + create_dir $steamsync_folder + mv $steamsync_folder $steamsync_folder_tmp + create_dir $steamsync_folder + + local srm_path="/var/config/steam-rom-manager/userData/userConfigurations.json" + if [ ! -f "$srm_path" ]; then + log "e" "Steam ROM Manager configuration not initialized! Initializing now." + prepare_component "reset" "steam-rom-manager" + fi + + # Build the systems array from space-separated systems + local systems_string=$(jq -r '.system | keys[]' "$features" | paste -sd' ') + IFS=' ' read -r -a systems <<< "$systems_string" # TODO: do we need this line? + + local games=() + + for system in "${systems[@]}"; do + + local gamelist="$rdhome/ES-DE/gamelists/$system/gamelist.xml" + + if [ -f "$gamelist" ]; then + + # Extract all elements that are marked as favorite="true" + game_blocks=$(xmllint --recover --xpath '//game[favorite="true"]' "$gamelist" 2>/dev/null) + log d "Extracted favorite game blocks:\n\n$game_blocks\n\n" + + # Split the game_blocks into an array, where each element is a full block + IFS=$'\n' read -r -d '' -a game_array <<< "$(echo "$game_blocks" | xmllint --recover --format - | sed -n '//,/<\/game>/p' | tr '\n' ' ')" + + # Iterate over each full block in the array + for game_block in "${game_array[@]}"; do + log "d" "Processing game block:\n$game_block" + + # Extract the game's name and path from the full game block + local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null) + local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null | sed 's|^\./||') # removing the ./ + + log "d" "Game name: $name" + log "d" "Game path: $path" + + # Ensure the extracted name and path are valid + if [ -n "$name" ] && [ -n "$path" ]; then + # Check for an alternative emulator if it exists + # local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) + # if [ -z "$emulator" ]; then + # games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$path'") + # else + # games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$path'") + # fi + log "d" "Steam Sync: found favorite game: $name" + else + log "w" "Steam Sync: failed to find valid name or path for favorite game" + fi + + # Sanitize the game name for the filename: replace special characters with underscores + local sanitized_name=$(echo "$name" | sed -e 's/^A-Za-z0-9._-/ /g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/ -/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/&/and/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's%/%and%g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / - /g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / /g') + log d "File Path: $path" + log d "Game Name: $name" + + # If the filename is too long, shorten it + if [ ${#sanitized_name} -gt 100 ]; then + sanitized_name=$(echo "$sanitized_name" | cut -c 1-100) + fi + + log d "Sanitized Name: $sanitized_name" + + local launcher="$steamsync_folder/${sanitized_name}.sh" + local launcher_tmp="$steamsync_folder_tmp/${sanitized_name}.sh" + + if [ ! -e "$launcher_tmp" ]; then + + log d "Creating desktop file: $launcher" + + # if [[ -v command_list_default[$system] ]]; then + # command="${command_list_default[$system]}" + # else + # log e "$system is not included in the commands array." + # continue + # fi + + # Populate the .sync script with the correct command + # TODO: if there is any emulator defined in the xml we use that, else... how we can know which is the default one? + # TODO: if steam is flatpak the command wrapping will change in .desktop + local command="flatpak run net.retrodeck.retrodeck start '$roms_folder/$system/$path'" + # Create the launcher file using a heredoc - if you enable .desktp this remember to edit .desktop in SRM userConfigurations.json and the above launcher variable (and vice versa) +# cat < "$launcher" +# [Desktop Entry] +# Version=1.0 +# Name=$name +# Comment=$name via RetroDECK +# Exec=$command +# Icon=net.retrodeck.retrodeck +# Terminal=false +# Type=Application +# Categories=Game;Emulator; +# EOF + cat < "$launcher" +#!/bin/bash +if [ test "\$(whereis flatpak)" = "flatpak:" ]; then + flatpak-spawn --host $command +else + $command +fi +EOF + chmod +x "$launcher" + else + log d "$launcher desktop file already exists" + mv "$launcher_tmp" "$launcher" + fi + done + fi + done + + rm -r $steamsync_folder_tmp + + if [ -z "$( ls -A $steamsync_folder )" ]; then + log d "No games found, cleaning shortcut" + remove_from_steam + else + log d "Updating game list" + steam-rom-manager add + fi + + log i "Steam Sync: completed" +} + +remove_from_steam() { + log d "Creating fake game" + cat "" > "$steamsync_folder/CUL0.sh" + log d "Cleaning the shortcut" + steam-rom-manager remove + log d "Removing fake game" + rm "$steamsync_folder/CUL0.sh" +} diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 82c92952..eb0d77ba 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -2,6 +2,10 @@ app-id: net.retrodeck.retrodeck runtime: org.kde.Platform runtime-version: "6.7" sdk: org.kde.Sdk +base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager +base-version: "22.08" +sdk-extensions: + - org.freedesktop.Sdk.Extension.llvm18 # Needed for RPCS3 command: retrodeck.sh finish-args: @@ -27,7 +31,7 @@ finish-args: - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.retrodeck # XEMU - Fixes issues with openSUSE systems, QEMU_AUDIO_DRV is defined as "pa" causing xemu to not launch - --unset-env=QEMU_AUDIO_DRV - # BoilR + # Steam ROM Manager - --filesystem=xdg-data/Steam:rw #Steam (flatpak) - --filesystem=~/.steam:rw # Steam (Non-flatpak) - --filesystem=~/.var/app/com.valvesoftware.Steam:rw # Steam (Flatpak) @@ -46,6 +50,7 @@ cleanup: - /bin/zstd* - /lib/pkg-config - /share/doc + - /share/gtk-doc # Steam ROM Manager - /share/man - /src - '*.a' @@ -143,6 +148,48 @@ modules: - type: file url: https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 sha256: af986793a515d500ab2d35f8d2aecd656e764504b789b66d7e1a0b727a124c44 + + # Steam ROM Manager - START + + - name: zypak + sources: + - type: git + url: https://github.com/refi64/zypak + tag: v2022.03 + commit: 8424c6bcf909ca2031ebc6537d324bb64772266e + + - name: steam-rom-manager + buildsystem: simple + env: + IN_FLATPAK: 1 + build-commands: + - install -D run.sh ${FLATPAK_DEST}/bin/steam-rom-manager + - cp /usr/bin/ar ${FLATPAK_DEST}/bin + - ar x srm.deb + - tar xf data.tar.xz + - mv "opt/Steam ROM Manager" "${FLATPAK_DEST}/srm" + - rm -rf "usr/share/icons/hicolor/1024x1024" + - cd usr; find share/icons/hicolor -type f -exec install -Dm644 "{}" + "${FLATPAK_DEST}/{}" \; + - rm -r srm.deb control.tar.* data.tar.xz debian-binary usr opt + sources: + - type: script + dest-filename: run.sh + commands: + - /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager "${@}" + - type: file + dest-filename: srm.deb + url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.4.19/steam-rom-manager_2.4.19_amd64.deb + sha256: aa4f121d50612801c30b9365e05cb92a3b4a9c402974fee2b88652de8d731b0e + x-checker-data: + type: json + url: https://api.github.com/repos/SteamGridDB/steam-rom-manager/releases/latest + url-query: >- + .assets[] | select(.name=="steam-rom-manager_" + $version + + "_amd64.deb") | .browser_download_url + version-query: .tag_name | sub("^v"; "") + + # Steam ROM Manager - END - name: yq buildsystem: simple diff --git a/retrodeck.sh b/retrodeck.sh index 28499c9d..3d697158 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -215,4 +215,5 @@ fi # Normal Startup start_retrodeck +# After everything is closed we run the quit function quit_retrodeck diff --git a/tools/configurator.sh b/tools/configurator.sh index 6c5e7860..d0762fb2 100755 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -156,6 +156,10 @@ configurator_welcome_dialog() { configurator_about_retrodeck_dialog ;; + "Sync with Steam" ) + configurator_add_steam + ;; + "Developer Options" ) log i "Configurator: opening \"$choice\" menu" configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!" @@ -1152,12 +1156,13 @@ configurator_reset_dialog() { --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --text="Which component do you want to reset to default settings?" \ --column="Component" --column="Action" \ + "Steam ROM Manager" "Reset SRM that manages the sync and scraping toward Steam library" \ "ES-DE" "Reset the ES-DE frontend" \ ) # TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU" case $component_to_reset in - "ES-DE" ) # TODO: GyroDSU + "Steam ROM Manager" | "ES-DE" ) # TODO: GyroDSU if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset $component_to_reset to default settings?\n\nThis process cannot be undone.") == "true" ]]; then prepare_component "reset" "$component_to_reset" "configurator" configurator_process_complete_dialog "resetting $component_to_reset" @@ -1250,6 +1255,48 @@ configurator_about_retrodeck_dialog() { esac } +configurator_add_steam() { + if [[ $(get_setting_value $rd_conf "steam_sync" retrodeck "options") == "true" ]]; then + zenity --question \ + --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization is currently enabled. Do you want to disable it?\n\nThe already added shortcut will not be removed.\n" + + if [ $? == 0 ] # User clicked "Yes" + then + disable_steam_sync + else # User clicked "Cancel" + configurator_welcome_dialog + fi + else + zenity --question \ + --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization is currently disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam ROM Manager.\nRemember to restart Steam each time to see the changes.\n" + + if [ $? == 0 ] + then + enable_steam_sync + else + configurator_welcome_dialog + fi + fi +} + +enable_steam_sync() { + set_setting_value $rd_conf "steam_sync" "true" retrodeck "options" + zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization enabled." + configurator_welcome_dialog +} + +disable_steam_sync() { + set_setting_value $rd_conf "steam_sync" "false" retrodeck "options" + configurator_welcome_dialog +} + configurator_version_history_dialog() { local version_array=($(xml sel -t -v '//component/releases/release/@version' -n $rd_appdata)) local all_versions_list=() From 3dc6b188337a9d57b66cda1288c9990dfd58cb57 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 28 Oct 2024 10:02:17 +0900 Subject: [PATCH 010/107] Feat/godot (#962) * Table top mode * Button Colour and tables columns * Bob does regex * Bob does regex2 * Updates from feedback * Stuff * Ensure funnction array being passed correctly * Array to String needed afterall * Cooker Test * Test build * Fixed Bios display issue * Fixed dialogue logging * Full Screen is back * gGent Orange BIOS * GDScript Logger POC * Try to create log folder * GDScript Logger POC (#956) * GDScript Logger POC * Try to create log folder * Ensure all_systems array is empty every time build_preset_list_options() is run - This prevents all_systems array from having multiple copies of all systems when run multiple times in the same session, which would cause make_preset_changes() to run build_preset_config() multiple times. * logs2.0 * Parked up for the night * Don't truncate the log file * Timestamp, fix append * Time for a break * restore godot logger, default is still bash * Added real milliseconds to log timestamp (thanks, monkeyx), typing fixes * Time for a break * Update godot.yml * Update godot.yml * Update godot.yml * Update godot.yml * Update godot.yml * Update godot.yml * Update godot.yml * Translations with POT! * Comment to test PR (#960) Co-authored-by: Rekku --------- Co-authored-by: Rekku Co-authored-by: WallK Co-authored-by: MonkeyX Co-authored-by: icenine451 --- .github/workflows/godot.yml | 26 + functions/presets.sh | 1 + .../components/bios_check/bios_check.gd | 4 +- .../bios_check/bios_popup_content.tscn | 1 - .../configurator/components/popup_dialogue.gd | 11 +- tools/configurator/export_presets.cfg | 210 ++++++- tools/configurator/main.tscn | 4 +- tools/configurator/project.godot | 5 +- .../res/pixel_ui_theme/RetroDECKTheme.tres | 84 +-- tools/configurator/scripts/class_functions.gd | 94 +++- tools/configurator/scripts/data_handler.gd | 2 +- tools/configurator/translations/en_US.mo | Bin 0 -> 377 bytes tools/configurator/translations/en_US.po | 515 ++++++++++++++++++ .../translations/translation_template.pot | 509 +++++++++++++++++ 14 files changed, 1394 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/godot.yml create mode 100644 tools/configurator/translations/en_US.mo create mode 100644 tools/configurator/translations/en_US.po create mode 100644 tools/configurator/translations/translation_template.pot diff --git a/.github/workflows/godot.yml b/.github/workflows/godot.yml new file mode 100644 index 00000000..81d66edc --- /dev/null +++ b/.github/workflows/godot.yml @@ -0,0 +1,26 @@ +name: Building a mOnKeyX Project + +on: + push: + branches: [ feat/godot-uk ] + pull_request: + branches: [ feat/godot-uk ] + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name : exportGame + uses: firebelley/godot-export@v5.2.1 + with: + godot_executable_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_linux.x86_64.zip + godot_export_templates_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_export_templates.tpz + relative_project_path: tools/rd-config-test/ + create_release: true + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + diff --git a/functions/presets.sh b/functions/presets.sh index 6b75ed3f..af077ac6 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -49,6 +49,7 @@ build_preset_list_options() { current_disabled_systems=() changed_systems=() changed_presets=() + all_systems=() local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d') while IFS= read -r config_line diff --git a/tools/configurator/components/bios_check/bios_check.gd b/tools/configurator/components/bios_check/bios_check.gd index ea974ec0..d4b9fa6d 100644 --- a/tools/configurator/components/bios_check/bios_check.gd +++ b/tools/configurator/components/bios_check/bios_check.gd @@ -44,10 +44,10 @@ func _ready(): if bios_line.size() >= 5: if bios_line[2] == "No": table_line.set_custom_bg_color(i,Color(1,0,0,0.15)) + elif bios_line[2] == "Yes" and bios_line[3] == "No": + table_line.set_custom_bg_color(i,Color(1,0.6,0,0.35)) elif bios_line[2] == "Yes": table_line.set_custom_bg_color(i,Color(0,1,0,0.15)) - elif bios_line[2] == "Yes" and bios_line[3] == "No": - table_line.set_custom_bg_color(i,Color(1,0.6,0,0.15)) table_line.set_text(i, bios_line[i]) #if table_line.get_index() % 2 == 1: #table_line.set_custom_bg_color(i,Color(0.15, 0.15, 0.15, 1),false) diff --git a/tools/configurator/components/bios_check/bios_popup_content.tscn b/tools/configurator/components/bios_check/bios_popup_content.tscn index 2055cd0b..6b4111c7 100644 --- a/tools/configurator/components/bios_check/bios_popup_content.tscn +++ b/tools/configurator/components/bios_check/bios_popup_content.tscn @@ -40,4 +40,3 @@ columns = 5 column_titles_visible = true allow_reselect = true allow_rmb_select = true -select_mode = 1 diff --git a/tools/configurator/components/popup_dialogue.gd b/tools/configurator/components/popup_dialogue.gd index afdb8320..7d9c8f49 100644 --- a/tools/configurator/components/popup_dialogue.gd +++ b/tools/configurator/components/popup_dialogue.gd @@ -24,14 +24,13 @@ func _input(event): get_tree().quit() func _on_cancel_pressed(): - class_functions.log_parameters[2] = class_functions.log_text + "Exited dialogue" - class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) + class_functions.logger("d", "Exited dialogue") get_tree().quit() func _on_ok_button_pressed() -> void: - class_functions.log_parameters[2] = class_functions.log_text + "Command to run:- " + command + " " + str(parameters) - class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) + class_functions.logger("d", "Command to run " + command + " " + str(parameters)) var result = class_functions.execute_command(command,parameters , false) - class_functions.log_parameters[2] = class_functions.log_text + "Exit code: " + str(result["exit_code"]) + class_functions.logger("d", "Exit code: " + str(result["exit_code"])) %content_rtl.text = result["output"] - class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) + #get_tree().quit() + diff --git a/tools/configurator/export_presets.cfg b/tools/configurator/export_presets.cfg index 8ed4d864..3e2f39ac 100644 --- a/tools/configurator/export_presets.cfg +++ b/tools/configurator/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="" +export_path="../../../../Desktop/godot_configurator.x86_64" encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false @@ -356,3 +356,211 @@ open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" + +[preset.3] + +name="Android" +platform="Android" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.3.options] + +custom_template/debug="" +custom_template/release="" +gradle_build/use_gradle_build=false +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false +gradle_build/export_format=0 +gradle_build/min_sdk="" +gradle_build/target_sdk="" +architectures/armeabi-v7a=false +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +version/code=1 +version/name="" +package/unique_name="net.retrodeck.$genname" +package/name="Configurator" +package/signed=true +package/app_category=2 +package/retain_data_on_uninstall=false +package/exclude_from_recents=false +package/show_in_android_tv=false +package/show_in_app_library=true +package/show_as_launcher_app=false +launcher_icons/main_192x192="" +launcher_icons/adaptive_foreground_432x432="" +launcher_icons/adaptive_background_432x432="" +graphics/opengl_debug=false +xr_features/xr_mode=0 +screen/immersive_mode=true +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PackedStringArray() +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/manage_external_storage=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/post_notifications=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false diff --git a/tools/configurator/main.tscn b/tools/configurator/main.tscn index 83e08c84..20a83656 100644 --- a/tools/configurator/main.tscn +++ b/tools/configurator/main.tscn @@ -273,12 +273,11 @@ unique_name_in_owner = true layout_mode = 2 theme_override_styles/tab_selected = SubResource("StyleBoxFlat_co0k7") tab_alignment = 1 -current_tab = 3 +current_tab = 0 script = ExtResource("3_id6l4") [node name="GLOBALS" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] unique_name_in_owner = true -visible = false layout_mode = 2 script = ExtResource("4_2jqfc") metadata/_tab_index = 0 @@ -935,6 +934,7 @@ disabled = true text = "TK_MULTIFILE" [node name="SETTINGS" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] +visible = false layout_mode = 2 script = ExtResource("54_bxhvn") metadata/_tab_index = 3 diff --git a/tools/configurator/project.godot b/tools/configurator/project.godot index 82b4b71f..1949196e 100644 --- a/tools/configurator/project.godot +++ b/tools/configurator/project.godot @@ -10,7 +10,7 @@ config_version=5 [application] -config/name="RetroDECK Configurator" +config/name="RetroDECKConfigurator" config/version="0.053" run/main_scene="res://main.tscn" config/features=PackedStringArray("4.3", "GL Compatibility") @@ -28,6 +28,7 @@ data_handler="*res://scripts/data_handler.gd" window/size/viewport_width=1280 window/size/viewport_height=800 window/stretch/mode="canvas_items" +window/stretch/aspect="ignore" [filesystem] @@ -117,6 +118,8 @@ quit2={ [internationalization] locale/translation_remaps={} +locale/translations=PackedStringArray("res://translations/en_US.po") +locale/translations_pot_files=PackedStringArray("res://main.tscn", "res://scripts/TabContainer.gd") [rendering] diff --git a/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres b/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres index 4589760d..e9dbe6d5 100644 --- a/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres +++ b/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres @@ -1087,7 +1087,7 @@ cache/0/16/0/glyphs/95/uv_rect = Rect2(92, 148, 6, 1) cache/0/16/0/glyphs/95/texture_idx = 0 cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) -[sub_resource type="Image" id="Image_rprbs"] +[sub_resource type="Image" id="Image_3f0rd"] data = { "data": PackedByteArray("4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg/////////////////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4A=="), "format": "Lum8", @@ -1097,9 +1097,9 @@ data = { } [sub_resource type="ImageTexture" id="447"] -image = SubResource("Image_rprbs") +image = SubResource("Image_3f0rd") -[sub_resource type="Image" id="Image_cf6bc"] +[sub_resource type="Image" id="Image_kyr1d"] data = { "data": PackedByteArray("AAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQACgAVACUANAA/AEYARwBIAEgARwBGAD8ANAAlABUACgARACU/d1rvVv9W/1b/Vv9W/1b/Vv9W/1rvP3cAJQARABkANFnvSP9E/0P/Q/9D/0P/Q/9D/0T/SP9Z7wA0ABkAHwA/VP9D/0P/Q/9D/0P/Q/9D/0P/Q/9D/1T/AD8AHwAiAEZS/0L/Qv9C/0L/Qv9C/0L/Qv9C/0L/Uv8ARgAiACQAR1H/QP9A/0D/QP9A/0D/QP9A/0D/QP9R/wBHACQAJABIT/8//z//P/8//z//P/8//z//P/8//0//AEgAJAAkAEhN/z7/Pv8+/z7/Pv8+/z7/Pv8+/z7/Tf8ASAAkACQAR0z/Pf89/z3/Pf89/z3/Pf89/z3/Pf9M/wBHACQAIgBGSv87/zv/O/87/zv/O/87/zv/O/87/0r/AEYAIgAfAD9J/zr/Ov86/zr/Ov86/zr/Ov86/zr/Sf8APwAfABkANEvvPf85/zn/Of85/zn/Of85/zn/Pf9L7wA0ABkAEQAlNXdK70f/Rv9G/0b/Rv9G/0b/R/9K7TV3ACUAEQAKABUAJQA0AD8ARgBHAEgASABHAEYAPwA0ACUAFQAKAAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQ="), "format": "LumAlpha8", @@ -1109,7 +1109,7 @@ data = { } [sub_resource type="ImageTexture" id="53"] -image = SubResource("Image_cf6bc") +image = SubResource("Image_kyr1d") [sub_resource type="StyleBoxTexture" id="54"] content_margin_left = 6.0 @@ -1123,7 +1123,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_1cy53"] +[sub_resource type="Image" id="Image_p4fmj"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw5HjL85R4y/aEeMv3pHjL97R4y/e0eMv3tHjL97R4y/ekeMv2hHjL85R4y/DgAAAAAAAAAAAAAAAAAAAABHjL86R4y/dEeMvxBHjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8QR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/aUeMvw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw9HjL9pAAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8GR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwhHjL97AAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8IR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwZHjL97AAAAAAAAAAAAAAAAAAAAAEeMv2lHjL8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8OR4y/aQAAAAAAAAAAAAAAAAAAAABHjL86R4y/dUeMvw9HjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8RR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/DkeMvzpHjL9oR4y/ekeMv3tHjL97R4y/e0eMv3tHjL96R4y/aEeMvzlHjL8OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1133,7 +1133,7 @@ data = { } [sub_resource type="ImageTexture" id="56"] -image = SubResource("Image_1cy53") +image = SubResource("Image_p4fmj") [sub_resource type="StyleBoxTexture" id="57"] content_margin_left = 6.0 @@ -1147,7 +1147,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_b3ady"] +[sub_resource type="Image" id="Image_4lbps"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJUJAS3dfWmzvW1do/1pWZ/9aVmf/WlZn/1pWZ/9aVmf/WlZn/1tXaP9fWmzvQkBLdwAAACUAAAARAAAAGQAAADRfWmvvTUpX/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9JRlL/TUpX/19aa+8AAAA0AAAAGQAAAB8AAAA/W1dm/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9IRVH/SEVR/0lGUv9bV2b/AAAAPwAAAB8AAAAiAAAARllVZP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/WVVk/wAAAEYAAAAiAAAAJAAAAEdYVGT/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/1hUZP8AAABHAAAAJAAAACQAAABIVlNj/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9WU2P/AAAASAAAACQAAAAkAAAASFZTYv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/VlNi/wAAAEgAAAAkAAAAJAAAAEdVUWL/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/1VRYv8AAABHAAAAJAAAACIAAABGVVFg/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9VUWD/AAAARgAAACIAAAAfAAAAP1VRYP9EQU3/Q0BM/0NATP9DQEz/Q0BM/0NATP9DQEz/Q0BM/0NATP9EQU3/VVFg/wAAAD8AAAAfAAAAGQAAADRWU2TvR0NR/0M/Tf9CP0z/Qj9M/0I/TP9CP0z/Qj9M/0I/TP9DP03/R0NR/1dTZO8AAAA0AAAAGQAAABEAAAAlPjtGd1dTY+9TUF//U09e/1NPXv9TT17/U09e/1NPXv9TT17/U1Bf/1dTY+0+O0Z3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="), "format": "RGBA8", @@ -1157,7 +1157,7 @@ data = { } [sub_resource type="ImageTexture" id="59"] -image = SubResource("Image_b3ady") +image = SubResource("Image_4lbps") [sub_resource type="StyleBoxTexture" id="60"] content_margin_left = 6.0 @@ -1175,7 +1175,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_7hmcg"] +[sub_resource type="Image" id="Image_b8j2s"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJTw6RHdWU2HvUlBd/1FPXf9RT13/UU9d/1FPXf9RT13/UU9d/1JQXf9WU2HvPDpEdwAAACUAAAARAAAAGQAAADRWUmDvRkJO/0I+Sv9BPkn/QT5J/0E+Sf9BPkn/QT5J/0E+Sf9CPkr/RkJO/1ZSYO8AAAA0AAAAGQAAAB8AAAA/UU5b/0E+Sf9APkj/QD5I/0A+SP9APkj/QD5I/0A+SP9APkj/QD5I/0E+Sf9RTlv/AAAAPwAAAB8AAAAiAAAARk9MWf8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/T0xZ/wAAAEYAAAAiAAAAJAAAAEdOSlj/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/05KWP8AAABHAAAAJAAAACQAAABIS0lV/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP9LSVX/AAAASAAAACQAAAAkAAAASEpHVP87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/SkdU/wAAAEgAAAAkAAAAJAAAAEdJRlP/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/0lGU/8AAABHAAAAJAAAACIAAABGR0VQ/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP9HRVD/AAAARgAAACIAAAAfAAAAP0dDUP84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//R0NQ/wAAAD8AAAAfAAAAGQAAADRHRFLvOjhC/zY0Pv82ND7/NjQ+/zY0Pv82ND7/NjQ+/zY0Pv82ND7/OjhC/0dEUu8AAAA0AAAAGQAAABEAAAAlMzE5d0dEUO9EQk3/REFM/0RBTP9EQUz/REFM/0RBTP9EQUz/REJN/0dEUe0zMTl3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="), "format": "RGBA8", @@ -1185,7 +1185,7 @@ data = { } [sub_resource type="ImageTexture" id="62"] -image = SubResource("Image_7hmcg") +image = SubResource("Image_b8j2s") [sub_resource type="StyleBoxTexture" id="63"] content_margin_left = 6.0 @@ -1199,7 +1199,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_cg8le"] +[sub_resource type="Image" id="Image_fg85n"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAsAAAAWAAAAJwAAADYAAABBAAAASQAAAEoAAABLAAAASwAAAEoAAABJAAAAQQAAADYAAAAnAAAAFgAAAAsAAAATAAAAKTEvN4BGQ0/xQ0BM/0JAS/9CQEv/QkBL/0JAS/9CQEv/QkBL/0NATP9GQ0/xMS83fwAAACkAAAATAAAAHgAAAD1HRFDyOjhB/wsLDP8LCgz/CwoM/wsKDP8LCgz/CwsM/wsLDP8LCwz/OjhB/0dEUPIAAAA9AAAAHgAAACcAAABNREJO/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf9EQk7/AAAATQAAACcAAAAsAAAAWEZCT/8UExb/ExIW/xMSFv8UExb/ExIW/xQTFv8UExb/FBMW/xQTFv8TEhb/RkJP/wAAAFgAAAAsAAAAMgAAAF1HRVD/GBcb/xgXG/8YFxv/GBcb/xgXG/8YFxv/GBcb/xkYHP8YFxv/GBcb/0dFUP8AAABdAAAAMgAAADMAAABjSUZT/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf9JRlP/AAAAYwAAADMAAAA2AAAAZkpHVP8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/SkdU/wAAAGYAAAA2AAAAOQAAAGlLSVX/JyYt/ycmLf8nJi3/JyYt/ycmLf8nJi3/JyYt/ygmLf8nJi3/KCYt/0tJVf8AAABpAAAAOQAAADgAAABsTkpY/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/9OSlj/AAAAbAAAADgAAAA1AAAAZVBNWv8zMTr/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTr/UE1a/wAAAGUAAAA1AAAALQAAAFlVUl/8RUJN/zk3QP84N0D/OTdA/zg3QP84N0D/ODdA/zg3QP86N0H/RUJN/1VSYPwAAABZAAAALQAAACAAAABEPTpFtFZSYP1STlz/UU5b/1FOW/9RTlv/UU5b/1FOW/9RTlv/Uk5c/1ZSYP09OkW0AAAARAAAACAAAAAUAAAAKAAAAEUAAABdAAAAbgAAAHkAAAB6AAAAfAAAAHwAAAB6AAAAeQAAAG4AAABdAAAARQAAACgAAAAUAAAACAAAABQAAAAhAAAAMAAAADoAAAA/AAAAQwAAAEMAAABDAAAAQwAAAD8AAAA6AAAAMAAAACEAAAAUAAAACA=="), "format": "RGBA8", @@ -1209,7 +1209,7 @@ data = { } [sub_resource type="ImageTexture" id="65"] -image = SubResource("Image_cg8le") +image = SubResource("Image_fg85n") [sub_resource type="StyleBoxTexture" id="66"] content_margin_left = 6.0 @@ -1223,7 +1223,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_tpkot"] +[sub_resource type="Image" id="Image_6ujc8"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADf39+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAA4ODg/9/f34gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAODg4P/g4OD/39/fiAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADg4OD/4ODg/+Dg4P/f39+IAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1233,9 +1233,9 @@ data = { } [sub_resource type="ImageTexture" id="425"] -image = SubResource("Image_tpkot") +image = SubResource("Image_6ujc8") -[sub_resource type="Image" id="Image_8d7tv"] +[sub_resource type="Image" id="Image_an2bn"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MXg/+D/4P/g/+D/4P/gwwAAAAAAAAAAAAAAAAAAAADg/+D/4P/g/+D/4P/g/+D/AAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P/hPAAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/gwwAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAODD4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/38IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1245,9 +1245,9 @@ data = { } [sub_resource type="ImageTexture" id="427"] -image = SubResource("Image_8d7tv") +image = SubResource("Image_an2bn") -[sub_resource type="Image" id="Image_bwfne"] +[sub_resource type="Image" id="Image_cvk7t"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3hfgz+DO3hcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g1+AZAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g/uD+4NfgGQAAAAAAAAAAAAAAAAAA3hfg1OD+4NHg/uD94dLg/uDU3hcAAAAAAAAAAAAAAADgzeD+4NDcFuD+4P3bFeDR4P7gzAAAAAAAAAAAAAAAAOC+4MXZFP8B4P7g/QAA2xXhyeDFAAAAAAAAAAAAAAAAAAAAAAAA/wHg/uD9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AeD+4P0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MThwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1257,9 +1257,9 @@ data = { } [sub_resource type="ImageTexture" id="429"] -image = SubResource("Image_bwfne") +image = SubResource("Image_cvk7t") -[sub_resource type="Image" id="Image_r6mai"] +[sub_resource type="Image" id="Image_hbobg"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbB99u4Mfg8+Dz4MfebdsHAAAAAAAAAAAAAAAAAADjG+DP4P7g/uD+4P7g/uD+4M7jGwAAAAAAAAAAAADbB+DP4P7g4eBT2A3YDd9Q4Nfg/uDO2wcAAAAAAAAAAN9u4P7g4eMSAAAAAAAAAADhEeDh4P7ebAAAAAAAAAAA4Mjg/uBTAAAAAAAAAAAAAAAA3lXg/uDGAAAAAAAAAADg8uD+2A0AAAAAAAAAAAAAAADbDuD+4PEAAAAA4J7g/uD+4P7g/uCeAAAAAAAAAAAAAN0P4P7g8QAAAADoC+DU4P7g/uDU6AsAAAAAAAAAAAAA3lbg/uDGAAAAAAAA4Svg8+Dz4SsAAAAAAAAAAAAA5BPh4uD+3mwAAAAAAAAAAN9g32AAAAAAAAAAANsO3lbh4uD+4M7VBgAAAAAAAAAAAAAAAAAAAAAAAAAA4P7g/uD+4M7jGwAAAAAAAAAAAAAAAAAAAAAAAAAAAADg8uDF3mzVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1269,9 +1269,9 @@ data = { } [sub_resource type="ImageTexture" id="431"] -image = SubResource("Image_r6mai") +image = SubResource("Image_hbobg") -[sub_resource type="Image" id="Image_ikos2"] +[sub_resource type="Image" id="Image_2uton"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA39/fCN7e3mzg4ODF4ODg9ODg4PPg4ODF3t7ebePj4wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eLuDg4Njg4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7h4eHa4ODgMgAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eL+Dg4PDg4OD+4ODg4eDg4FPY2NgN2NjYDd/f31Dg4ODX4ODg/uDg4PLh4eEzAAAAAAAAAAAAAAAA4+PjCeDg4Nzg4OD+4ODg4ePj4xIAAAAAAAAAAAAAAAAAAAAA4eHhEeDg4OHg4OD+4ODg3+bm5goAAAAAAAAAAN/f33fg4OD+4ODg/uDg4FMAAAAA4ODgS+Dg4OPh4eHi4ODgSQAAAADe3t5V4ODg/uDg4P7f3995AAAAAAAAAADh4eHa4ODg/uDg4P7Y2NgNAAAAAOHh4eLg4OD+4ODg/uDg4OEAAAAA29vbDuDg4P7g4OD+4eHh2gAAAAAAAAAA4ODg2+Dg4P7g4OD+2NjYDQAAAADh4eHi4ODg/uDg4P7g4ODhAAAAAN3d3Q/g4OD+4ODg/uDg4NsAAAAAAAAAAN7e3nzg4OD+4ODg/t/f31AAAAAA4ODgSeHh4eLg4ODh39/fSAAAAADe3t5W4ODg/uDg4P7g4OB7AAAAAAAAAADV1dUM4ODg4+Dg4P7g4ODX4eHhEQAAAAAAAAAAAAAAAAAAAADk5OQT4eHh4uDg4P7g4ODh1dXVDAAAAAAAAAAAAAAAAN/f3zjg4OD04ODg/uDg4OHe3t5V29vbDtvb2w7e3t5W4eHh4uDg4P7g4OD03t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAA39/fN+Dg4N7g4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7g4ODd3t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5uYK39/fcODg4MXg4ODz4ODg8+Dg4MXf399u5ubmCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1281,7 +1281,7 @@ data = { } [sub_resource type="ImageTexture" id="433"] -image = SubResource("Image_ikos2") +image = SubResource("Image_2uton") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_g6bu4"] texture = ExtResource("1_ak8qr") @@ -1377,7 +1377,7 @@ bg_color = Color(0.490196, 0.490196, 0.490196, 1) corner_detail = 1 anti_aliasing = false -[sub_resource type="Image" id="Image_h6a0p"] +[sub_resource type="Image" id="Image_74cmk"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN9Y3BYAAAAAAAAAAAAAAADcFt9YAAAAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAA2xXf0uD/4NfgGQAAAADbFd/S4P/g198YAAAAAAAAAAAAANsV39Lg/+DX4BnbFd/S4P/g198YAAAAAAAAAAAAAAAAAADbFd/S4P/h2uDW4P/g198YAAAAAAAAAAAAAAAAAAAAAAAA2xXf1uD/4P/g298YAAAAAAAAAAAAAAAAAAAAAAAAAADbFd/W4P/g/+Db4BkAAAAAAAAAAAAAAAAAAAAAAADbFd/S4P/f2uDW4P/g1+AZAAAAAAAAAAAAAAAAAADbFd/S4P/g198Y2xXf0uD/4NfgGQAAAAAAAAAAAADbFd/S4P/g198YAAAAANsV39Lg/+DX4BkAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAAAADfWNwWAAAAAAAAAAAAAAAA3BbfWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1387,7 +1387,7 @@ data = { } [sub_resource type="ImageTexture" id="49"] -image = SubResource("Image_h6a0p") +image = SubResource("Image_74cmk") [sub_resource type="StyleBoxTexture" id="127"] content_margin_left = 4.0 @@ -2208,7 +2208,7 @@ texture_margin_right = 2.0 texture_margin_bottom = 2.0 region_rect = Rect2(72, 64, 8, 8) -[sub_resource type="Image" id="Image_8nh6x"] +[sub_resource type="Image" id="Image_fgheo"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc5uqs87c4bPO3OGzztzhs87c4bPO3OGzztzhs3ObqrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2218,7 +2218,7 @@ data = { } [sub_resource type="ImageTexture" id="199"] -image = SubResource("Image_8nh6x") +image = SubResource("Image_fgheo") [sub_resource type="StyleBoxTexture" id="200"] texture = SubResource("199") @@ -2242,7 +2242,7 @@ texture_margin_right = 2.0 texture_margin_bottom = 2.0 region_rect = Rect2(64, 64, 8, 8) -[sub_resource type="Image" id="Image_hk701"] +[sub_resource type="Image" id="Image_uueco"] data = { "data": PackedByteArray("/wD//wD//wD//wD/Z3qFZnqGaHuGaHuGaHuGaHuGZnqGZ3qF/wD//wD//wD//wD//wD//wD/Z3qFZnqGV1FRTEJATUNBTUNBTUNBTUNBTEJAV1FRZnqGZ3qF/wD//wD//wD/Z3qFVkxLTEJATURBTUNBTkRCTkRCTkRCTkRCTUNBTURBTEJAV1FRZ3qF/wD//wD/ZnqGTEJATEJATUNBT0VDT0VDT0VDT0VDT0VDT0VDTUNBTEJATEJAZ3uH/wD/Z3qFV1FRTEJATEJATkRCT0RDUEVEUkZEUkZEUUZFT0RDTkRCTEJATEJAV1FRZ3qFZnqGS0A/TEJATUNBT0RDUUdFUkhGU0hHU0hHUkhGUUdFT0RDTkRCTEJAS0E/Z3uHZ3uHS0E/TEJATUNBT0RDUUdFVElGVUpHVUlHVUpHUkhGUEVETUNBTEJAS0E/aHyIZ3uHSkA+S0E/TUNBT0VDUUdFVElGVUtJVk1LVElGU0lHUEZETkRCTEJAS0E/aHyIZ3uHSkE+S0E/TEJAT0VDUUdFVElGVUtJVUtJVUpHUkhGUEZETkRCTEJASkA+aHyIZ3uHSD48S0I/S0E/TkRCUEVEUUZFU0lHU0lHUkhGUEVETkRCTEJAS0E/ST89aHyIZ3uHRj08SD48SkA+TEJATkRCT0RDUEVEUEVEUEZET0VDTEJAS0A/ST89Rz07Z3uHZ3qFV1FRRz47SUA9S0E/TEJATUNBTkRCTkRCTUNBTEJAS0E/ST89Rz07V1FRaHuG/wD/Z3uHRj08Rz07SD48ST89SkA+S0E/S0E/S0A/SkA+SD48Rz47Rz07Z3uH/wD//wD/Z3qFV1FRRTw7Rz07Rz07Rz07SD48SD48Rz07Rz07Rz47Rj08V1FRZnqG/wD//wD//wD/Z3qFZ3uHV1FRRjw6Rjw6Rz47Rz47Rjw6Rjw6V1FRZ3uHaHuG/wD//wD//wD//wD//wD//wD/ZnqGZ3uHaHyIaHyIaHyIaHyIZ3uHaHuG/wD//wD//wD//wD/"), "format": "RGB8", @@ -2252,7 +2252,7 @@ data = { } [sub_resource type="ImageTexture" id="204"] -image = SubResource("Image_hk701") +image = SubResource("Image_uueco") [sub_resource type="StyleBoxTexture" id="205"] texture = SubResource("204") @@ -2365,7 +2365,7 @@ axis_stretch_horizontal = 2 axis_stretch_vertical = 2 region_rect = Rect2(80, 0, 16, 8) -[sub_resource type="Image" id="Image_ll126"] +[sub_resource type="Image" id="Image_aet7u"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOFe4PTg/+D/4P/g/+D24WYAAAAAAAAAAAAA3yjf0uD/4P/g1+MtAAAAAAAAAAAAAAAAAADoC+Gf4Z/oCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), "format": "LumAlpha8", @@ -2375,9 +2375,9 @@ data = { } [sub_resource type="ImageTexture" id="306"] -image = SubResource("Image_ll126") +image = SubResource("Image_aet7u") -[sub_resource type="Image" id="Image_jfrub"] +[sub_resource type="Image" id="Image_jhqhk"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), "format": "LumAlpha8", @@ -2387,9 +2387,9 @@ data = { } [sub_resource type="ImageTexture" id="308"] -image = SubResource("Image_jfrub") +image = SubResource("Image_jhqhk") -[sub_resource type="Image" id="Image_d7wny"] +[sub_resource type="Image" id="Image_w4jbr"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAP9Z/xT/FP9ZAAAAAAAA/1n/FP8U/1kAAAAAAAD/Wf8U/xT/WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -2399,9 +2399,9 @@ data = { } [sub_resource type="ImageTexture" id="292"] -image = SubResource("Image_d7wny") +image = SubResource("Image_w4jbr") -[sub_resource type="Image" id="Image_jacs1"] +[sub_resource type="Image" id="Image_u505n"] data = { "data": PackedByteArray("FxYabx0cIe8gHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHvFxYabx0cIfAkIin/KCYt/ygmLv8oJi7/KCYu/ygmLv8oJi3/JCIp/x0cIfAgHiT5KCYt/ysqMf8sKjL/LCoy/ywqMv8sKjL/Kyox/ygmLf8gHiT5IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yEfJfcoJi7/LCoy/ywqMv8sKjL/LCoy/ywqMv8sKjL/KCYu/yEfJfchHyX3KCYu/ywqMv8sKjL/LCoy/ywqMv8sKjL/LCoy/ygmLv8hHyX3IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yAeJPkoJi3/Kyox/ywqMv8sKjL/LCoy/ywqMv8rKjH/KCYt/yAeJPkdHCHwJCIp/ygmLf8oJi7/KCYu/ygmLv8oJi7/KCYt/yQiKf8dHCHxFxYabx0cIfAgHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHuFxYabw=="), "format": "RGBA8", @@ -2411,7 +2411,7 @@ data = { } [sub_resource type="ImageTexture" id="39"] -image = SubResource("Image_jacs1") +image = SubResource("Image_u505n") [sub_resource type="StyleBoxTexture" id="272"] content_margin_left = 0.0 @@ -2471,7 +2471,7 @@ axis_stretch_horizontal = 2 axis_stretch_vertical = 2 region_rect = Rect2(24, 40, 8, 8) -[sub_resource type="Image" id="Image_nk8py"] +[sub_resource type="Image" id="Image_jtv2p"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loWFZjarCvtYFNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/4uLjf//////tra53U1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/0JCR//4+Pj//v7+/1dXWvtNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/05OUv8mJiv/JSUq/yUlKv/Fxcf//////6qqq/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/7i4uv//////X19j/yUlKv90dHf//////+3t7f8zMzj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv+NjY///////7i4uf81NTn/7e3t//////90dHf/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/Ojo+//v7+//6+vr/srK0///////Fxcf/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv+4uLr///////7+/v/4+Pj/RUVJ/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/YWFl////////////j4+S/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yYmK/9OTlL/Y2Nm/yoqL/8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2481,9 +2481,9 @@ data = { } [sub_resource type="ImageTexture" id="334"] -image = SubResource("Image_nk8py") +image = SubResource("Image_jtv2p") -[sub_resource type="Image" id="Image_iduya"] +[sub_resource type="Image" id="Image_ehswk"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loTUtZZk1LWVBNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/x4eIv8gICT6ODdAtE1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPpNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yIiJ/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2493,7 +2493,7 @@ data = { } [sub_resource type="ImageTexture" id="336"] -image = SubResource("Image_iduya") +image = SubResource("Image_ehswk") [sub_resource type="AtlasTexture" id="359"] atlas = ExtResource("1_ak8qr") @@ -2581,7 +2581,7 @@ region = Rect2(96, 96, 16, 16) atlas = ExtResource("1_ak8qr") region = Rect2(96, 80, 16, 16) -[sub_resource type="Image" id="Image_a5v57"] +[sub_resource type="Image" id="Image_jtti3"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgnmNjY15mJiYeYGirQCMrLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFVfAE5OTjGCgoJ5jY2NeZiYmHlOTk4xTk5OMU5OTjE4VV8AOFVfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhVXwBOTk4cTk5OMU5OTjFOTk4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2591,7 +2591,7 @@ data = { } [sub_resource type="ImageTexture" id="111"] -image = SubResource("Image_a5v57") +image = SubResource("Image_jtti3") [sub_resource type="StyleBoxTexture" id="4"] content_margin_left = 6.0 diff --git a/tools/configurator/scripts/class_functions.gd b/tools/configurator/scripts/class_functions.gd index 73ffec96..a13b89e4 100644 --- a/tools/configurator/scripts/class_functions.gd +++ b/tools/configurator/scripts/class_functions.gd @@ -1,6 +1,10 @@ class_name ClassFunctions extends Control + +# Test comment + +@onready var main_scene = get_tree().root.get_node("Control") var log_result: Dictionary var log_parameters: Array const globals_sh_file_path: String = "/app/libexec/global.sh" @@ -97,21 +101,70 @@ func multi_state(section: String, state: String) -> String: else: state = "mixed" return state - + func logger(log_type: String, log_text: String) -> void: - # Type of log messages: - # log d - debug message: maybe in the future we can decide to hide them in main builds or if an option is toggled - # log i - normal informational message - # log w - waring: something is not expected but it's not a big deal - # log e - error: something broke var log_header_text = "gdc_" log_header_text+=log_text log_parameters = ["log", log_type, log_header_text] log_result = await run_thread_command(wrapper_command,log_parameters, false) - #log_result = await run_thread_command("find",["$HOME", "-name", "*.xml","-print"], false) - #print (log_result["exit_code"]) - #print (log_result["output"]) - + +func logger_godot(log_type: String, log_text: String) -> void: + var log_dir_path: String = "/var/config/retrodeck/logs/" + var log_path: String = '/var/config/retrodeck/logs/gd_logs.log' + + var log_dir: DirAccess = DirAccess.open(log_dir_path) + var log_file: FileAccess + + var log_header: String = " GD " + + var datetime: Dictionary = Time.get_datetime_dict_from_system() + var unixtime: float = Time.get_unix_time_from_system() + var msec: int = (unixtime - floor(unixtime)) * 1000 # finally, real ms! Thanks, monkeyx + + var timestamp: String = "[%d-%02d-%02d %02d:%02d:%02d.%03d]" % [ + datetime.year, datetime.month, datetime.day, + datetime.hour, datetime.minute, datetime.second, msec] # real ms!! + + var log_line: String = timestamp + log_header + + match log_type: + 'w': + log_line += "[Warning] " + # print("Warning, mate") + 'e': + log_line += "[Error] " + # print("Error, mate") + 'i': + log_line += "[Info] " + # print("Info, mate") + 'd': + log_line += "[Debug] " + # print("Debug, mate") + _: + log_line += " " + print("No idea, mate") + log_line += log_text + # print(log_line) + + if not log_dir: + log_dir = DirAccess.open("res://") #open something valid to create an instance + print(log_dir.make_dir_recursive(log_dir_path)) + if log_dir.make_dir_recursive(log_dir_path) != OK: + print("Something wrong with log directory") + return + + if not FileAccess.open(log_path, FileAccess.READ): + log_file = FileAccess.open(log_path, FileAccess.WRITE_READ) # to create a file if not there + else: + log_file = FileAccess.open(log_path, FileAccess.READ_WRITE) # to not truncate + + if log_file: + log_file.seek_end() + log_file.store_line(log_line) + log_file.close() + else: + print("Something wrong with log file") + func array_to_string(arr: Array) -> String: var text: String for line in arr: @@ -130,9 +183,9 @@ func execute_command(command: String, parameters: Array, console: bool) -> Dicti result["exit_code"] = exit_code return result -func run_command_in_thread(command: String, paramaters: Array, _console: bool) -> Dictionary: +func run_command_in_thread(command: String, paramaters: Array, console: bool) -> Dictionary: var thread = Thread.new() - thread.start(execute_command.bind(command,paramaters,true)) + thread.start(execute_command.bind(command,paramaters,console)) while thread.is_alive(): await get_tree().process_frame return thread.wait_to_finish() @@ -290,6 +343,7 @@ func update_global(button: Button, preset: String, state: bool) -> void: quick_resume_status = state result.append_array(data_handler.change_cfg_value(config_file_path, "retroarch", preset, str(state))) change_global(result, button, str(quick_resume_status)) + #var resultT: Dictionary = await run_thread_command("/home/tim/bin/mult.sh", [], false) "update_notification_button": update_check = state result.append_array(data_handler.change_cfg_value(config_file_path, preset, "options", str(state))) @@ -313,13 +367,17 @@ func update_global(button: Button, preset: String, state: bool) -> void: if ask_to_exit_state != "mixed": ask_to_exit_state = str(state) result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))) - change_global(result, button, ask_to_exit_state) + await change_global(result, button, ask_to_exit_state) "border_button": if border_state != "mixed": border_state = str(state) result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))) - change_global(result, button, border_state) + await change_global(result, button, border_state) if widescreen_state == "true" or widescreen_state == "mixed": + var button_tmp = main_scene.get_node("%widescreen_button") + #Remove last array item or tries to append again + result.clear() + result.append("build_preset_config") config_section = data_handler.get_elements_in_section(config_file_path, "widescreen") widescreen_state = "false" result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, "widescreen", widescreen_state)) @@ -328,12 +386,16 @@ func update_global(button: Button, preset: String, state: bool) -> void: if widescreen_state != "mixed": widescreen_state = str(state) result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state))) - change_global(result, button, widescreen_state) + await change_global(result, button, widescreen_state) if border_state == "true" or border_state == "mixed": + var button_tmp = main_scene.get_node("%border_button") + #Remove last array item or tries to append again + result.clear() + result.append("build_preset_config") config_section = data_handler.get_elements_in_section(config_file_path, "borders") border_state = "false" result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, "borders", border_state)) - change_global(result, button, border_state) + change_global(result, button_tmp, border_state) "quick_rewind_button": if quick_rewind_state != "mixed": quick_rewind_state = str(state) diff --git a/tools/configurator/scripts/data_handler.gd b/tools/configurator/scripts/data_handler.gd index 8b21b1cc..45af85df 100644 --- a/tools/configurator/scripts/data_handler.gd +++ b/tools/configurator/scripts/data_handler.gd @@ -85,7 +85,7 @@ func load_base_data() -> AppData: else: class_functions.logger("d","Error parsing JSON ") else: - class_functions.logger("d","Error opening file: " + file) + class_functions.logger("d","Error opening file: %s" % file) get_tree().quit() return null diff --git a/tools/configurator/translations/en_US.mo b/tools/configurator/translations/en_US.mo new file mode 100644 index 0000000000000000000000000000000000000000..17b8a664b8faffa10a6f372f48b1580ff378ca91 GIT binary patch literal 377 zcmYk1&rZTX5XS4jON|%L9_9tM{^LMuJRnrkP|}7L!wr{qsHFVfaX_tWfAboYJDxFuQ<=-d=amp*hCirkqPqQ-Vr9}, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: RetroDECKConfigurator\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.4.2\n" + +#: main.tscn +msgid "GLOBALS" +msgstr "" + +#: main.tscn +msgid "ASK TO EXIT" +msgstr "Ask to EXit" + +#: main.tscn +msgid "BORDERS" +msgstr "" + +#: main.tscn +msgid "BUTTON SWAP\n" +msgstr "" + +#: main.tscn +msgid "MODS" +msgstr "" + +#: main.tscn +msgid "QUICK RESUME" +msgstr "" + +#: main.tscn +msgid "REWIND" +msgstr "" + +#: main.tscn +msgid "TATE MODE" +msgstr "" + +#: main.tscn +msgid "SHADERS" +msgstr "" + +#: main.tscn +msgid "WIDESCREEN" +msgstr "" + +#: main.tscn +msgid "SYSTEMS" +msgstr "" + +#: main.tscn +msgid "RETROARCH" +msgstr "" + +#: main.tscn +msgid "MAME" +msgstr "" + +#: main.tscn +msgid "RUFFLE" +msgstr "" + +#: main.tscn +msgid "MELONDS" +msgstr "" + +#: main.tscn +msgid "PCSX2" +msgstr "" + +#: main.tscn +msgid "DUCKSTATION" +msgstr "" + +#: main.tscn +msgid "PPSSPP" +msgstr "" + +#: main.tscn +msgid "VITA3K" +msgstr "" + +#: main.tscn +msgid "RPCS3" +msgstr "" + +#: main.tscn +msgid "RYUJINX" +msgstr "" + +#: main.tscn +msgid "DOLPHIN" +msgstr "" + +#: main.tscn +msgid "PRIMEHACK" +msgstr "" + +#: main.tscn +msgid "CEMU" +msgstr "" + +#: main.tscn +msgid "XEMU" +msgstr "" + +#: main.tscn +msgid "ES-DE" +msgstr "" + +#: main.tscn +msgid "HELP" +msgstr "" + +#: main.tscn +msgid "LAUNCH" +msgstr "" + +#: main.tscn +msgid "RESET" +msgstr "" + +#: main.tscn +msgid "INSTALL FIRMWARE" +msgstr "" + +#: main.tscn +msgid "TOOLS" +msgstr "" + +#: main.tscn +msgid "CHECK CONNECTION" +msgstr "" + +#: main.tscn +msgid "LOGS" +msgstr "" + +#: main.tscn +msgid "RetroDECK Log" +msgstr "" + +#: main.tscn +msgid "ES_DE Log" +msgstr "" + +#: main.tscn +msgid "Retroarch" +msgstr "" + +#: main.tscn +msgid "BIOS STANDARD" +msgstr "" + +#: main.tscn +msgid "BIOS EXPERT" +msgstr "" + +#: main.tscn +msgid "BACKUP USER DATA" +msgstr "" + +#: main.tscn +msgid "TK_CONTROLS" +msgstr "" + +#: main.tscn +msgid "TK_STEAMCONTEMP" +msgstr "" + +#: main.tscn +msgid "TK_INSTALL" +msgstr "" + +#: main.tscn +msgid "TK_FILETOOLS" +msgstr "" + +#: main.tscn +msgid "TK_USBTOOL" +msgstr "" + +#: main.tscn +msgid "TK_COMPRESSGAMES" +msgstr "" + +#: main.tscn +msgid "TK_MOVEFILES" +msgstr "" + +#: main.tscn +msgid "TK_GENTOOLS" +msgstr "" + +#: main.tscn +msgid "TK_GRIDINSTALL" +msgstr "" + +#: main.tscn +msgid "TK_FAVSTEAM" +msgstr "" + +#: main.tscn +msgid "TK_SCAN" +msgstr "" + +#: main.tscn +msgid "TK_SCUMMVMSCAN" +msgstr "" + +#: main.tscn +msgid "TK_MULTIFILE" +msgstr "" + +#: main.tscn +msgid "SETTINGS" +msgstr "" + +#: main.tscn +msgid "SYSTEM SETTINGS" +msgstr "" + +#: main.tscn +msgid "SOUND EFFECTS" +msgstr "" + +#: main.tscn +msgid "AUTO UPDATES" +msgstr "" + +#: main.tscn +msgid "CHOOSE FONT" +msgstr "" + +#: main.tscn +msgid "Default" +msgstr "" + +#: main.tscn +msgid "Modern" +msgstr "" + +#: main.tscn +msgid "OpenDyslexic3" +msgstr "" + +#: main.tscn +msgid "DEFAULT LANGUAGE" +msgstr "" + +#: main.tscn +msgid "RESET RETRODECK" +msgstr "" + +#: main.tscn +msgid "RESET ALL EMULATORS" +msgstr "" + +#: main.tscn +msgid "ACHIEVEMENTS" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVEMENTS" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVMENTS USERNAME" +msgstr "" + +#: main.tscn +msgid "username" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVMENTS PASSWORD" +msgstr "" + +#: main.tscn +msgid "password" +msgstr "" + +#: main.tscn +msgid "LOGIN" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVEMENTS HARDCORE" +msgstr "" + +#: main.tscn +msgid "NETPLAY" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAY" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYID" +msgstr "" + +#: main.tscn +msgid "RetroDECK" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYADDRESS" +msgstr "" + +#: main.tscn +msgid "127.0.0.1" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYCONNECT" +msgstr "" + +#: main.tscn +msgid "FUTURE FEATURES" +msgstr "" + +#: main.tscn +msgid "TK_MULTIUSR" +msgstr "" + +#: main.tscn +msgid "TK_CUSTOMUSR" +msgstr "" + +#: main.tscn +msgid "TK_OFF" +msgstr "" + +#: main.tscn +msgid "TK_STEAMUSR" +msgstr "" + +#: main.tscn +msgid "TK_SAVESSYNC" +msgstr "" + +#: main.tscn +msgid "TK_FTPBTN" +msgstr "" + +#: main.tscn +msgid "TK_MUSIC" +msgstr "" + +#: main.tscn +msgid "TK_EASTEREGGS" +msgstr "" + +#: main.tscn +msgid "ABOUT" +msgstr "" + +#: main.tscn +msgid "ABOUT RETRODECK" +msgstr "" + +#: main.tscn +msgid "WIP" +msgstr "" + +#: main.tscn +msgid "DECORATIONS - Borders, Widescreen" +msgstr "" + +#: main.tscn +msgid "TK_WSCREEN" +msgstr "" + +#: main.tscn +msgid "TK_SHADERS" +msgstr "" + +#: main.tscn +msgid "TK_MODS" +msgstr "" + +#: main.tscn +msgid "TK_TATE" +msgstr "" + +#: main.tscn +msgid "TK_BORDERS" +msgstr "" + +#: main.tscn +msgid "TK_HOTKEYSOUND" +msgstr "" + +#: main.tscn +msgid "TK_BTNLAYOUT" +msgstr "" + +#: main.tscn +msgid "TK_QRESUME" +msgstr "" + +#: main.tscn +msgid "TK_REWIND" +msgstr "" + +#: main.tscn +msgid "TK_CONFIRMEXIT" +msgstr "" + +#: main.tscn +msgid "TK_CHEATS" +msgstr "" + +#: main.tscn +msgid "SAVE OR SELECT ALL?" +msgstr "" + +#: main.tscn +msgid "SYSTEMS - Emulators, Console, Computers" +msgstr "" + +#: main.tscn +msgid "RetroARCH" +msgstr "" + +#: main.tscn +msgid "RetroArch" +msgstr "" + +#: main.tscn +msgid "Dolphin" +msgstr "" + +#: main.tscn +msgid "CITRA" +msgstr "" + +#: main.tscn +msgid "PSPSSPP" +msgstr "" + +#: main.tscn +msgid "Duckstation" +msgstr "" + +#: main.tscn +msgid "DuckStation" +msgstr "" + +#: main.tscn +msgid "Melon DS" +msgstr "" + +#: main.tscn +msgid "MelonDS" +msgstr "" + +#: main.tscn +msgid "CONFIRM" +msgstr "" + +#: main.tscn +msgid "BACK" +msgstr "" + +#: main.tscn +msgid "INFO" +msgstr "" + +#: main.tscn +msgid "REKKU" +msgstr "" + +#: main.tscn +msgid "QUIT" +msgstr "" + +#: scripts/TabContainer.gd +msgid " GLOBALS " +msgstr " Globals " + +#: scripts/TabContainer.gd +msgid " SYSTEMS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " TOOLS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " SETTINGS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " ABOUT " +msgstr "" + +#: scripts/TabContainer.gd +msgid "Hey, there's no description" +msgstr "" diff --git a/tools/configurator/translations/translation_template.pot b/tools/configurator/translations/translation_template.pot new file mode 100644 index 00000000..2c48b26f --- /dev/null +++ b/tools/configurator/translations/translation_template.pot @@ -0,0 +1,509 @@ +# LANGUAGE translation for RetroDECKConfigurator for the following files: +# res://main.tscn +# res://scripts/TabContainer.gd +# +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: RetroDECKConfigurator\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: main.tscn +msgid "GLOBALS" +msgstr "" + +#: main.tscn +msgid "ASK TO EXIT" +msgstr "" + +#: main.tscn +msgid "BORDERS" +msgstr "" + +#: main.tscn +msgid "BUTTON SWAP\n" +msgstr "" + +#: main.tscn +msgid "MODS" +msgstr "" + +#: main.tscn +msgid "QUICK RESUME" +msgstr "" + +#: main.tscn +msgid "REWIND" +msgstr "" + +#: main.tscn +msgid "TATE MODE" +msgstr "" + +#: main.tscn +msgid "SHADERS" +msgstr "" + +#: main.tscn +msgid "WIDESCREEN" +msgstr "" + +#: main.tscn +msgid "SYSTEMS" +msgstr "" + +#: main.tscn +msgid "RETROARCH" +msgstr "" + +#: main.tscn +msgid "MAME" +msgstr "" + +#: main.tscn +msgid "RUFFLE" +msgstr "" + +#: main.tscn +msgid "MELONDS" +msgstr "" + +#: main.tscn +msgid "PCSX2" +msgstr "" + +#: main.tscn +msgid "DUCKSTATION" +msgstr "" + +#: main.tscn +msgid "PPSSPP" +msgstr "" + +#: main.tscn +msgid "VITA3K" +msgstr "" + +#: main.tscn +msgid "RPCS3" +msgstr "" + +#: main.tscn +msgid "RYUJINX" +msgstr "" + +#: main.tscn +msgid "DOLPHIN" +msgstr "" + +#: main.tscn +msgid "PRIMEHACK" +msgstr "" + +#: main.tscn +msgid "CEMU" +msgstr "" + +#: main.tscn +msgid "XEMU" +msgstr "" + +#: main.tscn +msgid "ES-DE" +msgstr "" + +#: main.tscn +msgid "HELP" +msgstr "" + +#: main.tscn +msgid "LAUNCH" +msgstr "" + +#: main.tscn +msgid "RESET" +msgstr "" + +#: main.tscn +msgid "INSTALL FIRMWARE" +msgstr "" + +#: main.tscn +msgid "TOOLS" +msgstr "" + +#: main.tscn +msgid "CHECK CONNECTION" +msgstr "" + +#: main.tscn +msgid "LOGS" +msgstr "" + +#: main.tscn +msgid "RetroDECK Log" +msgstr "" + +#: main.tscn +msgid "ES_DE Log" +msgstr "" + +#: main.tscn +msgid "Retroarch" +msgstr "" + +#: main.tscn +msgid "BIOS STANDARD" +msgstr "" + +#: main.tscn +msgid "BIOS EXPERT" +msgstr "" + +#: main.tscn +msgid "BACKUP USER DATA" +msgstr "" + +#: main.tscn +msgid "TK_CONTROLS" +msgstr "" + +#: main.tscn +msgid "TK_STEAMCONTEMP" +msgstr "" + +#: main.tscn +msgid "TK_INSTALL" +msgstr "" + +#: main.tscn +msgid "TK_FILETOOLS" +msgstr "" + +#: main.tscn +msgid "TK_USBTOOL" +msgstr "" + +#: main.tscn +msgid "TK_COMPRESSGAMES" +msgstr "" + +#: main.tscn +msgid "TK_MOVEFILES" +msgstr "" + +#: main.tscn +msgid "TK_GENTOOLS" +msgstr "" + +#: main.tscn +msgid "TK_GRIDINSTALL" +msgstr "" + +#: main.tscn +msgid "TK_FAVSTEAM" +msgstr "" + +#: main.tscn +msgid "TK_SCAN" +msgstr "" + +#: main.tscn +msgid "TK_SCUMMVMSCAN" +msgstr "" + +#: main.tscn +msgid "TK_MULTIFILE" +msgstr "" + +#: main.tscn +msgid "SETTINGS" +msgstr "" + +#: main.tscn +msgid "SYSTEM SETTINGS" +msgstr "" + +#: main.tscn +msgid "SOUND EFFECTS" +msgstr "" + +#: main.tscn +msgid "AUTO UPDATES" +msgstr "" + +#: main.tscn +msgid "CHOOSE FONT" +msgstr "" + +#: main.tscn +msgid "Default" +msgstr "" + +#: main.tscn +msgid "Modern" +msgstr "" + +#: main.tscn +msgid "OpenDyslexic3" +msgstr "" + +#: main.tscn +msgid "DEFAULT LANGUAGE" +msgstr "" + +#: main.tscn +msgid "RESET RETRODECK" +msgstr "" + +#: main.tscn +msgid "RESET ALL EMULATORS" +msgstr "" + +#: main.tscn +msgid "ACHIEVEMENTS" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVEMENTS" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVMENTS USERNAME" +msgstr "" + +#: main.tscn +msgid "username" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVMENTS PASSWORD" +msgstr "" + +#: main.tscn +msgid "password" +msgstr "" + +#: main.tscn +msgid "LOGIN" +msgstr "" + +#: main.tscn +msgid "RETRO ACHIEVEMENTS HARDCORE" +msgstr "" + +#: main.tscn +msgid "NETPLAY" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAY" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYID" +msgstr "" + +#: main.tscn +msgid "RetroDECK" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYADDRESS" +msgstr "" + +#: main.tscn +msgid "127.0.0.1" +msgstr "" + +#: main.tscn +msgid "TK_NETPLAYCONNECT" +msgstr "" + +#: main.tscn +msgid "FUTURE FEATURES" +msgstr "" + +#: main.tscn +msgid "TK_MULTIUSR" +msgstr "" + +#: main.tscn +msgid "TK_CUSTOMUSR" +msgstr "" + +#: main.tscn +msgid "TK_OFF" +msgstr "" + +#: main.tscn +msgid "TK_STEAMUSR" +msgstr "" + +#: main.tscn +msgid "TK_SAVESSYNC" +msgstr "" + +#: main.tscn +msgid "TK_FTPBTN" +msgstr "" + +#: main.tscn +msgid "TK_MUSIC" +msgstr "" + +#: main.tscn +msgid "TK_EASTEREGGS" +msgstr "" + +#: main.tscn +msgid "ABOUT" +msgstr "" + +#: main.tscn +msgid "ABOUT RETRODECK" +msgstr "" + +#: main.tscn +msgid "WIP" +msgstr "" + +#: main.tscn +msgid "DECORATIONS - Borders, Widescreen" +msgstr "" + +#: main.tscn +msgid "TK_WSCREEN" +msgstr "" + +#: main.tscn +msgid "TK_SHADERS" +msgstr "" + +#: main.tscn +msgid "TK_MODS" +msgstr "" + +#: main.tscn +msgid "TK_TATE" +msgstr "" + +#: main.tscn +msgid "TK_BORDERS" +msgstr "" + +#: main.tscn +msgid "TK_HOTKEYSOUND" +msgstr "" + +#: main.tscn +msgid "TK_BTNLAYOUT" +msgstr "" + +#: main.tscn +msgid "TK_QRESUME" +msgstr "" + +#: main.tscn +msgid "TK_REWIND" +msgstr "" + +#: main.tscn +msgid "TK_CONFIRMEXIT" +msgstr "" + +#: main.tscn +msgid "TK_CHEATS" +msgstr "" + +#: main.tscn +msgid "SAVE OR SELECT ALL?" +msgstr "" + +#: main.tscn +msgid "SYSTEMS - Emulators, Console, Computers" +msgstr "" + +#: main.tscn +msgid "RetroARCH" +msgstr "" + +#: main.tscn +msgid "RetroArch" +msgstr "" + +#: main.tscn +msgid "Dolphin" +msgstr "" + +#: main.tscn +msgid "CITRA" +msgstr "" + +#: main.tscn +msgid "PSPSSPP" +msgstr "" + +#: main.tscn +msgid "Duckstation" +msgstr "" + +#: main.tscn +msgid "DuckStation" +msgstr "" + +#: main.tscn +msgid "Melon DS" +msgstr "" + +#: main.tscn +msgid "MelonDS" +msgstr "" + +#: main.tscn +msgid "CONFIRM" +msgstr "" + +#: main.tscn +msgid "BACK" +msgstr "" + +#: main.tscn +msgid "INFO" +msgstr "" + +#: main.tscn +msgid "REKKU" +msgstr "" + +#: main.tscn +msgid "QUIT" +msgstr "" + +#: scripts/TabContainer.gd +msgid " GLOBALS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " SYSTEMS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " TOOLS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " SETTINGS " +msgstr "" + +#: scripts/TabContainer.gd +msgid " ABOUT " +msgstr "" + +#: scripts/TabContainer.gd +msgid "Hey, there's no description" +msgstr "" From c8aa944e0600b6a5b522afac3462b4ca0fcd3631 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 09:35:26 +0900 Subject: [PATCH 011/107] SRM: module updated --- net.retrodeck.retrodeck.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index eb0d77ba..79dbcd2e 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -150,6 +150,7 @@ modules: sha256: af986793a515d500ab2d35f8d2aecd656e764504b789b66d7e1a0b727a124c44 # Steam ROM Manager - START + # https://github.com/flathub/com.steamgriddb.steam-rom-manager - name: zypak sources: @@ -164,14 +165,13 @@ modules: IN_FLATPAK: 1 build-commands: - install -D run.sh ${FLATPAK_DEST}/bin/steam-rom-manager - - cp /usr/bin/ar ${FLATPAK_DEST}/bin - - ar x srm.deb + - bsdtar -xf srm.deb data.tar.xz - tar xf data.tar.xz - mv "opt/Steam ROM Manager" "${FLATPAK_DEST}/srm" - rm -rf "usr/share/icons/hicolor/1024x1024" - cd usr; find share/icons/hicolor -type f -exec install -Dm644 "{}" "${FLATPAK_DEST}/{}" \; - - rm -r srm.deb control.tar.* data.tar.xz debian-binary usr opt + - rm -r srm.deb data.tar.xz usr opt sources: - type: script dest-filename: run.sh @@ -179,8 +179,8 @@ modules: - /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager "${@}" - type: file dest-filename: srm.deb - url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.4.19/steam-rom-manager_2.4.19_amd64.deb - sha256: aa4f121d50612801c30b9365e05cb92a3b4a9c402974fee2b88652de8d731b0e + url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.5.29/steam-rom-manager_2.5.29_amd64.deb + sha256: a85369ad8b758551b74755ddb712c6bd72311693971065c9bcec1dcdec53f54a x-checker-data: type: json url: https://api.github.com/repos/SteamGridDB/steam-rom-manager/releases/latest @@ -628,7 +628,6 @@ modules: - cp -r files/* "${FLATPAK_DEST}" - chmod +x "${FLATPAK_DEST}/bin/"* sources: - # Testing the new feat/update-3.1.0 - type: archive url: https://github.com/RetroDECK/ES-DE/releases/latest/download/RetroDECK-ES-DE-Artifact.tar.gz sha256: RETRODECKESDELATEST From cabf578e687db07018a8ec4e081a31e03b13e462 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 09:50:20 +0900 Subject: [PATCH 012/107] RETROARCH: reverted from nightly to stable, updated to 1.19.1 --- automation_tools/automation_task_list.cfg | 2 +- net.retrodeck.retrodeck.yml | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/automation_tools/automation_task_list.cfg b/automation_tools/automation_task_list.cfg index 94013b2d..b8bf2945 100644 --- a/automation_tools/automation_task_list.cfg +++ b/automation_tools/automation_task_list.cfg @@ -8,7 +8,7 @@ outside_file^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid branch^THISBRANCH THISREPO^THISREPO -hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z +#hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z hash^SAMEDUCKSHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/sameduck_libretro.so.zip hash^PPSSPPBIOSHASHPLACEHOLDER^https://github.com/hrydgard/ppsspp/archive/refs/heads/master.zip hash^MSXBIOSHASHPLACEHOLDER^http://bluemsx.msxblue.com/rel_download/blueMSXv282full.zip diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 79dbcd2e..373ef764 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -240,8 +240,9 @@ modules: - cp -r squashfs-root/usr/* "${FLATPAK_DEST}" sources: - type: archive - url: https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z - sha256: RASHAPLACEHOLDER + url: https://buildbot.libretro.com/stable/1.19.1/linux/x86_64//RetroArch.7z + #sha256: RASHAPLACEHOLDER + sha256: f98e954e99aef7b4b1a3334d710856b997c3f97c5451d33af9e5c88bf63213f8 # Not part of the offical RetroArch AppImage @@ -280,8 +281,8 @@ modules: - cp -rf ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* ${FLATPAK_DEST}/share/libretro/cores/ sources: - type: archive - url: https://buildbot.libretro.com/stable/1.17.0/linux/x86_64/RetroArch_cores.7z - sha256: 1c1d61f86b196e9f89c1a93d0756fba95b60ef3ba57a7cd1d1e86dfd419c766b + url: https://buildbot.libretro.com/stable/1.19.1/linux/x86_64/RetroArch_cores.7z + sha256: fe75e7e796e29933ab31e4a58f072a1a47ea155b477988a48f33b0f4addc9d49 - name: retroarch-sameduck-core buildsystem: simple From 4994b401be1a1a1d584da8d2d216a1a4e5fbbcee Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 10:02:15 +0900 Subject: [PATCH 013/107] PCSX2: updated to v2.1.231 --- net.retrodeck.retrodeck.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 373ef764..1231f6fb 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -357,8 +357,8 @@ modules: - cp -r squashfs-root/usr/* "${FLATPAK_DEST}" sources: - type: file - url: https://github.com/PCSX2/pcsx2/releases/download/v2.1.55/pcsx2-v2.1.55-linux-appimage-x64-Qt.AppImage - sha256: d08ae2fdfc1bc3a4bd264b62ceda02f1e2de87c704ee1f464e5ce52073998e33 + url: https://github.com/PCSX2/pcsx2/releases/download/v2.1.231/pcsx2-v2.1.231-linux-appimage-x64-Qt.AppImage + sha256: 227c8f5a38bd0ae9c565b9350868b4f4bd27ae00cde0a598738c2bdd8ca97e88 # Dolphin # why from source: AppImage not provided, only Flatpak From 1e4e4c70cb7772ca4b8d020a27f7f4c6d74896c1 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 10:11:59 +0900 Subject: [PATCH 014/107] RPCS3: updated to v0.0.33-17066 --- net.retrodeck.retrodeck.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 1231f6fb..52a4b7d1 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -416,8 +416,8 @@ modules: #TODO: Do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-qt-hook.sh sources: - type: file - url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-ebcb4034119955991a17210af2a45a672fc9533d/rpcs3-v0.0.32-16685-ebcb4034_linux64.AppImage - sha256: 2553d56e01a3e3058fa9ceb4e1d61a07eaf2c5bba9e96b29e8923914d89f6e17 + url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-cd8954db140855101d94a33c0dd7f4d72bdf5a35/rpcs3-v0.0.33-17066-cd8954db_linux64.AppImage + sha256: 2D258B557C17EBBA4BEA927BE4032CFCBC230C26B8F090B796DAA5935FAA4A8B # MELONDS # https://github.com/melonDS-emu/melonDS/releases/latest From 03d8c67dfc70489bafa577bc757e12460058e79d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 10:17:52 +0900 Subject: [PATCH 015/107] DUCKSTATION: switched to our own backup build --- net.retrodeck.retrodeck.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 52a4b7d1..1dc6d907 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -420,7 +420,7 @@ modules: sha256: 2D258B557C17EBBA4BEA927BE4032CFCBC230C26B8F090B796DAA5935FAA4A8B # MELONDS - # https://github.com/melonDS-emu/melonDS/releases/latest + # https://github.com/RetroDECK/net.kuribo64.melonDS - name: melonds buildsystem: simple @@ -437,7 +437,8 @@ modules: sha256: RETRODECKMELONDSLATEST # Duckstation - # https://github.com/stenzek/duckstation/releases/tag/preview + # Do not update: Legacy + # https://github.com/RetroDECK/Duckstation - name: duckstation buildsystem: simple @@ -449,8 +450,8 @@ modules: - cp -r squashfs-root/usr/* "${FLATPAK_DEST}" sources: - type: file - url: https://github.com/stenzek/duckstation/releases/download/v0.1-6937/DuckStation-x64.AppImage - sha256: 8a16f034cc8b11341ed9ad382226549301736794582bdec46a5e19b3ca981e07 + url: https://github.com/RetroDECK/Duckstation/releases/download/preview/DuckStation-x64.AppImage + sha256: 84777a8d0fce9acfc2ffe6a8aea352bd68a8a37f5c793d328dbaa4ff5ada5e6d # Cemu # https://github.com/cemu-project/Cemu/releases From f6a00bf5c77168520583e54580457f52d1ac32aa Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 10:19:18 +0900 Subject: [PATCH 016/107] CEMU: updated to v2.2 --- net.retrodeck.retrodeck.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 1dc6d907..f7b11ca5 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -469,8 +469,8 @@ modules: #TODO: do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh sources: - type: file - url: https://github.com/cemu-project/Cemu/releases/download/v2.0-88/Cemu-2.0-88-x86_64.AppImage - sha256: 1af1ad5322df5fa0e2a97588c7486604daf42deb8c4d07a2b885047d9701fed0 + url: https://github.com/cemu-project/Cemu/releases/download/v2.2/Cemu-2.2-x86_64.AppImage + sha256: 05ad07e3b2fb60f9c19f84c7d65c4e978bc2cf58b4b53d39fca0376227900c27 - type: script commands: - | From 0ca8faf3e54f60feddd074a0d4164ec69c8b2580 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 11:13:23 +0900 Subject: [PATCH 017/107] Xemu: updated to v0.7.132 --- net.retrodeck.retrodeck.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index f7b11ca5..1d0b24a3 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -567,8 +567,8 @@ modules: - cp -r squashfs-root/usr/* "${FLATPAK_DEST}/" sources: - type: file - url: https://github.com/xemu-project/xemu/releases/download/v0.7.129/xemu-v0.7.129-x86_64.AppImage - sha256: f680774d96a66bf1195cd133497755d43be5eda5f178457a6df32bc691dd8c74 + url: https://github.com/xemu-project/xemu/releases/download/v0.7.132/xemu-v0.7.132-x86_64.AppImage + sha256: c11821d6d0632da3c51a354e9101f68e5ab2ae0e2512c6aa6c8453aef56cedba - name: xemu-dummy-hdd buildsystem: simple From 1966865247474879918359d27a93c1dd4dc5c272 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 11:13:48 +0900 Subject: [PATCH 018/107] RUFFLE: updated to nightly-2024-10-29 --- net.retrodeck.retrodeck.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 1d0b24a3..2e08d693 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -655,8 +655,8 @@ modules: sources: - type: archive strip-components: 0 - url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-08-09/ruffle-nightly-2024_08_09-linux-x86_64.tar.gz - sha256: d2c4c77d8426da6df8dc8b2a57565c151146464a8eec605d5faa68a297d8cad6 + url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-10-29/ruffle-nightly-2024_10_29-linux-x86_64.tar.gz + sha256: 5ab0fc46b07d022d4b0ff355e88175cd77b8bb1663612f31d160f8001dc472bb - name: fetch-missing-libs buildsystem: simple From e4617d2be024c4da4a46b227558e3bec81fd0233 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 29 Oct 2024 12:17:51 +0900 Subject: [PATCH 019/107] APPDATA: updated --- net.retrodeck.retrodeck.appdata.xml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index 5fc22d0e..61478480 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -80,10 +80,21 @@
  • Manifest was completely redone, more on that on the MONTH blog post
  • RetroDECK now is migrated to an organization on GitHub, as before, please check the MONTH blog post
  • pre_build_automation script weas reworked and additional functions are added
  • -
  • Contributing is now easier and the manifest build time is down to about 40m (was 3h30)
  • +
  • Contributing is now easier and the manifest build time is down to about 50m (was 3h30)
  • + +

    Changes:

    +
      +
    • Updated all the outdated emulators
    • +
    • Duckstation due to licencing changes is frozen at the latest possible build becoming de facto: Legacy
    • +
    • New Flash system via the new emulator: Ruffle
    • +
    • PortMaster is now included in RetroDECK!
    • +
    • Steam Sync is now a thing: favorite your games and enable the Steam Sync in the Configurator to find them as a Steam standalone games thank to Steam Rom Manager acting like an engine
    • +
    • New Configurator completely written in GODOT, now with controller support and many more features to you to discover
    • +
    • New run game engine added to run games via cli, just run `flatpak run net.retrodeck.retrodeck start retrodeck/roms/system/game.ext`, `--help` for more info

    Known issues:

      +
    • Ryujinx temporary removed until we figure out the situation
    • Please check the know issues in the Wiki under General Information.
    From 7e8507667c7c7f275fd9541a59a00b6aedbb5a8f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 11:18:37 +0900 Subject: [PATCH 020/107] LIBRARIES: added import of libvpx.so.9, libzmusic.so.1 for GZDoom --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 2e08d693..afa40d80 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -666,7 +666,7 @@ modules: missing_libs=$(find "${FLATPAK_DEST}/bin" -type f -exec ldd {} + 2>/dev/null | grep "not found" | awk '{print $1}' | sort | uniq) # for some reason these libraries are not recognized as missing so we mantain this list - manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2" + manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1" missing_libs="$missing_libs $manually_imported" From f67e61adfb9d26e92ce684f45bf06ae0f1ff3708 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 15:26:13 +0900 Subject: [PATCH 021/107] RPCS3: fixed sha --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index afa40d80..a15599c7 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -417,7 +417,7 @@ modules: sources: - type: file url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-cd8954db140855101d94a33c0dd7f4d72bdf5a35/rpcs3-v0.0.33-17066-cd8954db_linux64.AppImage - sha256: 2D258B557C17EBBA4BEA927BE4032CFCBC230C26B8F090B796DAA5935FAA4A8B + sha256: 2d258b557c17ebba4bea927be4032cfcbc230c26b8f090b796daa5935faa4a8b # MELONDS # https://github.com/RetroDECK/net.kuribo64.melonDS From 8201f12d70743dd450647defeacb80e6de3470b2 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 21:44:36 +0900 Subject: [PATCH 022/107] MANIFEST: migrated to runtime 6.8 (possible fix for RPCS3) --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index a15599c7..e7aee798 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -1,6 +1,6 @@ app-id: net.retrodeck.retrodeck runtime: org.kde.Platform -runtime-version: "6.7" +runtime-version: "6.8" sdk: org.kde.Sdk base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager base-version: "22.08" From ac474ee5c0aafc45c303144f1618a45248b7a0d8 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 21:45:56 +0900 Subject: [PATCH 023/107] fetch-missing-libs: fallback in debug libraries if non debug are not found --- net.retrodeck.retrodeck.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index e7aee798..bd609cbc 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -678,20 +678,24 @@ modules: dest_dir="${FLATPAK_DEST}/lib" dest_debug_dir="${FLATPAK_DEST}/retrodeck/lib/debug" - mkdir -p "$dest_dir" "dest_debug_dir" + mkdir -p "$dest_dir" "$dest_debug_dir" copy_missing_libs() { local src=$1 - local dest=$2 + local src_debug=$2 + local dest=$3 for lib in $missing_libs; do if [[ -f "$src/$lib" ]]; then cp "$src/$lib" "$dest" echo "Copied \"$lib\" to \"$dest\"" + elif [[ -f "$src_debug/$lib.debug" ]]; then + cp "$src_debug/$lib.debug" "$dest" + echo "Copied debug version of \"$lib\" to \"$dest\"" fi done } - copy_missing_libs "$src_dir" "$dest_dir" + copy_missing_libs "$src_dir" "$src_debug_dir" "$dest_dir" copy_missing_libs "$src_debug_dir" "$dest_debug_dir" rm -rf "$src_dir" From dc2ae1755c0c6242f5a05a1b25e861be56167fed Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 21:49:48 +0900 Subject: [PATCH 024/107] MANIFEST: spacing --- net.retrodeck.retrodeck.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index bd609cbc..5908e4a4 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -646,6 +646,7 @@ modules: # RUFFLE - START # https://github.com/ruffle-rs/ruffle/releases + - name: ruffle buildsystem: simple build-commands: From 7743f48e4db2869b258893ef46a10340a13d18b9 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 22:08:20 +0900 Subject: [PATCH 025/107] CITRA_LIBRETRO: re-added missing core --- automation_tools/automation_task_list.cfg | 3 ++- net.retrodeck.retrodeck.yml | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/automation_tools/automation_task_list.cfg b/automation_tools/automation_task_list.cfg index b8bf2945..0a64243b 100644 --- a/automation_tools/automation_task_list.cfg +++ b/automation_tools/automation_task_list.cfg @@ -24,4 +24,5 @@ hash^RETRODECKMELONDSLATEST^https://github.com/RetroDECK/net.kuribo64.melonDS/re hash^RETRODECKSOLARUSLATEST^https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz hash^RETRODECKGZDOOMLATEST^https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz hash^RETRODECKMAMELATEST^https://github.com/RetroDECK/MAME/releases/latest/download/RetroDECK-MAME-Artifact.tar.gz -hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip \ No newline at end of file +hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip +hash^RACITRAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip \ No newline at end of file diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 5908e4a4..8fff99d7 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -274,6 +274,16 @@ modules: url: https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z sha256: RANIGHTLYCORESPLACEHOLDER + # Citra is removed from the LibretroCores but is still available in Libretro repo + - name: citra-libretro-core + buildsystem: simple + build-commands: + - cp citra_libretro.so ${FLATPAK_DEST}/share/libretro/cores/ + sources: + - type: archive + url: https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip + sha256: RACITRAPLACEHOLDER + - name: retroarch-cores buildsystem: simple build-commands: From 5f9185d5233324c1595e0774a0d48ecf009da07c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 22:19:53 +0900 Subject: [PATCH 026/107] DUCKSTATION: switched from Vulkan to OpenGL as Vulkan is broken --- config/duckstation/settings.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/duckstation/settings.ini b/config/duckstation/settings.ini index 65ca7e7b..1de51dfc 100644 --- a/config/duckstation/settings.ini +++ b/config/duckstation/settings.ini @@ -42,7 +42,7 @@ FastmemMode = true [GPU] -Renderer = Vulkan +Renderer = OpenGL Adapter = AMD RADV VANGOGH ResolutionScale = 3 Multisamples = 1 From 32209e5899583b0ce09513044afabc07d74fffb6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 30 Oct 2024 22:27:17 +0900 Subject: [PATCH 027/107] APPDATA: updated --- net.retrodeck.retrodeck.appdata.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index 61478480..f8f42fc1 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -85,7 +85,8 @@

    Changes:

    • Updated all the outdated emulators
    • -
    • Duckstation due to licencing changes is frozen at the latest possible build becoming de facto: Legacy
    • +
    • Duckstation due to licensing changes is frozen at the latest possible build becoming de facto: Legacy
    • +
    • Duckstation configured to use OpenGL as Vulkan seems to be broken
    • New Flash system via the new emulator: Ruffle
    • PortMaster is now included in RetroDECK!
    • Steam Sync is now a thing: favorite your games and enable the Steam Sync in the Configurator to find them as a Steam standalone games thank to Steam Rom Manager acting like an engine
    • From 79632236271ec8c46eb963c0738d3ea92e7681a2 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 09:08:48 +0900 Subject: [PATCH 028/107] DEPENDENCIES: added appstream-compose --- automation_tools/install_dependencies.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index 3daa4edb..717119c2 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -10,17 +10,17 @@ done case "$pkg_mgr" in apt) - sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq + sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq appstream-compose ;; pacman) - sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 + sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 appstream-compose ;; rpm-ostree) echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox." exit 1 ;; dnf) - sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl + sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl appstream-compose ;; *) echo "Package manager $pkg_mgr not supported. Please open an issue." From 3c3f32686d1e9103defbae6c7d8f0cc7cc8ffe1e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 10:07:39 +0900 Subject: [PATCH 029/107] MANIFEST: moving /app/usr to /app/share as it breaks appstream-compose --- net.retrodeck.retrodeck.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 8fff99d7..3a63396b 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -715,6 +715,10 @@ modules: buildsystem: simple build-commands: + # This prevents appstream-compose to fail + - mv -n ${FLATPAK_DEST}/usr/** ${FLATPAK_DEST}/share + - rm -rf ${FLATPAK_DEST}/usr + # Initializing RO retrodeck config folder - mkdir -p ${FLATPAK_DEST}/retrodeck From a492fdb0a659a62be7f1d80524413e2767a97610 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 10:07:45 +0900 Subject: [PATCH 030/107] Revert "DEPENDENCIES: added appstream-compose" This reverts commit 79632236271ec8c46eb963c0738d3ea92e7681a2. --- automation_tools/install_dependencies.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index 717119c2..3daa4edb 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -10,17 +10,17 @@ done case "$pkg_mgr" in apt) - sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq appstream-compose + sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq ;; pacman) - sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 appstream-compose + sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 ;; rpm-ostree) echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox." exit 1 ;; dnf) - sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl appstream-compose + sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl ;; *) echo "Package manager $pkg_mgr not supported. Please open an issue." From 3f3c17158a78d063bdafaf10b585b98262de5c92 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 10:53:48 +0900 Subject: [PATCH 031/107] MANIFEST: moving /app/usr to /app/share as it breaks appstream-compose - fix --- net.retrodeck.retrodeck.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 3a63396b..4714ce9d 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -716,8 +716,11 @@ modules: build-commands: # This prevents appstream-compose to fail - - mv -n ${FLATPAK_DEST}/usr/** ${FLATPAK_DEST}/share - - rm -rf ${FLATPAK_DEST}/usr + - | + if [ -d ${FLATPAK_DEST}/usr ]; then + mv -n ${FLATPAK_DEST}/usr/** ${FLATPAK_DEST}/share + rm -rf ${FLATPAK_DEST}/usr + fi # Initializing RO retrodeck config folder - mkdir -p ${FLATPAK_DEST}/retrodeck From 2c2765115fe6c206347c595475698376048c558a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 11:28:37 +0900 Subject: [PATCH 032/107] DEPENDENCIES: install and update dependencies --- automation_tools/install_dependencies.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index 3daa4edb..350c69a4 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -10,17 +10,21 @@ done case "$pkg_mgr" in apt) - sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq + # Aggiorna l'indice dei pacchetti, poi installa o aggiorna solo i pacchetti indicati + sudo apt update + sudo apt install --only-upgrade -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq ;; pacman) - sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 + # Aggiorna i pacchetti specificati senza influenzare il resto del sistema + sudo pacman -Syu --needed --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 ;; rpm-ostree) echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox." exit 1 ;; dnf) - sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl + # Aggiorna i pacchetti specificati senza influenzare il resto del sistema + sudo dnf upgrade --refresh -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl ;; *) echo "Package manager $pkg_mgr not supported. Please open an issue." From 6398331443cb8f59ef68b20a7ca3c206374be151 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 13:08:03 +0900 Subject: [PATCH 033/107] DEPENDENCIES: added flatpak/stable repository for ubuntu as the LTS got older versions of flatpak builder --- automation_tools/install_dependencies.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index 350c69a4..bd5125af 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -11,6 +11,7 @@ done case "$pkg_mgr" in apt) # Aggiorna l'indice dei pacchetti, poi installa o aggiorna solo i pacchetti indicati + sudo add-apt-repository ppa:flatpak/stable sudo apt update sudo apt install --only-upgrade -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq ;; From 89f24842eec61f6d1ea835806c5badce1e9ee218 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 13:39:25 +0900 Subject: [PATCH 034/107] DEPENDENCIES: added flatpak/stable repository for ubuntu as the LTS got older versions of flatpak builder --- automation_tools/install_dependencies.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index bd5125af..f08c19a1 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -10,13 +10,11 @@ done case "$pkg_mgr" in apt) - # Aggiorna l'indice dei pacchetti, poi installa o aggiorna solo i pacchetti indicati - sudo add-apt-repository ppa:flatpak/stable + sudo add-apt-repository -y ppa:flatpak/stable sudo apt update sudo apt install --only-upgrade -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq ;; pacman) - # Aggiorna i pacchetti specificati senza influenzare il resto del sistema sudo pacman -Syu --needed --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 ;; rpm-ostree) @@ -24,7 +22,6 @@ case "$pkg_mgr" in exit 1 ;; dnf) - # Aggiorna i pacchetti specificati senza influenzare il resto del sistema sudo dnf upgrade --refresh -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl ;; *) From 9de85d1aa23bb487282cbd8281b955252cf257cb Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 31 Oct 2024 16:58:15 +0900 Subject: [PATCH 035/107] DEPENDENCIES: reverting commands [skip ci] --- automation_tools/install_dependencies.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index f08c19a1..1cd6025a 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -12,17 +12,17 @@ case "$pkg_mgr" in apt) sudo add-apt-repository -y ppa:flatpak/stable sudo apt update - sudo apt install --only-upgrade -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq + sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq ;; pacman) - sudo pacman -Syu --needed --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 + sudo pacman -Syu --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 ;; rpm-ostree) echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox." exit 1 ;; dnf) - sudo dnf upgrade --refresh -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl + sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl ;; *) echo "Package manager $pkg_mgr not supported. Please open an issue." From f6f69adc18cba348eefb7f7211f20987658e2905 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 1 Nov 2024 20:37:42 +0900 Subject: [PATCH 036/107] DEPENDENCIES: added libicuuc.so.73 --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 4714ce9d..7477de99 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -677,7 +677,7 @@ modules: missing_libs=$(find "${FLATPAK_DEST}/bin" -type f -exec ldd {} + 2>/dev/null | grep "not found" | awk '{print $1}' | sort | uniq) # for some reason these libraries are not recognized as missing so we mantain this list - manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1" + manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1 libicuuc.so.73" missing_libs="$missing_libs $manually_imported" From 4d43bbd1cfb77cbf29760ae8e99469e54c317ab9 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 5 Nov 2024 21:49:50 +0900 Subject: [PATCH 037/107] MANIFEST: outsourcing dependencies installation --- .github/workflows/cooker-selfhosted.yml | 2 +- automation_tools/install_dependencies.sh | 33 ------------------------ 2 files changed, 1 insertion(+), 34 deletions(-) delete mode 100755 automation_tools/install_dependencies.sh diff --git a/.github/workflows/cooker-selfhosted.yml b/.github/workflows/cooker-selfhosted.yml index 95e05038..36815c60 100644 --- a/.github/workflows/cooker-selfhosted.yml +++ b/.github/workflows/cooker-selfhosted.yml @@ -56,7 +56,7 @@ jobs: submodules: 'true' - name: "Install dependencies" - run: "automation_tools/install_dependencies.sh" + run: /bin/bash | curl "https://raw.githubusercontent.com/RetroDECK/components-template/refs/heads/main/automation_tools/install_dependencies.sh" - name: Generate cooker build ID run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh deleted file mode 100755 index 1cd6025a..00000000 --- a/automation_tools/install_dependencies.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# This script is installing the required dependencies to correctly run the pipeline and build the flatpak - -unset pkg_mgr - -# rpm-ostree must be checked before dnf because a dnf (wrapper) command also works on rpm-ostree distros (not what we want) -for potential_pkg_mgr in apt pacman rpm-ostree dnf; do - command -v "$potential_pkg_mgr" &> /dev/null && pkg_mgr="$potential_pkg_mgr" && break -done - -case "$pkg_mgr" in - apt) - sudo add-apt-repository -y ppa:flatpak/stable - sudo apt update - sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq - ;; - pacman) - sudo pacman -Syu --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 - ;; - rpm-ostree) - echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox." - exit 1 - ;; - dnf) - sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl - ;; - *) - echo "Package manager $pkg_mgr not supported. Please open an issue." - ;; -esac - -flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo -flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo From c14ddc0730011aea97afb1403926797849690998 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 6 Nov 2024 09:44:33 +0900 Subject: [PATCH 038/107] RPCS3: migrating to our repo --- automation_tools/automation_task_list.cfg | 3 +- net.retrodeck.retrodeck.yml | 43 +++++++++++++++-------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/automation_tools/automation_task_list.cfg b/automation_tools/automation_task_list.cfg index 0a64243b..ef41c1de 100644 --- a/automation_tools/automation_task_list.cfg +++ b/automation_tools/automation_task_list.cfg @@ -25,4 +25,5 @@ hash^RETRODECKSOLARUSLATEST^https://github.com/RetroDECK/org.solarus_games.solar hash^RETRODECKGZDOOMLATEST^https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz hash^RETRODECKMAMELATEST^https://github.com/RetroDECK/MAME/releases/latest/download/RetroDECK-MAME-Artifact.tar.gz hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip -hash^RACITRAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip \ No newline at end of file +hash^RACITRAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip +hash^RETRODECKRPCS3LATEST^https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz \ No newline at end of file diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 7477de99..4d90d81f 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -1,6 +1,6 @@ app-id: net.retrodeck.retrodeck runtime: org.kde.Platform -runtime-version: "6.8" +runtime-version: "6.7" sdk: org.kde.Sdk base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager base-version: "22.08" @@ -411,23 +411,36 @@ modules: # RPCS3 # https://rpcs3.net/download - - name: rpcs3 + # - name: rpcs3 + # buildsystem: simple + # build-commands: + # - chmod +x *.AppImage + # - ./*.AppImage --appimage-extract + # - mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug" + # - mkdir -p ${FLATPAK_DEST}/lib/ffmpeg # Needed for a ffmpeg bufgix + # - mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib" + # - cp -r "squashfs-root/usr/bin/"* "${FLATPAK_DEST}/bin/" + # - cp -r "squashfs-root/usr/share/"* "${FLATPAK_DEST}/share/" + # #TODO: - cp -r squashfs-root/usr/optional* # maybe already included in flatpak runtime + # #TODO: - cp -r squashfs-root/usr/plugins* # maybe already included in qt + # #TODO: Do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-qt-hook.sh + # sources: + # - type: file + # url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-cd8954db140855101d94a33c0dd7f4d72bdf5a35/rpcs3-v0.0.33-17066-cd8954db_linux64.AppImage + # sha256: 2d258b557c17ebba4bea927be4032cfcbc230c26b8f090b796daa5935faa4a8b + + - name: retrodeck-rpcs3 buildsystem: simple build-commands: - - chmod +x *.AppImage - - ./*.AppImage --appimage-extract - - mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug" - - mkdir -p ${FLATPAK_DEST}/lib/ffmpeg # Needed for a ffmpeg bufgix - - mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib" - - cp -r "squashfs-root/usr/bin/"* "${FLATPAK_DEST}/bin/" - - cp -r "squashfs-root/usr/share/"* "${FLATPAK_DEST}/share/" - #TODO: - cp -r squashfs-root/usr/optional* # maybe already included in flatpak runtime - #TODO: - cp -r squashfs-root/usr/plugins* # maybe already included in qt - #TODO: Do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-qt-hook.sh + - mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug" + - cp -rL "files/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib" + - rm -rf "files/lib" + - cp -r files/* "${FLATPAK_DEST}" + - chmod +x "${FLATPAK_DEST}/bin/"* sources: - - type: file - url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-cd8954db140855101d94a33c0dd7f4d72bdf5a35/rpcs3-v0.0.33-17066-cd8954db_linux64.AppImage - sha256: 2d258b557c17ebba4bea927be4032cfcbc230c26b8f090b796daa5935faa4a8b + - type: archive + url: https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz + sha256: RETRODECKRPCS3LATEST # MELONDS # https://github.com/RetroDECK/net.kuribo64.melonDS From 2e572505946a6436de0e2c00d72a61bc73ddf96f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 6 Nov 2024 11:47:57 +0900 Subject: [PATCH 039/107] LLVM: debugging as seems to be not included --- net.retrodeck.retrodeck.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 4d90d81f..b8160e65 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -4,8 +4,6 @@ runtime-version: "6.7" sdk: org.kde.Sdk base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager base-version: "22.08" -sdk-extensions: - - org.freedesktop.Sdk.Extension.llvm18 # Needed for RPCS3 command: retrodeck.sh finish-args: @@ -686,19 +684,20 @@ modules: buildsystem: simple build-commands: - | - # Search for missingl ibraries in our libtmp folder + # Search for missing libraries in our libtmp folder missing_libs=$(find "${FLATPAK_DEST}/bin" -type f -exec ldd {} + 2>/dev/null | grep "not found" | awk '{print $1}' | sort | uniq) - # for some reason these libraries are not recognized as missing so we mantain this list - manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1 libicuuc.so.73" - + # Manually specified libraries that are not automatically detected + manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1 libicuuc.so.73 libLLVM.so.18.1" + + # Combine detected missing libraries and manually specified ones missing_libs="$missing_libs $manually_imported" - # Origin paths + # Source paths src_dir="${FLATPAK_DEST}/retrodeck/tmplib" src_debug_dir="${FLATPAK_DEST}/retrodeck/tmplib/debug" - # Destionation paths + # Destination paths dest_dir="${FLATPAK_DEST}/lib" dest_debug_dir="${FLATPAK_DEST}/retrodeck/lib/debug" @@ -710,18 +709,20 @@ modules: local dest=$3 for lib in $missing_libs; do if [[ -f "$src/$lib" ]]; then - cp "$src/$lib" "$dest" - echo "Copied \"$lib\" to \"$dest\"" + cp "$src/$lib" "$dest" && echo "Copied \"$lib\" to \"$dest\"" || echo "Error copying \"$lib\"" elif [[ -f "$src_debug/$lib.debug" ]]; then - cp "$src_debug/$lib.debug" "$dest" - echo "Copied debug version of \"$lib\" to \"$dest\"" + cp "$src_debug/$lib.debug" "$dest" && echo "Copied debug version of \"$lib\" to \"$dest\"" || echo "Error copying debug version of \"$lib\"" + else + echo "Library \"$lib\" not found in \"$src\" or \"$src_debug\"" fi done } + # Copy libraries from source to destination copy_missing_libs "$src_dir" "$src_debug_dir" "$dest_dir" copy_missing_libs "$src_debug_dir" "$dest_debug_dir" + # Remove temporary source directory to free up space rm -rf "$src_dir" - name: retrodeck From 7a3026817e4ac513ad588c462d29bc933c880667 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 11 Nov 2024 11:09:21 +0900 Subject: [PATCH 040/107] DEBUG: temporarly disabled other runners than retrodeck-server for troubleshooting --- .github/workflows/cooker-selfhosted.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cooker-selfhosted.yml b/.github/workflows/cooker-selfhosted.yml index 36815c60..c18ee709 100644 --- a/.github/workflows/cooker-selfhosted.yml +++ b/.github/workflows/cooker-selfhosted.yml @@ -30,7 +30,7 @@ permissions: jobs: Building_RetroDECK: - runs-on: retrodeck + runs-on: retrodeck-server # was just "retrodeck", temporarly disabled other runners for troubleshooting steps: # Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317 From 43602b3c3d30a192e2e6278a40b5b51ca2ca237f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 10:56:37 +0900 Subject: [PATCH 041/107] WORKFLOWS: merging cooker and main workflow in a single one --- .github/workflows/build_release.yml | 173 +++++++++++++++ .github/workflows/cooker-selfhosted.yml | 266 ------------------------ .github/workflows/main-selfhosted.yml | 191 ----------------- 3 files changed, 173 insertions(+), 457 deletions(-) create mode 100644 .github/workflows/build_release.yml delete mode 100644 .github/workflows/cooker-selfhosted.yml delete mode 100644 .github/workflows/main-selfhosted.yml diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 00000000..d3d6d2bc --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,173 @@ +name: "Build RetroDECK" + +on: + push: + branches: + - main + - cooker* + - feat* + - branch/cooker* + paths: + - '.github/workflows/**' + - 'automation_tools/**' + - 'config/**' + - 'functions/**' + - 'rd-submodules/**' + - '*.sh' + - 'net.retrodeck.retrodeck.yml' + - 'net.retrodeck.retrodeck.appdata.xml' + pull_request: + branches: + - main + - cooker* + + workflow_dispatch: + +permissions: + contents: write + +jobs: + + # Generate Rekku Token Job + Generate-Rekku-Token: + runs-on: ubuntu-latest + outputs: + token: ${{ steps.generate-token.outputs.token }} + steps: + - name: Generate a token for Rekku + id: generate-token + uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + + # Build RetroDECK Job + Build_RetroDECK: + runs-on: retrodeck-server + needs: Generate-Rekku-Token + outputs: + tag: ${{ steps.set-outputs.outputs.tag }} + release_body: ${{ steps.set-outputs.outputs.release_body }} + + steps: + + # Remove Stuck Mounts + - name: Remove stuck mounts + run: | + sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + continue-on-error: true + + # Clone Repository + - name: Clone RetroDECK repo + uses: actions/checkout@v4 + with: + submodules: 'true' + + # Install Dependencies + - name: Install dependencies + run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash + + # Generate Build ID for Cooker Branches + - name: Generate cooker build ID + if: github.ref != 'refs/heads/main' + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + + # Get Branch Name + - name: Get branch name + id: get-branch-name + run: | + branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||') + echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV + + # Generate Version Tag + - name: Generate version tag + id: set-outputs + run: | + source automation_tools/version_extractor.sh + MANIFEST_VERSION="$(fetch_manifest_version)" + if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then + TAG="$MANIFEST_VERSION" + MAKE_LATEST=true + else + source_branch="${GITHUB_HEAD_REF//\//-}" + TAG="PR-$source_branch-${{ github.run_id }}" + MAKE_LATEST=false + fi + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV + + # Get Commits Since Last Release + - name: Get commits since last release + id: get-commits + run: | + LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") + if [ -z "$LATEST_TAG" ]; then + COMMITS=$(git log HEAD --pretty=format:"- %s") + else + COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") + fi + echo "commits=$COMMITS" >> $GITHUB_OUTPUT + + # Generate Release Body + - name: Generate release body text + id: generate-body + run: | + RELEASE_BODY="# Release Notes\n" + RELEASE_BODY+="This release is based on the commit: ${{ github.repository }}@${{ github.sha }}.\n" + RELEASE_BODY+="On branch [${{ env.BRANCH_NAME }}](https://github.com/RetroDECK/RetroDECK/tree/${{ env.BRANCH_NAME }}).\n\n" + RELEASE_BODY+="## Commits since last release\n" + RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" + echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT + + # Build Flatpak + - name: Build Flatpak + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" + + # Create a Flatpak Bundle + - name: Create Bundle + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" + + # Determine if Target Repository is Main or not, in that case is a Cooker build + - name: Determine target repository + id: set-repo + run: | + if [[ "$GITHUB_REF" == "refs/heads/main" || "$GITHUB_REF" == refs/heads/feat* ]]; then + echo "repo_name=RetroDECK" >> $GITHUB_ENV + else + echo "repo_name=Cooker" >> $GITHUB_ENV + + # Publish Release, if main and fails throws an error, if cooker continues anyway + - name: Publish release + uses: ncipollo/release-action@v1.13.0 + with: + tag: ${{ steps.set-outputs.outputs.tag }} + name: "RetroDECK ${{ steps.set-outputs.outputs.tag }}" + body: ${{ steps.generate-body.outputs.release_body }} + artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz,RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha" + allowUpdates: true + makeLatest: ${{ env.MAKE_LATEST }} + token: ${{ needs.Generate-Rekku-Token.outputs.token }} + repo: "${{ env.repo_name }}" + continue-on-error: ${{ github.ref != 'refs/heads/main' }} + + # Rewrite Tag (for Main Branch Only) + - name: Rewrite Tag + if: github.ref == 'refs/heads/main' + run: | + git submodule deinit -f --all + git fetch --tags + if git rev-parse --verify "${{ steps.set-outputs.outputs.tag }}" >/dev/null 2>&1; then + git tag -d "${{ steps.set-outputs.outputs.tag }}" + git push --delete origin "${{ steps.set-outputs.outputs.tag }}" + fi + git tag "${{ steps.set-outputs.outputs.tag }}" + git push origin "${{ steps.set-outputs.outputs.tag }}" + env: + GITHUB_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.token }} + + # Forgejo Publish Job + Forgejo-publish: + needs: Build_RetroDECK + uses: ./.github/workflows/publish-on-fogejo.yml + with: + release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} + artifacts: "RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha,RetroDECK-Artifact.tar.gz" + tag: ${{ needs.Build_RetroDECK.outputs.tag }} \ No newline at end of file diff --git a/.github/workflows/cooker-selfhosted.yml b/.github/workflows/cooker-selfhosted.yml deleted file mode 100644 index c18ee709..00000000 --- a/.github/workflows/cooker-selfhosted.yml +++ /dev/null @@ -1,266 +0,0 @@ -name: "Build cooker" - -on: - push: - branches: - - cooker* - - feat* - - branch/cooker* - paths: - - '.github/workflows/**' - - 'automation_tools/**' - - 'config/**' - - 'functions/**' - - 'rd-submodules/**' - - '*.sh' - - 'net.retrodeck.retrodeck.yml' - - 'net.retrodeck.retrodeck.appdata.xml' - pull_request: - - # Italy (CET): 11:00 PM - # Japan (JST): 7:00 AM - # schedule: - # - cron: '0 22 * * *' - - workflow_dispatch: - -permissions: - contents: write - -jobs: - - Building_RetroDECK: - runs-on: retrodeck-server # was just "retrodeck", temporarly disabled other runners for troubleshooting - steps: - - # Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317 - - name: Remove stuck mounts - run: | - sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - continue-on-error: true - - - name: Generate a token for Rekku - if: ${{ github.repository == 'RetroDECK/RetroDECK' }} - 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: Clone RetroDECK repo - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: "Install dependencies" - run: /bin/bash | curl "https://raw.githubusercontent.com/RetroDECK/components-template/refs/heads/main/automation_tools/install_dependencies.sh" - - - name: Generate cooker build ID - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" - - - name: Get branch name - id: branch_name - run: | - if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then - source_branch="${{ github.head_ref }}" - echo "BRANCH_NAME=$source_branch" >> $GITHUB_ENV - else - branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||') - echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV - fi - - # if the branch is coming from a PR the tag should be manually built - - name: "Generate version tag and evaluating latest tag" - run: | - # Source the version extractor script to get the manifest version - source automation_tools/version_extractor.sh - MANIFEST_VERSION="$(fetch_manifest_version)" - echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV - - # Check if the event is related to a pull request - if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then - # Use GITHUB_HEAD_REF to get the source branch - source_branch="${GITHUB_HEAD_REF}" - - # Replace '/' with '-' in the branch name - source_branch=${source_branch//\//-} - # Use GITHUB_HEAD_REF to get the source branch - source_branch="${GITHUB_HEAD_REF}" - - # Replace '/' with '-' in the branch name - source_branch=${source_branch//\//-} - echo "[DEBUG] source branch is: $source_branch" - - # Generate the tag for a pull request - echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV - echo "MAKE_LATEST=false" >> $GITHUB_ENV # Not marked as the latest cooker version if it's a feature branch - else - # Generate the tag for non-pull request branches - # Generate the tag for non-pull request branches - TAG="$MANIFEST_VERSION-${{ env.buildid }}" - echo "TAG=$TAG" >> $GITHUB_ENV - echo "MAKE_LATEST=true" >> $GITHUB_ENV - fi - - # Output the manifest version and generated tag for debugging - echo "MANIFEST_VERSION: $MANIFEST_VERSION" - echo "Version TAG: $TAG" - echo "MAKE_LATEST: $MAKE_LATEST" - - # backing up manifest in case download fails and hashes must be recalculated - - name: Manifest backup - run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" - - - name: Run pre-build automation tasks - run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - - - name: "Adding flatpak portal for automated updates (cooker only)" - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" - - - name: "Updating release notes in appdata" - run: "automation_tools/appdata_management.sh" - - - name: "[DEBUG] Outputting manifest" - run: cat net.retrodeck.retrodeck.yml - - - name: "Build flatpak: download only" - id: "flatpak-download" - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - continue-on-error: true - - # 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: | - 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" - cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" - "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - - - name: Build flatpak - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - - - name: Create Bundle - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" - - - name: Set environment variable with current branch name - run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV - - - name: Get commits since last release - run: | - # Get the latest release tag - LATEST_TAG=$(git describe --tags --abbrev=0) - # Get all commits since the latest release tag - COMMITS=$(git log $LATEST_TAG..HEAD --pretty=format:"- %s") - # Set the output variable - echo "::set-output name=commits::$COMMITS" - id: commits - continue-on-error: true - - - name: Publish the flatpak in a new cooker release - uses: ncipollo/release-action@v1 - with: - tag: "${{env.TAG}}" - body: | - # Release Notes (Cooker) - This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}. - On branch [${{env.BRANCH_NAME}}](https://github.com/RetroDECK/RetroDECK/tree/${{env.BRANCH_NAME}}). - - ## Commits since last release - ${{ steps.commits.outputs.commits }} - - For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server. - - Cooker channel is provided for the community to test fixes and explore new functionality. - Please DO NOT open issues or ask support on this build. - - artifacts: "RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha,RetroDECK-Artifact.tar.gz" - allowUpdates: true - makeLatest: ${{env.MAKE_LATEST}} # if it's a feat branch is not considered the latest build - token: ${{ steps.generate-rekku-token.outputs.token }} - repo: ${{ github.repository_owner == 'RetroDECK' && 'Cooker' || github.event.repository.name }} # "Cooker" if we are in RetroDECK Org, else "this repo" - continue-on-error: true - - - name: Rewrite Tag - if: ${{ github.repository == 'RetroDECK/RetroDECK' }} - run: | - git submodule deinit -f --all - git fetch --tags - git config --global user.name "Rekku" - git config --global user.email "rekku@retrodeck.net" - if git rev-parse --verify "${{ env.TAG }}" >/dev/null 2>&1; then # if the tag exists - git tag -d "${{ env.TAG }}" # remove it from local repo - git push --delete origin "${{ env.TAG }}" # and from remote - fi - git tag "${{ env.TAG }}" # Create the tag locally - git push origin "${{ env.TAG }}" # Push the new tag in the remote repo - env: - GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }} - - # In case it cannot publish the release at least it's providing the flatpak file for creating a manual release - - name: Upload RetroDECK-cooker.flatpak - uses: actions/upload-artifact@v4 - with: - name: retrodeck-flatpak - path: RetroDECK-cooker.flatpak - continue-on-error: true - - # - name: Upload RetroDECK-cooker.flatpak to Gitea Release - # run: | - # # Set variables for Gitea host, organization, repository, access token, and release details - # GITEA_HOST="repo.retrodeck.net" - # UPLOAD_HOST="upload.retrodeck.net" - # ORGANIZATION="RetroDECK" - # REPO="RetroDECK-cooker" - # GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}" - # RELEASE_NAME="RetroDECK ${{env.TAG}}" - # TAG="${{env.TAG}}" - # RELEASE_BODY="# Release Notes (Cooker) - # This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}. - # On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}}). - - # ## Commits since last release - # ${{ steps.commits.outputs.commits }} - - # For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server. - - # Cooker channel is provided for the community to test fixes and explore new functionality. - # Please DO NOT open issues or ask support on this build." - - # # Create a release using curl and capture the release ID - # release_response=$(curl -X POST \ - # -H "Authorization: token ${GITEA_TOKEN}" \ - # -H "Content-Type: application/json" \ - # -d "{\"tag_name\":\"$TAG\",\"name\":\"$RELEASE_NAME\",\"body\":\"$RELEASE_BODY\"}" \ - # "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases") - - # # Extract the release ID from the response - # release_id=$(echo $release_response | jq -r '.id') - - # # Upload artifacts - # curl -X POST \ - # -H "Authorization: token ${GITEA_TOKEN}" \ - # -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - # -H "Content-Type: multipart/form-data" \ - # -F "attachment=@RetroDECK-cooker.flatpak" \ - # "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak" - - # # Upload artifacts sha - # curl -X POST \ - # -H "Authorization: token ${GITEA_TOKEN}" \ - # -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - # -H "Content-Type: multipart/form-data" \ - # -F "attachment=@RetroDECK-cooker.flatpak.sha" \ - # "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha" - - # curl -X POST \ - # -H "Authorization: token ${GITEA_TOKEN}" \ - # -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - # -H "Content-Type: multipart/form-data" \ - # -F "attachment=@RetroDECK-Artifact.tar.gz" \ - # "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz" diff --git a/.github/workflows/main-selfhosted.yml b/.github/workflows/main-selfhosted.yml deleted file mode 100644 index 9f5fe535..00000000 --- a/.github/workflows/main-selfhosted.yml +++ /dev/null @@ -1,191 +0,0 @@ -name: "Build main" - -on: - push: - branches: - - main - paths: - - '.github/workflows/**' - - 'automation_tools/**' - - 'config/**' - - 'config/es-de/**' - - 'functions/**' - - 'rd-submodules/**' - - '*.sh' - - 'net.retrodeck.retrodeck.yml' - - 'net.retrodeck.retrodeck.appdata.xml' - pull_request: - branches: - - main - - workflow_dispatch: - - -jobs: - - Building_RetroDECK: - runs-on: retrodeck - steps: - - # Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317 - - name: Remove stuck mounts - run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - continue-on-error: true - - - name: Clone RetroDECK repo - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: "Install dependencies" - run: "automation_tools/install_dependencies.sh" - - # backing up manifest in case download fails and hashes must be recalculated - - name: Manifest backup - run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" - - - name: Run pre-build automation tasks - run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - - - name: Read manifest content - id: read_manifest - run: echo "::set-output name=file_content::$(cat net.retrodeck.retrodeck.yml)" - - # - name: "Updating release notes in appdata" - # run: "automation_tools/appdata_management.sh" - - - name: Check versions (main only) - id: check_version_string - run: "automation_tools/main_version_checker.sh" - - - name: "[DEBUG] Outputting manifest" - run: cat net.retrodeck.retrodeck.yml - - - name: "Build flatpak: download only" - id: "flatpak-download" - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - continue-on-error: true - - # 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: | - 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" - cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" - "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - - - name: Build flatpak - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - - - name: Create Artifact for flathub - run: | - tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-main . - hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz)) - echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact.sha - mv -f RetroDECK-Artifact.* ${{ secrets.ARTIFACT_REPO }} - - - name: Create Bundle - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" - - - name: Getting version info - id: version - run: | - appdata="https://raw.githubusercontent.com/RetroDECK/RetroDECK/main/net.retrodeck.retrodeck.appdata.xml" - REL_VER=$(curl -s $appdata | xmlstarlet sel -t -v "//release/@version" | head -1) - DES="$(curl -s $appdata | xmlstarlet sel -t -m "//release[1]" -v "description" -n | sed '1,2d;$d;s/^ */- /;/^- $/d')" - echo "REL_VER=$REL_VER" >> $GITHUB_ENV - echo -e "# Release Notes\n" >> "body.md" - echo "$DES" >> "body.md" - - - name: Publish the flatpak in a new release - uses: ncipollo/release-action@v1 - env: - REL_VER: ${{ env.REL_VER }} - with: - tag: ${{ env.REL_VER }} - name: "RetroDECK v${{ env.REL_VER }}" - bodyFile: "body.md" - artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz" - allowUpdates: true - makeLatest: true - token: ${{ secrets.TRIGGER_BUILD_TOKEN }} - repo: RetroDECK - continue-on-error: true - - - name: Rewrite Tag - run: | - git submodule deinit -f --all - git fetch --tags - if git rev-parse --verify "${{ env.REL_VER }}" >/dev/null 2>&1; then # if the tag exists - git tag -d "${{ env.REL_VER }}" # remove it from local repo - git push --delete origin "${{ env.REL_VER }}" # and from remote - fi - git tag "${{ env.REL_VER }}" # Create the tag locally - git push origin "${{ env.REL_VER }}" # Push the new tag in the remote repo - - # In case it cannot publish the release at least it's providing the flatpak file for creating a manual release - - name: Upload RetroDECK.flatpak - uses: actions/upload-artifact@v4 - with: - name: retrodeck-flatpak - path: RetroDECK.flatpak - continue-on-error: true - - - name: Publish release on Gitea - run: | - # Set variables for Gitea host, organization, repository, access token, and release details - GITEA_HOST="repo.retrodeck.net" - UPLOAD_HOST="upload.retrodeck.net" - ORGANIZATION="RetroDECK" - REPO="RetroDECK" - GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}" - RELEASE_NAME="RetroDECK v${{ env.REL_VER }}" - TAG="${{ env.REL_VER }}" - - payload=$(jq -cn \ - --arg tag_name "$TAG" \ - --arg name "$RELEASE_NAME" \ - --arg body "$(cat body.md)" \ - '{$tag_name, $name, $body}' - ) - - # Create a release using curl and capture the release ID - release_response=$(curl -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ - -H "Content-Type: application/json" \ - -d "$payload" \ - "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases" - ) - - # Extract the release ID from the response - release_id=$(echo $release_response | jq -r '.id') - - # Upload artifacts - curl -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ - -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - -H "Content-Type: multipart/form-data" \ - -F "attachment=@RetroDECK.flatpak" \ - "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak" - - curl -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ - -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - -H "Content-Type: multipart/form-data" \ - -F "attachment=@RetroDECK-Artifact.tar.gz" \ - "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz" - continue-on-error: true # this will be in place until we reate an artifacts website that bypasses cloudflare limit - - - name: Upload RetroDECK.flatpak.sha to Gitea Release - run: | - curl -X POST \ - -H "Authorization: token ${GITEA_TOKEN}" \ - -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \ - -F "file=@RetroDECK.flatpak.sha" \ - "https://$UPLOAD_HOST/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha" - env: - GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }} - continue-on-error: true # this will be in place until we reate an artifacts website that bypasses cloudflare limit From fa14ec998e01ac46a849aa2143a77749c063cb7c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:09:57 +0900 Subject: [PATCH 042/107] Workflow: fogejo related fixes --- .github/workflows/build_release.yml | 43 ++++++++++++++++++----------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index d3d6d2bc..e0b81453 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -27,16 +27,13 @@ permissions: contents: write jobs: - # Generate Rekku Token Job Generate-Rekku-Token: - runs-on: ubuntu-latest - outputs: - token: ${{ steps.generate-token.outputs.token }} - steps: - - name: Generate a token for Rekku - id: generate-token - uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + permissions: + contents: write + secrets: + REKKU_TOKEN: ${{ secrets.REKKU_TOKEN }} # Build RetroDECK Job Build_RetroDECK: @@ -47,7 +44,6 @@ jobs: release_body: ${{ steps.set-outputs.outputs.release_body }} steps: - # Remove Stuck Mounts - name: Remove stuck mounts run: | @@ -133,15 +129,16 @@ jobs: echo "repo_name=RetroDECK" >> $GITHUB_ENV else echo "repo_name=Cooker" >> $GITHUB_ENV + fi - # Publish Release, if main and fails throws an error, if cooker continues anyway + # Publish Release - name: Publish release - uses: ncipollo/release-action@v1.13.0 + uses: ncipollo/release-action@v1 with: tag: ${{ steps.set-outputs.outputs.tag }} name: "RetroDECK ${{ steps.set-outputs.outputs.tag }}" body: ${{ steps.generate-body.outputs.release_body }} - artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz,RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha" + artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} token: ${{ needs.Generate-Rekku-Token.outputs.token }} @@ -163,11 +160,25 @@ jobs: env: GITHUB_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.token }} - # Forgejo Publish Job + # Upload artifacts for other jobs + - name: Upload Build Artifacts + uses: actions/upload-artifact@v4 + with: + name: retrodeck-artifacts + path: | + RetroDECK*.flatpak + RetroDECK*.flatpak.sha + RetroDECK*Artifact.tar.gz + + # As backup we're even publishing the build on our own selfhosted Fogejo instance + # Forgejo Publish Job if main branch Forgejo-publish: + if: github.ref == 'refs/heads/main' needs: Build_RetroDECK - uses: ./.github/workflows/publish-on-fogejo.yml + uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main with: release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} - artifacts: "RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha,RetroDECK-Artifact.tar.gz" - tag: ${{ needs.Build_RetroDECK.outputs.tag }} \ No newline at end of file + artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" + tag: ${{ needs.Build_RetroDECK.outputs.tag }} + secrets: + GITEA_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From b43d10b707ea1406a9b1076227a46d4b3d4d0c98 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:18:13 +0900 Subject: [PATCH 043/107] Workflow: fixing Rekku token --- .github/workflows/build_release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index e0b81453..c9690e5b 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -30,10 +30,8 @@ jobs: # Generate Rekku Token Job Generate-Rekku-Token: uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main - permissions: - contents: write - secrets: - REKKU_TOKEN: ${{ secrets.REKKU_TOKEN }} + outputs: + rekku_token: ${{ jobs.Generate-Rekku-Token.outputs.rekku_token }} # Build RetroDECK Job Build_RetroDECK: @@ -42,6 +40,8 @@ jobs: outputs: tag: ${{ steps.set-outputs.outputs.tag }} release_body: ${{ steps.set-outputs.outputs.release_body }} + env: + REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} steps: # Remove Stuck Mounts From bcdb7c3cc7f8c5337ae53157bf8a15f2c40bdef5 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:19:51 +0900 Subject: [PATCH 044/107] Workflow: fixing Rekku token - fix --- .github/workflows/build_release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index c9690e5b..1743876f 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -30,8 +30,6 @@ jobs: # Generate Rekku Token Job Generate-Rekku-Token: uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main - outputs: - rekku_token: ${{ jobs.Generate-Rekku-Token.outputs.rekku_token }} # Build RetroDECK Job Build_RetroDECK: From 155aac8e517b7491b8de72f29279c289b41ee7c9 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:20:42 +0900 Subject: [PATCH 045/107] Workflow: fixed forgejo secret --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 1743876f..7917fbe4 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -179,4 +179,4 @@ jobs: artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" tag: ${{ needs.Build_RetroDECK.outputs.tag }} secrets: - GITEA_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file + FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From fedef0c3ebf6c2e2da8cfcec4295aafce1ccbe48 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:21:12 +0900 Subject: [PATCH 046/107] Workflow: disabling forgejo step --- .github/workflows/build_release.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 7917fbe4..252f2fc1 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -170,13 +170,13 @@ jobs: # As backup we're even publishing the build on our own selfhosted Fogejo instance # Forgejo Publish Job if main branch - Forgejo-publish: - if: github.ref == 'refs/heads/main' - needs: Build_RetroDECK - uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main - with: - release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} - artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" - tag: ${{ needs.Build_RetroDECK.outputs.tag }} - secrets: - FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file + # Forgejo-publish: + # if: github.ref == 'refs/heads/main' + # needs: Build_RetroDECK + # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main + # with: + # release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} + # artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" + # tag: ${{ needs.Build_RetroDECK.outputs.tag }} + # secrets: + # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From bb083e6f8ae2514b603d250acfd5549e55180a55 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:29:56 +0900 Subject: [PATCH 047/107] Workflow: passing secret key to Rekku --- .github/workflows/build_release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 252f2fc1..eacd3922 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -30,6 +30,8 @@ jobs: # Generate Rekku Token Job Generate-Rekku-Token: uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + secrets: + REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} # Build RetroDECK Job Build_RetroDECK: From 482136b9c843c4fde7ec017c5dcda130075d8308 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:33:14 +0900 Subject: [PATCH 048/107] Triggering build From b686ca35227fa8c7186d06c58302f375fb87c9a1 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:33:57 +0900 Subject: [PATCH 049/107] Triggering build --- .github/workflows/build_release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index eacd3922..9604280e 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -181,4 +181,5 @@ jobs: # artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" # tag: ${{ needs.Build_RetroDECK.outputs.tag }} # secrets: - # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file + # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} + From 5441798bc05ff311924b7c11c77bc07426d16c96 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:36:49 +0900 Subject: [PATCH 050/107] Triggering build --- .github/workflows/build_release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 9604280e..eacd3922 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -181,5 +181,4 @@ jobs: # artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" # tag: ${{ needs.Build_RetroDECK.outputs.tag }} # secrets: - # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} - + # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From fb6fb139c07919c08d632afa34fd91a6a00265db Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 11:47:26 +0900 Subject: [PATCH 051/107] Workflow: adding missing build steps --- .github/workflows/build_release.yml | 69 +++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index eacd3922..d73bea0c 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -90,6 +90,60 @@ jobs: echo "tag=$TAG" >> $GITHUB_OUTPUT echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV + # if the branch is coming from a PR the tag should be manually built + - name: "Generate version tag and evaluating latest tag" + run: | + # Source the version extractor script to get the manifest version + source automation_tools/version_extractor.sh + MANIFEST_VERSION="$(fetch_manifest_version)" + echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV + + # Check if the event is related to a pull request + if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then + # Use GITHUB_HEAD_REF to get the source branch + source_branch="${GITHUB_HEAD_REF}" + + # Replace '/' with '-' in the branch name + source_branch=${source_branch//\//-} + # Use GITHUB_HEAD_REF to get the source branch + source_branch="${GITHUB_HEAD_REF}" + + # Replace '/' with '-' in the branch name + source_branch=${source_branch//\//-} + echo "[DEBUG] source branch is: $source_branch" + + # Generate the tag for a pull request + echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV + echo "MAKE_LATEST=false" >> $GITHUB_ENV # Not marked as the latest cooker version if it's a feature branch + else + # Generate the tag for non-pull request branches + TAG="$MANIFEST_VERSION-${{ env.buildid }}" + echo "TAG=$TAG" >> $GITHUB_ENV + echo "MAKE_LATEST=true" >> $GITHUB_ENV + fi + + # Output the manifest version and generated tag for debugging + echo "MANIFEST_VERSION: $MANIFEST_VERSION" + echo "Version TAG: $TAG" + echo "MAKE_LATEST: $MAKE_LATEST" + + # backing up manifest in case download fails and hashes must be recalculated + - name: Manifest backup + run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" + + - name: Run pre-build automation tasks + run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + + - name: "Adding flatpak portal for automated updates (Cooker only)" + if: github.ref != 'refs/heads/main' + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" + + - name: "Updating release notes in appdata" + run: "automation_tools/appdata_management.sh" + + - name: "[DEBUG] Outputting manifest" + run: cat net.retrodeck.retrodeck.yml + # Get Commits Since Last Release - name: Get commits since last release id: get-commits @@ -113,11 +167,20 @@ jobs: RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT - # Build Flatpak - - name: Build Flatpak + # 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: | + 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" + cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" + "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" + + - name: Build flatpak run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - # Create a Flatpak Bundle - name: Create Bundle run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" From 9959adbd313e0190b3d9f3152ffac97276e2571e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:00:31 +0900 Subject: [PATCH 052/107] Workflow: enhancing release notes + fix --- .github/workflows/build_release.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index d73bea0c..608c2486 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -165,8 +165,26 @@ jobs: RELEASE_BODY+="On branch [${{ env.BRANCH_NAME }}](https://github.com/RetroDECK/RetroDECK/tree/${{ env.BRANCH_NAME }}).\n\n" RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" + RELEASE_BODY+="## In this release:\n" + + # Extract the latest release version and date + LATEST_RELEASE=$(xmlstarlet sel -t -m "//release[1]" -v "@version" -o " (" -v "@date" -o ")" -n net.retrodeck.retrodeck.appdata.xml) + + # Extract and format the description content + DESCRIPTION=$(xmlstarlet sel -t -m "//release[1]/description/*" \ + -i "self::p" -o "\n### " -v "." -o "\n" \ + -i "self::ul/li" -o "- " -v "." -o "\n" \ + net.retrodeck.retrodeck.appdata.xml) + + # Construct the full release body + RELEASE_BODY="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" + + # Output the release body for GitHub Actions echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT + - name: "Build flatpak: download only" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_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' @@ -178,9 +196,6 @@ jobs: "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - - name: Build flatpak - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - - name: Create Bundle run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" From f7338d5dc3a4e549c462d55a08c9f53a941c521c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:08:39 +0900 Subject: [PATCH 053/107] Workflow: temporery disabling enhanced release notes --- .github/workflows/build_release.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 608c2486..1826a3dd 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -165,19 +165,19 @@ jobs: RELEASE_BODY+="On branch [${{ env.BRANCH_NAME }}](https://github.com/RetroDECK/RetroDECK/tree/${{ env.BRANCH_NAME }}).\n\n" RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" - RELEASE_BODY+="## In this release:\n" + # RELEASE_BODY+="## In this release:\n" - # Extract the latest release version and date - LATEST_RELEASE=$(xmlstarlet sel -t -m "//release[1]" -v "@version" -o " (" -v "@date" -o ")" -n net.retrodeck.retrodeck.appdata.xml) + # # Extract the latest release version and date + # LATEST_RELEASE=$(xmlstarlet sel -t -m "//release[1]" -v "@version" -o " (" -v "@date" -o ")" -n net.retrodeck.retrodeck.appdata.xml) - # Extract and format the description content - DESCRIPTION=$(xmlstarlet sel -t -m "//release[1]/description/*" \ - -i "self::p" -o "\n### " -v "." -o "\n" \ - -i "self::ul/li" -o "- " -v "." -o "\n" \ - net.retrodeck.retrodeck.appdata.xml) + # # Extract and format the description content + # DESCRIPTION=$(xmlstarlet sel -t -m "//release[1]/description/*" \ + # -i "self::p" -o "\n### " -v "." -o "\n" \ + # -i "self::ul/li" -o "- " -v "." -o "\n" \ + # net.retrodeck.retrodeck.appdata.xml) - # Construct the full release body - RELEASE_BODY="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" + # # Construct the full release body + # RELEASE_BODY="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" # Output the release body for GitHub Actions echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT From f02e26dac291f7b521cd35bcff3bd9d02f96711f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:19:24 +0900 Subject: [PATCH 054/107] Appdata management: removing log in favor of echo --- .github/workflows/build_release.yml | 4 +--- automation_tools/appdata_management.sh | 8 ++++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 1826a3dd..f996206e 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -165,7 +165,6 @@ jobs: RELEASE_BODY+="On branch [${{ env.BRANCH_NAME }}](https://github.com/RetroDECK/RetroDECK/tree/${{ env.BRANCH_NAME }}).\n\n" RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" - # RELEASE_BODY+="## In this release:\n" # # Extract the latest release version and date # LATEST_RELEASE=$(xmlstarlet sel -t -m "//release[1]" -v "@version" -o " (" -v "@date" -o ")" -n net.retrodeck.retrodeck.appdata.xml) @@ -176,8 +175,7 @@ jobs: # -i "self::ul/li" -o "- " -v "." -o "\n" \ # net.retrodeck.retrodeck.appdata.xml) - # # Construct the full release body - # RELEASE_BODY="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" + # RELEASE_BODY+="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" # Output the release body for GitHub Actions echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT diff --git a/automation_tools/appdata_management.sh b/automation_tools/appdata_management.sh index 835e2018..aeedd5d7 100755 --- a/automation_tools/appdata_management.sh +++ b/automation_tools/appdata_management.sh @@ -7,24 +7,24 @@ source automation_tools/version_extractor.sh # Fetch appdata version appdata_version=$(fetch_appdata_version) -log i "Appdata:\t\t$appdata_version" +echo -e "Appdata:\t\t$appdata_version" # Defining manifest file location appdata_file="net.retrodeck.retrodeck.appdata.xml" # Check if release with appdata_version already exists if grep -q "version=\"$appdata_version\"" "$appdata_file"; then - log i "Deleting existing release version $appdata_version..." + echo -e "Deleting existing release version $appdata_version..." # Remove the existing release entry sed -i "//d" "$appdata_file" fi -log i "Adding new release version $appdata_version..." +echo -e "Adding new release version $appdata_version..." # Get today's date in the required format (YYYY-MM-DD) today_date=$(date +"%Y-%m-%d") -log i "Today is $today_date" +echo -e "Today is $today_date" # Construct the release snippet release_snippet="\ From 13dc816cd1396900b2cd9859faa42f8daefee8d9 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:20:30 +0900 Subject: [PATCH 055/107] Appdata management: removing /tmp/wiki before cloning --- automation_tools/appdata_management.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/automation_tools/appdata_management.sh b/automation_tools/appdata_management.sh index aeedd5d7..c1b5cb35 100755 --- a/automation_tools/appdata_management.sh +++ b/automation_tools/appdata_management.sh @@ -41,6 +41,7 @@ xml_content=$(cat "$appdata_file") # Replace RELEASE_NOTES_PLACEHOLDER with the actual release notes # TODO +rm -rf /tmp/wiki git clone https://github.com/RetroDECK/RetroDECK.wiki.git /tmp/wiki # Path to the markdown file From 44570e89152a092f42c5d964a188a08b3e50d390 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:25:43 +0900 Subject: [PATCH 056/107] Debug: troubleshooting build failure --- .github/workflows/build_release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index f996206e..bcf07ceb 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -55,7 +55,10 @@ jobs: - name: Clone RetroDECK repo uses: actions/checkout@v4 with: - submodules: 'true' + fetch-depth: 5 # Fetch the last 5 commits; adjust as needed + submodules: true # Fetch submodules + submodule-fetch-depth: 5 # Fetch the last 5 commits of submodules + ref: ${{ github.ref }} # Ensure the current branch is checked out # Install Dependencies - name: Install dependencies From bade40d89ec097aefb447b9b12a87ab02f833f42 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:54:05 +0900 Subject: [PATCH 057/107] Revert "Debug: troubleshooting build failure" This reverts commit 44570e89152a092f42c5d964a188a08b3e50d390. --- .github/workflows/build_release.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index bcf07ceb..f996206e 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -55,10 +55,7 @@ jobs: - name: Clone RetroDECK repo uses: actions/checkout@v4 with: - fetch-depth: 5 # Fetch the last 5 commits; adjust as needed - submodules: true # Fetch submodules - submodule-fetch-depth: 5 # Fetch the last 5 commits of submodules - ref: ${{ github.ref }} # Ensure the current branch is checked out + submodules: 'true' # Install Dependencies - name: Install dependencies From 6fb6cac3944e1aba60cce2419237cccc65b232f7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 12:54:29 +0900 Subject: [PATCH 058/107] Workflow: revert --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index f996206e..1ede6be2 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -55,7 +55,7 @@ jobs: - name: Clone RetroDECK repo uses: actions/checkout@v4 with: - submodules: 'true' + submodules: true # Install Dependencies - name: Install dependencies From 2913a6c77a8a53b0a4e41436eba3e3370b36c081 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 13:51:26 +0900 Subject: [PATCH 059/107] Workflow: wrong step copypasta - whoops --- .github/workflows/build_release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 1ede6be2..c875b232 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -181,7 +181,7 @@ jobs: echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT - name: "Build flatpak: download only" - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" + run: "/bin/bash ${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)" @@ -194,6 +194,9 @@ jobs: "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" + - name: Build flatpak + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" + - name: Create Bundle run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" From 8f364b9e694c9966510560ce0438c1b85a85c4e9 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 14:46:12 +0900 Subject: [PATCH 060/107] APPDATA: fixed double tag --- net.retrodeck.retrodeck.appdata.xml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index f8f42fc1..c1fe1e8d 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -74,16 +74,6 @@
      • WELCOME TO cooker-0.9.0b!
      • RetroDECK is on a diet: we saved around 600mb
      • -
      -

      Developers, developers, developers:

      -
        -
      • Manifest was completely redone, more on that on the MONTH blog post
      • -
      • RetroDECK now is migrated to an organization on GitHub, as before, please check the MONTH blog post
      • -
      • pre_build_automation script weas reworked and additional functions are added
      • -
      • Contributing is now easier and the manifest build time is down to about 50m (was 3h30)
      • -
      -

      Changes:

      -
      • Updated all the outdated emulators
      • Duckstation due to licensing changes is frozen at the latest possible build becoming de facto: Legacy
      • Duckstation configured to use OpenGL as Vulkan seems to be broken
      • @@ -93,6 +83,13 @@
      • New Configurator completely written in GODOT, now with controller support and many more features to you to discover
      • New run game engine added to run games via cli, just run `flatpak run net.retrodeck.retrodeck start retrodeck/roms/system/game.ext`, `--help` for more info
      +

      Developers, developers, developers:

      +
        +
      • Manifest was completely redone, more on that on the MONTH blog post
      • +
      • RetroDECK now is migrated to an organization on GitHub, as before, please check the MONTH blog post
      • +
      • pre_build_automation script weas reworked and additional functions are added
      • +
      • Contributing is now easier and the manifest build time is down to about 50m (was 3h30)
      • +

      Known issues:

      • Ryujinx temporary removed until we figure out the situation
      • From c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 14:46:37 +0900 Subject: [PATCH 061/107] RELEASE NOTES: fixed body --- .github/workflows/build_release.yml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index c875b232..2600460d 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -166,19 +166,26 @@ jobs: RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" - # # Extract the latest release version and date - # LATEST_RELEASE=$(xmlstarlet sel -t -m "//release[1]" -v "@version" -o " (" -v "@date" -o ")" -n net.retrodeck.retrodeck.appdata.xml) + # Define the XML file path + xml_file="./net.retrodeck.retrodeck.appdata.xml" - # # Extract and format the description content - # DESCRIPTION=$(xmlstarlet sel -t -m "//release[1]/description/*" \ - # -i "self::p" -o "\n### " -v "." -o "\n" \ - # -i "self::ul/li" -o "- " -v "." -o "\n" \ - # net.retrodeck.retrodeck.appdata.xml) + # Extract the raw description content + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") - # RELEASE_BODY+="# Release Notes\nVersion: $LATEST_RELEASE\n\n$DESCRIPTION" + # Convert

        tags to markdown headers using sed and place headers correctly + markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - # Output the release body for GitHub Actions - echo "release_body=$RELEASE_BODY" >> $GITHUB_OUTPUT + # Convert
      • tags to bullet points and remove leading spaces + markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') + + # Remove any remaining XML tags + markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + + # Append markdown content with proper formatting + RELEASE_BODY+="$markdown_description\n" + + # Use printf to preserve newlines and output to GITHUB_OUTPUT + printf "release_body<> $GITHUB_OUTPUT - name: "Build flatpak: download only" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" From 487cdb509bdb9a68842cb65fd42efa4bb3d9b5eb Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 15:09:54 +0900 Subject: [PATCH 062/107] Workflow: debugging generate-body step --- .github/workflows/build_release.yml | 43 +++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 2600460d..b1e931a7 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -160,32 +160,57 @@ jobs: - name: Generate release body text id: generate-body run: | + # Enable debugging + set -x + + # Initialize the release body RELEASE_BODY="# Release Notes\n" - RELEASE_BODY+="This release is based on the commit: ${{ github.repository }}@${{ github.sha }}.\n" - RELEASE_BODY+="On branch [${{ env.BRANCH_NAME }}](https://github.com/RetroDECK/RetroDECK/tree/${{ env.BRANCH_NAME }}).\n\n" + RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" + RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" RELEASE_BODY+="## Commits since last release\n" - RELEASE_BODY+="${{ steps.get-commits.outputs.commits }}\n\n" + RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" # Define the XML file path xml_file="./net.retrodeck.retrodeck.appdata.xml" - # Extract the raw description content - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") + # Check if the XML file exists + if [[ ! -f "$xml_file" ]]; then + echo "Error: XML file not found: $xml_file" + exit 1 + fi - # Convert

        tags to markdown headers using sed and place headers correctly + # Extract the raw description content + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) + + # Check if xmlstarlet extraction was successful + if [[ $? -ne 0 ]]; then + echo "Error: Failed to extract description content using xmlstarlet" + exit 1 + fi + + # Convert

        tags to markdown headers using sed markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - # Convert
      • tags to bullet points and remove leading spaces + # Convert
      • tags to bullet points and trim spaces markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') # Remove any remaining XML tags markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + # Debug: Print the markdown description + echo "Markdown Description:" + echo "$markdown_description" + # Append markdown content with proper formatting RELEASE_BODY+="$markdown_description\n" - # Use printf to preserve newlines and output to GITHUB_OUTPUT - printf "release_body<> $GITHUB_OUTPUT + # Output the release body for GitHub Actions + { + printf "release_body<> "$GITHUB_OUTPUT" + + # Disable debugging + set +x - name: "Build flatpak: download only" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" From 76a2e727d2cb174696203c20e26a87d16b7ce4e2 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 15:21:40 +0900 Subject: [PATCH 063/107] Workflow: temporary disabled generate-body step --- .github/workflows/build_release.yml | 100 ++++++++++++++-------------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index b1e931a7..8e66bd6d 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -160,57 +160,59 @@ jobs: - name: Generate release body text id: generate-body run: | - # Enable debugging - set -x + # # Enable debugging + # set -x + + # # Initialize the release body + # RELEASE_BODY="# Release Notes\n" + # RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" + # RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" + # RELEASE_BODY+="## Commits since last release\n" + # RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" + + # # Define the XML file path + # xml_file="./net.retrodeck.retrodeck.appdata.xml" + + # # Check if the XML file exists + # if [[ ! -f "$xml_file" ]]; then + # echo "Error: XML file not found: $xml_file" + # exit 1 + # fi + + # # Extract the raw description content + # raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) + + # # Check if xmlstarlet extraction was successful + # if [[ $? -ne 0 ]]; then + # echo "Error: Failed to extract description content using xmlstarlet" + # exit 1 + # fi + + # # Convert

        tags to markdown headers using sed + # markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') + + # # Convert
      • tags to bullet points and trim spaces + # markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') + + # # Remove any remaining XML tags + # markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + + # # Debug: Print the markdown description + # echo "Markdown Description:" + # echo "$markdown_description" + + # # Append markdown content with proper formatting + # RELEASE_BODY+="$markdown_description\n" + + # # Output the release body for GitHub Actions + # { + # printf "release_body<> "$GITHUB_OUTPUT" + + # # Disable debugging + # set +x - # Initialize the release body RELEASE_BODY="# Release Notes\n" - RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" - RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" - RELEASE_BODY+="## Commits since last release\n" - RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" - - # Define the XML file path - xml_file="./net.retrodeck.retrodeck.appdata.xml" - - # Check if the XML file exists - if [[ ! -f "$xml_file" ]]; then - echo "Error: XML file not found: $xml_file" - exit 1 - fi - - # Extract the raw description content - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) - - # Check if xmlstarlet extraction was successful - if [[ $? -ne 0 ]]; then - echo "Error: Failed to extract description content using xmlstarlet" - exit 1 - fi - - # Convert

        tags to markdown headers using sed - markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - - # Convert
      • tags to bullet points and trim spaces - markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') - - # Remove any remaining XML tags - markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') - - # Debug: Print the markdown description - echo "Markdown Description:" - echo "$markdown_description" - - # Append markdown content with proper formatting - RELEASE_BODY+="$markdown_description\n" - - # Output the release body for GitHub Actions - { - printf "release_body<> "$GITHUB_OUTPUT" - - # Disable debugging - set +x - name: "Build flatpak: download only" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" From b88cb81f824a530a0137c025d3cdb88757f15826 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 16:56:44 +0900 Subject: [PATCH 064/107] Workflow: separating jobs to allow Rekku token to don't expire during the build --- .github/workflows/build_release.yml | 63 ++++++++++++++++------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 8e66bd6d..96478de0 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -27,16 +27,10 @@ permissions: contents: write jobs: - # Generate Rekku Token Job - Generate-Rekku-Token: - uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main - secrets: - REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} # Build RetroDECK Job Build_RetroDECK: runs-on: retrodeck-server - needs: Generate-Rekku-Token outputs: tag: ${{ steps.set-outputs.outputs.tag }} release_body: ${{ steps.set-outputs.outputs.release_body }} @@ -114,12 +108,12 @@ jobs: # Generate the tag for a pull request echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV - echo "MAKE_LATEST=false" >> $GITHUB_ENV # Not marked as the latest cooker version if it's a feature branch + echo "MAKE_LATEST=false" >> $GITHUB_OUTPUT # Not marked as the latest cooker version if it's a feature branch else # Generate the tag for non-pull request branches TAG="$MANIFEST_VERSION-${{ env.buildid }}" echo "TAG=$TAG" >> $GITHUB_ENV - echo "MAKE_LATEST=true" >> $GITHUB_ENV + echo "MAKE_LATEST=true" >> $GITHUB_OUTPUT fi # Output the manifest version and generated tag for debugging @@ -132,7 +126,7 @@ jobs: run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" - name: Run pre-build automation tasks - run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - name: "Adding flatpak portal for automated updates (Cooker only)" if: github.ref != 'refs/heads/main' @@ -234,11 +228,36 @@ jobs: - name: Create Bundle run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" + # Upload artifacts for other jobs + - name: Upload Build Artifacts + uses: actions/upload-artifact@v4 + with: + name: retrodeck-artifacts + path: | + RetroDECK*.flatpak + RetroDECK*.flatpak.sha + RetroDECK*Artifact.tar.gz + + Generate-Rekku-Token: + uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + secrets: + REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} + + GitHub-publish: + runs-on: ubuntu-latest + needs: [Generate-Rekku-Token, Build_RetroDECK] + env: + REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} + tag: ${{ needs.Build_RetroDECK.outputs.tag }} + release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} + MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} + steps: + # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository id: set-repo run: | - if [[ "$GITHUB_REF" == "refs/heads/main" || "$GITHUB_REF" == refs/heads/feat* ]]; then + if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then echo "repo_name=RetroDECK" >> $GITHUB_ENV else echo "repo_name=Cooker" >> $GITHUB_ENV @@ -248,13 +267,13 @@ jobs: - name: Publish release uses: ncipollo/release-action@v1 with: - tag: ${{ steps.set-outputs.outputs.tag }} - name: "RetroDECK ${{ steps.set-outputs.outputs.tag }}" - body: ${{ steps.generate-body.outputs.release_body }} - artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" + tag: ${{ env.tag }} + name: "RetroDECK ${{ env.tag }}" + body: ${{ env.release_body }} + artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} - token: ${{ needs.Generate-Rekku-Token.outputs.token }} + token: ${{ env.REKKU_TOKEN }} repo: "${{ env.repo_name }}" continue-on-error: ${{ github.ref != 'refs/heads/main' }} @@ -271,17 +290,7 @@ jobs: git tag "${{ steps.set-outputs.outputs.tag }}" git push origin "${{ steps.set-outputs.outputs.tag }}" env: - GITHUB_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.token }} - - # Upload artifacts for other jobs - - name: Upload Build Artifacts - uses: actions/upload-artifact@v4 - with: - name: retrodeck-artifacts - path: | - RetroDECK*.flatpak - RetroDECK*.flatpak.sha - RetroDECK*Artifact.tar.gz + GITHUB_TOKEN: ${{ env.REKKU_TOKEN }} # As backup we're even publishing the build on our own selfhosted Fogejo instance # Forgejo Publish Job if main branch @@ -291,7 +300,7 @@ jobs: # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main # with: # release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} - # artifacts: "RetroDECK*.flatpak,RetroDECK*.flatpak.sha,RetroDECK*Artifact.tar.gz" + # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" # tag: ${{ needs.Build_RetroDECK.outputs.tag }} # secrets: # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From 8f18765ca5d4b1a30619013c9d66c591b17204fa Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 12 Nov 2024 16:57:40 +0900 Subject: [PATCH 065/107] Workflow: separating jobs to allow Rekku token to don't expire during the build - fix --- .github/workflows/build_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 96478de0..a65da5a6 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -240,6 +240,7 @@ jobs: Generate-Rekku-Token: uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main + needs: Build_RetroDECK secrets: REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} From d981291b6279a1871e40fcd75eae2c73317c4212 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 09:32:33 +0900 Subject: [PATCH 066/107] Triggering build From eaa5cafdfe2755c09e57fd41e90ad6f2121589dd Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 09:55:04 +0900 Subject: [PATCH 067/107] Triggering build --- .github/workflows/build_release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index a65da5a6..351b01ad 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -304,4 +304,5 @@ jobs: # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" # tag: ${{ needs.Build_RetroDECK.outputs.tag }} # secrets: - # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file + # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} + \ No newline at end of file From 83047840a29091a22c4f102ad1d4825bd0c89e95 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 13:06:45 +0900 Subject: [PATCH 068/107] Testing the token pass as a secret --- .github/workflows/build_release.yml | 350 ++++++++++++++-------------- 1 file changed, 175 insertions(+), 175 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 351b01ad..a5257b07 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -29,226 +29,226 @@ permissions: jobs: # Build RetroDECK Job - Build_RetroDECK: - runs-on: retrodeck-server - outputs: - tag: ${{ steps.set-outputs.outputs.tag }} - release_body: ${{ steps.set-outputs.outputs.release_body }} - env: - REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} + # Build_RetroDECK: + # runs-on: retrodeck-server + # outputs: + # tag: ${{ steps.set-outputs.outputs.tag }} + # release_body: ${{ steps.set-outputs.outputs.release_body }} + # env: + # REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} - steps: - # Remove Stuck Mounts - - name: Remove stuck mounts - run: | - sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - continue-on-error: true + # steps: + # # Remove Stuck Mounts + # - name: Remove stuck mounts + # run: | + # sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + # sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + # continue-on-error: true - # Clone Repository - - name: Clone RetroDECK repo - uses: actions/checkout@v4 - with: - submodules: true + # # Clone Repository + # - name: Clone RetroDECK repo + # uses: actions/checkout@v4 + # with: + # submodules: true - # Install Dependencies - - name: Install dependencies - run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash + # # Install Dependencies + # - name: Install dependencies + # run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash - # Generate Build ID for Cooker Branches - - name: Generate cooker build ID - if: github.ref != 'refs/heads/main' - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + # # Generate Build ID for Cooker Branches + # - name: Generate cooker build ID + # if: github.ref != 'refs/heads/main' + # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" - # Get Branch Name - - name: Get branch name - id: get-branch-name - run: | - branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||') - echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV + # # Get Branch Name + # - name: Get branch name + # id: get-branch-name + # run: | + # branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||') + # echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV - # Generate Version Tag - - name: Generate version tag - id: set-outputs - run: | - source automation_tools/version_extractor.sh - MANIFEST_VERSION="$(fetch_manifest_version)" - if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then - TAG="$MANIFEST_VERSION" - MAKE_LATEST=true - else - source_branch="${GITHUB_HEAD_REF//\//-}" - TAG="PR-$source_branch-${{ github.run_id }}" - MAKE_LATEST=false - fi - echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV + # # Generate Version Tag + # - name: Generate version tag + # id: set-outputs + # run: | + # source automation_tools/version_extractor.sh + # MANIFEST_VERSION="$(fetch_manifest_version)" + # if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then + # TAG="$MANIFEST_VERSION" + # MAKE_LATEST=true + # else + # source_branch="${GITHUB_HEAD_REF//\//-}" + # TAG="PR-$source_branch-${{ github.run_id }}" + # MAKE_LATEST=false + # fi + # echo "tag=$TAG" >> $GITHUB_OUTPUT + # echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV - # if the branch is coming from a PR the tag should be manually built - - name: "Generate version tag and evaluating latest tag" - run: | - # Source the version extractor script to get the manifest version - source automation_tools/version_extractor.sh - MANIFEST_VERSION="$(fetch_manifest_version)" - echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV + # # if the branch is coming from a PR the tag should be manually built + # - name: "Generate version tag and evaluating latest tag" + # run: | + # # Source the version extractor script to get the manifest version + # source automation_tools/version_extractor.sh + # MANIFEST_VERSION="$(fetch_manifest_version)" + # echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV - # Check if the event is related to a pull request - if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then - # Use GITHUB_HEAD_REF to get the source branch - source_branch="${GITHUB_HEAD_REF}" + # # Check if the event is related to a pull request + # if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then + # # Use GITHUB_HEAD_REF to get the source branch + # source_branch="${GITHUB_HEAD_REF}" - # Replace '/' with '-' in the branch name - source_branch=${source_branch//\//-} - # Use GITHUB_HEAD_REF to get the source branch - source_branch="${GITHUB_HEAD_REF}" + # # Replace '/' with '-' in the branch name + # source_branch=${source_branch//\//-} + # # Use GITHUB_HEAD_REF to get the source branch + # source_branch="${GITHUB_HEAD_REF}" - # Replace '/' with '-' in the branch name - source_branch=${source_branch//\//-} - echo "[DEBUG] source branch is: $source_branch" + # # Replace '/' with '-' in the branch name + # source_branch=${source_branch//\//-} + # echo "[DEBUG] source branch is: $source_branch" - # Generate the tag for a pull request - echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV - echo "MAKE_LATEST=false" >> $GITHUB_OUTPUT # Not marked as the latest cooker version if it's a feature branch - else - # Generate the tag for non-pull request branches - TAG="$MANIFEST_VERSION-${{ env.buildid }}" - echo "TAG=$TAG" >> $GITHUB_ENV - echo "MAKE_LATEST=true" >> $GITHUB_OUTPUT - fi + # # Generate the tag for a pull request + # echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV + # echo "MAKE_LATEST=false" >> $GITHUB_OUTPUT # Not marked as the latest cooker version if it's a feature branch + # else + # # Generate the tag for non-pull request branches + # TAG="$MANIFEST_VERSION-${{ env.buildid }}" + # echo "TAG=$TAG" >> $GITHUB_ENV + # echo "MAKE_LATEST=true" >> $GITHUB_OUTPUT + # fi - # Output the manifest version and generated tag for debugging - echo "MANIFEST_VERSION: $MANIFEST_VERSION" - echo "Version TAG: $TAG" - echo "MAKE_LATEST: $MAKE_LATEST" + # # Output the manifest version and generated tag for debugging + # echo "MANIFEST_VERSION: $MANIFEST_VERSION" + # echo "Version TAG: $TAG" + # echo "MAKE_LATEST: $MAKE_LATEST" - # backing up manifest in case download fails and hashes must be recalculated - - name: Manifest backup - run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" + # # backing up manifest in case download fails and hashes must be recalculated + # - name: Manifest backup + # run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" - - name: Run pre-build automation tasks - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + # - name: Run pre-build automation tasks + # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - - name: "Adding flatpak portal for automated updates (Cooker only)" - if: github.ref != 'refs/heads/main' - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" + # - name: "Adding flatpak portal for automated updates (Cooker only)" + # if: github.ref != 'refs/heads/main' + # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" - - name: "Updating release notes in appdata" - run: "automation_tools/appdata_management.sh" + # - name: "Updating release notes in appdata" + # run: "automation_tools/appdata_management.sh" - - name: "[DEBUG] Outputting manifest" - run: cat net.retrodeck.retrodeck.yml + # - name: "[DEBUG] Outputting manifest" + # run: cat net.retrodeck.retrodeck.yml - # Get Commits Since Last Release - - name: Get commits since last release - id: get-commits - run: | - LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") - if [ -z "$LATEST_TAG" ]; then - COMMITS=$(git log HEAD --pretty=format:"- %s") - else - COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") - fi - echo "commits=$COMMITS" >> $GITHUB_OUTPUT + # # Get Commits Since Last Release + # - name: Get commits since last release + # id: get-commits + # run: | + # LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") + # if [ -z "$LATEST_TAG" ]; then + # COMMITS=$(git log HEAD --pretty=format:"- %s") + # else + # COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") + # fi + # echo "commits=$COMMITS" >> $GITHUB_OUTPUT - # Generate Release Body - - name: Generate release body text - id: generate-body - run: | - # # Enable debugging - # set -x + # # Generate Release Body + # - name: Generate release body text + # id: generate-body + # run: | + # # # Enable debugging + # # set -x - # # Initialize the release body - # RELEASE_BODY="# Release Notes\n" - # RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" - # RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" - # RELEASE_BODY+="## Commits since last release\n" - # RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" + # # # Initialize the release body + # # RELEASE_BODY="# Release Notes\n" + # # RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" + # # RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" + # # RELEASE_BODY+="## Commits since last release\n" + # # RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" - # # Define the XML file path - # xml_file="./net.retrodeck.retrodeck.appdata.xml" + # # # Define the XML file path + # # xml_file="./net.retrodeck.retrodeck.appdata.xml" - # # Check if the XML file exists - # if [[ ! -f "$xml_file" ]]; then - # echo "Error: XML file not found: $xml_file" - # exit 1 - # fi + # # # Check if the XML file exists + # # if [[ ! -f "$xml_file" ]]; then + # # echo "Error: XML file not found: $xml_file" + # # exit 1 + # # fi - # # Extract the raw description content - # raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) + # # # Extract the raw description content + # # raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) - # # Check if xmlstarlet extraction was successful - # if [[ $? -ne 0 ]]; then - # echo "Error: Failed to extract description content using xmlstarlet" - # exit 1 - # fi + # # # Check if xmlstarlet extraction was successful + # # if [[ $? -ne 0 ]]; then + # # echo "Error: Failed to extract description content using xmlstarlet" + # # exit 1 + # # fi - # # Convert

        tags to markdown headers using sed - # markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') + # # # Convert

        tags to markdown headers using sed + # # markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - # # Convert
      • tags to bullet points and trim spaces - # markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') + # # # Convert
      • tags to bullet points and trim spaces + # # markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') - # # Remove any remaining XML tags - # markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + # # # Remove any remaining XML tags + # # markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') - # # Debug: Print the markdown description - # echo "Markdown Description:" - # echo "$markdown_description" + # # # Debug: Print the markdown description + # # echo "Markdown Description:" + # # echo "$markdown_description" - # # Append markdown content with proper formatting - # RELEASE_BODY+="$markdown_description\n" + # # # Append markdown content with proper formatting + # # RELEASE_BODY+="$markdown_description\n" - # # Output the release body for GitHub Actions - # { - # printf "release_body<> "$GITHUB_OUTPUT" + # # # Output the release body for GitHub Actions + # # { + # # printf "release_body<> "$GITHUB_OUTPUT" - # # Disable debugging - # set +x + # # # Disable debugging + # # set +x - RELEASE_BODY="# Release Notes\n" + # RELEASE_BODY="# Release Notes\n" - - name: "Build flatpak: download only" - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" + # - name: "Build flatpak: download only" + # run: "/bin/bash ${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: | - 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" - cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" - "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - "${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: | + # 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" + # cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" + # "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + # "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - - name: Build flatpak - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" + # - name: Build flatpak + # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - - name: Create Bundle - run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" + # - name: Create Bundle + # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" - # Upload artifacts for other jobs - - name: Upload Build Artifacts - uses: actions/upload-artifact@v4 - with: - name: retrodeck-artifacts - path: | - RetroDECK*.flatpak - RetroDECK*.flatpak.sha - RetroDECK*Artifact.tar.gz + # # Upload artifacts for other jobs + # - name: Upload Build Artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: retrodeck-artifacts + # path: | + # RetroDECK*.flatpak + # RetroDECK*.flatpak.sha + # RetroDECK*Artifact.tar.gz Generate-Rekku-Token: uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main - needs: Build_RetroDECK + # needs: Build_RetroDECK secrets: REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} GitHub-publish: runs-on: ubuntu-latest - needs: [Generate-Rekku-Token, Build_RetroDECK] + # needs: [Generate-Rekku-Token, Build_RetroDECK] + needs: [Generate-Rekku-Token] env: - REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} tag: ${{ needs.Build_RetroDECK.outputs.tag }} release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} @@ -274,7 +274,7 @@ jobs: artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} - token: ${{ env.REKKU_TOKEN }} + token: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} repo: "${{ env.repo_name }}" continue-on-error: ${{ github.ref != 'refs/heads/main' }} From e4ae1c311b493549f34acf4029186e38fbcc5c63 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 13:14:31 +0900 Subject: [PATCH 069/107] Removing additional token step --- .github/workflows/build_release.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index a5257b07..12030a2e 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -238,22 +238,25 @@ jobs: # RetroDECK*.flatpak.sha # RetroDECK*Artifact.tar.gz - Generate-Rekku-Token: - uses: RetroDECK/components-template/.github/workflows/generate_rekku_token.yml@main - # needs: Build_RetroDECK - secrets: - REKKU_PRIVATE_KEY: ${{ secrets.REKKU_PRIVATE_KEY }} - GitHub-publish: runs-on: ubuntu-latest # needs: [Generate-Rekku-Token, Build_RetroDECK] - needs: [Generate-Rekku-Token] env: tag: ${{ needs.Build_RetroDECK.outputs.tag }} release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} steps: + - name: Generate a token for Rekku + if: ${{ github.repository == 'RetroDECK/RetroDECK' }} + 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" + # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository id: set-repo @@ -274,7 +277,7 @@ jobs: artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} - token: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} + token: ${{ steps.generate-rekku-token.outputs.token }} repo: "${{ env.repo_name }}" continue-on-error: ${{ github.ref != 'refs/heads/main' }} @@ -291,7 +294,7 @@ jobs: git tag "${{ steps.set-outputs.outputs.tag }}" git push origin "${{ steps.set-outputs.outputs.tag }}" env: - GITHUB_TOKEN: ${{ env.REKKU_TOKEN }} + GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }} # As backup we're even publishing the build on our own selfhosted Fogejo instance # Forgejo Publish Job if main branch From 6bec9e91c20bb88ef51889d25862e792dbf77fc8 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 13:36:08 +0900 Subject: [PATCH 070/107] BUILD_RELEASE: - re-enabled release body - optimized version tag generation - re-enabled build --- .github/workflows/build_release.yml | 338 +++++++++++++--------------- 1 file changed, 154 insertions(+), 184 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 12030a2e..bf954814 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -29,218 +29,188 @@ permissions: jobs: # Build RetroDECK Job - # Build_RetroDECK: - # runs-on: retrodeck-server - # outputs: - # tag: ${{ steps.set-outputs.outputs.tag }} - # release_body: ${{ steps.set-outputs.outputs.release_body }} - # env: - # REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} + Build_RetroDECK: + runs-on: retrodeck-server + outputs: + tag: ${{ steps.version-tag.outputs.tag }} + release_body: ${{ steps.version-tag.outputs.release_body }} + env: + REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} - # steps: - # # Remove Stuck Mounts - # - name: Remove stuck mounts - # run: | - # sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - # sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* - # continue-on-error: true + steps: + # Remove Stuck Mounts + - name: Remove stuck mounts + run: | + sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* + continue-on-error: true - # # Clone Repository - # - name: Clone RetroDECK repo - # uses: actions/checkout@v4 - # with: - # submodules: true + # Clone Repository + - name: Clone RetroDECK repo + uses: actions/checkout@v4 + with: + submodules: true - # # Install Dependencies - # - name: Install dependencies - # run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash + # Install Dependencies + - name: Install dependencies + run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash - # # Generate Build ID for Cooker Branches - # - name: Generate cooker build ID - # if: github.ref != 'refs/heads/main' - # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + # Generate Build ID for Cooker Branches + - name: Generate cooker build ID + if: github.ref != 'refs/heads/main' + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + + # Generates a version tag based on the event type (main branch, PR, or cooker) and sets it as output. + - name: Generate Version Tag + id: version-tag + run: | + # Source the version extractor script and fetch the manifest version + source automation_tools/version_extractor.sh + MANIFEST_VERSION="$(fetch_manifest_version)" - # # Get Branch Name - # - name: Get branch name - # id: get-branch-name - # run: | - # branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||') - # echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV + # Ensure the manifest version was successfully extracted + if [[ -z "$MANIFEST_VERSION" ]]; then + echo "[ERROR] Failed to extract the manifest version." + exit 1 + fi - # # Generate Version Tag - # - name: Generate version tag - # id: set-outputs - # run: | - # source automation_tools/version_extractor.sh - # MANIFEST_VERSION="$(fetch_manifest_version)" - # if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then - # TAG="$MANIFEST_VERSION" - # MAKE_LATEST=true - # else - # source_branch="${GITHUB_HEAD_REF//\//-}" - # TAG="PR-$source_branch-${{ github.run_id }}" - # MAKE_LATEST=false - # fi - # echo "tag=$TAG" >> $GITHUB_OUTPUT - # echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV + # Determine the tag based on the GitHub event context + if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then + # Main branch tag + TAG="$MANIFEST_VERSION" + MAKE_LATEST=true + elif [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then + # Pull request tag, sanitize the source branch + source_branch="${GITHUB_HEAD_REF//\//-}" + TAG="PR-$source_branch-${{ github.run_id }}" + MAKE_LATEST=false + else + # Other branches (cooker branches) + TAG="$MANIFEST_VERSION-${{ env.BUILD_ID }}" + MAKE_LATEST=true + fi - # # if the branch is coming from a PR the tag should be manually built - # - name: "Generate version tag and evaluating latest tag" - # run: | - # # Source the version extractor script to get the manifest version - # source automation_tools/version_extractor.sh - # MANIFEST_VERSION="$(fetch_manifest_version)" - # echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV + # Export the tag and make_latest values + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "make_latest=$MAKE_LATEST" >> $GITHUB_OUTPUT - # # Check if the event is related to a pull request - # if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then - # # Use GITHUB_HEAD_REF to get the source branch - # source_branch="${GITHUB_HEAD_REF}" + # Debug output + echo "[INFO] MANIFEST_VERSION: $MANIFEST_VERSION" + echo "[INFO] Generated TAG: $TAG" + echo "[INFO] MAKE_LATEST: $MAKE_LATEST" - # # Replace '/' with '-' in the branch name - # source_branch=${source_branch//\//-} - # # Use GITHUB_HEAD_REF to get the source branch - # source_branch="${GITHUB_HEAD_REF}" + # backing up manifest in case download fails and hashes must be recalculated + - name: Manifest backup + run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" - # # Replace '/' with '-' in the branch name - # source_branch=${source_branch//\//-} - # echo "[DEBUG] source branch is: $source_branch" + - name: Run pre-build automation tasks + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - # # Generate the tag for a pull request - # echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV - # echo "MAKE_LATEST=false" >> $GITHUB_OUTPUT # Not marked as the latest cooker version if it's a feature branch - # else - # # Generate the tag for non-pull request branches - # TAG="$MANIFEST_VERSION-${{ env.buildid }}" - # echo "TAG=$TAG" >> $GITHUB_ENV - # echo "MAKE_LATEST=true" >> $GITHUB_OUTPUT - # fi + - name: "Adding flatpak portal for automated updates (Cooker only)" + if: github.ref != 'refs/heads/main' + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" - # # Output the manifest version and generated tag for debugging - # echo "MANIFEST_VERSION: $MANIFEST_VERSION" - # echo "Version TAG: $TAG" - # echo "MAKE_LATEST: $MAKE_LATEST" + - name: "Updating release notes in appdata" + run: "automation_tools/appdata_management.sh" - # # backing up manifest in case download fails and hashes must be recalculated - # - name: Manifest backup - # run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" + - name: "[DEBUG] Outputting manifest" + run: cat net.retrodeck.retrodeck.yml - # - name: Run pre-build automation tasks - # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + # Get Commits Since Last Release + - name: Get commits since last release + id: get-commits + run: | + LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") + if [ -z "$LATEST_TAG" ]; then + COMMITS=$(git log HEAD --pretty=format:"- %s") + else + COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") + fi + echo "commits=$COMMITS" >> $GITHUB_OUTPUT - # - name: "Adding flatpak portal for automated updates (Cooker only)" - # if: github.ref != 'refs/heads/main' - # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" + # Generate Release Body + - name: Generate release body text + id: generate-body + run: | + # Initialize the release body + RELEASE_BODY="# Release Notes\n" + RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" + RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" + RELEASE_BODY+="## Commits since last release\n" + RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" - # - name: "Updating release notes in appdata" - # run: "automation_tools/appdata_management.sh" + # Define the XML file path + xml_file="./net.retrodeck.retrodeck.appdata.xml" - # - name: "[DEBUG] Outputting manifest" - # run: cat net.retrodeck.retrodeck.yml + # Check if the XML file exists + if [[ ! -f "$xml_file" ]]; then + echo "Error: XML file not found: $xml_file" + exit 1 + fi - # # Get Commits Since Last Release - # - name: Get commits since last release - # id: get-commits - # run: | - # LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") - # if [ -z "$LATEST_TAG" ]; then - # COMMITS=$(git log HEAD --pretty=format:"- %s") - # else - # COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") - # fi - # echo "commits=$COMMITS" >> $GITHUB_OUTPUT + # Extract the raw description content using xmlstarlet + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) - # # Generate Release Body - # - name: Generate release body text - # id: generate-body - # run: | - # # # Enable debugging - # # set -x + # Check if xmlstarlet extraction was successful + if [[ $? -ne 0 ]]; then + echo "Error: Failed to extract description content using xmlstarlet" + exit 1 + fi - # # # Initialize the release body - # # RELEASE_BODY="# Release Notes\n" - # # RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" - # # RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" - # # RELEASE_BODY+="## Commits since last release\n" - # # RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" + # Convert

        tags to markdown headers using sed + markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - # # # Define the XML file path - # # xml_file="./net.retrodeck.retrodeck.appdata.xml" + # Convert
      • tags to bullet points and trim spaces + markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') - # # # Check if the XML file exists - # # if [[ ! -f "$xml_file" ]]; then - # # echo "Error: XML file not found: $xml_file" - # # exit 1 - # # fi + # Remove any remaining XML tags + markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') - # # # Extract the raw description content - # # raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) + # Debug: Print the markdown description + echo "Markdown Description:" + echo "$markdown_description" - # # # Check if xmlstarlet extraction was successful - # # if [[ $? -ne 0 ]]; then - # # echo "Error: Failed to extract description content using xmlstarlet" - # # exit 1 - # # fi + # Append markdown content to the release body + RELEASE_BODY+="$markdown_description" - # # # Convert

        tags to markdown headers using sed - # # markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') + # Set the release body as an output using heredoc to preserve newlines + echo "release_body<> $GITHUB_OUTPUT + echo -e "$RELEASE_BODY" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT - # # # Convert
      • tags to bullet points and trim spaces - # # markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') + - name: "Build flatpak: download only" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - # # # Remove any remaining XML tags - # # markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + # 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: | + 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" + cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" + "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - # # # Debug: Print the markdown description - # # echo "Markdown Description:" - # # echo "$markdown_description" + - name: Build flatpak + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - # # # Append markdown content with proper formatting - # # RELEASE_BODY+="$markdown_description\n" + - name: Create Bundle + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" - # # # Output the release body for GitHub Actions - # # { - # # printf "release_body<> "$GITHUB_OUTPUT" - - # # # Disable debugging - # # set +x - - # RELEASE_BODY="# Release Notes\n" - - # - name: "Build flatpak: download only" - # run: "/bin/bash ${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: | - # 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" - # cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" - # "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" - # "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" - - # - name: Build flatpak - # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" - - # - name: Create Bundle - # run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" - - # # Upload artifacts for other jobs - # - name: Upload Build Artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: retrodeck-artifacts - # path: | - # RetroDECK*.flatpak - # RetroDECK*.flatpak.sha - # RetroDECK*Artifact.tar.gz + # Upload artifacts for other jobs + - name: Upload Build Artifacts + uses: actions/upload-artifact@v4 + with: + name: retrodeck-artifacts + path: | + RetroDECK*.flatpak + RetroDECK*.flatpak.sha + RetroDECK*Artifact.tar.gz GitHub-publish: runs-on: ubuntu-latest - # needs: [Generate-Rekku-Token, Build_RetroDECK] + needs: Build_RetroDECK env: tag: ${{ needs.Build_RetroDECK.outputs.tag }} release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} @@ -287,12 +257,12 @@ jobs: run: | git submodule deinit -f --all git fetch --tags - if git rev-parse --verify "${{ steps.set-outputs.outputs.tag }}" >/dev/null 2>&1; then - git tag -d "${{ steps.set-outputs.outputs.tag }}" - git push --delete origin "${{ steps.set-outputs.outputs.tag }}" + if git rev-parse --verify "${{ steps.version-tag.outputs.tag }}" >/dev/null 2>&1; then + git tag -d "${{ steps.version-tag.outputs.tag }}" + git push --delete origin "${{ steps.version-tag.outputs.tag }}" fi - git tag "${{ steps.set-outputs.outputs.tag }}" - git push origin "${{ steps.set-outputs.outputs.tag }}" + git tag "${{ steps.version-tag.outputs.tag }}" + git push origin "${{ steps.version-tag.outputs.tag }}" env: GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }} From 0bdd0096e0e8f214ade5003ee38480e223b271d6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 13:55:45 +0900 Subject: [PATCH 071/107] BUILD_RELEASE: Converting outputs into envs --- .github/workflows/build_release.yml | 62 ++++++++++------------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index bf954814..6724f46b 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -32,10 +32,8 @@ jobs: Build_RetroDECK: runs-on: retrodeck-server outputs: - tag: ${{ steps.version-tag.outputs.tag }} - release_body: ${{ steps.version-tag.outputs.release_body }} - env: - REKKU_TOKEN: ${{ needs.Generate-Rekku-Token.outputs.rekku_token }} + TAG: ${{ steps.version-tag.outputs.TAG }} + RELEASE_BODY: ${{ steps.version-tag.outputs.RELEASE_BODY }} steps: # Remove Stuck Mounts @@ -90,14 +88,8 @@ jobs: MAKE_LATEST=true fi - # Export the tag and make_latest values - echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "make_latest=$MAKE_LATEST" >> $GITHUB_OUTPUT - - # Debug output - echo "[INFO] MANIFEST_VERSION: $MANIFEST_VERSION" - echo "[INFO] Generated TAG: $TAG" - echo "[INFO] MAKE_LATEST: $MAKE_LATEST" + echo "TAG=$TAG" >> $GITHUB_ENV + echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV # backing up manifest in case download fails and hashes must be recalculated - name: Manifest backup @@ -126,23 +118,20 @@ jobs: else COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") fi - echo "commits=$COMMITS" >> $GITHUB_OUTPUT + echo "COMMITS=$COMMITS" >> $GITHUB_ENV # Generate Release Body - name: Generate release body text id: generate-body run: | - # Initialize the release body + # Initialize the release body text RELEASE_BODY="# Release Notes\n" RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" RELEASE_BODY+="## Commits since last release\n" - RELEASE_BODY+="- RELEASE NOTES: fixed body\n\n" + RELEASE_BODY+="$COMMITS\n\n" - # Define the XML file path xml_file="./net.retrodeck.retrodeck.appdata.xml" - - # Check if the XML file exists if [[ ! -f "$xml_file" ]]; then echo "Error: XML file not found: $xml_file" exit 1 @@ -172,11 +161,7 @@ jobs: # Append markdown content to the release body RELEASE_BODY+="$markdown_description" - - # Set the release body as an output using heredoc to preserve newlines - echo "release_body<> $GITHUB_OUTPUT - echo -e "$RELEASE_BODY" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT + printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV - name: "Build flatpak: download only" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" @@ -212,8 +197,8 @@ jobs: runs-on: ubuntu-latest needs: Build_RetroDECK env: - tag: ${{ needs.Build_RetroDECK.outputs.tag }} - release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} + TAG: ${{ needs.Build_RetroDECK.outputs.TAG }} + RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }} MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} steps: @@ -232,24 +217,21 @@ jobs: id: set-repo run: | if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then - echo "repo_name=RetroDECK" >> $GITHUB_ENV + echo "REPO_NAME=RetroDECK" >> $GITHUB_ENV else - echo "repo_name=Cooker" >> $GITHUB_ENV + echo "REPO_NAME=Cooker" >> $GITHUB_ENV fi # Publish Release - name: Publish release uses: ncipollo/release-action@v1 with: - tag: ${{ env.tag }} - name: "RetroDECK ${{ env.tag }}" - body: ${{ env.release_body }} + tag: ${{ env.TAG }} + name: "RetroDECK ${{ env.TAG }}" + body: ${{ env.RELEASE_BODY }} artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} - token: ${{ steps.generate-rekku-token.outputs.token }} - repo: "${{ env.repo_name }}" - continue-on-error: ${{ github.ref != 'refs/heads/main' }} # Rewrite Tag (for Main Branch Only) - name: Rewrite Tag @@ -257,12 +239,12 @@ jobs: run: | git submodule deinit -f --all git fetch --tags - if git rev-parse --verify "${{ steps.version-tag.outputs.tag }}" >/dev/null 2>&1; then - git tag -d "${{ steps.version-tag.outputs.tag }}" - git push --delete origin "${{ steps.version-tag.outputs.tag }}" + if git rev-parse --verify "${{ env.TAG }}" >/dev/null 2>&1; then + git tag -d "${{ env.TAG }}" + git push --delete origin "${{ env.TAG }}" fi - git tag "${{ steps.version-tag.outputs.tag }}" - git push origin "${{ steps.version-tag.outputs.tag }}" + git tag "${{ env.TAG }}" + git push origin "${{ env.TAG }}" env: GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }} @@ -273,9 +255,9 @@ jobs: # needs: Build_RetroDECK # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main # with: - # release_body: ${{ needs.Build_RetroDECK.outputs.release_body }} + # release_body: ${{ env.RELEASE_BODY }} # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" - # tag: ${{ needs.Build_RetroDECK.outputs.tag }} + # tag: ${{ env.TAG }} # secrets: # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} \ No newline at end of file From b4e4cdd607299d8ec1ad3cfa4a389f02f00b4dda Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:07:43 +0900 Subject: [PATCH 072/107] BUILD_RELEASE: - fixed commits until last release (not tag) - adding debug for manifest body --- .github/workflows/build_release.yml | 42 ++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 6724f46b..c99c59ad 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -108,61 +108,83 @@ jobs: - name: "[DEBUG] Outputting manifest" run: cat net.retrodeck.retrodeck.yml - # Get Commits Since Last Release - - name: Get commits since last release + # Get Commits Since Last Published Release (Cooker only) + - name: Get commits since last published release id: get-commits + if: github.ref != 'refs/heads/main' run: | - LATEST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1 --first-parent) || echo "") + # Get the latest published release tag + LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "") + if [ -z "$LATEST_TAG" ]; then + echo "[INFO] No previous release found. Using all commits." COMMITS=$(git log HEAD --pretty=format:"- %s") else + echo "[INFO] Latest published release tag: $LATEST_TAG" COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s") fi + + # Debug: Print the commits list + echo "Commits since $LATEST_TAG:" + echo "$COMMITS" + + # Export the commits list to the GitHub environment echo "COMMITS=$COMMITS" >> $GITHUB_ENV + # Generate Release Body - name: Generate release body text id: generate-body run: | # Initialize the release body text RELEASE_BODY="# Release Notes\n" - RELEASE_BODY+="This release is based on the commit: RetroDECK/RetroDECK@c8bd579ad4d0922ba7ab1f5c122cc782ff6adc66.\n" - RELEASE_BODY+="On branch [cooker](https://github.com/RetroDECK/RetroDECK/tree/cooker).\n\n" + RELEASE_BODY+="This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}." + RELEASE_BODY+="On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}})." RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="$COMMITS\n\n" + echo "[DEBUG] CHECKPOINT 1" + xml_file="./net.retrodeck.retrodeck.appdata.xml" if [[ ! -f "$xml_file" ]]; then echo "Error: XML file not found: $xml_file" exit 1 fi + echo "[DEBUG] CHECKPOINT 2" + # Extract the raw description content using xmlstarlet raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) - # Check if xmlstarlet extraction was successful - if [[ $? -ne 0 ]]; then - echo "Error: Failed to extract description content using xmlstarlet" - exit 1 - fi + echo "[DEBUG] CHECKPOINT 3" # Convert

        tags to markdown headers using sed markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') + echo "[DEBUG] CHECKPOINT 4" + # Convert
      • tags to bullet points and trim spaces markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') + echo "[DEBUG] CHECKPOINT 5" + # Remove any remaining XML tags markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') + echo "[DEBUG] CHECKPOINT 6" + # Debug: Print the markdown description echo "Markdown Description:" echo "$markdown_description" + echo "[DEBUG] CHECKPOINT 7" + # Append markdown content to the release body RELEASE_BODY+="$markdown_description" printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV + echo "[DEBUG] CHECKPOINT 8" + - name: "Build flatpak: download only" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" From 346baf4d19b7113d37c46d2eafa52507fdb9b3bd Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:14:09 +0900 Subject: [PATCH 073/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index c99c59ad..fd7e8ff1 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -154,7 +154,7 @@ jobs: echo "[DEBUG] CHECKPOINT 2" # Extract the raw description content using xmlstarlet - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>/dev/null) + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") echo "[DEBUG] CHECKPOINT 3" From 558ade07cb73a3e972314f479f3d8e3f99d016a0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:20:09 +0900 Subject: [PATCH 074/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index fd7e8ff1..6662db8b 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -154,7 +154,15 @@ jobs: echo "[DEBUG] CHECKPOINT 2" # Extract the raw description content using xmlstarlet - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") + # Extract the raw description content using xmlstarlet with error handling + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) + status=$? + + if [[ $status -ne 0 ]]; then + echo "[ERROR] Failed to extract description content using xmlstarlet. Error output:" + echo "$raw_description" + exit 1 + fi echo "[DEBUG] CHECKPOINT 3" From 5ae01a9f7bc3970874e9755258dd3984ed539df8 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:38:58 +0900 Subject: [PATCH 075/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 6662db8b..69a69a2f 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -153,9 +153,8 @@ jobs: echo "[DEBUG] CHECKPOINT 2" - # Extract the raw description content using xmlstarlet # Extract the raw description content using xmlstarlet with error handling - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) + raw_description=$(xmlstarlet sel -v -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") status=$? if [[ $status -ne 0 ]]; then From 728358f518762e7c6acbb333a49b70d0775ed4e8 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:44:10 +0900 Subject: [PATCH 076/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 69a69a2f..941c5d01 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -153,8 +153,11 @@ jobs: echo "[DEBUG] CHECKPOINT 2" + # Debug + xmlstarlet sel -t -v "/component/releases/release[1]/description/*" "$xml_file" -n + # Extract the raw description content using xmlstarlet with error handling - raw_description=$(xmlstarlet sel -v -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file") + raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) status=$? if [[ $status -ne 0 ]]; then From d765ba8dcca3e3603d577cb82d4282bf92185cfc Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:48:59 +0900 Subject: [PATCH 077/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 941c5d01..f7082105 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -154,7 +154,7 @@ jobs: echo "[DEBUG] CHECKPOINT 2" # Debug - xmlstarlet sel -t -v "/component/releases/release[1]/description/*" "$xml_file" -n + xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" # Extract the raw description content using xmlstarlet with error handling raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) From b1747c67ddf7e6abee60b4cf6cfb02d45275ebdd Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 14:55:30 +0900 Subject: [PATCH 078/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index f7082105..4049d14c 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -156,6 +156,8 @@ jobs: # Debug xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" + echo "[DEBUG] CHECKPOINT 2.1" + # Extract the raw description content using xmlstarlet with error handling raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) status=$? From 4ebd861d242a400fd629dcc51d1dd6eb8c0f2b3d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:16:42 +0900 Subject: [PATCH 079/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 42 +++++++++++++---------------- automation_tools/cooker_build_id.sh | 2 +- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 4049d14c..48732759 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -57,6 +57,17 @@ jobs: - name: Generate cooker build ID if: github.ref != 'refs/heads/main' run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + + # Getting branch name, this needs as PR should be managed in a different way + - name: Get Branch Name + run: | + if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then + branch_name="$GITHUB_HEAD_REF" + else + branch_name="$GITHUB_REF_NAME" + fi + echo "Branch name: $branch_name" + echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV # Generates a version tag based on the event type (main branch, PR, or cooker) and sets it as output. - name: Generate Version Tag @@ -131,6 +142,12 @@ jobs: # Export the commits list to the GitHub environment echo "COMMITS=$COMMITS" >> $GITHUB_ENV + - name: Extract XML Description + uses: Mudlet/xmlstarlet-action@v1 + id: extract-description + with: + xml-file: "./net.retrodeck.retrodeck.appdata.xml" + xpath: "/component/releases/release[1]/description/*" # Generate Release Body - name: Generate release body text @@ -143,30 +160,7 @@ jobs: RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="$COMMITS\n\n" - echo "[DEBUG] CHECKPOINT 1" - - xml_file="./net.retrodeck.retrodeck.appdata.xml" - if [[ ! -f "$xml_file" ]]; then - echo "Error: XML file not found: $xml_file" - exit 1 - fi - - echo "[DEBUG] CHECKPOINT 2" - - # Debug - xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" - - echo "[DEBUG] CHECKPOINT 2.1" - - # Extract the raw description content using xmlstarlet with error handling - raw_description=$(xmlstarlet sel -t -m "/component/releases/release[1]/description/*" -c "." -n "$xml_file" 2>&1) - status=$? - - if [[ $status -ne 0 ]]; then - echo "[ERROR] Failed to extract description content using xmlstarlet. Error output:" - echo "$raw_description" - exit 1 - fi + raw_description="${{ steps.extract-description.outputs.result }}" echo "[DEBUG] CHECKPOINT 3" diff --git a/automation_tools/cooker_build_id.sh b/automation_tools/cooker_build_id.sh index ff4c8119..b1175e56 100755 --- a/automation_tools/cooker_build_id.sh +++ b/automation_tools/cooker_build_id.sh @@ -6,5 +6,5 @@ word2=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt) capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}" result=$capitalized_word1$capitalized_word2 echo $result > ${GITHUB_WORKSPACE}/buildid -echo "buildid=$result" >> $GITHUB_ENV +echo "BUILD_ID=$result" >> $GITHUB_ENV echo "VersionID is $result" \ No newline at end of file From 4847623b9c13bba3bafcf3b79f720f87e4d8065c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:17:42 +0900 Subject: [PATCH 080/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 48732759..1127daf9 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -143,7 +143,7 @@ jobs: echo "COMMITS=$COMMITS" >> $GITHUB_ENV - name: Extract XML Description - uses: Mudlet/xmlstarlet-action@v1 + uses: Mudlet/xmlstarlet-action@master id: extract-description with: xml-file: "./net.retrodeck.retrodeck.appdata.xml" From bcb95dc30b1401fe16d8fa15b50b3219bb419185 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:25:03 +0900 Subject: [PATCH 081/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 1127daf9..d8d42319 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -144,10 +144,8 @@ jobs: - name: Extract XML Description uses: Mudlet/xmlstarlet-action@master - id: extract-description with: - xml-file: "./net.retrodeck.retrodeck.appdata.xml" - xpath: "/component/releases/release[1]/description/*" + args: sel -t -c "/component/releases/release[1]/description/*" ./net.retrodeck.retrodeck.appdata.xml # Generate Release Body - name: Generate release body text From a0ee3203cf541aef2b1e989b2311ab57d42f2e19 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:31:18 +0900 Subject: [PATCH 082/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index d8d42319..bc3db991 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -145,7 +145,7 @@ jobs: - name: Extract XML Description uses: Mudlet/xmlstarlet-action@master with: - args: sel -t -c "/component/releases/release[1]/description/*" ./net.retrodeck.retrodeck.appdata.xml + args: sel -t -v "/component/releases/release[1]/description/p" ./net.retrodeck.retrodeck.appdata.xml # Generate Release Body - name: Generate release body text From 2c3174a76b7a7dc12cb117a334a677d557e9c857 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:44:19 +0900 Subject: [PATCH 083/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index bc3db991..2db3f36d 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -144,8 +144,9 @@ jobs: - name: Extract XML Description uses: Mudlet/xmlstarlet-action@master + id: extract-description with: - args: sel -t -v "/component/releases/release[1]/description/p" ./net.retrodeck.retrodeck.appdata.xml + args: sel -t -v "/component/releases/release[1]/description//text()" ./net.retrodeck.retrodeck.appdata.xml # Generate Release Body - name: Generate release body text From 95adc04e42f40030c431406afe62c39de0361718 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 15:55:36 +0900 Subject: [PATCH 084/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 2db3f36d..8b0f3e0f 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -142,11 +142,11 @@ jobs: # Export the commits list to the GitHub environment echo "COMMITS=$COMMITS" >> $GITHUB_ENV - - name: Extract XML Description - uses: Mudlet/xmlstarlet-action@master - id: extract-description - with: - args: sel -t -v "/component/releases/release[1]/description//text()" ./net.retrodeck.retrodeck.appdata.xml + # - name: Extract XML Description + # uses: Mudlet/xmlstarlet-action@master + # id: extract-description + # with: + # args: sel -t -v "/component/releases/release[1]/description//text()" ./net.retrodeck.retrodeck.appdata.xml # Generate Release Body - name: Generate release body text @@ -159,31 +159,21 @@ jobs: RELEASE_BODY+="## Commits since last release\n" RELEASE_BODY+="$COMMITS\n\n" - raw_description="${{ steps.extract-description.outputs.result }}" - - echo "[DEBUG] CHECKPOINT 3" + #raw_description="${{ steps.extract-description.outputs.result }}" # Convert

        tags to markdown headers using sed markdown_description=$(echo "$raw_description" | sed -e 's|

        |\n### |g' -e 's|

        ||g') - echo "[DEBUG] CHECKPOINT 4" - # Convert
      • tags to bullet points and trim spaces markdown_description=$(echo "$markdown_description" | sed -e 's|
          ||g' -e 's|
        ||g' -e 's|
      • |- |g' -e 's|
      • ||g' | awk '{$1=$1;print}') - echo "[DEBUG] CHECKPOINT 5" - # Remove any remaining XML tags markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g') - echo "[DEBUG] CHECKPOINT 6" - # Debug: Print the markdown description echo "Markdown Description:" echo "$markdown_description" - echo "[DEBUG] CHECKPOINT 7" - # Append markdown content to the release body RELEASE_BODY+="$markdown_description" printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV From f554a09f6b374409c073ef20da46057bbcedb986 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 13 Nov 2024 17:07:47 +0900 Subject: [PATCH 085/107] BUILD_RELEASE: debugging what is causing the exit from generate-body --- .github/workflows/build_release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 8b0f3e0f..02b6dc55 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -34,6 +34,7 @@ jobs: outputs: TAG: ${{ steps.version-tag.outputs.TAG }} RELEASE_BODY: ${{ steps.version-tag.outputs.RELEASE_BODY }} + MAKE_LATEST: ${{ steps.version-tag.outputs.MAKE_LATEST }} steps: # Remove Stuck Mounts @@ -102,6 +103,9 @@ jobs: echo "TAG=$TAG" >> $GITHUB_ENV echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV + echo "TAG=$TAG" >> $GITHUB_OUTPUT + echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_OUTPUT + # backing up manifest in case download fails and hashes must be recalculated - name: Manifest backup run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" @@ -177,6 +181,7 @@ jobs: # Append markdown content to the release body RELEASE_BODY+="$markdown_description" printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV + printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_OUTPUT echo "[DEBUG] CHECKPOINT 8" From ffa7753618d7eb70e6b69df043c9efcaa55e765f Mon Sep 17 00:00:00 2001 From: icenine451 Date: Wed, 13 Nov 2024 10:08:09 -0500 Subject: [PATCH 086/107] Make change_preset_dialog() not dependent on shared vars from build_preset_list_options() --- functions/presets.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/functions/presets.sh b/functions/presets.sh index af077ac6..f0913274 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -3,8 +3,19 @@ change_preset_dialog() { # This function will build a list of all systems compatible with a given preset, their current enable/disabled state and allow the user to change one or more # USAGE: change_preset_dialog "$preset" + + preset="$1" + pretty_preset_name=${preset//_/ } # Preset name prettification + pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification + current_preset_settings=() + local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d') - build_preset_list_options "$1" + while IFS= read -r config_line + do + system_name=$(get_setting_name "$config_line" "retrodeck") + system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset") + current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name") + done < <(printf '%s\n' "$section_results") choice=$(rd_zenity \ --list --width=1200 --height=720 \ @@ -21,7 +32,7 @@ change_preset_dialog() { if [[ ! -z $choice || "$rc" == 0 ]]; then ( - make_preset_changes + make_preset_changes "$choice" "$1" ) | rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ @@ -80,6 +91,11 @@ make_preset_changes() { ] | join("\n") ' $features) + choice="$1" + preset="$2" + + build_preset_list_options "$preset" + IFS="," read -ra choices <<< "$choice" for emulator in "${all_systems[@]}"; do if [[ " ${choices[*]} " =~ " ${emulator} " && ! " ${current_enabled_systems[*]} " =~ " ${emulator} " ]]; then From 155e331a43889fb53f309b460fa7e1409e1c79f2 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Wed, 13 Nov 2024 10:10:07 -0500 Subject: [PATCH 087/107] Add comments to build_preset_list_options() --- functions/presets.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/presets.sh b/functions/presets.sh index f0913274..86e15c16 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -3,7 +3,7 @@ change_preset_dialog() { # This function will build a list of all systems compatible with a given preset, their current enable/disabled state and allow the user to change one or more # USAGE: change_preset_dialog "$preset" - + preset="$1" pretty_preset_name=${preset//_/ } # Preset name prettification pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification @@ -46,6 +46,8 @@ change_preset_dialog() { build_preset_list_options() { # This function will build a list of all the systems available for a given preset # The list will be generated into a Godot temp file and the variable $current_preset_settings + # The other arrays built (all_systems, changed_systems etc.) are also used in the make_preset_changes() function, so this needs to be called in the same memory space as that function at least once + # USAGE: build_preset_list_options "$preset" if [[ -f "$godot_current_preset_settings" ]]; then rm -f "$godot_current_preset_settings" # Godot data transfer temp files From 353c626a3727cad095c1f70e4ef2b5ba57138988 Mon Sep 17 00:00:00 2001 From: icenine451 Date: Wed, 13 Nov 2024 10:13:01 -0500 Subject: [PATCH 088/107] Add comments on new usage of make_preset_changes(), which now can be called externally --- functions/presets.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/presets.sh b/functions/presets.sh index 86e15c16..bb397d56 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -82,7 +82,9 @@ build_preset_list_options() { make_preset_changes() { - # This function will take an array $choices, which contains the names of systems that have been enabled for this preset and enable them in the backend + # This function will take a preset name $preset and a CSV list $choice, which contains the names of systems that have been enabled for this preset and enable them in the backend + # Any systems which are currently enabled and not in the CSV list $choice will instead be disabled in the backend + # USAGE: make_preset_changes $choice $preset # Fetch incompatible presets from JSON and create a lookup list incompatible_presets=$(jq -r ' From 4591537a5d1fb0be3a8a745edc4b0ddfdde2d688 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 14 Nov 2024 10:07:56 +0900 Subject: [PATCH 089/107] BUILD_RELEASE: - added artifacts download - enhanced forgejo publish (still disabled) --- .github/workflows/build_release.yml | 32 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 02b6dc55..3bacd30c 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -186,6 +186,7 @@ jobs: echo "[DEBUG] CHECKPOINT 8" - name: "Build flatpak: download only" + id: flatpak-download run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" # Sometimes flatpak download fails, in this case it tries a second time @@ -225,7 +226,6 @@ jobs: steps: - name: Generate a token for Rekku - if: ${{ github.repository == 'RetroDECK/RetroDECK' }} id: generate-rekku-token uses: actions/create-github-app-token@v1 with: @@ -234,6 +234,9 @@ jobs: repositories: "RetroDECK,Cooker" owner: "RetroDECK" + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4.1.8 + # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository id: set-repo @@ -273,13 +276,22 @@ jobs: # As backup we're even publishing the build on our own selfhosted Fogejo instance # Forgejo Publish Job if main branch # Forgejo-publish: - # if: github.ref == 'refs/heads/main' + # runs-on: ubuntu-latest # needs: Build_RetroDECK - # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main - # with: - # release_body: ${{ env.RELEASE_BODY }} - # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" - # tag: ${{ env.TAG }} - # secrets: - # FORGEJO_TRIGGER_BUILD_TOKEN: ${{ secrets.FORGEJO_TRIGGER_BUILD_TOKEN }} - \ No newline at end of file + # env: + # TAG: ${{ needs.Build_RetroDECK.outputs.TAG }} + # RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }} + # MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} + # steps: + + # - name: Download all workflow run artifacts + # id: download-artifacts + # uses: actions/download-artifact@v4.1.8 + + # - name: Forgejo-publish + # if: github.ref == 'refs/heads/main' + # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main + # with: + # release_body: ${{ env.RELEASE_BODY }} + # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" + # tag: ${{ env.TAG }} \ No newline at end of file From 0f028402fe37963c7638048f718798d10e17f42a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 14 Nov 2024 10:10:50 +0900 Subject: [PATCH 090/107] APPDATA: updated [skip ci] --- net.retrodeck.retrodeck.appdata.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index c1fe1e8d..bc9c3da0 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -72,23 +72,22 @@

        Changes:

          -
        • WELCOME TO cooker-0.9.0b!
        • -
        • RetroDECK is on a diet: we saved around 600mb
        • +
        • RetroDECK is on a diet: we saved around 600mb on the final build
        • Updated all the outdated emulators
        • Duckstation due to licensing changes is frozen at the latest possible build becoming de facto: Legacy
        • -
        • Duckstation configured to use OpenGL as Vulkan seems to be broken
        • +
        • Duckstation configured to use OpenGL as Vulkan seems to be broken in some cases
        • New Flash system via the new emulator: Ruffle
        • PortMaster is now included in RetroDECK!
        • Steam Sync is now a thing: favorite your games and enable the Steam Sync in the Configurator to find them as a Steam standalone games thank to Steam Rom Manager acting like an engine
        • -
        • New Configurator completely written in GODOT, now with controller support and many more features to you to discover
        • +
        • New Configurator completely written in GODOT, now with controller support and many more features for you to discover
        • New run game engine added to run games via cli, just run `flatpak run net.retrodeck.retrodeck start retrodeck/roms/system/game.ext`, `--help` for more info

        Developers, developers, developers:

          -
        • Manifest was completely redone, more on that on the MONTH blog post
        • -
        • RetroDECK now is migrated to an organization on GitHub, as before, please check the MONTH blog post
        • +
        • Manifest was completely redone, more on that on the October blog post
        • +
        • RetroDECK now is migrated to an organization on GitHub, as before, please check the October blog post
        • pre_build_automation script weas reworked and additional functions are added
        • -
        • Contributing is now easier and the manifest build time is down to about 50m (was 3h30)
        • +
        • Contributing is now easier and the manifest build time is down to about 1h (was 3h30)

        Known issues:

          From d6a930ffd4d6615dc706712c4d2a7ebd944335dd Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 14 Nov 2024 10:42:14 +0900 Subject: [PATCH 091/107] Triggering build --- .github/workflows/build_release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 3bacd30c..93010d19 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -294,4 +294,5 @@ jobs: # with: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" - # tag: ${{ env.TAG }} \ No newline at end of file + # tag: ${{ env.TAG }} + \ No newline at end of file From 13e7ebd8b25e5b06d0902522d1213b7fda82259e Mon Sep 17 00:00:00 2001 From: icenine451 Date: Thu, 14 Nov 2024 08:39:51 -0500 Subject: [PATCH 092/107] Reverse $preset and $choice argument order for make_preset_changes() to avoid having to send a null array if all systems are being disabled. --- functions/presets.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/presets.sh b/functions/presets.sh index bb397d56..3a6a83bd 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -32,7 +32,7 @@ change_preset_dialog() { if [[ ! -z $choice || "$rc" == 0 ]]; then ( - make_preset_changes "$choice" "$1" + make_preset_changes "$1" "$choice" ) | rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ @@ -84,7 +84,7 @@ build_preset_list_options() { make_preset_changes() { # This function will take a preset name $preset and a CSV list $choice, which contains the names of systems that have been enabled for this preset and enable them in the backend # Any systems which are currently enabled and not in the CSV list $choice will instead be disabled in the backend - # USAGE: make_preset_changes $choice $preset + # USAGE: make_preset_changes $preset $choice # Fetch incompatible presets from JSON and create a lookup list incompatible_presets=$(jq -r ' @@ -95,8 +95,8 @@ make_preset_changes() { ] | join("\n") ' $features) - choice="$1" - preset="$2" + preset="$1" + choice="$2" build_preset_list_options "$preset" From 4f8e8d5d91303f663b7dbeaded2b6f7aa3d52a1b Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 09:37:08 +0900 Subject: [PATCH 093/107] WOKRFLOW: fixing artifacts issues --- .github/workflows/build_release.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 93010d19..3bde2aa6 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -211,6 +211,8 @@ jobs: uses: actions/upload-artifact@v4 with: name: retrodeck-artifacts + include-hidden-files: true + retention-days: 1 path: | RetroDECK*.flatpak RetroDECK*.flatpak.sha @@ -237,6 +239,9 @@ jobs: - name: Download all workflow run artifacts uses: actions/download-artifact@v4.1.8 + - name: Extract artifact zip + run: unzip retrodeck-artifacts.zip + # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository id: set-repo @@ -284,9 +289,12 @@ jobs: # MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} # steps: - # - name: Download all workflow run artifacts - # id: download-artifacts - # uses: actions/download-artifact@v4.1.8 + # - name: Download all workflow run artifacts + # id: download-artifacts + # uses: actions/download-artifact@v4.1.8 + + # - name: Extract artifact zip + # run: unzip retrodeck-artifacts.zip # - name: Forgejo-publish # if: github.ref == 'refs/heads/main' From a9b4fe6bc994a99d4da32435e54fd542e82347f5 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 10:42:43 +0900 Subject: [PATCH 094/107] WORKFLOW: tentative fixing articaft name while unzipping --- .github/workflows/build_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 3bde2aa6..6df88744 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -240,7 +240,7 @@ jobs: uses: actions/download-artifact@v4.1.8 - name: Extract artifact zip - run: unzip retrodeck-artifacts.zip + run: unzip retrodeck-artifacts # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository @@ -294,7 +294,7 @@ jobs: # uses: actions/download-artifact@v4.1.8 # - name: Extract artifact zip - # run: unzip retrodeck-artifacts.zip + # run: unzip retrodeck-artifacts # - name: Forgejo-publish # if: github.ref == 'refs/heads/main' From 20c2cb3d530294f510d28b335e93323eeb29ed12 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 13:20:31 +0900 Subject: [PATCH 095/107] WORKFLOW: tentative fixing articaft name while unzipping - adding debug --- .github/workflows/build_release.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 6df88744..f2322e2e 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -239,8 +239,14 @@ jobs: - name: Download all workflow run artifacts uses: actions/download-artifact@v4.1.8 - - name: Extract artifact zip - run: unzip retrodeck-artifacts + - name: "[DEBUG] Listing artifacts" + run: apt install -y tree && tree . + + - name: Extract artifact archive + run: unzip retrodeck-artifacts/retrodeck-artifacts.zip + + - name: "[DEBUG] Listing artifacts" + run: apt install -y tree && tree . # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository From 62b9873b55376b800862ddc9c3e64d65d8d523d6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 14:32:28 +0900 Subject: [PATCH 096/107] Triggering build --- .github/workflows/build_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index f2322e2e..22cb080b 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -309,4 +309,5 @@ jobs: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" # tag: ${{ env.TAG }} + \ No newline at end of file From 66c57ec0c015008470e4205650109ab5ded81dc0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 16:13:01 +0900 Subject: [PATCH 097/107] Triggering build --- .github/workflows/build_release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 22cb080b..24cd2f92 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -309,5 +309,3 @@ jobs: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" # tag: ${{ env.TAG }} - - \ No newline at end of file From 22c64658746b0d9e28528ce0863b90325305f830 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 19:43:07 +0900 Subject: [PATCH 098/107] Triggering build --- .github/workflows/build_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 24cd2f92..61b6a694 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -240,13 +240,13 @@ jobs: uses: actions/download-artifact@v4.1.8 - name: "[DEBUG] Listing artifacts" - run: apt install -y tree && tree . + run: sudo apt install -y tree && tree . - name: Extract artifact archive run: unzip retrodeck-artifacts/retrodeck-artifacts.zip - name: "[DEBUG] Listing artifacts" - run: apt install -y tree && tree . + run: sudo apt install -y tree && tree . # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository From b8bcec88a4a88e3d01f47378030313f2492de257 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 19:52:13 +0900 Subject: [PATCH 099/107] Triggering build --- .github/workflows/build_release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 61b6a694..b31270fc 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -309,3 +309,5 @@ jobs: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" # tag: ${{ env.TAG }} + + \ No newline at end of file From dea2c8cea6ec3d49f607674892c7af21ea9d6fd7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 15 Nov 2024 21:29:41 +0900 Subject: [PATCH 100/107] WORKFLOW: fixing artifacts path --- .github/workflows/build_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index b31270fc..d9bace7b 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -265,7 +265,7 @@ jobs: tag: ${{ env.TAG }} name: "RetroDECK ${{ env.TAG }}" body: ${{ env.RELEASE_BODY }} - artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" + artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} @@ -307,7 +307,7 @@ jobs: # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main # with: # release_body: ${{ env.RELEASE_BODY }} - # artifacts: "*.flatpak,*.flatpak.sha,*Artifact.tar.gz" + # artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz" # tag: ${{ env.TAG }} \ No newline at end of file From 2f227ccf283e6c705a1b95394cc1827ec1e63a7e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 16 Nov 2024 09:06:49 +0900 Subject: [PATCH 101/107] WORKFLOW: fixing artifacts path --- .github/workflows/build_release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index d9bace7b..2e235534 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -309,5 +309,3 @@ jobs: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz" # tag: ${{ env.TAG }} - - \ No newline at end of file From 65dba3c950b03f0a6fbe0a6c814269a4dff68882 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 16 Nov 2024 10:09:54 +0900 Subject: [PATCH 102/107] WORKFLOW: fixing artifacts issue --- .github/workflows/build_release.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 2e235534..0b228e80 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -239,12 +239,6 @@ jobs: - name: Download all workflow run artifacts uses: actions/download-artifact@v4.1.8 - - name: "[DEBUG] Listing artifacts" - run: sudo apt install -y tree && tree . - - - name: Extract artifact archive - run: unzip retrodeck-artifacts/retrodeck-artifacts.zip - - name: "[DEBUG] Listing artifacts" run: sudo apt install -y tree && tree . From 285c17c356b2e83304743d4c79dc4785445d03a7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 16 Nov 2024 12:52:52 +0900 Subject: [PATCH 103/107] WORKFLOW: publishing the release in the correct repo --- .github/workflows/build_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 0b228e80..fed2fee9 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -262,6 +262,7 @@ jobs: artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz" allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} + repo: ${{ env.REPO_NAME }} # Rewrite Tag (for Main Branch Only) - name: Rewrite Tag From f5349a7fbcf5996a7c945b8dc817b31327e97b44 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 17 Nov 2024 20:20:55 +0900 Subject: [PATCH 104/107] WORKFLOW: - artifacts are now persistent like before - aded missing token parameter to the release publishment - removed debug steps --- .github/workflows/build_release.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index fed2fee9..2b71cd98 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -212,7 +212,6 @@ jobs: with: name: retrodeck-artifacts include-hidden-files: true - retention-days: 1 path: | RetroDECK*.flatpak RetroDECK*.flatpak.sha @@ -238,9 +237,6 @@ jobs: - name: Download all workflow run artifacts uses: actions/download-artifact@v4.1.8 - - - name: "[DEBUG] Listing artifacts" - run: sudo apt install -y tree && tree . # Determine if Target Repository is Main or not, in that case is a Cooker build - name: Determine target repository @@ -263,6 +259,7 @@ jobs: allowUpdates: true makeLatest: ${{ env.MAKE_LATEST }} repo: ${{ env.REPO_NAME }} + token: ${{ steps.generate-rekku-token.outputs.token }} # Rewrite Tag (for Main Branch Only) - name: Rewrite Tag @@ -289,14 +286,10 @@ jobs: # RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }} # MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }} # steps: - - # - name: Download all workflow run artifacts - # id: download-artifacts - # uses: actions/download-artifact@v4.1.8 - - # - name: Extract artifact zip - # run: unzip retrodeck-artifacts - + # + # - name: Download all workflow run artifacts + # uses: actions/download-artifact@v4.1.8 + # # - name: Forgejo-publish # if: github.ref == 'refs/heads/main' # uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main From aea364255fa5f78b834a94c59b121af8a907efff Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 17 Nov 2024 20:27:26 +0900 Subject: [PATCH 105/107] Triggering build --- .github/workflows/build_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 2b71cd98..329998ea 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -297,3 +297,4 @@ jobs: # release_body: ${{ env.RELEASE_BODY }} # artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz" # tag: ${{ env.TAG }} + From 046dc7f4bd94358f8fc45b98d90b96ffaa4c6ef0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 18 Nov 2024 15:32:08 +0900 Subject: [PATCH 106/107] DESKTOP FILE: enhancements with new descriptions [skip ci] --- net.retrodeck.retrodeck.desktop | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net.retrodeck.retrodeck.desktop b/net.retrodeck.retrodeck.desktop index 30abc6e3..ba5d4292 100644 --- a/net.retrodeck.retrodeck.desktop +++ b/net.retrodeck.retrodeck.desktop @@ -1,11 +1,11 @@ [Desktop Entry] Name=RetroDECK -GenericName=Emulation bundle for Steam Deck +GenericName=Universal Emulator Platform Type=Application -Comment=All you need for emulation on Steam Deck +Comment=All-in-one emulation solution for Steam Deck and Linux desktops, making emulation easy and accessible Icon=net.retrodeck.retrodeck Exec= Terminal=false StartupNotify=false -Keywords=multi;engine;emulator;standalone;steam;deck +Keywords=multi;engine;emulator;standalone;steam;deck;retro;games;roms;console;classic;gamepad;arcade Categories=Game;Emulator; \ No newline at end of file From 8cc13786cbd63482a8481e6739ba86e0416008e6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 18 Nov 2024 22:16:59 +0900 Subject: [PATCH 107/107] WORKFLOW: back on using all the available retrodeck runners [skip ci] --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 329998ea..ba51d9b0 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -30,7 +30,7 @@ jobs: # Build RetroDECK Job Build_RetroDECK: - runs-on: retrodeck-server + runs-on: retrodeck outputs: TAG: ${{ steps.version-tag.outputs.TAG }} RELEASE_BODY: ${{ steps.version-tag.outputs.RELEASE_BODY }}