commit
c324b42e6a
2 changed files with 71 additions and 15 deletions
83
BUILDING.md
83
BUILDING.md
|
@ -23,43 +23,56 @@ We have a simple filesystem structure adopted from parent distributions CoreELEC
|
|||
└── tools
|
||||
```
|
||||
|
||||
### build.JELOS-DEVICE.ARCHITECTURE
|
||||
**build.JELOS-DEVICE.ARCHITECTURE**
|
||||
|
||||
Build roots for each device and that devices architecture(s). For ARM devices JELOS builds and uses a 32bit root for several of the cores used in the 64bit distribution.
|
||||
|
||||
### config
|
||||
**config**
|
||||
|
||||
Contains functions utilized during the build process including architecture specific build flags, optimizations, and functions used throughout the build workflow.
|
||||
|
||||
### distributions
|
||||
**distributions**
|
||||
|
||||
Distributions contains distribution specific build flags and parameters and splash screens.
|
||||
|
||||
### Dockerfile
|
||||
**Dockerfile**
|
||||
|
||||
Used to build the Ubuntu container used to build JELOS. The container is hosted at [https://hub.docker.com/u/justenoughlinuxos](https://hub.docker.com/u/justenoughlinuxos)
|
||||
|
||||
### licenses
|
||||
**licenses**
|
||||
|
||||
All of the licenses used throughout the distribution packages are hosted here. If you're adding a package that contains a license, make sure it is available in this directory before submitting the PR.
|
||||
|
||||
### Makefile
|
||||
**Makefile**
|
||||
|
||||
Used to build one or more JELOS images, or to build and deploy the Ubuntu container.
|
||||
|
||||
### packages
|
||||
**packages**
|
||||
|
||||
All of the package set that is used to develop and build JELOS are hosted within the packages directory. The package structure documentation is available in [PACKAGE.md](PACKAGE.md)
|
||||
|
||||
### post-update
|
||||
**post-update**
|
||||
|
||||
Anything that is necessary to be run on a device after an upgrade should be added here. Be sure to apply a guard to test that the change needs to be executed before execution.
|
||||
|
||||
### projects
|
||||
**projects**
|
||||
|
||||
Hardware specific parameters are stored in the projects folder, anything that should not be included on every device during a world build should be isolated to the specific project or device here.
|
||||
|
||||
### release
|
||||
**release**
|
||||
|
||||
The output directory for all of the build images.
|
||||
|
||||
### scripts
|
||||
**scripts**
|
||||
|
||||
This directory contains all of the scripts used to fetch, extract, build, and release the distribution. Review Makefile for more details.
|
||||
|
||||
### sources
|
||||
**sources**
|
||||
|
||||
As the distribution is being built, package source are fetched and hosted in this directory. They will persist after a `make clean`.
|
||||
|
||||
### tools
|
||||
**tools**
|
||||
|
||||
The tools directory contains utility scripts that can be used during the development process, including a simple tool to burn an image to a usb drive or sdcard.
|
||||
|
||||
## Building JELOS
|
||||
|
@ -102,11 +115,51 @@ make RG351P
|
|||
make RG351V
|
||||
```
|
||||
|
||||
### Screenscraper, GamesDB, and RetroAchievements
|
||||
To enable Screenscraper, GamesDB, and RetroAchievements, register at each site and apply the api keys in ~/developer_settings.conf. This configuration is picked up by EmulationStation during the build.
|
||||
### Building a single package
|
||||
It is also possible to build individual packages.
|
||||
```
|
||||
DEVICE=RG351V ARCH=aarch64 ./scripts/clean busybox
|
||||
DEVICE=RG351V ARCH=aarch64 ./scripts/build busybox
|
||||
```
|
||||
|
||||
> Note: Emulation Station package build requires additional steps because its source code located in a separate repository, see instructions inside, [link](https://github.com/JustEnoughLinuxOS/distribution/blob/main/packages/ui/emulationstation/package.mk).
|
||||
|
||||
### Special env variables
|
||||
For development build, you can use the following env variables to customize the image. Some of them can be included in your `.bashrc` startup shell script.
|
||||
|
||||
**SSH keys**
|
||||
```
|
||||
export JELOS_SSH_KEYS_FILE=~/.ssh/jelos/authorized_keys
|
||||
```
|
||||
**WiFi SSID and password**
|
||||
```
|
||||
export JELOS_WIFI_SSID=MYWIFI
|
||||
export JELOS_WIFI_KEY=secret
|
||||
```
|
||||
|
||||
**Screenscraper, GamesDB, and RetroAchievements**
|
||||
|
||||
To enable Screenscraper, GamesDB, and RetroAchievements, register at each site and apply the api keys in ~/developer_settings.conf. This configuration is picked up by EmulationStation during the build.
|
||||
|
||||
```
|
||||
export SCREENSCRAPER_DEV_LOGIN="devid=DEVID&devpassword=DEVPASSWORD
|
||||
export GAMESDB_APIKEY="APIKEY"
|
||||
export CHEEVOS_DEV_LOGIN="z=DEVID&y=DEVPASSWORD"
|
||||
```
|
||||
|
||||
### Creating a patch for a package
|
||||
It is common to have imported package source code modifed to fit the use case. It's recommended to use a special shell script to built it in case you need to iterate over it. See below.
|
||||
|
||||
```
|
||||
cd sources/wireguard-linux-compat
|
||||
tar -xvJf wireguard-linux-compat-v1.0.20211208.tar.xz
|
||||
mv wireguard-linux-compat-v1.0.20211208 wireguard-linux-compat
|
||||
cp -rf wireguard-linux-compat wireguard-linux-compat.orig
|
||||
|
||||
# Make your changes to wireguard-linux-compat
|
||||
mkdir ../../packages/network/wireguard-linux-compat/patches/RG503
|
||||
# run from the sources dir
|
||||
diff -rupN wireguard-linux-compat wireguard-linux-compat.orig ../../packages/network/wireguard-linux-compat/patches/RG503/mychanges.patch
|
||||
```
|
||||
|
||||
After patch is generated, one can rebuild an individual package, see section above. The build system will automatically pick up patch files from `patches` directory. For testing, one can either copy the built binary to the console or burn the whole image on SD card.
|
||||
|
|
|
@ -78,6 +78,9 @@ limitations under the License.
|
|||
* [Using Cloud Drives](https://github.com/JustEnoughLinuxOS/distribution/wiki/Using-Cloud-Drives)
|
||||
* [Wireguard VPN](https://github.com/JustEnoughLinuxOS/distribution/wiki/WireGuard-VPN)
|
||||
|
||||
## Contributing
|
||||
* [Developing and Building JELOS](https://github.com/JustEnoughLinuxOS/distribution/blob/dev/BUILDING.md)
|
||||
|
||||
## Credits
|
||||
Like any Linux distribution, this project is not the work of one person. It is the work of many persons all over the world who have developed the open source bits without which this project could not exist. Special thanks to CoreELEC, LibreELEC, Anbernic, and to developers and contributors across the ARM handheld community.
|
||||
|
||||
|
|
Loading…
Reference in a new issue