Skip to content

fix: fix multi-machine collision and add sstate support for eSDK - #308

Open
Teng Fan (TengFan-QC) wants to merge 5 commits into
qualcomm-linux:mainfrom
TengFan-QC:rdepends-fix
Open

fix: fix multi-machine collision and add sstate support for eSDK#308
Teng Fan (TengFan-QC) wants to merge 5 commits into
qualcomm-linux:mainfrom
TengFan-QC:rdepends-fix

Conversation

@TengFan-QC

@TengFan-QC Teng Fan (TengFan-QC) commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

CRs-Fixed: 4598715

Summary

Two bugs in rdepends-collector.bbclass are fixed.

Bug 1 — Multi-machine file collision

Symptom

ERROR: packagegroup-oss-with-prop-deps do_collect_rdepends: Recipe is trying to install files into a shared area when those files already exist.

Root cause

PACKAGEGROUP_LIST_DIR = "${DEPLOY_DIR}/packagegroup-lists" has no machine-level separation. Building two machine configs (e.g. iq_8275_evk and iq_9075_evk) in the same workspace causes both to write the same file path, triggering a shared-area conflict.

Fix

  • Change output dir to ${DEPLOY_DIR}/packagegroup-lists/${MACHINE} via a new ROBOTICS_PACKAGEGROUP_LIST_DIR variable.
  • Rename PACKAGEGROUP_LIST_STAGING_DIR → ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR to avoid shadowing Yocto's built-in variable of the same name.

Bug 2 — eSDK do_populate_sdk_ext setscene failure

Symptom

ERROR: Task (...packagegroup-robotics-opensource.bb:do_collect_rdepends) failed with exit code 'setscene ignore_tasks'

Root cause

do_populate_sdk_ext runs an inner BitBake build under strict setscene enforcement. The %:* pattern in BB_SETSCENE_ENFORCE_IGNORE_TASKS#PR276 expands only to explicit build targets; tasks on dependency recipes (e.g. packagegroup-robotics-opensource) must either be in sstate or be explicitly exempted. do_collect_rdepends was neither — it had no sstate registration and wrote directly to DEPLOY_DIR, which sstate does not track.
The previous workaround appended *:do_collect_rdepends to BB_SETSCENE_ENFORCE_IGNORE_TASKS, forcing the task to always re-run from scratch. This masked the root cause.

Fix

Properly register do_collect_rdepends as a sstate-restorable task:

  • Write list files to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR (tracked staging dir) instead of directly to DEPLOY_DIR.
  • Add SSTATETASKS += "do_collect_rdepends" so BitBake treats it as a cacheable task.
  • Add do_collect_rdepends[vardeps] = "RDEPENDS:${PN}" so sstate keys are unique per packagegroup.
  • Add do_collect_rdepends[sstate-outputdirs], [dirs], [cleandirs], and [stamp-extra-info] to align with Yocto sstate conventions.
  • Add addtask do_collect_rdepends_setscene as required by BitBake to recognise the task as sstate-restorable.
  • Remove the BB_SETSCENE_ENFORCE_IGNORE_TASKS workaround from the distro config — it is no longer needed.

Test case passed:

  • Build two different machine configs (iq_8275_evk, iq_9075_evk) in the same workspace — no shared-area conflict
  • Run do_populate_sdk_ext on an image that depends on packagegroup-robotics-opensource — no setscene ignore_tasks failure

Robotics build includes image/SDK/eSDK generated and works normally:
image

Build robotics image via eSDK:
image

QRB ROS samples and cross-compile works well on QIR-SDK:
image

Robotics image is flashable and works well:
image

  • Confirm do_collect_rdepends is correctly restored from sstate on a second build (no re-execution)
  • Verify packagegroup list files are generated under ${DEPLOY_DIR}/packagegroup-lists/${MACHINE}/
image

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review
Reviewed Commits: 2610fa1
  • 2610fa1: fix: fix multi-machine collision and add sstate support for eSDK

  • Scope packagegroup list output under to prevent file
    conflicts when building multiple machine configs in one workspace

  • Rename PACKAGEGROUP_LIST_STAGING_DIR to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR
    to avoid collision with Yocto's standard variable

  • Register do_collect_rdepends as a proper sstate task (SSTATETASKS) so
    the inner eSDK build can restore it from sstate instead of failing with
    'setscene ignore_tasks'

  • Add do_collect_rdepends[vardeps], [dirs], [cleandirs], [sstate-outputdirs]
    and [stamp-extra-info] for correct sstate/stamp behaviour

  • Drop BB_SETSCENE_ENFORCE_IGNORE_TASKS workaround made redundant by above fix

  • Update meta-virtualization layer url.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com

Pull Request Overview

This PR introduces significant improvements to the QIRP SDK build system, focusing on sstate integration for packagegroup dependency collection and machine-specific artifact organization.

Files Changed Summary

File Lines Changed Issues Found Highest Severity
ci/qcom-distro.yml 1 0 N/A
classes/psdk-image.bbclass 9 1 Medium
classes/rdepends-collector.bbclass 85 2 High
conf/distro/include/qcom-robotics-sdk.inc 1 1 High
conf/layer.conf 1 0 N/A

Key Changes

  1. URL Correction: Fixed meta-virtualization repository URL by removing redundant /git/ path component
  2. Sstate Integration: Converted do_collect_rdepends task to a proper sstate-enabled task with staging directories and setscene support
  3. Machine-Specific Paths: Updated packagegroup list directory to include ${MACHINE} for multi-machine build support
  4. SDK Configuration: Fixed TOOLCHAIN_HOST_TASK append logic to exclude buildtools-tarball recipe

Critical Issues Identified

  • High Severity: Incorrect variable reference in SDK configuration (line 43 of qcom-robotics-sdk.inc) - uses wrong variable name
  • High Severity: Missing file-checksums dependency for content_config.json in rdepends-collector.bbclass
  • Medium Severity: Inconsistent variable naming between psdk-image.bbclass and rdepends-collector.bbclass

