Wiki/wiki-rtd/docs/wiki_development/general/build-locally.md
monkeyx-net 51f8d09ac3 On branch monkeyxWiki
Changes to be committed:
	modified:   wiki-rtd/docs/wiki_development/general/build-locally.md
2024-05-26 17:56:09 +01:00

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 an eight 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