Build Clea OS
Download and build Clea OS
This section describes steps to create a local build directory and how to use repo
to download all needed
files.
After that the build directory gets setup for one specific machine and distribution and a standard image is built.
The recommended working approach is to use the docker build, so all the following commands are intended to be run from within the docker.
Download source code
Create a folder for the project
$$ mkdir -p projects/clea-os
$$ cd projects/clea-os
Initialize the manifest environment
$$ repo init -u https://git.seco.com/clea-os/seco-manifest.git -b kirkstone
$$ repo sync -j$(nproc) --fetch-submodules --no-clone-bundle
The repo init
command above initialize a manifest based on the head on the kirkstone branch. In order to use a manifest based on a particular tag, the following command need to be used instead:
$$ repo init -u https://git.seco.com/clea-os/seco-manifest.git -b refs/tags/<tag>
The repo tool stores its meta data in a hidden subdirectory called .repo
.
The manifest repository content is stored at .repo/manifests/
and is used
for the sync command which actually downloads the sources.
The selected branch is kirkstone.
After the download the resulting directory structure should look like this:
.
├── layers
│ ├── base
│ ├── meta-browser
│ ├── meta-clang
│ ├── meta-freescale
│ ├── meta-freescale-distro
│ ├── meta-intel
│ ├── meta-openembedded
│ ├── meta-python2
│ ├── meta-qt5
│ ├── meta-seco-clea-os-embedded
│ ├── meta-seco-clea-os-things
│ ├── meta-seco-imx
│ ├── meta-seco-intel
│ ├── meta-seco-rk
│ ├── meta-timesys
│ ├── meta-virtualization
│ ├── meta-rauc
│ └── poky
├── .repo
│ ├── copy-link-files.json
│ ├── manifests
│ ├── manifests.git
│ ├── manifest.xml
│ ├── project.list
│ ├── project-objects
│ ├── projects
│ ├── repo
│ ├── TRACE_FILE
│ └── .repo_fetchtimes.json
└──seco-setup.sh -> layers/base/seco-setup.sh
Build
In order to setup the build environment and run the build process, the following instructions shall be followed.
- List the images that can be built:
$$ . ./seco-setup.sh -l
- Define the configuration that you need to build (e.g. 'seco_sbc_a62_clea_os' which refers to Clea OS Things image for A62 board):
$$ . ./seco-setup.sh -d seco_sbc_a62_clea_os
- Create the build environment for the selected configuration (architecture and distro features):
$$ . ./seco-setup.sh -c
- Finally, to build the SECO Clea OS image:
$$ bitbake <image>
Where image
can be one of the values reported in the table below.
Clea OS Distro | image | Supported | Description |
---|---|---|---|
Things | seco-image-clea-os | YES | Base image for Clea OS Things |
Embedded | seco-image-clea-os | NO | |
Embedded | seco-image-clea-os-base | YES | Minimal image for Clea OS Embedded |
Embedded | seco-image-clea-os-full | YES | Full image for Clea OS Embedded |
- For Clea OS Things only images the user can build the RAUC bundle to perform OTA updates with the command:
$$ bitbake seco-bundle-clea-os
GitLab access
It should not be necessary to have a SECO GitLab account to build the standard images. The public access should be sufficient to do that.
However, for customer specific layers and configurations, that are not publicly accessible, a SECO GitLab account or Access Token is necessary. Contact a SECO Software expert or the Technical Support to get access.
You need to generate a SSH key-pair and register it with your SECO GitLab account, see the gitlab docs.
$ ssh-keygen -t ed25519 -C "my.name@example.com" # use your email instead
$ cat ~/.ssh/id_ed25529.pub