Skip to content

kernel: add a pinned manifest alongside the branch-tracking one - #1

Open
yuichi-kusakabe wants to merge 1 commit into
yhamamachi:android-17-xenvm-sh-mainfrom
yuichi-kusakabe:android-17-xenvm-rpi-pinned
Open

kernel: add a pinned manifest alongside the branch-tracking one#1
yuichi-kusakabe wants to merge 1 commit into
yhamamachi:android-17-xenvm-sh-mainfrom
yuichi-kusakabe:android-17-xenvm-rpi-pinned

Conversation

@yuichi-kusakabe

Copy link
Copy Markdown

What

Add pinned-common-android17-6.18.xml as a second entry point, next to default.xml.
Nothing existing is modified.

default.xml                        unchanged -- tracks branches, for development
pinned-common-android17-6.18.xml   new       -- every project pinned, for product builds

Why

The manifest this branch ships names its projects by branch (main-kernel-2026,
android17-6.18, gbl-android17, u-boot-android17), so repo sync against one manifest
revision produces a different tree on a different day. That is what a development branch
wants. A product build that has to be reproducible from a recorded revision needs the
opposite.

Rather than change how default.xml works, this adds an alternative that repo init -m
can select explicitly, so both workflows are available from the same branch.

What the new file is

  • The output of repo manifest -r from a sync that completed and produced a booting guest
    kernel: 59 projects, each with an explicit revision.
  • upstream= and dest-branch= are preserved, so repo sync still knows which branch a
    project tracks and repo start still works.
  • Self-contained (remotes, default, all projects; no <include>), so
    repo init -m pinned-common-android17-6.18.xml works on its own.
  • The XenVM xen-virtual-device overlay from common-android17-6.18-override.xml is folded
    in, because repo manifest -r resolves includes and emits one flat list. Its revision is
    identical to the one the override file pins (e016d45a).

Reconciles with what this branch already has: 58 projects in
common-android17-6.18.xml + 1 overlay = 59.

Notes for review

  • Two entries in the new file still name a branch, and both are inert:
    <default revision="main-kernel-2026"> is never consulted because all 59 projects carry
    their own revision, and the <superproject> entry is not used by a plain repo sync.
    They are kept because they are what repo manifest -r emits.
  • default.xml, common-android17-6.18.xml and common-android17-6.18-override.xml are
    byte-identical to before, so repo init -m default.xml (and the default) behave
    exactly as they do today.
  • xen-troops pins the same way on common-android17-6.18-xenvm-trout-ih-main (58 of 58
    projects carry a SHA there), so the arrangement is not new to this family of manifests —
    only its being optional here is.

Verification

The GKI 6.18 kernel built from this manifest boots the AAOS 17 guest under Xen as the
Android domain of the AGL SoDeV cockpit. Verified on 2026-08-18 in all four
configurations of that demo (Raspberry Pi 4 and Pi 5, each with a Zephyr and a thin-Linux
control domain): the guest reports 6.18.32-android17-5, reaches
sys.boot_completed=1, and its virtio devices come up — the xen-virtual-device overlay
in this manifest is what provides them.

Context

This is one of two changes needed to build the XenVM guest with Android 17 for the AGL
SoDeV Raspberry Pi cockpit; the other is in android_manifest (Mesa pinned at 25.3.6,
which the Android 17 toolchain needs). Both are submitted upstream rather than carried
downstream, because the Pi 5 build has to be the same binary the R-Car V4H demo builds.

The manifest this branch ships names its projects by branch -- main-kernel-2026,
android17-6.18, gbl-android17, u-boot-android17 -- so `repo sync` against one
manifest revision produces a different tree on a different day. That is what a
development branch wants. A product build that has to be reproducible from a
recorded revision needs the opposite.

Rather than change how default.xml works, this adds a second entry point next to
it. Nothing existing is touched: default.xml, common-android17-6.18.xml and
common-android17-6.18-override.xml are unmodified, so `repo init -m default.xml`
(and the default) behave exactly as before.

  default.xml                        unchanged -- tracks branches, for development
  pinned-common-android17-6.18.xml   new       -- every project pinned, for products

The new file is the output of `repo manifest -r` from a sync that completed and
produced a booting guest kernel: 59 projects, each with an explicit revision,
with upstream= and dest-branch= preserved so `repo sync` still knows which branch
a project tracks and `repo start` still works. It is self-contained (remotes,
default, all projects), so `repo init -m pinned-common-android17-6.18.xml` works
on its own. The XenVM xen-virtual-device overlay from the -override.xml file is
folded in, because `repo manifest -r` resolves includes and emits one flat list.

Two entries in it still name a branch and both are inert: <default
revision="main-kernel-2026"> is never consulted because all 59 projects carry
their own revision, and the superproject entry is not used by a plain `repo sync`.

xen-troops pins the same way on common-android17-6.18-xenvm-trout-ih-main (58 of
58 projects carry a SHA there), so the arrangement is not new to this family of
manifests -- only its being optional here is.

Built and run: the GKI 6.18 kernel built from this manifest boots the AAOS 17
guest under Xen as the Android domain of the AGL SoDeV cockpit. Verified on
2026-08-18 in all four configurations of that demo (Raspberry Pi 4 and Pi 5, each
with a Zephyr and a thin-Linux control domain): the guest reports
6.18.32-android17-5, reaches sys.boot_completed=1, and its virtio devices come up
(the xen-virtual-device overlay in this manifest is what provides them).

Signed-off-by: Yuichi Kusakabe <yuichi_kusakabe@jp.honda>
yuichi-kusakabe added a commit to automotive-grade-linux/sodev-demo-workspace-rpi that referenced this pull request Sep 4, 2026
The AAOS guest kernel component asks its manifest repository for
pinned-common-android17-6.18.xml, an entry point that adds every project's SHA
alongside the branch-tracking manifest, so that a workspace revision resolves to
one tree instead of whatever the tracked branches point at that day. That entry
point is not in the upstream branch yet:

  yhamamachi/android_kernel_manifest#1  (open)

So both boards point at a fork branch that is upstream's own
android-17-xenvm-sh-main plus exactly that one commit, and nothing else:
yuichi-kusakabe/android_kernel_manifest @ android-17-xenvm-rpi-pinned. Without
it `repo init -m pinned-common-android17-6.18.xml` fails on a manifest that has
no such file, so this is what makes DomA fetchable, not a preference.

WHEN THE PULL REQUEST LANDS: revert this commit and bump the two rev lines it
restores to the upstream branch's new head. The revert is why this is a commit of
its own -- the AOSP-side pin in the next commit is a separate decision with a
separate lifetime, and lumping them together would mean this one could not be
undone without undoing that one too.

The branch is never force-pushed and the fork stays public while any yaml here
names that revision.

Assisted-by: Claude Code:claude-opus-5[1m]
Signed-off-by: Yuichi Kusakabe <yuichi_kusakabe@jp.honda>
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.

1 participant