The PR successfully addresses sstate caching for SDK generation but requires fixes to variable references and task dependencies before merge.

[FUNCTIONALITY] High Severity - Incorrect variable reference in TOOLCHAIN_HOST_TASK append

In conf/distro/include/qcom-robotics-sdk.inc at line 43, the code attempts to append ROS_SDK_HOST_PACKAGES but references it incorrectly. The new line uses d.getVar('ROS_SDK_HOST_PACKAGES') which is correct, but this duplicates line 41 which already appends ${ROS_SDK_HOST_PACKAGES}. The condition if d.getVar('PN') != 'buildtools-tarball' suggests this is meant to conditionally exclude buildtools-tarball, but line 41 unconditionally appends the same variable.

The issue is that line 41 should be removed or modified, as having both lines causes ROS_SDK_HOST_PACKAGES to be added twice for non-buildtools-tarball recipes. This is a logic error that will result in duplicate packages in the SDK toolchain.

Fixed Code Snippet:

# Remove line 41 entirely and keep only the conditional append:
TOOLCHAIN_HOST_TASK:append = "${@(' ' + (d.getVar('ROS_SDK_HOST_PACKAGES') or '')) if d.getVar('PN') != 'buildtools-tarball' else ''}"

[FUNCTIONALITY] High Severity - Missing file-checksums for content_config.json in rdepends-collector

The rdepends-collector.bbclass does not declare file-checksums for the content_config.json file that is read during the do_collect_rdepends task execution. While this file is referenced in psdk-image.bbclass (line 266), the rdepends-collector class should also track it if it's used to determine which samples to process.

Looking at the code flow, rdepends-collector.bbclass doesn't actually read content_config.json - that's only done in psdk-image.bbclass. However, the Python code block at lines 273-322 in psdk-image.bbclass reads this file to determine sample dependencies. This is correct.

Actually, upon closer inspection, this is not an issue with rdepends-collector.bbclass itself. The concern is valid for psdk-image.bbclass which already has the file-checksums declared at line 266. No fix needed for rdepends-collector.bbclass.

However, there IS an issue: the do_collect_rdepends task in rdepends-collector.bbclass has vardeps set to RDEPENDS:${PN} (line 41), but the task implementation also writes "qirp-sdk" unconditionally (line 86). This hardcoded package name should be in vardeps or made configurable.

Fixed Code Snippet:

# Add a variable for the mandatory SDK package and include it in vardeps
ROBOTICS_SDK_PACKAGE ?= "qirp-sdk"
do_collect_rdepends[vardeps] = "RDEPENDS:${PN} ROBOTICS_SDK_PACKAGE"

# In the Python function at line 86:
        sdk_package = d.getVar("ROBOTICS_SDK_PACKAGE") or "qirp-sdk"
        f.write("{}\n".format(sdk_package))

[MAINTAINABILITY] Medium Severity - Inconsistent variable naming between classes

The variable ROBOTICS_PACKAGEGROUP_LIST_DIR is defined in both rdepends-collector.bbclass (line 23) and psdk-image.bbclass (line 21) with identical values. This creates maintenance burden as changes must be synchronized across both files.

In Yocto/BitBake best practices, shared configuration variables should be defined in a common location (typically layer.conf or a distro/machine configuration file) and referenced by classes that need them. This ensures single source of truth and prevents drift.

The variable should be moved to conf/layer.conf where other layer-wide variables like ROBIOTICS_LAYER_DIR are already defined.

Fixed Code Snippet:

# In conf/layer.conf, add after line 25:
ROBOTICS_PACKAGEGROUP_LIST_DIR = "${DEPLOY_DIR}/packagegroup-lists/${MACHINE}"

# In classes/rdepends-collector.bbclass, remove line 23 (the variable definition)
# In classes/psdk-image.bbclass, remove line 21 (the variable definition)

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread conf/distro/include/qcom-robotics-sdk.inc
Comment thread classes/rdepends-collector.bbclass
Comment thread classes/rdepends-collector.bbclass
Comment thread classes/rdepends-collector.bbclass
Comment thread classes/rdepends-collector.bbclass
Comment thread classes/psdk-image.bbclass
@TengFan-QC Teng Fan (TengFan-QC) added the backport wrynose Auto backport to wrynose branch label Jul 1, 2026
@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: ce9f622 "fix: fix multi-machine collision and eSDK sstate support

  • Scope packagegroup list output under to prevent file
    conflicts when building multiple machine configs in one workspace
  • Rename PACKAGEGROUP_LIST_STAGING_DIR to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR
    to avoid collision with Yocto's standard variable
  • Register do_collect_rdepends as a proper sstate task (SSTATETASKS) so
    the inner eSDK build can restore it from sstate instead of failing with
    'setscene ignore_tasks'
  • Add do_collect_rdepends[vardeps], [dirs], [cleandirs], [sstate-outputdirs]
    and [stamp-extra-info] for correct sstate/stamp behaviour
  • Drop BB_SETSCENE_ENFORCE_IGNORE_TASKS workaround made redundant by above fix
  • Update meta-virtualization layer url.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR introduces significant improvements to the QIRP SDK build system, focusing on sstate integration for packagegroup dependency collection and machine-specific artifact organization.

Files Changed Summary

File Lines Changed Issues Found Highest Severity
ci/qcom-distro.yml 1 0 N/A
classes/psdk-image.bbclass 9 1 Medium
classes/rdepends-collector.bbclass 85 2 High
conf/distro/include/qcom-robotics-sdk.inc 1 1 High
conf/layer.conf 1 0 N/A

