Skip to content

Guidance on meta-qcom-extras build workflow #1536

@abinjose-qualcomm

Description

@abinjose-qualcomm

During our build guide review, @ricardosalveti noted that kas users expect to run the build by cloning only one repository and not execute any additional scripts. We wanted to have a discussion on the correct way to build meta-qcom-extras.

Current Workflow:

A kas fragment is hosted in meta-qcom-extras. This file links to the local path where meta-qcom-extras is cloned and sets up the environment variables needed by the layer to compile.

# meta-qcom-extras/ci/extras.yml
header:
  version: 14

repos:
  meta-qcom-extras:
    branch: main
    path: /path/to/extras

env:
  CUST_ID: '<CUST_ID>'
  FWZIP_PATH: <FWZIP_PATH>

During build, the meta-qcom-extras kas fragment is populated and used to figure out meta-qcom-extras repo information.

git clone https://github.com/qualcomm-linux/meta-qcom
git clone https://github.com/qualcomm-linux/meta-qcom-extras

# populate meta-qcom-extras kas fragment with FWZIP_PATH & CUST_ID
export FWZIP_PATH="/path/to/local/binaries"
export CUST_ID="<customer-id>"
meta-qcom-extras/setup_extras_config.sh
cp meta-qcom-extras/ci/extras.yml meta-qcom/ci/extras.yml

kas build meta-qcom/ci/qcs9100-ride-sx.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/extras.yml

Proposed Workflow:

The suggestion by @rsalveti was to host the extras.yml kas fragment in meta-qcom.

# meta-qcom/ci/extras.yml
header:
  version: 14

repos:
  meta-qcom-extras:
    url: https://github.com/qualcomm-linux/meta-qcom-extras
    branch: main

env:
  CUST_ID: '<CUST_ID>'
  FWZIP_PATH: <FWZIP_PATH>

During builds, the meta-qcom-extras layer can now be automatically synced by kas.

git clone https://github.com/qualcomm-linux/meta-qcom

# we still need some mechanism to expose environment variables required 
# by meta-qcom-extras to bitbake.
export FWZIP_PATH="/path/to/local/binaries"
export CUST_ID="<customer-id>"
meta-qcom/setup_extras_config.sh

kas build meta-qcom/ci/qcs9100-ride-sx.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/extras.yml

One concern with this approach is that meta-qcom-extras is hosted on GitHub with the development happening in private. However, it will be distributed to customers via Chipcode. So, we would need some mechanism to switch the meta-qcom-extras url for user builds.

Any other insights or suggestions on this problem would be appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions