debian-forge-composer/internal/image/ostree_installer.go
2022-08-25 14:54:56 +01:00

80 lines
2.1 KiB
Go

package image
import (
"math/rand"
"github.com/osbuild/osbuild-composer/internal/artifact"
"github.com/osbuild/osbuild-composer/internal/blueprint"
"github.com/osbuild/osbuild-composer/internal/manifest"
"github.com/osbuild/osbuild-composer/internal/platform"
"github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/runner"
)
type OSTreeInstaller struct {
Base
Platform platform.Platform
ExtraBasePackages rpmmd.PackageSet
Users []blueprint.UserCustomization
Groups []blueprint.GroupCustomization
ISOLabelTempl string
Product string
Variant string
OSName string
OSVersion string
Release string
OSTreeURL string
OSTreeRef string
OSTreeCommit string
Filename string
}
func NewOSTreeInstaller() *OSTreeInstaller {
return &OSTreeInstaller{
Base: NewBase("ostree-installer"),
}
}
func (img *OSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
repos []rpmmd.RepoConfig,
runner runner.Runner,
rng *rand.Rand) (*artifact.Artifact, error) {
buildPipeline := manifest.NewBuild(m, runner, repos)
buildPipeline.Checkpoint()
anacondaPipeline := manifest.NewAnaconda(m,
buildPipeline,
img.Platform,
repos, "kernel",
img.Product,
img.OSVersion)
anacondaPipeline.ExtraPackages = img.ExtraBasePackages.Include
anacondaPipeline.ExtraRepos = img.ExtraBasePackages.Repositories
anacondaPipeline.Users = len(img.Users)+len(img.Groups) > 0
anacondaPipeline.Variant = img.Variant
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == platform.ARCH_X86_64)
anacondaPipeline.Checkpoint()
isoTreePipeline := manifest.NewISOTree(m,
buildPipeline,
anacondaPipeline,
img.OSTreeCommit,
img.OSTreeURL,
img.OSTreeRef,
img.ISOLabelTempl)
isoTreePipeline.Release = img.Release
isoTreePipeline.OSName = img.OSName
isoTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
isoTreePipeline.Users = img.Users
isoTreePipeline.Groups = img.Groups
isoPipeline := manifest.NewISO(m, buildPipeline, isoTreePipeline)
isoPipeline.Filename = img.Filename
isoPipeline.ISOLinux = true
artifact := isoPipeline.Export()
return artifact, nil
}