Package: tuxbake
TuxBake, byLinaro, is a command line tool and
Python library that provides portable and repeatable OE builds. TuxBake is a part ofTuxSuite, a suite of tools and services to help developers do build and boot test Linux kernel and OE distros.[[TOC]]About TuxBakeTuxBake is a python application to build OE Distros. It takes a json file as input which
describes the layers needed to be downloaded, local_conf and bblayers_conf parameters along
with machine, distro targets. It downloads the layers for with using either git protocols or
the repo tool. It uses containers (both Docker and Podman) to provide a standardised build
environments to do the build which can be easily reproduced by other users.Installing TuxbakeThere are several options for installing TuxBake (TuxMake is a prerequisite):pip3 install tuxmake
git clone https://gitlab.com/Linaro/tuxbake
cd tuxbake/
pip3 install .Tools requiredThe tools that needs to be installed on the host system are:docker or podman, git, repobuild-definition.json template with 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"
}build-definition.json template with 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",
  "envsetup": "poky/oe-init-build-env",
  "extraconfigs": [],
  "distro": "poky",
  "machine": "dragonboard-845c",
  "target": "core-image-minimal",
  "bblayers_conf": [
  "BBLAYERS += \"../meta-qcom/\""
  ],
    "environment": {
  }Fields of build-defintion.jsonsourcesThe sources is a dictionary with single item. It could be either git_trees or repo.git_treesThe git_trees is a list of dictionary object. Each dictionary
object will have "url" and one of the following "branch", "ref"
or the "sha" field.  If specifying the "ref" feild that should
be in any of the formats:"ref": "refs/pull/number/head"
"ref": "refs/pull/number/merge"
"ref": "refs/tags/tag"Note: The "number" is the number of the pull request. and for
merge requests in Gitlab, just change "pull" to
"merge-requests".repoThe repo field is a dictionary object. The dictionary should have "branch", "manifest" and "url" field describing where the manifests are hosted along with the branch and manifest file to be used in the build.distroThis is the distro variable passed to OE build.dl_dirThis should be the absolute path to the download directory that is passed to OE build. NOTE: It will not work specifying the 'dl_dir' string with '~/' or '$HOME' in the path.sstate_dirThis should be the absolute path to the sstate-cache directory that is passed to OE build. NOTE: It will not work specifying the 'sstate_dir' string with '~/' or '$HOME' in the path.sstate_mirrorThis should start with 'file:///some/local/dir/sstate/PATH' and/or 'https://someserver.tld/share/sstate/PATH;downloadfilename=PATH' sstate-cache directory that is passed to OE build.envsetupThis is path to the script relative to the source directory that needs to be sourced to setup bitbake build environment.extraconfigsThis is a list of string and each entry corresponds to some extra configs that will be used while building the target.machineThis is the machine variable passed to OE build.targetThis the target passed to the bitbake command.containerThis is the container used by Docker or Podman 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_confThis is a list of of string and each entry corresponds to a line in local.conf file. The list of string is converted to local.conf file.bblayers_confThis is a list of of string and each entry corresponds to a line in bblayers.conf file. The list of string is converted to bblayers.conf file.environmentThis is a dictionary of environment variables which are set before calling bitbake.Using TuxBakeTuxBake takes the build-definition as input along with a source directory path where the code is downloaded.ExamplesBuild OE example:$ tuxbake --build-definition examples/oe-rpb.json --src-dir $PWD/oe/