Key Changes

  1. URL Correction: Fixed meta-virtualization repository URL by removing redundant /git/ path component
  2. Sstate Integration: Converted do_collect_rdepends task to a proper sstate-enabled task with staging directories and setscene support
  3. Machine-Specific Paths: Updated packagegroup list directory to include ${MACHINE} for multi-machine build support
  4. SDK Configuration: Fixed duplicate/incorrect variable assignment in toolchain host task configuration

Critical Issues Identified

  • High Severity: Incorrect variable usage in SDK configuration that could cause buildtools-tarball failures

Architecture Compliance

The changes properly align with the layer's architecture:

  • Maintains LAYERSERIES_COMPAT=wrynose compatibility
  • Follows the established bbclass pattern (rdepends-collector, psdk-image)
  • Correctly implements sstate task conventions per Yocto Project standards
  • Supports the sample-source flow via do_copy_source_to_deploy dependencies

[FUNCTIONALITY] High Severity - Incorrect variable reference in SDK host task configuration

In conf/distro/include/qcom-robotics-sdk.inc, line 43 references ROS_SDK_HOST_PACKAGES but should reference ROS_SDK_TARGET_PACKAGES based on the context. The previous line (41) already appends ROS_SDK_HOST_PACKAGES unconditionally. Line 43 appears to be attempting to conditionally add target packages when not building buildtools-tarball, but it's using the wrong variable.

This is a critical logic error that will cause:

  1. ROS_SDK_TARGET_PACKAGES to never be added to the SDK
  2. Duplicate addition of ROS_SDK_HOST_PACKAGES
  3. Missing runtime libraries needed for ROS node compilation in the SDK

