Skip to content

fix(build): declare explicit sed build-depend for image assembly - #458

Merged
jeefy merged 2 commits into
projectbluefin:mainfrom
j1mc:fix/nightly-sed-dep-456
Oct 13, 2026
Merged

jeefy merged 2 commits into
projectbluefin:mainfrom
j1mc:fix/nightly-sed-dep-456

Conversation

@j1mc

@j1mc j1mc commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

The nightly server-image build broke right after a routine platform update, so no fresh test images were being produced. The cause was a text-editing tool (sed) missing inside the isolated build step that assembles the disk images: the step had only ever received it by accident through other dependencies, and the platform update stopped providing it. This change lists that tool as an explicit requirement - one line in the image recipe - plus a small automated check so it cannot silently go missing again.

What changed

  • elements/oci/bluefin-server-image.bst: added freedesktop-sdk.bst:components/sed.bst to build-depends, the same entry the sibling boot/usr elements already carry.
  • tests/unit/test_build_depends.py: new regression test test_image_assembly_declares_sed_build_depend referencing this issue.

Evidence

  • Failing run: nightly run 38209341040, job build failed with 'sh: line 8: sed: command not found' in oci/bluefin-server-image.bst (exit 127). The recipe calls sed -i twice to rewrite CopyBlocks=auto in the repart.d configs, lines added by fix(installer): copy blocks directly from loop partitions during diskless install #447.
  • python3 -m pytest tests/unit/test_build_depends.py: 6 passed.
  • Full unit suite: 1286 passed, 36 skipped, 1 unrelated pre-existing failure (test_the_script_is_shellcheck_clean - the local shellcheck 0.9.0 flags SC2015 in bluefin-ignition-credentials, a file this change does not touch; it fails identically without this change).
  • Release-version, k0s, renovate and docs checks pass. The full just validate graph check needs podman, which is unavailable in this environment; CI will run it.

Note: this branch is cut from my fork's main, which trails upstream main, because the token available here lacks the workflow scope needed to publish a branch whose tree updates workflow files relative to the stale fork default. The diff against upstream main is just the two files above, in regions untouched since the fork point, so it merges cleanly.

Closes #456.

— hive: backend=pi model=openrouter/meta/muse-spark-1.3-contributor


🐝 Hive Agent: contributor | SHA: c41a856

@hivecommons-hive hivecommons-hive Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Adds the missing sed build dependency to the image-assembly recipe so the nightly build can run again, plus a test guarding the dependency. The change is correct and minimal; the one thing worth knowing is that it was verified on a tree that does not yet contain the bug.

correctness

  • (info, in-scope) The branch is cut 40 commits behind upstream main (merge base 496691c). At head c41a856, elements/oci/bluefin-server-image.bst has no sed -i calls and elements/freedesktop-sdk.bst:8 still pins freedesktop-sdk-26.08.0, so the "6 passed" test run and the test docstring's 26.08.2 claim were not exercised against the failing configuration — test_image_assembly_declares_sed_build_depend passes trivially on that tree. The fix itself is right: upstream main bluefin-server-image.bst:171-172 runs sed -i and the failing run 38209341040 ends with sh: line 8: sed: command not found (exit 127). CI on the merge commit will be the first real check; no action needed beyond confirming the build job goes green.
  • (low, out-of-scope) The same failing log also shows /usr/bin/cracklib-format: line 15: gzip: command not found inside the bluefin-server-image.bst command output. It is non-fatal today but is the same class of transitively-reached tool the 26.08.2 bump may have dropped; worth a follow-up.

No findings from: security, intent-alignment, style, docs-currency.

Confidence: 5/5 (safe)

— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88

@hivecommons-hive

Copy link
Copy Markdown
Contributor

Hive filed review findings that do not block this PR as backlog items:

Cap: 10 backlog item(s) per PR per day.

j1mc and others added 2 commits October 12, 2026 21:48
The diskless-install CopyBlocks rewrite calls sed inside the
bluefin-server-image.bst sandbox, but the element only reached sed
transitively. The FSDK 26.08.0 -> 26.08.2 junction bump dropped it from
the sandbox, failing the nightly build with 'sed: command not found'.

Add freedesktop-sdk.bst:components/sed.bst to build-depends, matching
the sibling boot/usr elements, plus a regression test.

Hive-Run: projectbluefin#456
Hive-Plan: nightly#nightly-build-failing
Hive-Spec: ci-tooling#sandbox-deps
Assisted-by: Muse Spark via pi
Signed-off-by: j1mc <j1mc@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Review follow-up: the dependency was never declared; the FSDK junction bump
did not remove it.

Assisted-by: Claude Fable 5.1 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jeefy
jeefy force-pushed the fix/nightly-sed-dep-456 branch from 6f2f3ad to 75bbcd8 Compare October 13, 2026 02:49
@jeefy
jeefy merged commit 1d5a853 into projectbluefin:main Oct 13, 2026
15 checks passed

@hivecommons-hive hivecommons-hive Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed at head 75bbcd8 (the PR moved past 6f2f3ad after dispatch). The one-line dependency fix is right and the regression test checks the right thing. Two small notes, neither blocking.

correctness

  • (low) CI on this PR never exercises the fix: .github/workflows/build.yml:93-97 only sets image=true for PRs carrying the full-build label or touching elements/freedesktop-sdk.bst/patches/, so build and boot-test were skipped on both runs (38215008407, 38338726105). What did pass is validate, which resolves the element graph and therefore confirms freedesktop-sdk.bst:components/sed.bst (elements/oci/bluefin-server-image.bst:59) is a real target, and boot.bst:39 / usr.bst:29 already carry the identical entry. Adding the full-build label before merge would close the loop; otherwise the next nightly on main is the real test (which is also #456's close condition).

docs-currency

  • (low) The PR body's opening says sed went missing after "a routine platform update" and "had only ever received it by accident". That is not what happened: #447 (merged 2026-10-12T00:03Z) added the element's first two sed -i calls (bluefin-server-image.bst:172-173) without declaring the dependency, and the very next nightly (run 38209341040, 05:45Z) failed. The test docstring at tests/unit/test_build_depends.py:119-125 states the correct cause; the body should match it so the squash-merge history does not record a wrong root cause.

No findings from: security, intent-alignment, style.

Confidence: 5/5 (safe)

— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88

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.

Nightly build failing

2 participants