From f0b4c2e9fddaf6e8dd9914417b84f8ca3fdd7b82 Mon Sep 17 00:00:00 2001 From: monkeyx-net Date: Sun, 26 May 2024 16:30:57 +0100 Subject: [PATCH] On branch monkeyxWiki Changes to be committed: new file: wiki-rtd/docs/wiki_development/general/build-locally.md new file: wiki-rtd/docs/wiki_images/graphics/development/retrodeck-overview.png modified: wiki-rtd/mkdocs.yml --- .../wiki_development/general/build-locally.md | 63 ++++++++++++++++++ .../development/retrodeck-overview.png | Bin 0 -> 29121 bytes wiki-rtd/mkdocs.yml | 1 + 3 files changed, 64 insertions(+) create mode 100644 wiki-rtd/docs/wiki_development/general/build-locally.md create mode 100644 wiki-rtd/docs/wiki_images/graphics/development/retrodeck-overview.png diff --git a/wiki-rtd/docs/wiki_development/general/build-locally.md b/wiki-rtd/docs/wiki_development/general/build-locally.md new file mode 100644 index 0000000..69e2ed2 --- /dev/null +++ b/wiki-rtd/docs/wiki_development/general/build-locally.md @@ -0,0 +1,63 @@ +# Development Build Locally Notes + +This is WIP to help build RetroDECK locally. It wsa notes taken while adding the Flash Emulator Ruffle to the project. + +## Overview + +RetroDECK is a big project in terms of scope and build size! It creates a 1.4GB flatpak file and the build folder is about 23GB. +It takes about 3 hours to build on an 8 core PC. + +It would also be worth running RetroDECK in [debug mode](https://retrodeck.readthedocs.io/en/latest/wiki_development/general/debug-mode/) to get familiar with how /apps folder and other read only areas of the flatpak. + + + +### Download RetroDeck + +Clone the repository. The --recursive option is used to ensure the RetroDECK sub modules are download(ie Emulators from other projects). The only element that is not downloaded for changing/editing is the [RetroDECK fork of ES-DE](https://github.com/XargonWan/RetroDECK-ES-DE). That should only be needed if you wish to add a new emulator via ES-DE. + +```bash +git clone --recursive https://github.com/XargonWan/RetroDECK +``` +If you missed doing a recursive download then can also use the command below. The command is also initiated as part of the build process. + +```bash +git submodule update --init --recursive +``` + +Then use git checkout to select the latest cooker branch. + +### Build locally via bash script + +```bash +cd RetroDECK +developer_toolbox/build_retrodeck_locally.sh +``` + +Have a look at what the script does first and look at the corresponding automation_tools/ folder that the script above references for the build + +The build will take about 3 hours on a relatively pc/laptop. + +The build process creates a flatpak_builder file. + + +### Build locally installed github runner. + + +Creates an artifact on Guthub and a local file in actions-runners + +## FAQ + +Crash during local sh build? + +- Stay Calm! +- Restart the PC/laptop. +- re run command below it should hopefully continue from the last good build action. +```bash +developer_toolbox/build_retrodeck_locally.sh +``` + +Crash during local github runner build? + +- Stay Calm! +- Restart the PC/laptop. +- make sure runner started and then re run the failed Github action \ No newline at end of file diff --git a/wiki-rtd/docs/wiki_images/graphics/development/retrodeck-overview.png b/wiki-rtd/docs/wiki_images/graphics/development/retrodeck-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..048af5b8a92377ad47ded8df1c717d3e9023d186 GIT binary patch literal 29121 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