Git Structure
Introduction
The Clea OS group on SECO self-managed GitLab instance is the group within which both the development and release of the Clea OS project takes place. This group is to be intended as a sandbox, where all the necessary and sufficient SECO repositories for building images both for off-the-shelf and custom boards (in private repositories) can be found.
In the following page, the Clea OS GitLab group tree structure is detailed.
Main Tree Structure
On the image below a view of the Clea OS group within GitLab is presented. Below is a brief explanation of the main elements (subgroups and repositories) composing the group and their main features.
bsp
Group containing all the repositories required for the development/release of the Board Support Package (BSP) for Clea OS. Inside this group, the repositories for U-Boot, Linux Kernel and other BSP firmwares are present and grouped for each of the supported silicon vendors.
firmware
Group containing Firmware source code and related tools for programmable embedded components, e.g. STM32.
infrastructure
Group containing everything related to all the scripts/configuration files used in the CI/CD process of Clea OS and the Dockerfiles to build Docker images for Clea OS compile process. The group also contains the configuration to provision Astarte and Edgehog portals for internal tests purposes. Most of the repositories within this group are for internal usage only and thus not visible to external users.
layers
Group containing the Yocto layers composing Clea OS. It contains both external layers, i.e. repositories imported from the main Yocto project, and internal ones, developed and maintained by SECO directly. It also contains layers allowing Clea OS support for Yocto from silicon vendors, e.g. NXP.
tools
Group containing tools allowing Clea OS and collateral software configuration.
seco-base
Repository containing the main scripts for configuring Clea OS build environment. The repository is to be considered to all intents and purposes as a 'basic' Yocto layer within which, among others, the user will find the configuration files required to run builds on all SECO off-the-shelf boards supported by Clea OS.
The stable branches of this repository, i.e. those to which all Merge Requests (MRs from now on) from developers flow, reflect the names of the Yocto version, e.g. kirkstone
.
seco-manifest
Repository containing the manifest files, which in turn contain references (URLs and commit SHAs) to the repositories composing Clea OS, i.e. Yocto layers. The seco-manifest is necessary to build all Clea OS images for off-the-shelf boards.
The stable branches of this repository, i.e. those to which all MRs from developers flow, reflect the names of the Yocto version, e.g. kirkstone
.
Detailed Structure Description
This section aims at describing in much more detail the content of each of the parts composing the Clea OS group.
BSP
The bsp group is intended to contain all the repositories of U-Boot, Kernel and other silicon vendor specific Firmwares composing the Board Support Package (BSP). The group is subdivided into subgroups, one for each of the silicon vendors currently supported in Clea OS for SECO boards with ARM-based CPU architecture.
Each repository is forked from the source code management system of the specific silicon vendor and contains within it several branches. The branches identified as stable by SECO, i.e. those to which all MRs flow and that are referenced in the Clea OS recipes, are identified as follows:
seco_<silicon_vendor_main_branch_name>
For example, for the Linux kernel source code provided by NXP and present in this repository, one of the stable branches is seco_lf-5.10.y
as 'lf-5.10.y' is the stable branch for the Linux kernel source code provided by NXP.
Several stable branches are defined for each repository, e.g. for later kernel versions: seco_lf-6.6.23-2.0.0
is an example.
Firmware
The firmware group is intended to contain code supporting programmable components, e.g. STM32, of some of the SECO boards supported within Clea OS. Currently, only one repository is present within this group, containing tools for running tests on the STM32 microcontroller contained within SBC-3.5-PX30 board (formerly codenamed D23).
Infrastructure
The infrastructure group contains 3 repositories and 1 group. However, the only public repository is described here below; the others, as explained in the Main Tree Structure section, are collateral to other internal automation, testing and software validation activities. Here below a brief description of the only public repository is provided.
gitlab-ci
The gitlab-ci repository contains all scripts (mainly written in bash
or python
programming languages) needed to run all automation tasks on Clea OS development. In particular, the repository contains scripts to run Clea OS compile and deploy artifacts, it contains scripts used to embed commit SHAs on manifest files when a MR is accepted, etc. More details on how the CI/CD process works on Clea OS project can be found in the repository's internal documentation as well as on the CI/CD structure page. This repository is imported as a submodule into all projects composing Clea OS.
Tools
The tools group contains 3 repositories.
cargo-bitbake
The cargo-bitbake repository is, apart from some modifications, a fork of the original project. Since the support to the original project is not that active, the fork allows to integrate features necessary to the Clea OS project, including support for recent versions of Rust.
menuconfig
The menuconfig repository, apart from some minor modifications, imports the kconfig folder of this repository which is necessary for U-Boot build process.
seco-eeprom-manager
The seco-eeprom-manager repository contains a tool for managing the information contained within the eeproms of SECO boards supported within Clea OS.
Layers
The layers group basically contains all Yocto layers composing Clea OS. The group is divided into three subgroups:
- The external group that is intended to contain all repositories imported, i.e. forked, from the main Yocto project.
- The seco group which contains all layers entirely developed and maintained by SECO developers. The stable branches of the repositories in this group, i.e. those to which all MRs from developers flow, reflect the names of the Yocto version, e.g.
kirkstone
. - The seco-3rd-part group which contains layers allowing Clea OS support for Yocto distros from silicon vendors.
Below, a brief description of each layer is provided in order to give the reader an indication of their content.
poky
The poky repository is a fork of the original repository from the Yocto Project®. Poky is a reference distribution that contains the OpenEmbedded Build System (BitBake and OpenEmbedded Core) as well as a set of metadata to get the user started building a custom Yocto distro. Some minor modifications have been performed by SECO developers to make this repository compatible with Clea OS project requirements.
meta-seco-bsp
The meta-seco-bsp repository is intended to hold recipes integrating support for BSPs from the various silicon vendors within Clea OS.
meta-seco-core
The meta-seco-core repository will soon be discontinued in favour of meta-seco-clea-os layer (see below).
meta-seco-clea-os
The meta-seco-clea-os repository constitutes the layer that will contain the Yocto recipes to provide support for the various elements that make up the Clea OS filesystem. Within it will be recipes for providing support for e.g. Chromium, Docker, Qt etc.
meta-seco-clea-os-embedded
The meta-seco-clea-os-embedded repository is intended to hold recipes that make up the SECO Clea OS Embedded distro. This is the Clea OS version not supporting all IoT functionalities described above for Clea OS Things but providing a Yocto stable distro for SECO's embedded devices.
meta-seco-clea-os-things
The meta-seco-clea-os-things repository is intended to hold Yocto recipes that make up the SECO Clea OS Things distro. This distro is designed to offer the highest standards in terms of security and stability thanks to features like double partitions and fallback procedures. Clea OS Things integrates a device manager to communicate with the Cloud and allows a family of products to be managed as a fleet.
meta-seco-imx
The meta-seco-imx repository is intended to hold all recipes needed to build Clea OS for NXP CPU-based SECO boards.
meta-seco-intel
The meta-seco-intel repository is intended to hold all recipes needed to build Clea OS for Intel CPU-based SECO boards.
meta-seco-mtk
The meta-seco-mtk repository is intended to hold all recipes needed to build Clea OS for MediaTek CPU-based SECO boards.
meta-seco-rk
The meta-seco-rk repository is intended to hold all recipes needed to build Clea OS for Rockchip CPU-based SECO boards.
meta-seco-rpi
The meta-seco-rpi repository is intended to hold all recipes needed to build the Clea OS for Raspberry Pi boards.
meta-seco-nxp-evk
The meta-seco-nxp-evk repository constitutes a basic layer for Clea OS integration in NXP Yocto and offers support to NXP Evaluation Kits (EVKs).