A single OpenEmbedded build¶
Submit an OE build request using the tuxsuite command line interface. This will wait for the OE build to complete before returning by default.
git clone https://gitlab.com/Linaro/tuxsuite
cd tuxsuite
tuxsuite bake submit examples/bitbake/demo.yaml
The output will look like:
Building targets: ['intltool-native'] with bitbake from {'repo': {'branch': 'kirkstone', 'manifest': 'default.xml', 'url': 'https://gitlab.eclipse.org/eclipse/oniro-core/oniro'}} source with distro: oniro-linux machine: qemux86-64 arguments
uid: 31Uv3gRZswqDzXO59anV7n8ojWp
⚙️ Provisioning: {'repo': {'branch': 'kirkstone', 'manifest': 'default.xml', 'url': 'https://gitlab.eclipse.org/eclipse/oniro-core/oniro'}} with oniro-linux qemux86-64 for ['intltool-native']: https://tuxapi.tuxsuite.com/v1/groups/demo/projects/demo/oebuilds/31Uv3gRZswqDzXO59anV7n8ojWp
🚀 Running: {'repo': {'branch': 'kirkstone', 'manifest': 'default.xml', 'url': 'https://gitlab.eclipse.org/eclipse/oniro-core/oniro'}} with oniro-linux qemux86-64 for ['intltool-native']: https://tuxapi.tuxsuite.com/v1/groups/demo/projects/demo/oebuilds/31Uv3gRZswqDzXO59anV7n8ojWp
🎉 Pass: {'repo': {'branch': 'kirkstone', 'manifest': 'default.xml', 'url': 'https://gitlab.eclipse.org/eclipse/oniro-core/oniro'}} with oniro-linux qemux86-64 for ['intltool-native']: https://tuxapi.tuxsuite.com/v1/groups/demo/projects/demo/oebuilds/31Uv3gRZswqDzXO59anV7n8ojWp
The results (build-definition.yaml, licenses, bitbake-environment, pinned-manifest.xml, logs, ...) will be available at artifacts under a unique and non-guessable URL.
OE Versions¶
Currently TuxOE supports: sumo
, dunfell
, honister
and master
TuxOE allows to build with various ubuntu LTS versions: 16.04
, 18.04
and 20.04
Build-definitions¶
TuxOE uses build-definition to describes the build:
- the layers that should be downloaded
local.conf
andbblayers.conf
to use- machine type
- distro targets
- ...
TuxOE can downloads the layers using either git protocols or the repo tool.
Using repo
container: ubuntu-20.04
distro: rpb
envsetup: setup-environment
machine: dragonboard-845c
extraconfigs: []
sources:
repo:
branch: qcom/dunfell
manifest: default.xml
url: https://github.com/96boards/oe-rpb-manifest.git
target: rpb-console-image rpb-console-image-test rpb-desktop-image
rpb-desktop-image-test
Using git repositories
sources:
git_trees:
- url: http://git.yoctoproject.org/git/poky
branch: honister
- url: https://github.com/ndechesne/meta-qcom
branch: honister
container: ubuntu-20.04
extraconfigs: []
envsetup: poky/oe-init-build-env
distro: poky
machine: dragonboard-845c
target: core-image-minimal
bblayers_conf:
- BBLAYERS += "../meta-qcom/"
environment: {}
Using Android
artifacts: []
bblayers_conf: []
container: ubuntu-20.04
distro: null
environment: {}
envsetup: null
local_conf: []
machine: null
name: ""
sources:
android:
branch: common-android11-5.4
build_config: common/build.config.db845c
manifest: default.xml
url: https://android.googlesource.com/kernel/manifest
targets: null
Using kas
sources:
kas:
url: https://git.codelinaro.org/linaro/dependable-boot/meta-ts
yaml: ci/zynqmp-starter.yml
kas build with a dependent kas override file
sources:
kas:
branch: kirkstone-dev
url: https://gitlab.com/soafee/ewaol/meta-ewaol-machine.git
yaml: kas/ewaol/baremetal.yml:kas/machine/avadp.yml:kas/ewaol/ci-constraints.yml
kas_override.yml
header:
version: 11
repos:
meta-ewaol:
url: https://gitlab.com/soafee/ewaol/meta-ewaol.git
refspec: refs/merge-requests/11/merge
path: layers/meta-ewaol
To submit a kas build with kas override file:
tuxsuite bake submit kas.yaml -k kas_override.yml
OE Build with manifest
container: ubuntu-20.04
envsetup: setup-environment
sources:
repo:
branch: qcom/dunfell
manifest: default.xml
url: https://github.com/96boards/oe-rpb-manifest.git
local_conf:
- INHERIT += 'buildstats buildstats-summary'
- INHERIT:remove = 'rm_work'
artifacts:
- licenses
distro: rpb
target: intltool-native
machine: dragonboard-410c
name: dragonboard-410c-rpb
manifest
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<extend-project name="ndechesne/meta-qcom" revision="2d91eb26e3cf0f6434f288518516750ac84329af"/>
</manifest>
To submit the build with manifest:
tuxsuite bake submit build-definition.yaml --local-manifest local-manifest.xml
Format¶
The build definition can include the following fields:
sources
(dictionary with a single item): could be one git_trees, repo, kas or androidgit_trees
(list of dictionaries): Each dictionary will have url, branch and optionally refrepo
(a dictionary): should have branch, manifest and url, describing where the manifests are hosted along with the branch and manifest file to be used in the build.kas
(a dictionary): Each dictionary will have url, branch, yaml and optionally ref. No other fields are allowed when you use kas.android
(a dictionary): Each dictionary will have url, branch, build_config, manifest and optionally bazel. No other fields are allowed when you use android.distro
: the distro variable passed to OE buildextraconfigs
(list of strings): each entry corresponds to some extra configs that will be copied to conf folder and will be using while building the target. It is used only in case of build definition containing sources as repo or git_trees.envsetup
: path to the script, relative to the source directory, that needs to be sourced to setup bitbake build environmentmachine
: the machine variable passed to OE buildtarget
: target passed to the bitbake commandcontainer
: the container used by Docker to do the build. We currently support ubuntu-16.04, ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, centos-8, debian-bullseye, debian-buster, debian-stretch, fedora-33, fedora-34, opensuse-leap-15.1, opensuse-leap-15.2local_conf
(list of strings): each entry corresponds to a line in local.conf file. The list of string is converted tolocal.conf
filebblayers_conf
(list of strings): each entry corresponds to a line in bblayers.conf file. The list of string is converted tobblayers.conf
fileenvironment
(dictionary of environment variables): they are set before calling bitbake