The condition if d.getVar('PN') != 'buildtools-tarball' suggests this should apply to target packages (which shouldn't be in buildtools), not host packages.

Fixed Code Snippet:

TOOLCHAIN_TARGET_TASK:append = "${@(' ' + (d.getVar('ROS_SDK_TARGET_PACKAGES') or '')) if d.getVar('PN') != 'buildtools-tarball' else ''}"

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread conf/distro/include/qcom-robotics-sdk.inc
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Test run workflow

Test jobs for commit ce9f622

@test-reporting-app

test-reporting-app Bot commented Jul 1, 2026

Copy link
Copy Markdown

Test Results

 1 files  ±0   2 suites  ±0   2m 43s ⏱️ ±0s
16 tests ±0  16 ✅ ±0  0 💤 ±0  0 ❌ ±0 
20 runs  ±0  20 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit ae304ae. ± Comparison against base commit 84f7ff3.

♻️ This comment has been updated with latest results.

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: a049219 "'fix: fix multi-machine collision and eSDK sstate support

  • Scope packagegroup list output under to prevent file
    conflicts when building multiple machine configs in one workspace
  • Rename PACKAGEGROUP_LIST_STAGING_DIR to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR
    to avoid collision with Yocto's standard variable
  • Register do_collect_rdepends as a proper sstate task (SSTATETASKS) so
    the inner eSDK build can restore it from sstate instead of failing with
    'setscene ignore_tasks'
  • Add do_collect_rdepends[vardeps], [dirs], [cleandirs], [sstate-outputdirs]
    and [stamp-extra-info] for correct sstate/stamp behaviour
  • Drop BB_SETSCENE_ENFORCE_IGNORE_TASKS workaround made redundant by above fix
  • Update meta-virtualization layer url.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR makes several improvements to the meta-qcom-robotics-sdk layer:

  1. Fixes a URL typo in the meta-virtualization repository reference
  2. Refactors the rdepends-collector.bbclass to use sstate caching for packagegroup dependency lists
  3. Updates psdk-image.bbclass to use the new ROBOTICS_PACKAGEGROUP_LIST_DIR variable
  4. Adds conditional logic to prevent buildtools-tarball from packaging target architecture packages
  5. Defines ROBOTICS_PACKAGEGROUP_LIST_DIR globally in layer.conf

Files Changed Summary

File Lines Changed Issues Found Highest Severity
ci/qcom-distro.yml 1 0 None
classes/psdk-image.bbclass 8 1 Medium
classes/rdepends-collector.bbclass 85 2 High
conf/distro/include/qcom-robotics-sdk.inc 4 1 Medium
conf/layer.conf 2 0 None

Critical Issues

  1. [High Severity] Missing sstate task dependencies in rdepends-collector.bbclass could cause race conditions
  2. [Medium Severity] Potential buildtools-tarball check may not work correctly in all contexts

[FUNCTIONALITY] Missing sstate task dependency - High Severity

In classes/rdepends-collector.bbclass, the do_collect_rdepends task is registered as an sstate task but lacks a dependency on do_packagedata. This is critical because the task reads RDEPENDS:${PN} which is only finalized after package data is generated. Without this dependency, the task may execute before package dependencies are fully resolved, leading to incomplete or incorrect package lists.

According to the Yocto Project Reference Manual, sstate tasks that depend on package metadata should explicitly depend on do_packagedata to ensure proper task ordering.

Fixed Code Snippet:

# Add task: collect RDEPENDS after packagegroup build
addtask do_collect_rdepends after do_packagedata before do_build
ROBOTICS_SDK_PACKAGE ?= "qirp-sdk"
do_collect_rdepends[vardeps] = "RDEPENDS:${PN} ROBOTICS_SDK_PACKAGE"

[FUNCTIONALITY] Buildtools-tarball check may fail in anonymous Python - Medium Severity

In conf/distro/include/qcom-robotics-sdk.inc, the conditional check if d.getVar('PN') != 'buildtools-tarball' is used within variable expansion syntax ${@...}. This approach may not work reliably because the PN variable might not be set or might have unexpected values during variable expansion in certain contexts (e.g., when parsing configuration files before recipe parsing).

According to Yocto best practices, recipe-specific overrides should be handled in the recipe itself or via bbappend files, not in distro configuration includes. A more robust approach would be to use a bbappend for buildtools-tarball or to check for the recipe context more defensively.

Fixed Code Snippet:

# Avoid buildtools-tarball recipe packages the host *.armv8_2a.rpm for do_populate_sdk task
# Only add ROS SDK packages if PN is defined and not buildtools-tarball
TOOLCHAIN_TARGET_TASK:append = "${@(' ' + (d.getVar('ROS_SDK_TARGET_PACKAGES') or '')) if (d.getVar('PN') and d.getVar('PN') != 'buildtools-tarball') else ''}"

TOOLCHAIN_HOST_TASK:append = "${@(' ' + (d.getVar('ROS_SDK_HOST_PACKAGES') or '')) if (d.getVar('PN') and d.getVar('PN') != 'buildtools-tarball') else ''}"

Alternatively, consider creating a recipes-core/buildtools-tarball/buildtools-tarball.bbappend to handle this exception more cleanly:

# buildtools-tarball.bbappend
TOOLCHAIN_TARGET_TASK:remove = "${ROS_SDK_TARGET_PACKAGES}"
TOOLCHAIN_HOST_TASK:remove = "${ROS_SDK_HOST_PACKAGES}"

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread classes/rdepends-collector.bbclass
Comment thread conf/distro/include/qcom-robotics-sdk.inc Outdated
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Test run workflow

Test jobs for commit a049219

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: 6aa9881 "'fix: fix multi-machine collision and eSDK sstate support

  • Scope packagegroup list output under to prevent file
    conflicts when building multiple machine configs in one workspace
  • Rename PACKAGEGROUP_LIST_STAGING_DIR to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR
    to avoid collision with Yocto's standard variable
  • Register do_collect_rdepends as a proper sstate task (SSTATETASKS) so
    the inner eSDK build can restore it from sstate instead of failing with
    'setscene ignore_tasks'
  • Add do_collect_rdepends[vardeps], [dirs], [cleandirs], [sstate-outputdirs]
    and [stamp-extra-info] for correct sstate/stamp behaviour
  • Drop BB_SETSCENE_ENFORCE_IGNORE_TASKS workaround made redundant by above fix
  • Update meta-virtualization layer url.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR introduces significant improvements to the QIRP SDK build system for the meta-qcom-robotics-sdk layer, focusing on sstate integration for packagegroup dependency collection and SDK generation. The changes enable proper caching and restoration of build artifacts in eSDK environments.

Files Changed Summary

File Lines Changed Issues Found Highest Severity
classes/rdepends-collector.bbclass ~85 lines modified 2 Medium
classes/psdk-image.bbclass ~10 lines modified 1 Low
conf/layer.conf +2 lines 0 N/A
conf/distro/include/qcom-robotics-sdk.inc -1 line 0 N/A
ci/qcom-distro.yml 1 line modified 0 N/A
recipes-bbappends/recipe-devtools/expect/expect_%.bbappend +2 lines (new) 0 N/A
recipes-bbappends/recipe-devtools/tcl8/tcl8_%.bbappend +28 lines (new) 0 N/A
recipes-bbappends/recipe-devtools/tcltk/tcl_%.bbappend +19 lines (new) 0 N/A
recipes-bbappends/recipe-devtools/tcltk8/tcl8_%.bbappend +15 lines (new) 0 N/A

Key Changes

  1. Sstate Integration: Converted do_collect_rdepends task to a proper sstate task with staging directories, enabling artifact caching and restoration
  2. Variable Renaming: Changed PACKAGEGROUP_LIST_DIR to ROBOTICS_PACKAGEGROUP_LIST_DIR with machine-specific subdirectories for better organization
  3. TCL/Expect Fixes: Added bbappends to resolve native sysroot conflicts between tcl 8.x and tcl 9.x for expect-native builds
  4. URL Correction: Fixed meta-virtualization repository URL in kas configuration
  5. SDK Configuration: Removed redundant TOOLCHAIN_TARGET_TASK append in robotics SDK configuration

Critical Issues Identified

  • [Medium Severity] Missing error handling in rdepends-collector.bbclass for file write operations
  • [Medium Severity] Potential race condition in sstate directory cleanup

The PR demonstrates good understanding of Yocto sstate mechanisms and follows the layer's architecture patterns. The TCL/expect fixes address real build issues in native toolchain assembly.

[Error Handling] Missing exception handling for file write operations - Medium Severity

In classes/rdepends-collector.bbclass, the do_collect_rdepends Python task writes to a file without proper error handling. If the file write fails (e.g., due to disk full, permission issues, or I/O errors), the task will crash with an unhandled exception rather than providing a clear error message.

While Python's open() context manager handles file closure, it doesn't catch write errors. For a build system task that's part of the critical path, this should fail gracefully with a clear diagnostic message.

Fixed Code Snippet:

python do_collect_rdepends() {
    """
    Collect packagegroup RDEPENDS and write to file
    Only collects direct RDEPENDS, not dependencies of dependencies
    """
    import os
    pn = d.getVar("PN")

    bb.note("Collecting RDEPENDS for packagegroup: {}".format(pn))

    # Get RDEPENDS
    rdepends_var = 'RDEPENDS:{}'.format(pn)
    rdepends = d.getVar(rdepends_var) or ""
    if not rdepends:
        bb.warn("RDEPENDS for {} is empty (will be added later)".format(pn))
        rdepends = ""

    # Write into the private staging dir so sstate can package it correctly.
    # sstate copies staging -> ROBOTICS_PACKAGEGROUP_LIST_DIR on restore.
    list_dir = d.getVar("ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR")
    os.makedirs(list_dir, exist_ok=True)

    list_file = os.path.join(list_dir, "{}.list".format(pn))

    try:
        with open(list_file, 'w') as f:
            for pkg in rdepends.split():
                pkg_clean = pkg.strip()
                if pkg_clean:
                    f.write("{}\n".format(pkg_clean))
            # qirp-sdk is a standalone package that must be present in all images.
            sdk_package = d.getVar("ROBOTICS_SDK_PACKAGE") or "qirp-sdk"
            f.write("{}\n".format(sdk_package))
    except IOError as e:
        bb.fatal("Failed to write packagegroup list file {}: {}".format(list_file, str(e)))

    package_count = len(rdepends.split())
    bb.note("Wrote {} packages to {}".format(package_count, list_file))
}

[Functionality] Potential race condition in sstate cleanup - Medium Severity

In classes/rdepends-collector.bbclass, the do_clean_rdepends task uses rm -f to remove a single list file. However, the comment states this task "only handles the non-sstate path" and is meant to clean up files written directly without sstate.

The issue is that if multiple packagegroups are being cleaned concurrently (which can happen in parallel builds), and they share the same ROBOTICS_PACKAGEGROUP_LIST_DIR, there's no synchronization. While rm -f itself is atomic for single file removal, the broader concern is that the task doesn't verify whether the file was created by this specific recipe instance or restored from sstate by another.

Additionally, the task runs before do_cleanall, but do_cleansstate (which is the proper sstate cleanup mechanism) already handles removal via the sstate manifest. The current implementation could potentially remove a file that was just restored by another recipe's sstate if they share the same ${PN}.list filename pattern.

For better safety in a Yocto context, the cleanup should be more defensive:

Fixed Code Snippet:

do_clean_rdepends() {
    # Only remove if the file exists and we're in a clean context
    # The sstate manifest handles removal for sstate-restored files
    if [ -f "${ROBOTICS_PACKAGEGROUP_LIST_DIR}/${PN}.list" ]; then
        bbnote "Removing packagegroup list file for ${PN}"
        rm -f "${ROBOTICS_PACKAGEGROUP_LIST_DIR}/${PN}.list"
    fi
}

Alternatively, since do_cleansstate already handles sstate artifact removal, consider whether do_clean_rdepends is even necessary. The comment acknowledges this overlap, suggesting the task might be redundant.


⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread classes/rdepends-collector.bbclass
Comment thread classes/rdepends-collector.bbclass
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Test run workflow

Test jobs for commit 6aa9881

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: ae304ae "fix: restore eSDK do_collect_rdepends via SDK_RECRDEP_TASKS

Removed "*:do_collect_rdepends" from BB_SETSCENE_ENFORCE_IGNORE_TASKS,
the inner eSDK build recomputes the taskhash, which may not
match the cached sstate artifact due to a different hashequiv database.
With BB_SETSCENE_ENFORCE=1 preventing direct execution, the task cannot be
restored or run, causing the build to fail.

Add do_collect_rdepends to SDK_RECRDEP_TASKS so its signature and sstate
artifact are included in the SDK cache, allowing normal setscene restore
during the inner eSDK build.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR modifies the Yocto SDK configuration for the Qualcomm Robotics SDK by changing the approach to handling the do_collect_rdepends task in eSDK builds.

Files Changed Summary

File Lines Changed Issues Found Highest Severity
conf/distro/include/qcom-robotics-sdk.inc 4 lines modified (+3/-1) 2 High

Key Changes

  • Commented out BB_SETSCENE_ENFORCE_IGNORE_TASKS:append configuration (line 49)
  • Added SDK_RECRDEP_TASKS:append to include do_collect_rdepends in the SDK dependency chain (line 52)

Critical Issues Identified

  1. [FUNCTIONALITY] High Severity: Potential build breakage - The change from BB_SETSCENE_ENFORCE_IGNORE_TASKS to SDK_RECRDEP_TASKS fundamentally alters how the do_collect_rdepends task is handled in eSDK builds, which may cause issues if the task's sstate signature is not properly available.
  2. [MAINTAINABILITY] Medium Severity: Incomplete comment update - The multi-line comment (lines 43-48) still describes the old approach using BB_SETSCENE_ENFORCE_IGNORE_TASKS, but the implementation has changed to use SDK_RECRDEP_TASKS.

[FUNCTIONALITY] Potential eSDK build failure due to task dependency change - High Severity

The PR changes the approach from ignoring the do_collect_rdepends task during setscene enforcement to explicitly adding it to the SDK recursive dependency tasks. According to the comment (lines 43-48), the original issue was that do_collect_rdepends runs on packagegroup recipes which are NOT SDK targets, and its sstate signature is not written into the SDK's locked-sigs.inc.

The new approach using SDK_RECRDEP_TASKS:append may not solve the underlying problem described in the comment. SDK_RECRDEP_TASKS adds tasks to the dependency chain, but if the sstate signature is still not available in locked-sigs.inc, the eSDK inner build with BB_SETSCENE_ENFORCE=1 may still fail when trying to restore this task from setscene.

The original BB_SETSCENE_ENFORCE_IGNORE_TASKS approach explicitly allowed the task to execute directly (bypassing setscene restoration), which was the correct solution for tasks whose signatures aren't in locked-sigs.inc. The new approach may reintroduce the build error it was meant to fix.

Recommendation: Either revert to the original BB_SETSCENE_ENFORCE_IGNORE_TASKS approach, or if SDK_RECRDEP_TASKS is required for a different reason, ensure that both variables are set to handle both the dependency chain AND the setscene enforcement issue.

Fixed Code Snippet:

# The inner eSDK build runs with BB_SETSCENE_ENFORCE=1 and only whitelists SDK
# target tasks (%:*). do_collect_rdepends runs on packagegroup recipes, which are
# NOT SDK targets, and its sstate signature is not written into the SDK's
# locked-sigs.inc — so it cannot be setscene-restored inside the eSDK. Allow it
# to execute directly there; the task is cheap and its .list output is still
# published to ROBOTICS_PACKAGEGROUP_LIST_DIR via sstate-outputdirs.
BB_SETSCENE_ENFORCE_IGNORE_TASKS:append = " *:do_collect_rdepends"

# Add do_collect_rdepends task to target dependency chain to ensure proper task ordering
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

[MAINTAINABILITY] Comment-code mismatch after implementation change - Medium Severity

The multi-line comment spanning lines 43-48 describes the rationale for using BB_SETSCENE_ENFORCE_IGNORE_TASKS, explaining that the task cannot be setscene-restored and should be allowed to execute directly. However, the implementation has been changed to comment out that variable and use SDK_RECRDEP_TASKS instead.

This creates a documentation-code mismatch where the comment describes a solution that is no longer active in the code. The new comment on line 51 ("Add do_collect_rdepends task to target dependency chain to avoid eSDK inner build error") doesn't explain WHY this approach solves the problem described in the earlier comment.

Per Yocto best practices and this layer's maintainability standards, comments should accurately reflect the implementation and provide clear rationale for configuration choices, especially for non-obvious workarounds.

Recommendation: Update the comment block to accurately describe the current approach and explain how SDK_RECRDEP_TASKS addresses the eSDK build issue, or update it to reflect that both mechanisms are needed if both variables are used.

Fixed Code Snippet:

# The inner eSDK build runs with BB_SETSCENE_ENFORCE=1 and only whitelists SDK
# target tasks (%:*). do_collect_rdepends runs on packagegroup recipes, which are
# NOT SDK targets, and its sstate signature is not written into the SDK's
# locked-sigs.inc. We handle this by:
# 1. Ignoring it during setscene enforcement so it can execute directly
# 2. Adding it to SDK recursive dependency tasks for proper task ordering
BB_SETSCENE_ENFORCE_IGNORE_TASKS:append = " *:do_collect_rdepends"
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread conf/distro/include/qcom-robotics-sdk.inc Outdated
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Test run workflow

Test jobs for commit ae304ae

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: 1c05eb3 "fix: replace MACHINE_ARCH with MACHINE for separate sstate

Align with standard SDK behavior by using MACHINE_ARCH
to differentiate PACKAGEGROUP_LIST_DIR instead of MACHINE.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR fixes an eSDK (extensible SDK) inner build failure related to the do_collect_rdepends task. The failure occurred when building do_populate_sdk_ext because the task attempted to execute directly instead of being restored from sstate cache, triggering a BB_SETSCENE_ENFORCE violation.

Files Changed Summary

File Lines Changed Issues Found Highest Severity
classes/rdepends-collector.bbclass +7/-1 0 None
conf/distro/include/qcom-robotics-sdk.inc +3/-1 0 None
conf/layer.conf +1/-1 0 None
esdk_inner_build_issue.md +201/-0 0 None

Key Changes

  1. rdepends-collector.bbclass: Made the SDK package name configurable via ROBOTICS_SDK_PACKAGE variable (defaults to "qirp-sdk") and added it to task vardeps for proper sstate invalidation
  2. qcom-robotics-sdk.inc: Added do_collect_rdepends to SDK_RECRDEP_TASKS to ensure the task signature is locked into locked-sigs.inc and its sstate artifact is shipped with the SDK
  3. layer.conf: Changed ROBOTICS_PACKAGEGROUP_LIST_DIR from ${MACHINE} to ${MACHINE_ARCH} for proper multi-machine sstate cache separation
  4. esdk_inner_build_issue.md: Comprehensive documentation of the root cause analysis and fix rationale

Critical Issues

No critical issues identified. The changes are well-structured and follow Yocto best practices:

  • Proper use of BitBake variable override syntax
  • Correct sstate task configuration with appropriate vardeps
  • Proper use of SDK_RECRDEP_TASKS hook for eSDK integration
  • Appropriate use of MACHINE_ARCH for architecture-specific sstate artifacts

The fix addresses the root cause (Path 1: missing task signature in locked-sigs.inc) rather than just working around the symptom, which is the correct approach.

[YOCTO-SPECIFIC] Verify SDK_RECRDEP_TASKS effectiveness - Medium Severity

The fix adds do_collect_rdepends to SDK_RECRDEP_TASKS to ensure the task is included in the eSDK's locked-sigs.inc. However, the documentation file itself (esdk_inner_build_issue.md, lines 185-190) includes a critical verification checklist that must be completed:

  1. Run a full eSDK build with the change
  2. Grep the newly generated inner locked-sigs.inc for packagegroup-*:do_collect_rdepends — it MUST be present
  3. If the recrdep traversal does not reach it, fall back to Option B (restore the whitelist)

The commented-out BB_SETSCENE_ENFORCE_IGNORE_TASKS line (line 49 in qcom-robotics-sdk.inc) serves as a fallback if SDK_RECRDEP_TASKS proves insufficient. Before merging, the PR author should confirm that:

  • The task signature appears in the generated locked-sigs.inc
  • The eSDK build completes successfully
  • The .list files are properly available in the eSDK environment

If verification fails, the fallback approach should be uncommented.

Verification Command:

# After building the eSDK, check:
grep 'packagegroup.*:do_collect_rdepends' tmp/deploy/sdk/*-toolchain-ext-*.sh.manifest
# Or inspect the unpacked SDK's locked-sigs.inc

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment on lines +46 to +52
# locked-sigs.inc — so it cannot be setscene-restored inside the eSDK. Allow it
# to execute directly there; the task is cheap and its .list output is still
# published to ROBOTICS_PACKAGEGROUP_LIST_DIR via sstate-outputdirs.
# BB_SETSCENE_ENFORCE_IGNORE_TASKS:append = " *:do_collect_rdepends"

# Add do_collect_rdepends task to target dependency chain to avoid eSDK inner build error
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[YOCTO-SPECIFIC] Verify SDK_RECRDEP_TASKS effectiveness - Medium Severity

The fix adds do_collect_rdepends to SDK_RECRDEP_TASKS to ensure the task is included in the eSDK's locked-sigs.inc. However, the documentation file itself (esdk_inner_build_issue.md, lines 185-190) includes a critical verification checklist that must be completed:

  1. Run a full eSDK build with the change
  2. Grep the newly generated inner locked-sigs.inc for packagegroup-*:do_collect_rdepends — it MUST be present
  3. If the recrdep traversal does not reach it, fall back to Option B (restore the whitelist)

The commented-out BB_SETSCENE_ENFORCE_IGNORE_TASKS line (line 49 in qcom-robotics-sdk.inc) serves as a fallback if SDK_RECRDEP_TASKS proves insufficient. Before merging, the PR author should confirm that:

  • The task signature appears in the generated locked-sigs.inc
  • The eSDK build completes successfully
  • The .list files are properly available in the eSDK environment

If verification fails, the fallback approach should be uncommented.

Verification Command:

# After building the eSDK, check:
grep 'packagegroup.*:do_collect_rdepends' tmp/deploy/sdk/*-toolchain-ext-*.sh.manifest
# Or inspect the unpacked SDK's locked-sigs.inc

@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: 7ec6f32 "fix: replace MACHINE_ARCH with MACHINE for separate sstate

Align with standard SDK behavior by using MACHINE_ARCH
to differentiate PACKAGEGROUP_LIST_DIR instead of MACHINE.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR refactors the rdepends-collector.bbclass to make the SDK package name configurable and improves sstate handling for the do_collect_rdepends task in the eSDK build environment.

Summary Table

File Lines Changed Issues Found Highest Severity
classes/rdepends-collector.bbclass +7/-1 0 None
conf/distro/include/qcom-robotics-sdk.inc +3/-1 1 Medium
conf/layer.conf +1/-1 0 None
Total 11 additions, 3 deletions 1 Medium

Key Changes

  1. rdepends-collector.bbclass: Introduces ROBOTICS_SDK_PACKAGE variable (default: "qirp-sdk") to make the mandatory SDK package configurable. Adds this variable to vardeps for proper task signature tracking.

  2. qcom-robotics-sdk.inc: Comments out BB_SETSCENE_ENFORCE_IGNORE_TASKS approach and switches to adding do_collect_rdepends to SDK_RECRDEP_TASKS to ensure the task is properly included in the eSDK dependency chain.

  3. layer.conf: Changes ROBOTICS_PACKAGEGROUP_LIST_DIR from ${MACHINE} to ${MACHINE_ARCH} for better sstate cache sharing across machines with the same architecture.

Critical Issues

  • Medium Severity: The commented-out BB_SETSCENE_ENFORCE_IGNORE_TASKS line should be removed entirely rather than left as a comment to avoid confusion about the intended approach.

[MAINTAINABILITY] Commented-out code should be removed (Medium Severity)

In conf/distro/include/qcom-robotics-sdk.inc, the previous approach using BB_SETSCENE_ENFORCE_IGNORE_TASKS is commented out rather than removed. While the extensive comment block (lines 43-48) explaining the eSDK build context is valuable documentation, the commented-out configuration line (line 49) should be removed entirely.

Issue: Leaving commented-out code in production creates maintenance debt and confusion. Future maintainers may wonder whether this line should be uncommented under certain conditions, or whether it represents an incomplete migration. The comment block above already documents the problem context, so the old solution line serves no purpose.

Recommendation: Remove line 49 entirely. The comment block (lines 43-48) provides sufficient context about the eSDK build constraints, and the new solution using SDK_RECRDEP_TASKS (lines 51-52) is the active approach.

Fixed Code Snippet:

# The inner eSDK build runs with BB_SETSCENE_ENFORCE=1 and only whitelists SDK
# target tasks (%:*). do_collect_rdepends runs on packagegroup recipes, which are
# NOT SDK targets, and its sstate signature is not written into the SDK's
# locked-sigs.inc — so it cannot be setscene-restored inside the eSDK. Allow it
# to execute directly there; the task is cheap and its .list output is still
# published to ROBOTICS_PACKAGEGROUP_LIST_DIR via sstate-outputdirs.

# Add do_collect_rdepends task to target dependency chain to avoid eSDK inner build error
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment on lines +46 to +52
# locked-sigs.inc — so it cannot be setscene-restored inside the eSDK. Allow it
# to execute directly there; the task is cheap and its .list output is still
# published to ROBOTICS_PACKAGEGROUP_LIST_DIR via sstate-outputdirs.
# BB_SETSCENE_ENFORCE_IGNORE_TASKS:append = " *:do_collect_rdepends"

# Add do_collect_rdepends task to target dependency chain to avoid eSDK inner build error
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MAINTAINABILITY] Commented-out code should be removed (Medium Severity)

In conf/distro/include/qcom-robotics-sdk.inc, the previous approach using BB_SETSCENE_ENFORCE_IGNORE_TASKS is commented out rather than removed. While the extensive comment block (lines 43-48) explaining the eSDK build context is valuable documentation, the commented-out configuration line (line 49) should be removed entirely.

Issue: Leaving commented-out code in production creates maintenance debt and confusion. Future maintainers may wonder whether this line should be uncommented under certain conditions, or whether it represents an incomplete migration. The comment block above already documents the problem context, so the old solution line serves no purpose.

Recommendation: Remove line 49 entirely. The comment block (lines 43-48) provides sufficient context about the eSDK build constraints, and the new solution using SDK_RECRDEP_TASKS (lines 51-52) is the active approach.

Fixed Code Snippet
# The inner eSDK build runs with BB_SETSCENE_ENFORCE=1 and only whitelists SDK
# target tasks (%:*). do_collect_rdepends runs on packagegroup recipes, which are
# NOT SDK targets, and its sstate signature is not written into the SDK's
# locked-sigs.inc — so it cannot be setscene-restored inside the eSDK. Allow it
# to execute directly there; the task is cheap and its .list output is still
# published to ROBOTICS_PACKAGEGROUP_LIST_DIR via sstate-outputdirs.

# Add do_collect_rdepends task to target dependency chain to avoid eSDK inner build error
SDK_RECRDEP_TASKS:append = " do_collect_rdepends"

@jialchen-iot

Copy link
Copy Markdown
Contributor

Can you pls confirm this PR still need?

- Scope packagegroup list output under  to prevent file
  conflicts when building multiple machine configs in one workspace
- Rename PACKAGEGROUP_LIST_STAGING_DIR to ROBOTICS_PACKAGEGROUP_LIST_STAGING_DIR
  to avoid collision with Yocto's standard variable
- Register do_collect_rdepends as a proper sstate task (SSTATETASKS) so
  the inner eSDK build can restore it from sstate instead of failing with
  'setscene ignore_tasks'
- Add do_collect_rdepends[vardeps], [dirs], [cleandirs], [sstate-outputdirs]
  and [stamp-extra-info] for correct sstate/stamp behaviour

Signed-off-by: Teng Fan <tengf@qti.qualcomm.com>
Align with standard SDK behavior by using MACHINE_ARCH
to differentiate PACKAGEGROUP_LIST_DIR instead of MACHINE.

Signed-off-by: Teng Fan <tengf@qti.qualcomm.com>
@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: e94c497 "fix: add tcl8 sysroot process to fix esdk build error

  • expect recipe depedency(tcl8) conflict with python3->tcl9 dependency(tcl9).
  • Add tcl8 sysroot preprocess function to resolve conflict.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR makes minor corrections to configuration files in the meta-qcom-robotics-sdk layer:

  1. ci/qcom-distro.yml: Fixes the meta-virtualization repository URL by adding the missing /git/ path component
  2. recipes-bbappends/recipe-devtools/expect/expect_%.bbappend: Removes trailing newline
  3. recipes-bbappends/recipe-devtools/tcl8/tcl8_%.bbappend: Removes trailing newline

Files Changed Summary

File Lines Changed Issues Found Highest Severity
ci/qcom-distro.yml 1 0 None
recipes-bbappends/recipe-devtools/expect/expect_%.bbappend 1 1 Low
recipes-bbappends/recipe-devtools/tcl8/tcl8_%.bbappend 1 1 Low

Critical Issues

No critical issues identified. The changes are primarily cosmetic (whitespace cleanup) and a URL correction.

[Best Practices] Missing FILESEXTRAPATHS in bbappend files - Low Severity

Both bbappend files modify recipes but do not include FILESEXTRAPATHS:prepend declarations. While the current changes don't add file patches, it's a Yocto best practice to include this in bbappends to ensure proper file search path ordering if files are added later.

According to Yocto documentation and this layer's conventions, bbappends should typically start with:

FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

This ensures that if you later add patches, configuration files, or other resources in a subdirectory matching the recipe name, bitbake will find them correctly.

Impact: Currently no functional impact since no files are being added. However, this is a maintainability consideration for future modifications.

Recommendation: Consider adding FILESEXTRAPATHS declarations to follow Yocto best practices, especially since these bbappends are making non-trivial modifications (EXTRA_OECONF changes and sysroot manipulation).


⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review

Comment thread recipes-bbappends/recipe-devtools/expect/expect_5.45.4.bbappend Outdated
- expect recipe depedency(tcl8) conflict with python3->tcl9 dependency(tcl9).
- Add tcl8 sysroot preprocess function to resolve conflict.

Signed-off-by: Teng Fan <tengf@qti.qualcomm.com>
@qualcomm-ai-code-review-assistant

Copy link
Copy Markdown

Qualcomm AI Review

Click to expand Code Review

Reviewed commit: c0e4ffd "fix: add tcl8 sysroot process to fix esdk build error

  • expect recipe depedency(tcl8) conflict with python3->tcl9 dependency(tcl9).
  • Add tcl8 sysroot preprocess function to resolve conflict.

Signed-off-by: Teng Fan tengf@qti.qualcomm.com"

Pull Request Overview

This PR modifies two Yocto bbappend files related to Tcl 8 and expect recipe configuration:

File Lines Changed Issues Found Highest Severity
recipes-bbappends/recipe-devtools/expect/expect_%.bbappend 1 deletion 0 None
recipes-bbappends/recipe-devtools/tcl8/tcl8_%.bbappend 1 modification 0 None

Summary of Changes

  1. expect_%.bbappend: Removes a trailing blank line from the file
  2. tcl8_%.bbappend: Removes the trailing newline at end of file

Key Findings

  • No functional, security, or performance issues identified
  • The changes are cosmetic/formatting in nature

Architecture Compliance

Both files are properly located in recipes-bbappends/recipe-devtools/ following the layer's convention for upstream recipe overrides. The tcl8 bbappend implements a sysroot preprocessing function to create versioned Tcl 8.6 config paths for recipes like expect, which aligns with the layer's integration approach.


⚠️ This review was generated using AI assistance. Please verify all suggestions before applying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qualcomm AI Review


if [ -f ${SYSROOT_DESTDIR}${libdir}/tclConfig.sh ]; then
cp -a ${SYSROOT_DESTDIR}${libdir}/tclConfig.sh \
${SYSROOT_DESTDIR}${libdir}/tcl8.6/tclConfig.sh

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tcl8_${PV}

@@ -0,0 +1 @@
EXTRA_OECONF:append = " --with-tcl=${STAGING_LIBDIR}/tcl8.6"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tcl8_$PV

Signed-off-by: Teng Fan <33081913+TengFan-QC@users.noreply.github.com>
Signed-off-by: Teng Fan <33081913+TengFan-QC@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport wrynose Auto backport to wrynose branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants