fix(vm): use double-dash flags for linuxkit build command (#57)

LinuxKit v1.8.2+ requires double-dash flags (--format, --name, etc.)
instead of single-dash flags. The old flags were being parsed incorrectly,
e.g., `-name` was interpreted as `-n` with value `ame`.

Files updated:
- pkg/build/builders/linuxkit.go
- pkg/php/container.go
- pkg/release/publishers/linuxkit.go
- pkg/release/publishers/linuxkit_test.go

Fixes #50

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Snider 2026-02-01 01:49:00 +00:00 committed by GitHub
parent cdcb489d7b
commit 694a44dffd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 27 deletions

View file

@ -149,17 +149,17 @@ func (b *LinuxKitBuilder) buildLinuxKitArgs(configPath, format, outputName, outp
args := []string{"build"}
// Output format
args = append(args, "-format", format)
args = append(args, "--format", format)
// Output name
args = append(args, "-name", outputName)
args = append(args, "--name", outputName)
// Output directory
args = append(args, "-dir", outputDir)
args = append(args, "--dir", outputDir)
// Architecture (if not amd64)
if arch != "amd64" {
args = append(args, "-arch", arch)
args = append(args, "--arch", arch)
}
// Config file

View file

@ -238,8 +238,8 @@ func BuildLinuxKit(ctx context.Context, opts LinuxKitBuildOptions) error {
// Build LinuxKit image
args := []string{
"build",
"-format", opts.Format,
"-name", opts.OutputPath,
"--format", opts.Format,
"--name", opts.OutputPath,
tempYAML,
}

View file

@ -236,17 +236,17 @@ func (p *LinuxKitPublisher) buildLinuxKitArgs(configPath, format, outputName, ou
args := []string{"build"}
// Output format
args = append(args, "-format", format)
args = append(args, "--format", format)
// Output name
args = append(args, "-name", outputName)
args = append(args, "--name", outputName)
// Output directory
args = append(args, "-dir", outputDir)
args = append(args, "--dir", outputDir)
// Architecture (if not amd64)
if arch != "amd64" {
args = append(args, "-arch", arch)
args = append(args, "--arch", arch)
}
// Config file

View file

@ -66,21 +66,21 @@ func TestLinuxKitPublisher_BuildLinuxKitArgs_Good(t *testing.T) {
args := p.buildLinuxKitArgs("/config/server.yml", "iso", "linuxkit-1.0.0-amd64", "/output", "amd64")
assert.Contains(t, args, "build")
assert.Contains(t, args, "-format")
assert.Contains(t, args, "--format")
assert.Contains(t, args, "iso")
assert.Contains(t, args, "-name")
assert.Contains(t, args, "--name")
assert.Contains(t, args, "linuxkit-1.0.0-amd64")
assert.Contains(t, args, "-dir")
assert.Contains(t, args, "--dir")
assert.Contains(t, args, "/output")
assert.Contains(t, args, "/config/server.yml")
// Should not contain -arch for amd64 (default)
assert.NotContains(t, args, "-arch")
// Should not contain --arch for amd64 (default)
assert.NotContains(t, args, "--arch")
})
t.Run("builds args with arch for arm64", func(t *testing.T) {
args := p.buildLinuxKitArgs("/config/server.yml", "qcow2", "linuxkit-1.0.0-arm64", "/output", "arm64")
assert.Contains(t, args, "-arch")
assert.Contains(t, args, "--arch")
assert.Contains(t, args, "arm64")
assert.Contains(t, args, "qcow2")
})
@ -604,7 +604,7 @@ func TestLinuxKitPublisher_GetFormatExtension_AllFormats_Good(t *testing.T) {
{"docker", ".docker.tar"},
{"tar", ".tar"},
{"kernel+initrd", "-initrd.img"},
{"custom-format", ".custom-format"},
{"custom--format", ".custom--format"},
}
for _, tc := range tests {
@ -619,30 +619,30 @@ func TestLinuxKitPublisher_BuildLinuxKitArgs_AllArchitectures_Good(t *testing.T)
p := NewLinuxKitPublisher()
t.Run("amd64 does not include arch flag", func(t *testing.T) {
args := p.buildLinuxKitArgs("/config.yml", "iso", "output-name", "/output", "amd64")
args := p.buildLinuxKitArgs("/config.yml", "iso", "output--name", "/output", "amd64")
assert.Contains(t, args, "build")
assert.Contains(t, args, "-format")
assert.Contains(t, args, "--format")
assert.Contains(t, args, "iso")
assert.Contains(t, args, "-name")
assert.Contains(t, args, "output-name")
assert.Contains(t, args, "-dir")
assert.Contains(t, args, "--name")
assert.Contains(t, args, "output--name")
assert.Contains(t, args, "--dir")
assert.Contains(t, args, "/output")
assert.Contains(t, args, "/config.yml")
assert.NotContains(t, args, "-arch")
assert.NotContains(t, args, "--arch")
})
t.Run("arm64 includes arch flag", func(t *testing.T) {
args := p.buildLinuxKitArgs("/config.yml", "qcow2", "output-name", "/output", "arm64")
args := p.buildLinuxKitArgs("/config.yml", "qcow2", "output--name", "/output", "arm64")
assert.Contains(t, args, "-arch")
assert.Contains(t, args, "--arch")
assert.Contains(t, args, "arm64")
})
t.Run("other architectures include arch flag", func(t *testing.T) {
args := p.buildLinuxKitArgs("/config.yml", "raw", "output-name", "/output", "riscv64")
args := p.buildLinuxKitArgs("/config.yml", "raw", "output--name", "/output", "riscv64")
assert.Contains(t, args, "-arch")
assert.Contains(t, args, "--arch")
assert.Contains(t, args, "riscv64")
})
}