Skip to main content
Consider changes in the OpenEmbedded layers, build system, BitBake variables, recipes, and distros to migrate from Qualcomm Linux 1.0 to Qualcomm Linux 2.0.

Changes in OpenEmbedded layers

Qualcomm Linux uses OpenEmbedded layers to deliver technology components and reference distributions. The following table lists the changes in the OpenEmbedded layers between Qualcomm Linux 1.0 and Qualcomm Linux 2.0: Table: Changes in OpenEmbedded layers The following table lists the changes made to the Qualcomm-authored OpenEmbedded layers, which are a part of Qualcomm Linux 2.0: Table: Changes in Qualcomm-authored OpenEmbedded layers

Changes in Qualcomm Linux 2.0 build system

Consider the following key differences between the traditional Qualcomm Linux 1.0 repo-manifest Yocto build workflow and the Qualcomm Linux 2.0 Configuration Automation System (KAS)-based workflow.

KAS overview

Qualcomm Linux supports KAS-based build execution. KAS is an open-source tool for BitBake-based projects. It simplifies the process of configuring and launching OpenEmbedded builds using a YAML configuration file. KAS automates the following, making it suitable for both developers and continuous integration/continuous deployment (CI/CD) usage:
  • Cloning and checking out of necessary layer Git repositories> - Generating the required BitBake configuration files, such as local.conf and bblayers.conf, based on the YAML input
  • Reducing the number of steps required to set up a workspace by executing the standard BitBake process. For example, kas build <config.yml> does the following:
    • Clones the layer repositories
    • Sets up the environment
    • Starts the BitBake <image>
  • Providing a wrapper kas-container, which can run the build process in Docker
The following table compares the Repo tool and KAS on parameters, such as machine selection, distribution selection, and BSP flavor: Table: Repo tool vs KAS comparison The following table compares the workflows at a high-level between the Repo tool and KAS: Table: High-level workflow comparison: Repo tool vs. KAS

Sample KAS configuration file

The following example illustrates sample KAS configuration files found in meta-qcom and explains how each section maps to the repo-manifest workflow concepts and how KAS interprets them. For more information about the configuration file format, see KAS documentation.

base.yml

The base.yml file documents the base configuration used by all build combinations.

machine.yml

The machine.yml file documents machine-specific configuration. This file generally extends the base.yml configuration.

distro.yml

The distro.yml file documents distribution-specific configuration and the targets to be built.
The following table lists the KAS file structure: Table: KAS file structure

Run builds using KAS-based build system

When using KAS, clone the repository containing the KAS YAML files and then build using one of the following methods:
  • Run the KAS build command
  • Start a KAS shell and then run BitBake
To run a build using the KAS build command, run the following command:
To start a KAS shell and then run BitBake, run the following command:
The output is as follows:
To start the build for qcom-multimedia-image, run the following command from the KAS shell that appears after the preceding output:
For more information, see KAS documentation. To migrate you OpenEmbedded layer to the KAS-based build as supported by Qualcomm Linux 2.0, create KAS CI files for the machine by referring to the following machine files:
  • meta-qcom/ci/rb3gen2-core-kit.yml
  • meta-qcom/ci/qcm6490.yml
  • meta-qcom/ci/base.yml
Similarly, create KAS CI files for distro by referring to the following files:
  • meta-qcom/ci/qcom-distro.yml
  • meta-qcom/blob/master/ci/qcom-distro-multimedia-image.yml

Set up CI with KAS using a sample repository

To set up CI with KAS, use the following sample repo: https://github.com/qualcomm-linux/meta-vendor-example Note To set up your Yocto Project build environment, see Yocto Project Reference Manual. To run a KAS-based build, do the following:
  1. To install the KAS tool, run the following command:
  2. To clone the meta-vendor-example layer, run the following command:
  3. To build using the KAS configuration for one of the supported boards, run the following command:

Qualcomm Linux 2.0 repo-manifest workflow

A repo-manifest-based workflow is provided for Qualcomm Linux 2.0. The high-level changes in Qualcomm Linux 2.0 are as follows:
  • A repo is used for syncing meta layers from a manifest.
  • The setup environment is used for generating the BitBake configuration. In Qualcomm Linux 2.0, the BitBake configuration is generated based on the machine.yml and distro.yml configuration files. Hence, the setup environment takes these configuration files as input.
  • BitBake is manually invoked for building images.

Build steps comparison

The following table lists the key differences in build steps between Qualcomm Linux 1.0 and Qualcomm Linux 2.0: Table: Build steps comparison

Changes in overrides

Qualcomm Linux 1.0 supports the qcom-base-bsp and qcom-custom-bsp overrides. It uses these overrides to do the following:
  • Use separate kernel trees for qcom-base-bsp and qcom-custom-bsp
  • Include different sets of recipe packages in the rootfs image
  • Include different sets of device tree binaries in DTB.bin
These overrides aren’t supported in Qualcomm Linux 2.0. The following table lists the recipes supported in Qualcomm Linux 2.0: For Qualcomm Linux 2.0, overrides aren’t used for the following reasons:
  • Same kernel tree and kernel binary is used when qcom-multimedia-image and qcom-multimedia-proprietary-image are built.
  • Same device tree binary and device tree binary overlay are packed in the flattened image tree (FIT) image generated when qcom-multimedia-image and qcom-multimedia-proprietary-image are built. Note
    If you’re using the qcom-base-bsp and qcom-custom-bsp overrides, discontinue using them in Qualcomm Linux 2.0. To migrate changes that use overrides in Qualcomm Linux 1.0, modify the implementation to use overrides, based on the following examples: Table: Overrides migration examples

Changes in machine configuration

The following table lists the changes in the machine configuration names between Qualcomm Linux 1.0 and Qualcomm Linux 2.0: Table: Machine configuration updates

Changes in BitBake variables

The following table lists the BitBake variables used in the machine configuration for Qualcomm Linux 1.0 and Qualcomm Linux 2.0:

Changes in Linux recipes

Qualcomm Linux 2.0 supports a single kernel recipe and its corresponding real-time variant. The following table lists the Linux kernel recipe changes between Qualcomm Linux 1.0 and Qualcomm Linux 2.0: Table: Linux kernel recipe changes Note For Qualcomm Linux 2.0, only a single kernel tree is fetched from qcom-next. This kernel tree is built for both the images:
  • qcom-multimedia-image provides a rootfs with the upstream stack.
  • qcom-multimedia-proprietary-image provides a rootfs with the Qualcomm-maintained components.

Changes in image recipes

The meta-qcom-distro layer supports all the image recipes used in Qualcomm Linux. Qualcomm Linux 2.0 introduces changes to how the image recipes are managed and organized, and no longer uses BitBake overrides in image recipes. The following table lists the image recipes defined in the meta-qcom-distro open-embedded layer. The naming convention of these image recipes and their evolution from Qualcomm Linux 1.0 has changed. For example:
  • The image recipes no longer use DISTROOVERRIDES to distinguish between package inclusion in the image.
  • qcom-multimedia-proprietary-image adds Qualcomm software components.
Table: Changes in image recipes

Changes in reference distro configurations

Qualcomm Linux 2.0 introduces changes in reference distro configurations. In Qualcomm Linux 1.0, the reference distros for qcom-wayland are in the distro folder. The following table lists the reference distros in Qualcomm Linux 2.0: Table: Qualcomm Linux 2.0 reference distros