From dc359fca3afe867f93ef540c6a7e7c6385ac0ce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Budai?= Date: Thu, 31 Oct 2019 07:00:18 +0100 Subject: [PATCH] blueprint: add support for extra packages, "modules" and groups "modules" because they're not actual modules. Currently, it's just a synonym to packages. This is the same behavior as lorax-composer has. --- internal/blueprint/ami_output.go | 2 +- internal/blueprint/blueprint.go | 9 +++++++++ internal/blueprint/disk_output.go | 2 +- internal/blueprint/ext4_output.go | 2 +- internal/blueprint/f30_helpers.go | 16 +++++++++++++++- internal/blueprint/openstack_output.go | 2 +- internal/blueprint/qcow2_output.go | 2 +- internal/blueprint/tar_output.go | 2 +- internal/blueprint/vhd_output.go | 2 +- internal/blueprint/vmdk_output.go | 2 +- 10 files changed, 32 insertions(+), 9 deletions(-) diff --git a/internal/blueprint/ami_output.go b/internal/blueprint/ami_output.go index 7335ce5e0..c2bd79ea2 100644 --- a/internal/blueprint/ami_output.go +++ b/internal/blueprint/ami_output.go @@ -21,7 +21,7 @@ func (t *amiOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30FixBlsStage(p) addF30LocaleStage(p) addF30FSTabStage(p) diff --git a/internal/blueprint/blueprint.go b/internal/blueprint/blueprint.go index dec671e2a..b68b306cc 100644 --- a/internal/blueprint/blueprint.go +++ b/internal/blueprint/blueprint.go @@ -95,3 +95,12 @@ func FilenameFromType(outputFormat string) (string, string, error) { return "", "", &InvalidOutputFormatError{outputFormat} } + +func (p Package) ToNameVersion() string { + // Omit version to prevent all packages with prefix of name to be installed + if p.Version == "*" { + return p.Name + } + + return p.Name + "-" + p.Version +} diff --git a/internal/blueprint/disk_output.go b/internal/blueprint/disk_output.go index 65509f523..6c8b24066 100644 --- a/internal/blueprint/disk_output.go +++ b/internal/blueprint/disk_output.go @@ -17,7 +17,7 @@ func (t *diskOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30FSTabStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) diff --git a/internal/blueprint/ext4_output.go b/internal/blueprint/ext4_output.go index 928f16c73..ef263cf36 100644 --- a/internal/blueprint/ext4_output.go +++ b/internal/blueprint/ext4_output.go @@ -16,7 +16,7 @@ func (t *ext4Output) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) addF30FixBlsStage(p) diff --git a/internal/blueprint/f30_helpers.go b/internal/blueprint/f30_helpers.go index e53a8059e..ae73e9d9b 100644 --- a/internal/blueprint/f30_helpers.go +++ b/internal/blueprint/f30_helpers.go @@ -89,7 +89,7 @@ func getF30Pipeline() *pipeline.Pipeline { return p } -func getCustomF30PackageSet(packages []string, excludedPackages []string) *pipeline.Pipeline { +func getCustomF30PackageSet(packages []string, excludedPackages []string, blueprint *Blueprint) *pipeline.Pipeline { p := &pipeline.Pipeline{ BuildPipeline: getF30BuildPipeline(), } @@ -104,6 +104,20 @@ func getCustomF30PackageSet(packages []string, excludedPackages []string) *pipel for _, pkg := range excludedPackages { options.ExcludePackage(pkg) } + + // handle extra packages, modules (currently synonym to packages) and groups + for _, pkg := range blueprint.Packages { + options.AddPackage(pkg.ToNameVersion()) + } + + for _, pkg := range blueprint.Modules { + options.AddPackage(pkg.ToNameVersion()) + } + + for _, group := range blueprint.Groups { + options.AddPackage(group.Name) + } + p.AddStage(pipeline.NewDNFStage(options)) return p } diff --git a/internal/blueprint/openstack_output.go b/internal/blueprint/openstack_output.go index 333271b9a..292582696 100644 --- a/internal/blueprint/openstack_output.go +++ b/internal/blueprint/openstack_output.go @@ -21,7 +21,7 @@ func (t *openstackOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30FSTabStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) diff --git a/internal/blueprint/qcow2_output.go b/internal/blueprint/qcow2_output.go index 0ff1587b7..fdb1c832c 100644 --- a/internal/blueprint/qcow2_output.go +++ b/internal/blueprint/qcow2_output.go @@ -22,7 +22,7 @@ func (t *qcow2Output) translate(b *Blueprint) *pipeline.Pipeline { "gobject-introspection", "plymouth", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30FSTabStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) diff --git a/internal/blueprint/tar_output.go b/internal/blueprint/tar_output.go index 352fd62ee..b2694685e 100644 --- a/internal/blueprint/tar_output.go +++ b/internal/blueprint/tar_output.go @@ -16,7 +16,7 @@ func (t *tarOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) addF30FixBlsStage(p) diff --git a/internal/blueprint/vhd_output.go b/internal/blueprint/vhd_output.go index 2ae21bfad..96166ed38 100644 --- a/internal/blueprint/vhd_output.go +++ b/internal/blueprint/vhd_output.go @@ -20,7 +20,7 @@ func (t *vhdOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30FSTabStage(p) addF30GRUB2Stage(p, b.getKernelCustomization()) diff --git a/internal/blueprint/vmdk_output.go b/internal/blueprint/vmdk_output.go index 212b351fa..decd0a4e9 100644 --- a/internal/blueprint/vmdk_output.go +++ b/internal/blueprint/vmdk_output.go @@ -18,7 +18,7 @@ func (t *vmdkOutput) translate(b *Blueprint) *pipeline.Pipeline { excludedPackages := [...]string{ "dracut-config-rescue", } - p := getCustomF30PackageSet(packages[:], excludedPackages[:]) + p := getCustomF30PackageSet(packages[:], excludedPackages[:], b) addF30LocaleStage(p) addF30FSTabStage(p) addF30GRUB2Stage(p, b.getKernelCustomization())