diff --git a/internal/distro/rhel85/pipelines.go b/internal/distro/rhel85/pipelines.go index e1dab1269..22b25ae16 100644 --- a/internal/distro/rhel85/pipelines.go +++ b/internal/distro/rhel85/pipelines.go @@ -183,7 +183,7 @@ func ec2BaseTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, p.Name = "os" p.Build = "name:build" packages = append(packages, bpPackages...) - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) // If the /boot is on a separate partition, the prefix for the BLS stage must be "" if pt.FindMountable("/boot") == nil { @@ -625,7 +625,7 @@ func buildPipeline(repos []rpmmd.RepoConfig, buildPackageSpecs []rpmmd.PackageSp p := new(osbuild.Pipeline) p.Name = "build" p.Runner = "org.osbuild.rhel85" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) p.AddStage(osbuild.NewSELinuxStage(selinuxStageOptions(true))) return p } @@ -635,7 +635,7 @@ func osPipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, bpPackag p.Name = "os" p.Build = "name:build" packages = append(packages, bpPackages...) - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{})) language, keyboard := c.GetPrimaryLocale() if language != nil { @@ -721,7 +721,7 @@ func ostreeTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, p.AddStage(osbuild2.NewOSTreePasswdStage("org.osbuild.source", options.OSTree.Parent)) } - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{})) language, keyboard := c.GetPrimaryLocale() if language != nil { @@ -838,7 +838,7 @@ func containerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpe p := new(osbuild.Pipeline) p.Name = "container-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) language, _ := c.GetPrimaryLocale() if language != nil { p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) @@ -1064,7 +1064,7 @@ func simplifiedInstallerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd. p := new(osbuild.Pipeline) p.Name = "coi-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"})) p.AddStage(osbuild.NewSystemdStage(systemdStageOptions([]string{"coreos-installer"}, nil, nil, ""))) @@ -1155,7 +1155,7 @@ func anacondaTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec p := new(osbuild.Pipeline) p.Name = "anaconda-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"})) diff --git a/internal/distro/rhel85/stage_options.go b/internal/distro/rhel85/stage_options.go index 051e2a5d4..76d08c61f 100644 --- a/internal/distro/rhel85/stage_options.go +++ b/internal/distro/rhel85/stage_options.go @@ -10,27 +10,12 @@ import ( "github.com/osbuild/osbuild-composer/internal/crypt" "github.com/osbuild/osbuild-composer/internal/distro" osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2" - "github.com/osbuild/osbuild-composer/internal/rpmmd" ) const ( kspath = "/osbuild.ks" ) -func rpmStageOptions(repos []rpmmd.RepoConfig) *osbuild.RPMStageOptions { - var gpgKeys []string - for _, repo := range repos { - if repo.GPGKey == "" { - continue - } - gpgKeys = append(gpgKeys, repo.GPGKey) - } - - return &osbuild.RPMStageOptions{ - GPGKeys: gpgKeys, - } -} - // selinuxStageOptions returns the options for the org.osbuild.selinux stage. // Setting the argument to 'true' relabels the '/usr/bin/cp' and '/usr/bin/tar' // binaries with 'install_exec_t'. This should be set in the build root. diff --git a/internal/distro/rhel86/pipelines.go b/internal/distro/rhel86/pipelines.go index 7916ffc6c..35e33067b 100644 --- a/internal/distro/rhel86/pipelines.go +++ b/internal/distro/rhel86/pipelines.go @@ -352,7 +352,7 @@ func buildPipeline(repos []rpmmd.RepoConfig, buildPackageSpecs []rpmmd.PackageSp p := new(osbuild.Pipeline) p.Name = "build" p.Runner = runner - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) p.AddStage(osbuild.NewSELinuxStage(selinuxStageOptions(true))) return p } @@ -378,7 +378,7 @@ func osPipeline(t *imageType, p.AddStage(osbuild.NewOSTreePasswdStage("org.osbuild.source", options.OSTree.Parent)) } - rpmOptions := rpmStageOptions(repos) + rpmOptions := osbuild.NewRPMStageOptions(repos) rpmOptions.GPGKeysFromTree = imageConfig.GPGKeyFiles p.AddStage(osbuild.NewRPMStage(rpmOptions, osbuild.NewRpmStageSourceFilesInputs(packages))) @@ -619,7 +619,7 @@ func containerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpe p := new(osbuild.Pipeline) p.Name = "container-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) language, _ := c.GetPrimaryLocale() if language != nil { p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) @@ -814,7 +814,7 @@ func simplifiedInstallerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd. p := new(osbuild.Pipeline) p.Name = "coi-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch, product, osVersion, variant))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"})) dracutStageOptions := dracutStageOptions(kernelVer, arch, []string{ @@ -923,7 +923,7 @@ func anacondaTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec p := new(osbuild.Pipeline) p.Name = "anaconda-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch, product, osVersion, variant))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"})) diff --git a/internal/distro/rhel86/stage_options.go b/internal/distro/rhel86/stage_options.go index af6528a55..9ddc70e18 100644 --- a/internal/distro/rhel86/stage_options.go +++ b/internal/distro/rhel86/stage_options.go @@ -9,27 +9,12 @@ import ( "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/distro" osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2" - "github.com/osbuild/osbuild-composer/internal/rpmmd" ) const ( kspath = "/osbuild.ks" ) -func rpmStageOptions(repos []rpmmd.RepoConfig) *osbuild.RPMStageOptions { - var gpgKeys []string - for _, repo := range repos { - if repo.GPGKey == "" { - continue - } - gpgKeys = append(gpgKeys, repo.GPGKey) - } - - return &osbuild.RPMStageOptions{ - GPGKeys: gpgKeys, - } -} - // selinuxStageOptions returns the options for the org.osbuild.selinux stage. // Setting the argument to 'true' relabels the '/usr/bin/cp' and '/usr/bin/tar' // binaries with 'install_exec_t'. This should be set in the build root. diff --git a/internal/distro/rhel90/pipelines.go b/internal/distro/rhel90/pipelines.go index beb45a1cc..c989a28fe 100644 --- a/internal/distro/rhel90/pipelines.go +++ b/internal/distro/rhel90/pipelines.go @@ -344,7 +344,7 @@ func buildPipeline(repos []rpmmd.RepoConfig, buildPackageSpecs []rpmmd.PackageSp p := new(osbuild.Pipeline) p.Name = "build" p.Runner = runner - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) p.AddStage(osbuild.NewSELinuxStage(selinuxStageOptions(true))) return p } @@ -370,7 +370,7 @@ func osPipeline(t *imageType, p.AddStage(osbuild.NewOSTreePasswdStage("org.osbuild.source", options.OSTree.Parent)) } - rpmOptions := rpmStageOptions(repos) + rpmOptions := osbuild.NewRPMStageOptions(repos) rpmOptions.GPGKeysFromTree = imageConfig.GPGKeyFiles p.AddStage(osbuild.NewRPMStage(rpmOptions, osbuild.NewRpmStageSourceFilesInputs(packages))) @@ -615,7 +615,7 @@ func containerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpe p := new(osbuild.Pipeline) p.Name = "container-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) language, _ := c.GetPrimaryLocale() if language != nil { p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) @@ -810,7 +810,7 @@ func simplifiedInstallerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd. p := new(osbuild.Pipeline) p.Name = "coi-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch, product, osVersion, variant))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "C.UTF-8"})) dracutStageOptions := dracutStageOptions(kernelVer, arch, []string{ @@ -916,7 +916,7 @@ func anacondaTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec p := new(osbuild.Pipeline) p.Name = "anaconda-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewBuildstampStage(buildStampStageOptions(arch, product, osVersion, variant))) p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"})) diff --git a/internal/distro/rhel90/stage_options.go b/internal/distro/rhel90/stage_options.go index fefebe099..949d891bc 100644 --- a/internal/distro/rhel90/stage_options.go +++ b/internal/distro/rhel90/stage_options.go @@ -9,27 +9,12 @@ import ( "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/distro" osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2" - "github.com/osbuild/osbuild-composer/internal/rpmmd" ) const ( kspath = "/osbuild.ks" ) -func rpmStageOptions(repos []rpmmd.RepoConfig) *osbuild.RPMStageOptions { - var gpgKeys []string - for _, repo := range repos { - if repo.GPGKey == "" { - continue - } - gpgKeys = append(gpgKeys, repo.GPGKey) - } - - return &osbuild.RPMStageOptions{ - GPGKeys: gpgKeys, - } -} - // selinuxStageOptions returns the options for the org.osbuild.selinux stage. // Setting the argument to 'true' relabels the '/usr/bin/cp' and '/usr/bin/tar' // binaries with 'install_exec_t'. This should be set in the build root. diff --git a/internal/distro/rhel90beta/pipelines.go b/internal/distro/rhel90beta/pipelines.go index c595afe6a..5ec0a0d8a 100644 --- a/internal/distro/rhel90beta/pipelines.go +++ b/internal/distro/rhel90beta/pipelines.go @@ -171,7 +171,7 @@ func ec2BaseTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, p.Name = "os" p.Build = "name:build" packages = append(packages, bpPackages...) - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) // If the /boot is on a separate partition, the prefix for the BLS stage must be "" if pt.FindMountable("/boot") == nil { @@ -709,7 +709,7 @@ func buildPipeline(repos []rpmmd.RepoConfig, buildPackageSpecs []rpmmd.PackageSp p := new(osbuild.Pipeline) p.Name = "build" p.Runner = "org.osbuild.rhel90" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(buildPackageSpecs))) p.AddStage(osbuild.NewSELinuxStage(selinuxStageOptions(true))) return p } @@ -719,7 +719,7 @@ func osPipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, bpPackag p.Name = "os" p.Build = "name:build" packages = append(packages, bpPackages...) - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{})) language, keyboard := c.GetPrimaryLocale() if language != nil { @@ -800,7 +800,7 @@ func ostreeTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec, p.Build = "name:build" packages = append(packages, bpPackages...) - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) p.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{})) language, keyboard := c.GetPrimaryLocale() if language != nil { @@ -917,7 +917,7 @@ func containerTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpe p := new(osbuild.Pipeline) p.Name = "container-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) language, _ := c.GetPrimaryLocale() if language != nil { p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) @@ -971,7 +971,7 @@ func anacondaTreePipeline(repos []rpmmd.RepoConfig, packages []rpmmd.PackageSpec p := new(osbuild.Pipeline) p.Name = "anaconda-tree" p.Build = "name:build" - p.AddStage(osbuild.NewRPMStage(rpmStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) + p.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(repos), osbuild.NewRpmStageSourceFilesInputs(packages))) for _, stage := range payloadStages { p.AddStage(stage) } diff --git a/internal/distro/rhel90beta/stage_options.go b/internal/distro/rhel90beta/stage_options.go index 6da1d2013..a4ebd5d90 100644 --- a/internal/distro/rhel90beta/stage_options.go +++ b/internal/distro/rhel90beta/stage_options.go @@ -7,27 +7,12 @@ import ( "github.com/osbuild/osbuild-composer/internal/blueprint" "github.com/osbuild/osbuild-composer/internal/crypt" osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2" - "github.com/osbuild/osbuild-composer/internal/rpmmd" ) const ( kspath = "/osbuild.ks" ) -func rpmStageOptions(repos []rpmmd.RepoConfig) *osbuild.RPMStageOptions { - var gpgKeys []string - for _, repo := range repos { - if repo.GPGKey == "" { - continue - } - gpgKeys = append(gpgKeys, repo.GPGKey) - } - - return &osbuild.RPMStageOptions{ - GPGKeys: gpgKeys, - } -} - // selinuxStageOptions returns the options for the org.osbuild.selinux stage. // Setting the argument to 'true' relabels the '/usr/bin/cp' and '/usr/bin/tar' // binaries with 'install_exec_t'. This should be set in the build root. diff --git a/internal/osbuild2/rpm_stage.go b/internal/osbuild2/rpm_stage.go index 5be03bca8..2f20cd6d7 100644 --- a/internal/osbuild2/rpm_stage.go +++ b/internal/osbuild2/rpm_stage.go @@ -155,3 +155,17 @@ func pkgRefs(specs []rpmmd.PackageSpec) RPMStageReferences { } return refs } + +func NewRPMStageOptions(repos []rpmmd.RepoConfig) *RPMStageOptions { + var gpgKeys []string + for _, repo := range repos { + if repo.GPGKey == "" { + continue + } + gpgKeys = append(gpgKeys, repo.GPGKey) + } + + return &RPMStageOptions{ + GPGKeys: gpgKeys, + } +}