For now all it does is represent the name of the runner and what requirements it has of the build pipeline. Move some package definitions from the runner package set to where it belongs.
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package manifest
|
|
|
|
import (
|
|
"github.com/osbuild/osbuild-composer/internal/osbuild2"
|
|
)
|
|
|
|
// A VPCPipeline turns a raw image file into qemu-based image format, such as qcow2.
|
|
type VPCPipeline struct {
|
|
BasePipeline
|
|
|
|
imgPipeline *LiveImgPipeline
|
|
filename string
|
|
}
|
|
|
|
// NewVPCPipeline createsa new Qemu pipeline. imgPipeline is the pipeline producing the
|
|
// raw image. The pipeline name is the name of the new pipeline. Filename is the name
|
|
// of the produced image.
|
|
func NewVPCPipeline(m *Manifest,
|
|
buildPipeline *BuildPipeline,
|
|
imgPipeline *LiveImgPipeline,
|
|
filename string) *VPCPipeline {
|
|
p := &VPCPipeline{
|
|
BasePipeline: NewBasePipeline(m, "vpc", buildPipeline),
|
|
imgPipeline: imgPipeline,
|
|
filename: filename,
|
|
}
|
|
if imgPipeline.BasePipeline.manifest != m {
|
|
panic("live image pipeline from different manifest")
|
|
}
|
|
buildPipeline.addDependent(p)
|
|
m.addPipeline(p)
|
|
return p
|
|
}
|
|
|
|
func (p *VPCPipeline) serialize() osbuild2.Pipeline {
|
|
pipeline := p.BasePipeline.serialize()
|
|
|
|
pipeline.AddStage(osbuild2.NewQEMUStage(
|
|
osbuild2.NewQEMUStageOptions(p.filename, osbuild2.QEMUFormatVPC, nil),
|
|
osbuild2.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.filename),
|
|
))
|
|
|
|
return pipeline
|
|
}
|
|
|
|
func (p *VPCPipeline) getBuildPackages() []string {
|
|
return []string{"qemu-img"}
|
|
}
|