Skip to content

automation: build x86_64 on the Edera host config, and repair failed rebase builds - #60

Merged
kaniini merged 3 commits into
edera/mainlinefrom
automation/host-config-build
Oct 26, 2026
Merged

kaniini merged 3 commits into
edera/mainlinefrom
automation/host-config-build

Conversation

@kaniini

@kaniini kaniini commented Oct 26, 2026 •

Copy link
Copy Markdown

Two changes to the edera/mainline rebase automation. The third commit adds rebase-build.yml, which the second commit uses but left out: the kernel's .gitignore hides dot-directories from git add -A.

1. Build x86_64 on the Edera host config

The rebase acceptance build (kernel-build.sh, run by the workflow and by the rebase skill) now builds x86_64 on the Edera host config instead of bare defconfig.

  • Each run fetches the tip of main in edera-dev/linux-kernel-oci and merges configs/x86_64/host.config over defconfig with merge_config.sh. This is how linux-kernel-oci applies it: the file is a fragment against x86_64_defconfig and omits SMP, NET and anything else that matches defconfig. The log records the linux-kernel-oci commit it used.
  • After the merge, the Edera options are still forced on as built-ins and checked after olddefconfig. The host config sets CONFIG_OPENPAX=n and builds 9P/Xen, virtio-gpu and the Hyper-V network drivers as modules, so a vmlinux build would otherwise never compile them. OpenPaX (softmode, xattr flags, mprotect, emutramp) stays on in the test build.
  • AGP is added to the x86_64 forced list because host.config has it =m, which caps DRM at m.
  • arm64 is unchanged (defconfig).

2. Repair a rebase whose build fails instead of proposing it

When the independent build failed, the rebase went straight to a pull request. In practice that was a run Claude never finished. The Bash tool's two-minute default timeout cannot hold a kernel build, so the build went to the background and the session ended while it waited (#47: "Waiting for the x86 build to confirm the attach_dev breakage"; #35 the same).

  • Longer timeout: the rebase step gets a 90-minute Bash timeout. The skill now says to run builds in the foreground and to keep fixing and rebuilding until both arches pass; a failing build is not a finished rebase.
  • Repair round: if the independent build still fails, a new read-only fix job hands Claude its branch and the build logs. It follows a new "Repairing a failed build" section of the skill: fix the downstream commit that broke, rebuild both arches until they pass, and update the report's Build fixes and Builds sections.
  • Re-check: a repaired branch is verified and built again from scratch (rebuild). The checker now runs on whichever branch is final.
  • Publish: it takes the repaired branch and report when there is one, and says so in the pull request. If the repair round fixed nothing, it posts that round's report.
  • Shared build job: the build job moves to a reusable rebase-build.yml, so the first build and the rebuild are the same job. Each build's log is kept as an artifact.
  • Selftest: automation-selftest.yml now also runs when rebase-build.yml changes.

A repair changes downstream commits, so a repaired branch still shows drift and still goes to review rather than being pushed. What changes is that the reviewer gets a branch that builds.

Testing

  • Host config: I ran kernel-build.sh x86_64 locally against edera/mainline at 017f96b23bf1, using linux-kernel-oci at db1c8e94a6d6. Every forced option survived olddefconfig, including all OPENPAX* at =y, and vmlinux linked. Two earlier attempts failed with exit 3, which led to this design: using host.config as the whole .config lost SMP/NET and everything that depends on them, and without AGP forced on, DRM stayed at m.
  • Repair round: checked statically only. Every needs.* and steps.* reference resolves, the reusable workflow's inputs match its callers, and every run: block parses with bash -n. actionlint was not run. The fix/rebuild path has not run in Actions; the first nightly with a build failure will be its first real test.
  • arm64: not built; its config path is unchanged.

edera/6.18-lts runs its own copy of this automation; #61 ports this PR there.

The acceptance build judged x86_64 against defconfig with the Edera
options forced on, which is not the kernel we ship. Merge the latest
configs/x86_64/host.config from edera-dev/linux-kernel-oci over
defconfig first, the way linux-kernel-oci itself applies it (the file
is a fragment against x86_64_defconfig and omits SMP, NET and the rest
of what matches it), and log the commit it came from.

The Edera options are still forced on as built-ins afterwards: the host
config builds OpenPaX out and 9P/Xen, virtio-gpu and the Hyper-V
network drivers as modules, which a vmlinux build would never compile.
AGP joins that list on x86_64 because host.config has it as a module,
which caps DRM at m.

arm64 is unchanged.
A rebase whose independent build failed went straight to a pull request,
and in practice that was a run Claude never finished: the Bash tool's
two-minute default timeout cannot hold a kernel build, so the build went
to the background and the session ended "waiting for the x86 build"
(#47, and #35 before it). Nobody saw the error until a reviewer did.

Give the rebase step a 90-minute Bash timeout, and tell the skill to run
builds in the foreground and to keep fixing and rebuilding until both
pass rather than treat a failing build as an outcome to report.

If the independent build still fails, a new read-only fix job hands
Claude its branch and the build logs for one repair round, following a
new "Repairing a failed build" section of the skill. A repaired branch
is verified and built again from scratch before publish judges it; the
checker now runs on whichever branch is final. Publish takes the
repaired branch and report when there is one, says so in the pull
request, and keeps the repair round's report when it repaired nothing.

The build job moves to a reusable rebase-build.yml so the first build
and the rebuild are the same job, and it now keeps each build's log as
an artifact for the repair round to read.

A repair changes downstream commits, so a repaired branch still shows
drift and still goes to review rather than being pushed: what changes is
that the reviewer gets a branch that builds.
@kaniini kaniini changed the title automation: build x86_64 on the Edera host config automation: build x86_64 on the Edera host config, and repair failed rebase builds Oct 26, 2026
The previous commit moved the build job into rebase-build.yml and calls
it twice, but the file itself never made it into the commit: the
kernel's .gitignore ignores dot-directories, so it has to be added with
-f. Without it, upstream-rebase.yml calls a workflow that does not exist.
@kaniini
kaniini merged commit cde3385 into edera/mainline Oct 26, 2026
2 checks passed
@github-actions

Copy link
Copy Markdown

Backport to edera/6.18-lts: not needed

Nothing to backport: every commit of #60 is already on edera/6.18-lts (5330eb8d79e6), changes only automation, or is no longer an Edera commit on edera/mainline.

Run log

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