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

Reply via email to