mirror of
https://github.com/RetroDECK/Wiki.git
synced 2024-11-23 14:15:40 +00:00
fc5eb15132
Changes to be committed: modified: wiki-rtd/docs/wiki_development/general/build-locally.md
131 lines
4.7 KiB
Markdown
131 lines
4.7 KiB
Markdown
# Development Build Locally Notes
|
|
This is WIP 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.
|
|
|
|
The 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](https://retrodeck.readthedocs.io/en/latest/wiki_development/general/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.](https://retrodeck.readthedocs.io/en/latest/wiki_development/general/folders-filepaths/)
|
|
|
|
Note that you can run most applications in the app folder that have been built via flatpak.
|
|
|
|
<img src="../../../wiki_images/graphics/development/retrodeck-overview.png" width="500">
|
|
|
|
|
|
### Project Resources
|
|
In order to save project resources. Please try and use a self-hosted runner to test your build process. Once you are confident that
|
|
|
|
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.](https://retrodeck.readthedocs.io/en/latest/wiki_about/donations-licenses/)
|
|
|
|
|
|
## 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](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.
|
|
|
|
### RetroDECK flatpak manifest
|
|
```bash
|
|
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](https://docs.flatpak.org/en/latest/manifests.html)
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
### 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 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](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository) to a repository.
|
|
|
|
#### Setup runner to run as a service(optional)
|
|
[Create the self-hosted runner](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service) 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
|
|
|
|
## 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 |