SDK Components
sudo apt install libfmt-dev
on Ubuntu 22.04, the version on your system may differ from what you get
with sudo dnf install libfmt-dev
on Fedora. Therefore, when developing software, those who download
and compile your code need to obtain the appropriate versions.sdk/devbox.json
file.
Distrobox: Leverages container technologies like Docker to run desired versions of
different GNU/Linux distributions on your existing GNU/Linux system. (For example, you can use Ubuntu 22.04 via
Terminal while running Fedora 42)
Taskfile: When running script commands, small applications called scripts with
.sh extensions are often used. Over time, the increase in these scripts leads to complexity and usage
difficulties. To reduce such challenges, the Task (called Go-Task/Task or Taskfile) tool is used, allowing
you to write executable scripts in .yml files in small, classified pieces and use additional features
like autocompletion when pressing <tab>
in Terminal. The basic Taskfile of the SDK is located in sdk/Taskfile.yml
.
Folder | Description |
---|---|
/build | Contains all outputs produced by Yocto, Debos, and other building tools |
/distro | Contains configurations and customization files that determine how different images like Desktop and Minimal of Gemstone will be compiled |
/yocto | Yocto studies belonging to the Gemstone project |
/src | Contains source codes of Firmware for development boards with chips like Texas Instruments or external projects |
File | Description |
---|---|
repos.yml | Contains git repository addresses of all external projects needed by the Gemstone SDK. Source codes are downloaded to this folder with a fetch operation using an application called vcstool |
distrobox.ini | Configuration file that creates an Ubuntu 22.04 docker container with the Distrobox tool |
Taskfile.yml | The taskfile in each folder allows running script commands in the format task folder:command |
devbox.json | Configuration file for Devbox |
/distro/distro.yaml | Configuration file for Debos that customizes and creates Gemstone Desktop, Minimal, and Kiosk images |
setup.sh
command after cloning the
project, as explained in the SDK Introduction Section. When you
run the devbox shell
command in Terminal within the folder, it activates and downloads the Distrobox, Taskfile,
VSCTool, Qemu packages defined in the devbox.json
file to the sdk/.devbox
folder and activates the shell to
use the software inside.
Its main purpose is to allow the installation and use of helper applications and packages with the same version
across different GNU/Linux distributions.
sdk/devbox.json
file.task fetch yocto:build distro:build
in Terminal while using the Gemstone SDK, the
functions defined in sdk/Taskfile.yml sdk/yocto/Taskfile.yml sdk/distro/Taskfile.yml
files are executed.
sdk/distro/Taskfile.yml
file.repos.yml
file to allow them to be downloaded
in an organized manner. When the vcs import . < repos.yml
command is run, it automatically downloads or updates
the projects defined in the relevant file.
Dockerfile
in the SDK folder. Normally, you can use this file to create an image via
Docker and use the system inside, but due to Docker’s architecture, when changes are made inside the image or
files are uploaded and deleted, it deletes them after restarting, making persistent file system usage cumbersome.
Distrobox is preferred because it allows changes made and files uploaded inside images created via Docker to be
permanently stored.
sdk/distrobox.ini
and sdk/Dockerfile
files..yaml
files instead of complex operations
from the command line to create images.
sdk/distro.yaml
file.