Skip to content

fix(docker): restore selected-plugin builds on Podman#103814

Merged
steipete merged 1 commit into
mainfrom
codex/fix-podman-workspace-deps
Jul 10, 2026
Merged

fix(docker): restore selected-plugin builds on Podman#103814
steipete merged 1 commit into
mainfrom
codex/fix-podman-workspace-deps

Conversation

@steipete

Copy link
Copy Markdown
Contributor

Closes #103741

What Problem This Solves

Fixes an issue where operators building source images with selected plugins could hit MODULE_NOT_FOUND or EACCES in the early workspace-deps stage on Podman/Buildah hosts.

Reported and verified on the affected amd64 Podman host by @sallyom.

Why This Change Was Made

The stage now brings its selector, workspace packages, and bundled plugin sources in through portable COPY instructions. Builder-owned cache mounts elsewhere remain unchanged, and only extracted manifests plus the validated plugin selection cross into later stages, so the final runtime image contract stays the same.

This keeps one Dockerfile path for Docker BuildKit and Podman instead of adding a Buildah-only bind relabel option.

User Impact

Podman users can build selected-plugin source images without build-context bind sources disappearing or becoming unreadable. Unknown, invalid, and ambiguous plugin selections still fail closed.

Evidence

  • Sally's issue repro: the same COPY shape completed workspace-deps on the affected amd64 host.
  • Blacksmith Testbox through Crabbox, x86_64, tbx_01kx6cj8s7qva0bbgkxnbm4ana (Actions run 29106270855):
    • corepack pnpm test src/dockerfile.test.ts test/scripts/docker-plugin-selection.test.ts — 32 tests passed, including the new stage-scoped no-bind regression.
    • Docker 28 BuildKit and rootless Podman 4.9.3 / Buildah 1.33.7 both built --target workspace-deps --platform linux/amd64 with OPENCLAW_EXTENSIONS=vault,codex; Podman rejected missing-plugin with the expected fail-closed error.
    • scripts/e2e/docker-selected-plugins.sh — unknown selection, dependency-only selections, full image build, and x64 runtime inspection passed.
    • pnpm check:changed remote child — fail-safe all lanes passed, including project typechecks, core/extensions/scripts lint, guards, and import-cycle checks.
  • .agents/skills/autoreview/scripts/autoreview --mode local — clean; no accepted or actionable findings.

AI-assisted: yes (Codex). The implementation and proof were reviewed before publication.

Fixes #103741. Reported and verified on amd64 Podman by @sallyom.
@openclaw-barnacle openclaw-barnacle Bot added docker Docker and sandbox tooling size: XS maintainer Maintainer-authored PR labels Jul 10, 2026
@steipete

Copy link
Copy Markdown
Contributor Author

Land-ready proof for c64290d854df26c3485b90f95cebb6f4ec521b06:

  • Focused regression: corepack pnpm test src/dockerfile.test.ts test/scripts/docker-plugin-selection.test.ts passed 32 tests on Blacksmith Testbox through Crabbox tbx_01kx6cj8s7qva0bbgkxnbm4ana (Actions run 29106270855); repeated after rebase with the same result.
  • Cross-builder behavior: Docker 28 BuildKit and rootless x86_64 Podman 4.9.3 / Buildah 1.33.7 both built workspace-deps for vault,codex; Podman rejected missing-plugin with the expected fail-closed error.
  • Product path: scripts/e2e/docker-selected-plugins.sh passed unknown and dependency-only selection, the full selected-plugin image build, and x64 final-runtime inspection.
  • Broad local-equivalent gate: remote-child pnpm check:changed selected fail-safe all lanes and passed project typechecks, core/extensions/scripts lint, guards, and import-cycle checks.
  • Review: fresh structured autoreview returned no accepted or actionable findings.
  • Authoritative CI: run 29107295190 passed at the exact PR head; OPENCLAW_TESTBOX=1 scripts/pr prepare-run 103814 then completed successfully with gates_mode=hosted_exact_or_recent_rebase.

Before/after: current main bind-mounts the three build-context inputs and the linked issue records MODULE_NOT_FOUND followed by EACCES on the affected amd64 Podman host. The same COPY shape completed there, and the independent x86_64 Testbox proof above confirms Docker, rootless Podman, validation, and final-image behavior.

Known proof gaps: none. No user command or configuration changes; release-note metadata and @sallyom reporter credit are in the PR body, while repository policy leaves CHANGELOG.md to release generation.

@steipete
steipete merged commit 1dcbcce into main Jul 10, 2026
120 of 122 checks passed
@steipete
steipete deleted the codex/fix-podman-workspace-deps branch July 10, 2026 16:33
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docker Docker and sandbox tooling maintainer Maintainer-authored PR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Podman build cannot read selected-plugin Dockerfile source bind mounts on amd64

1 participant