debian-forge-composer/vendor/github.com/osbuild/images/pkg/manifest/qcow2.go
Achilleas Koutsou d4332f85d3 deps: update osbuild/images to v0.3.0
Bump the required osbuild version to v93 (due to the systemd units
change).

Pin the new osbuild version in Schutzfile.

Update repo snapshots in Schutzfile due to osbuild v93 depending on
new selinux-policy build.
2023-08-24 20:30:24 +02:00

62 lines
1.5 KiB
Go

package manifest
import (
"github.com/osbuild/images/pkg/artifact"
"github.com/osbuild/images/pkg/osbuild"
)
// A QCOW2 turns a raw image file into qcow2 image.
type QCOW2 struct {
Base
filename string
Compat string
imgPipeline FilePipeline
}
func (p QCOW2) Filename() string {
return p.filename
}
func (p *QCOW2) SetFilename(filename string) {
p.filename = filename
}
// NewQCOW2 createsa new QCOW2 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 qcow2 image.
func NewQCOW2(buildPipeline *Build, imgPipeline FilePipeline) *QCOW2 {
p := &QCOW2{
Base: NewBase(imgPipeline.Manifest(), "qcow2", buildPipeline),
imgPipeline: imgPipeline,
filename: "image.qcow2",
}
buildPipeline.addDependent(p)
imgPipeline.Manifest().addPipeline(p)
return p
}
func (p *QCOW2) serialize() osbuild.Pipeline {
pipeline := p.Base.serialize()
pipeline.AddStage(osbuild.NewQEMUStage(
osbuild.NewQEMUStageOptions(p.Filename(),
osbuild.QEMUFormatQCOW2,
osbuild.QCOW2Options{
Compat: p.Compat,
}),
osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename()),
))
return pipeline
}
func (p *QCOW2) getBuildPackages(Distro) []string {
return []string{"qemu-img"}
}
func (p *QCOW2) Export() *artifact.Artifact {
p.Base.export = true
mimeType := "application/x-qemu-disk"
return artifact.New(p.Name(), p.Filename(), &mimeType)
}