The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/distrobuilder/pull/214
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Thomas Hipp <thomas.h...@canonical.com>
From 1b2b73dff67d7cc5057dd51f5968923749dae433 Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Wed, 14 Aug 2019 16:34:23 +0200 Subject: [PATCH] Add filters for various actions Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- distrobuilder/main_build-dir.go | 10 ++++++++++ shared/definition.go | 32 ++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/distrobuilder/main_build-dir.go b/distrobuilder/main_build-dir.go index add07d1..de44d61 100644 --- a/distrobuilder/main_build-dir.go +++ b/distrobuilder/main_build-dir.go @@ -33,6 +33,16 @@ func (c *cmdBuildDir) command() *cobra.Command { continue } + if len(file.Architectures) > 0 && !lxd.StringInSlice( + c.global.definition.Image.ArchitectureMapped, file.Architectures) { + continue + } + + if len(file.Variants) > 0 && !lxd.StringInSlice( + c.global.definition.Image.Variant, file.Variants) { + continue + } + err := generator.Run(c.global.flagCacheDir, c.global.targetDir, file) if err != nil { continue diff --git a/shared/definition.go b/shared/definition.go index 9ecdbe5..977cb8b 100644 --- a/shared/definition.go +++ b/shared/definition.go @@ -12,16 +12,21 @@ import ( lxdarch "github.com/lxc/lxd/shared/osarch" ) -// A DefinitionPackagesSet is a set of packages which are to be installed -// or removed. -type DefinitionPackagesSet struct { - Packages []string `yaml:"packages"` - Action string `yaml:"action"` +// A DefinitionFilter defines filters for various actions. +type DefinitionFilter struct { Releases []string `yaml:"releases,omitempty"` Architectures []string `yaml:"architectures,omitempty"` Variants []string `yaml:"variants,omitempty"` } +// A DefinitionPackagesSet is a set of packages which are to be installed +// or removed. +type DefinitionPackagesSet struct { + DefinitionFilter + Packages []string `yaml:"packages"` + Action string `yaml:"action"` +} + // A DefinitionPackagesRepository contains data of a specific repository type DefinitionPackagesRepository struct { Name string `yaml:"name"` // Name of the repository @@ -110,14 +115,13 @@ type DefinitionTarget struct { // A DefinitionFile represents a file which is to be created inside to chroot. type DefinitionFile struct { + DefinitionFilter Generator string `yaml:"generator"` Path string `yaml:"path,omitempty"` Content string `yaml:"content,omitempty"` - Releases []string `yaml:"releases,omitempty"` Name string `yaml:"name,omitempty"` Template DefinitionFileTemplate `yaml:"template,omitempty"` Templated bool `yaml:"templated,omitempty"` - Variants []string `yaml:"variants,omitempty"` } // A DefinitionFileTemplate represents the settings used by generators @@ -129,9 +133,9 @@ type DefinitionFileTemplate struct { // A DefinitionAction specifies a custom action (script) which is to be run after // a certain action. type DefinitionAction struct { - Trigger string `yaml:"trigger"` - Action string `yaml:"action"` - Releases []string `yaml:"releases,omitempty"` + DefinitionFilter + Trigger string `yaml:"trigger"` + Action string `yaml:"action"` } // DefinitionMappings defines custom mappings. @@ -422,6 +426,14 @@ func (d *Definition) GetRunnableActions(trigger string) []DefinitionAction { continue } + if len(action.Architectures) > 0 && !shared.StringInSlice(d.Image.ArchitectureMapped, action.Architectures) { + continue + } + + if len(action.Variants) > 0 && !shared.StringInSlice(d.Image.Variant, action.Variants) { + continue + } + out = append(out, action) }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel