Changes to be committed: modified: wiki-rtd/docs/wiki_development/general/build-locally.md
4.7 KiB
Development Build Locally Notes
This is a WIP document to help build RetroDECK locally.
It is based on notes taken while adding the Ruffle(Flash Emulator) to the RetroDECK 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.
This document was initially based on adding a new function to RetroDECK as part of the build process. The person that wrote this as a hobbyist coder/developer, decided that it was better to cover just building RetroDECK before moving onto to adding/changing RetroDECK.
Adding to and changing the RetroDECK flatpak manifest will be covered in another wiki article.
It would also be worth running RetroDECK in debug mode to get familiar with how the /apps folder and other read only and full access areas of the flatpak work on your device.
A list of the folders and file paths used by RetroDECK can be found here.
Note that you can run most applications in the app folder that have been built via flatpak.
Project Resources
In order to save project resources. Please try and use a self-hosted runner to test your build process.
Please do not forget that RetroDECK is a volunteer based open source project. If you would like to support the build environment that is provided as part of the project. Then please consider making a donation to the project or other projects involved.
Build Process
Download/Clone 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. That should only be needed if you wish to add a new emulator via ES-DE.
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.
git submodule update --init --recursive
Then use git checkout
to select the latest cooker branch.
Build locally via bash script
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 8 core pc/laptop.
Creates this folder when building locally RetroDECK/.flatpak-builder/
Produces
Build locally installed github runner
Install self-hosted github runner
Add a self-hosted runner to a repository.
Setup runner to run as a service(optional)
Create the self-hosted runner as a service.
Creates an artifact on Github and a local file in actions-runners
Explain local runner
https://github.com/monkeyx-net/RetroDECK/settings/actions/runners
Creates
actions-runner/_work/RetroDECK/RetroDECK/
File RetroDECK-cooker.flatpak
Also can download as an artifact from Github
RetroDECK flatpak manifest
net.retrodeck.retrodeck.yml
The manifest file is what builds the application after downloads all the relevant modules and dependencies. See the Flatpak manifest guide here
Show reference to pulling in Xargon version of yml as part of the build.
SHA reference issues if doing this.
Need SHA pointers not values
Need to update net.retrodeck.retrodeck.yml to point at your own repo.
line 95 ish sources: - type: git url: https://github.com/monkeyx-net/RetroDECK.git
bottom
sources:
- type: git
url: https://github.com/monkeyx-net/RetroDECK.git
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.
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