From 903a2db90a3eaf58f4eea965e8d23fcc6c0abaef Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Wed, 22 Jun 2016 22:46:27 -0400 Subject: [PATCH] Make generated build tag parameterizable for go2idl Downstream generators that want to reuse the upstream generated types need to be able to define a different ignore tag (so that they can see the already generated types). --- cmd/libs/go2idl/args/args.go | 14 +++++++++++--- .../go2idl/conversion-gen/generators/conversion.go | 5 +---- .../go2idl/deepcopy-gen/generators/deepcopy.go | 5 +---- hack/verify-flags/known-flags.txt | 1 + 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/cmd/libs/go2idl/args/args.go b/cmd/libs/go2idl/args/args.go index 9c47ca5a222..fa1d8e57674 100644 --- a/cmd/libs/go2idl/args/args.go +++ b/cmd/libs/go2idl/args/args.go @@ -39,8 +39,9 @@ import ( // before calling AddFlags. func Default() *GeneratorArgs { generatorArgs := &GeneratorArgs{ - OutputBase: DefaultSourceTree(), - GoHeaderFilePath: filepath.Join(DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"), + OutputBase: DefaultSourceTree(), + GoHeaderFilePath: filepath.Join(DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"), + GeneratedBuildTag: "ignore_autogenerated", } generatorArgs.AddFlags(pflag.CommandLine) return generatorArgs @@ -66,6 +67,12 @@ type GeneratorArgs struct { // If true, only verify, don't write anything. VerifyOnly bool + // GeneratedBuildTag is the tag used to identify code generated by execution + // of this type. Each generator should use a different tag, and different + // groups of generators (external API that depends on Kube generations) should + // keep tags distinct as well. + GeneratedBuildTag string + // Any custom arguments go here CustomArgs interface{} } @@ -77,6 +84,7 @@ func (g *GeneratorArgs) AddFlags(fs *pflag.FlagSet) { fs.StringVarP(&g.GoHeaderFilePath, "go-header-file", "h", g.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.") fs.BoolVar(&g.VerifyOnly, "verify-only", g.VerifyOnly, "If true, only verify existing output, do not write anything.") fs.BoolVar(&g.Recursive, "recursive", g.VerifyOnly, "If true, recurse into all children of input directories.") + fs.StringVar(&g.GeneratedBuildTag, "build-tag", g.GeneratedBuildTag, "A Go build tag to use to identify files generated by this command. Should be unique.") } // LoadGoBoilerplate loads the boilerplate file passed to --go-header-file. @@ -94,7 +102,7 @@ func (g *GeneratorArgs) LoadGoBoilerplate() ([]byte, error) { func (g *GeneratorArgs) NewBuilder() (*parser.Builder, error) { b := parser.New() // Ignore all auto-generated files. - b.AddBuildTags("ignore_autogenerated") + b.AddBuildTags(g.GeneratedBuildTag) for _, d := range g.InputDirs { d = strings.TrimLeft(d, "+-*") diff --git a/cmd/libs/go2idl/conversion-gen/generators/conversion.go b/cmd/libs/go2idl/conversion-gen/generators/conversion.go index 8eec1171d8f..2f6e79b6274 100644 --- a/cmd/libs/go2idl/conversion-gen/generators/conversion.go +++ b/cmd/libs/go2idl/conversion-gen/generators/conversion.go @@ -210,10 +210,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat inputs := sets.NewString(arguments.InputDirs...) packages := generator.Packages{} - header := append([]byte( - `// +build !ignore_autogenerated - -`), boilerplate...) + header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( ` // This file was autogenerated by conversion-gen. Do not edit it manually! diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index c757d3ccbc3..faf4fa63722 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -99,10 +99,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat } packages := generator.Packages{} - header := append([]byte( - `// +build !ignore_autogenerated - -`), boilerplate...) + header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( ` // This file was autogenerated by deepcopy-gen. Do not edit it manually! diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index 0a9ce63dd27..10e0a32a680 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -37,6 +37,7 @@ bind-pods-burst bind-pods-qps build-only build-services +build-tag cadvisor-port cert-dir certificate-authority