Skip to content

Butane merge v2#2235

Draft
prestist wants to merge 1303 commits into
coreos:mainfrom
prestist:butane-merge-v2
Draft

Butane merge v2#2235
prestist wants to merge 1303 commits into
coreos:mainfrom
prestist:butane-merge-v2

Conversation

@prestist

Copy link
Copy Markdown
Collaborator

Initial Butane merge into ignition

yasminvalim and others added 30 commits June 5, 2024 15:42
…able

openshift/v4.16: Stabilize 4.16.0 spec and add openshift 4.17-experimental spec
docs/release-notes.md: update for release Butane 0.21.0
Dockerfile: update to Fedora 40
Step down to non expermental features

Additionaly remove GRUB password support
See: https://issues.redhat.com/browse/MCO-630
- Use "layout" in the context path for errors related to the layout
  entry in the boot_device  configuration.
- Add tests for those error cases.
- Refactor mirror boot_device check for s390x.

Fixes: coreos/butane#484
For fcos 1.6.0-exp & openshift 4.18.0-exp specs, expected to be based on
stable 3.5.0 spec.

See: coreos#1693
See: coreos/fedora-coreos-tracker#1708
add: Support LUKS encryption using IBM CEX secure keys on s390x
prestist and others added 12 commits May 19, 2026 15:59
docs/release-notes: fix openshift quadlets version reference
Dockerfile: update to Fedora 44
docs/release-notes: note Fedora 44 signing key
Config.Validate() warns when a partition on a non-boot disk uses a
label without an explicit number and wipe_table is not set.  However,
when the disk is listed in boot_device.mirror.devices, this warning is
a false positive: processBootDevice() in translate.go will auto-
generate wipe_table: true for mirror disks, but Validate() runs
before translation so it doesn't see the auto-generated wipe_table.

The user can't reasonably suppress this: adding explicit wipe_table:
true is redundant, and adding explicit partition number fields would
break the label-based merge with the auto-generated mirror partitions.

Skip the ErrReuseByLabel check for disks that are listed in
boot_device.mirror.devices.

Fixes: coreos/butane#710

Assisted-by: <anthropic/claude-opus-4.6>
…boot-mirror

fcos: skip ErrReuseByLabel warning for boot_device.mirror disks
Add an optional flag to to enable pretty rust-like error reporting for
butane errors.

This introduces the flags:
- raw-error
- color / colour	(auto, always, or never)

While also respecting the `NO_COLOR` environment variable.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request imports the Butane codebase, including build configurations, Dockerfile, developer skills documentation, and core translation, validation, and utility packages for base spec versions v0_1 through v0_6. The review feedback identifies a critical, recurring vulnerability across several base spec versions (v0_2 through v0_6) in translate.go where addMountUnits dereferences fs.Path or fs.Format pointers without verifying if they are nil, which can lead to nil pointer dereference panics during unvalidated translation.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread butane/base/v0_2/translate.go
Comment thread butane/base/v0_3/translate.go
Comment thread butane/base/v0_4/translate.go
Comment thread butane/base/v0_5/translate.go
Comment thread butane/base/v0_6/translate.go
@prestist prestist force-pushed the butane-merge-v2 branch 6 times, most recently from 39f3d38 to b4a8fee Compare June 11, 2026 15:12
prestist added 7 commits June 17, 2026 13:20
Move all Butane source code, docs, tests, build scripts, and CI
configuration into a butane/ subdirectory in preparation for merging
into the Ignition repository via git merge --allow-unrelated-histories.

Related: coreos/fedora-coreos-tracker#2006
Merge the full Butane repository (github.com/coreos/butane) into the
butane/ subdirectory via git merge --allow-unrelated-histories, after
moving all Butane files into a butane/ subdirectory in the source repo.
This preserves complete Git history with proper rename tracking, so
git blame and git log --follow work correctly for all butane/ files.

Related: coreos/fedora-coreos-tracker#2006
Remove files from the butane/ subtree that are repo-level concerns
now handled by ignition: go.mod, go.sum, vendor/, CI workflows,
packaging configs, linter configs, and AI agent files. The actual
source code, docs, build scripts, tests, and opencode skills are
preserved.
Rewrite all internal Butane import paths from github.com/coreos/butane/
to github.com/coreos/ignition/v2/butane/ so that Butane's code is part
of the single Ignition Go module. Add github.com/clarketm/json as a
new dependency required by Butane, and bump go-systemd to v22.7.0.
Also fix stray ')' in license headers across Butane files.
Teach Ignition's config parser to accept Butane YAML configs in
addition to Ignition JSON. Parse() now tries Ignition JSON first and,
on failure, attempts to transpile the input as a Butane config using
the integrated butane/ library. This allows users to provide Butane
configs directly to instances without a separate transpilation step.

Key design decisions:
- JSON is tried first for zero behavioral change on existing configs
- On both failures, the original Ignition error is returned
- source: local properly errors since FilesDir is unavailable at boot
- OpenShift variant configs produce MachineConfig YAML which fails
  Ignition parsing, as those configs go through MCO

Related: coreos/fedora-coreos-tracker#2006
- build: Source butane/build to produce butane binary, restore CGO_ENABLED=1
- butane/build: Use module path, accept VERSION from parent
- test: Add butane/ to license header check paths
- Makefile: Install butane binary to /usr/bin
- config: Add unit tests for Butane YAML parsing
- config: Use DeserializeOptions (go-systemd v22.7.0)
- butane: Fix errcheck lint issues
- butane: Remove TMT tests (conflict with ignition TMT discovery)
@PeaceRebel

Copy link
Copy Markdown

So far LGTM. No changes in CI jobs? How does the packaging change with this?

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.