Skip to content

Release: ff-merge master-next → master (2026-W33) - #16655

Open
rpcme wants to merge 61 commits into
masterfrom
master-next
Open

Release: ff-merge master-next → master (2026-W33)#16655
rpcme wants to merge 61 commits into
masterfrom
master-next

Conversation

@rpcme

@rpcme rpcme commented Aug 11, 2026

Copy link
Copy Markdown
Member

Weekly release — merge from master-next into master.

Summary (50 commits)

  • greengrass-lite: upgrade 2.5.1 → 2.6.0 (with Unity test dep)
  • aws-sdk-cpp: upgrade 1.11.865 → 1.11.867
  • aws-cli-v2: upgrade 2.36.18 → 2.36.20
  • aws-c-io: upgrade 0.27.5 → 0.27.6
  • python3-botocore: upgrade 1.43.66 → 1.43.68
  • python3-boto3: upgrade 1.43.66 → 1.43.68
  • CI fixes: BB_HASHSERVE/OEEquivHash for fork PRs and EFS/NFS environments
  • CI fix: release name uppercase for vars lookup + status check alignment

meta-aws-maintainer and others added 18 commits August 7, 2026 03:49
The workflow derives a release name (e.g., 'master') from the branch
and uses it to dynamically look up repository variables via bracket
notation: vars[format('HASHSERV_{0}', release)].

GitHub stores variable names uppercased (HASHSERV_MASTER) and bracket
notation is case-sensitive, so 'HASHSERV_master' resolves to empty.
This causes bitbake to fail with:
  ERROR: OEEquivHash requires BB_HASHSERVE to be set

Fix: uppercase the release name before outputting it so the lookup
matches the stored variable names.
For pull requests from forks, GitHub Actions does not expose
repository variables (vars context is empty). This causes
BB_HASHSERVE to be set to an empty string, which makes bitbake
fail with:
  ERROR: OEEquivHash requires BB_HASHSERVE to be set

Fix: only set BB_HASHSERVE and BB_SIGNATURE_HANDLER when the
repository variable is available. Fork PRs will build without
hash equivalence (no sstate sharing) but will still succeed.
The previous fix (PR #16624) used escaped quotes inside a
bash -c '...' single-quoted heredoc:
  if [ -n \"\" ]; then

Inside single quotes, \"\" produces literal quote characters,
which is a non-empty 2-char string - so the test always passes.

Fix: assign the GitHub expression to a shell variable first
(HASHSERV=<value>), then test with proper double-quoted shell
variable expansion: if [ -n "$HASHSERV" ]; then

This correctly evaluates to false when the expression is empty
(fork PRs where vars context is unavailable).
Modern OE-core master enables OEEquivHash by default. When we don't
set BB_HASHSERVE (fork PRs where vars context is empty), bitbake
falls back to a local sqlite-based hash equivalency DB. This fails
on the CI runner because /sstate-cache is an NFS mount:

  ERROR: Hash equivalency database location (BB_HASHSERVE_DB_DIR=/sstate-cache)
  cannot be on a NFS mount due to potential NFS locking issues

Fix: explicitly set BB_SIGNATURE_HANDLER = "OEBasicHash" in the else
branch to fully disable hash equivalence for fork PRs. Internal PRs
continue using OEEquivHash with the remote hashserv.
OE-core master now enables OEEquivHash by default in the distro
config. Setting BB_SIGNATURE_HANDLER=OEBasicHash in local.conf
cannot override this (distro config takes precedence). Without a
valid BB_HASHSERVE, bitbake tries to use a local sqlite DB at
SSTATE_DIR which fails on the NFS-mounted /sstate-cache:

  ERROR: Hash equivalency database location (BB_HASHSERVE_DB_DIR)
  cannot be on a NFS mount

Fix: use BB_HASHSERVE="auto" as fallback for fork PRs. This starts
a local in-memory hash equivalency server within bitbake, satisfying
the OEEquivHash requirement without needing network access or a
writable non-NFS filesystem.

- Internal PRs: BB_HASHSERVE=<remote server> (shared sstate)
- Fork PRs: BB_HASHSERVE=auto (local, no sharing but functional)
BB_HASHSERVE=auto starts a local hash equivalency server, but it
still needs a sqlite DB on disk. BB_HASHSERVE_DB_DIR defaults to
SSTATE_DIR (/sstate-cache) which is EFS (NFS protocol), causing:

  ERROR: Hash equivalency database location (BB_HASHSERVE_DB_DIR)
  cannot be on a NFS mount

Fix: explicitly set BB_HASHSERVE_DB_DIR=/tmp/hashserv-db which is
always local to the CodeBuild runner instance.
greengrass-lite 2.6.0 added Unity (ThrowTheSwitch/Unity) to its
fc_deps.json for ptest support. Without pre-fetching the source,
the build fails with:
  fatal error: unity_internals.h: No such file or directory

Add Unity to SRC_URI, SRCREV, FETCHCONTENT_SOURCE_DIR, and
SRCREV_FORMAT following the same pattern as the other FetchContent
dependencies (coreMQTT, sigv4, gg_sdk).

The version verification in do_configure:prepend is conditional on
the unity entry existing in fc_deps.json, making this compatible
with both 2.5.1 (no unity) and 2.6.0+ (has unity).
- Updated SRCREV_ggl to 2.6.0 release (283b286c)
- Updated SRCREV_sdk from v1.0.3 to v1.0.4
- Added Unity test framework as FetchContent dependency (SRCREV_unity)
- Removed 002-fix-maybe-uninitialized.patch (fixed upstream)
- Added GCC 16 workaround flags: -Wno-error=format-security,
  -Wno-error=int-conversion, -Wno-error=maybe-uninitialized (LTO)

Co-authored-by: Greg Breen <gregbreen@users.noreply.github.com>
@rpcme
rpcme requested a review from a team as a code owner August 11, 2026 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants