From 436bebf47ddab8748087e7e5011a587ae43a2c9c Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sat, 17 Sep 2022 17:28:44 -0700 Subject: [PATCH] Codegens: Do not auto-set boilerplate path Make each invocation pass it explicitly. This will make later commits cleaner. --- build/root/Makefile.generated_files | 10 ++++- .../client-go/hack/boilerplate.go.txt | 16 ++++++++ .../examples/client-go/hack/update-codegen.sh | 4 +- .../cmd/applyconfiguration-gen/main.go | 2 - .../code-generator/cmd/client-gen/main.go | 1 - .../code-generator/cmd/conversion-gen/main.go | 5 --- .../code-generator/cmd/deepcopy-gen/main.go | 5 --- .../code-generator/cmd/defaulter-gen/main.go | 5 --- .../cmd/go-to-protobuf/protobuf/cmd.go | 4 +- .../code-generator/cmd/import-boss/main.go | 3 -- .../code-generator/cmd/informer-gen/main.go | 1 - .../code-generator/cmd/lister-gen/main.go | 1 - .../cmd/prerelease-lifecycle-gen/main.go | 5 --- .../code-generator/cmd/register-gen/main.go | 2 - .../k8s.io/code-generator/cmd/set-gen/main.go | 2 - staging/src/k8s.io/code-generator/go.mod | 2 +- .../k8s.io/code-generator/pkg/util/build.go | 39 ------------------- vendor/modules.txt | 1 - 18 files changed, 29 insertions(+), 79 deletions(-) create mode 100644 staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/boilerplate.go.txt diff --git a/build/root/Makefile.generated_files b/build/root/Makefile.generated_files index cc57704b8a9..f8515934254 100644 --- a/build/root/Makefile.generated_files +++ b/build/root/Makefile.generated_files @@ -133,6 +133,9 @@ endif # +# This is the header we stick at the top of every generated file. +BOILERPLATE_FILENAME := staging/src/k8s.io/code-generator/hack/boilerplate.go.txt + # prerelease-lifecycle generation # # Any package that wants prerelease-lifecycle functions generated must include a @@ -179,6 +182,7 @@ gen_prerelease_lifecycle: $(PRERELEASE_LIFECYCLE_GEN) $(META_DIR)/$(PRERELEASE_L ./hack/run-in-gopath.sh $(PRERELEASE_LIFECYCLE_GEN) \ --v $(KUBE_VERBOSE) \ --logtostderr \ + -h $(BOILERPLATE_FILENAME) \ -i "$$pkgs" \ -O $(PRERELEASE_LIFECYCLE_BASENAME) \ "$$@"; \ @@ -274,6 +278,7 @@ gen_deepcopy: $(DEEPCOPY_GEN) $(META_DIR)/$(DEEPCOPY_GEN).todo ./hack/run-in-gopath.sh $(DEEPCOPY_GEN) \ --v $(KUBE_VERBOSE) \ --logtostderr \ + -h $(BOILERPLATE_FILENAME) \ -i "$$pkgs" \ --bounding-dirs $(PRJ_SRC_PATH),"k8s.io/api" \ -O $(DEEPCOPY_BASENAME) \ @@ -378,6 +383,7 @@ gen_defaulter: $(DEFAULTER_GEN) $(META_DIR)/$(DEFAULTER_GEN).todo ./hack/run-in-gopath.sh $(DEFAULTER_GEN) \ --v $(KUBE_VERBOSE) \ --logtostderr \ + -h $(BOILERPLATE_FILENAME) \ -i "$$pkgs" \ --extra-peer-dirs $$(echo $(DEFAULTER_EXTRA_PEER_PKGS) | sed 's/ /,/g') \ -O $(DEFAULTER_BASENAME) \ @@ -494,6 +500,7 @@ gen_conversion: $(CONVERSION_GEN) $(META_DIR)/$(CONVERSION_GEN).todo --extra-dirs $$(echo $(CONVERSION_EXTRA_PKGS) | sed 's/ /,/g') \ --v $(KUBE_VERBOSE) \ --logtostderr \ + -h $(BOILERPLATE_FILENAME) \ -i "$$pkgs" \ -O $(CONVERSION_BASENAME) \ "$$@"; \ @@ -546,7 +553,6 @@ $(CONVERSION_GEN): $(GODEPS_k8s.io/kubernetes/vendor/k8s.io/code-generator/cmd/c # The result file, in each pkg, of open-api generation. OPENAPI_BASENAME := $(GENERATED_FILE_PREFIX)openapi OPENAPI_FILENAME := $(OPENAPI_BASENAME).go -BOILERPLATE_FILENAME := vendor/k8s.io/code-generator/hack/boilerplate.go.txt IGNORED_REPORT_FILENAME := $(OUT_DIR)/ignored_violations.report API_RULE_CHECK_FAILURE_MESSAGE = "ERROR: \n\t $(1) API rule check failed. Reported violations differ from known violations. Please read api/api-rules/README.md to resolve the failure in $(2). \n" @@ -633,10 +639,10 @@ $$($(prefix)_OPENAPI_OUTFILE): $$(OPENAPI_GEN) $$($(prefix)_KNOWN_VIOLATION_FILE ./hack/run-in-gopath.sh $$(OPENAPI_GEN) \ --v $$(KUBE_VERBOSE) \ --logtostderr \ + -h $$(BOILERPLATE_FILENAME) \ -i $$$$(echo $$(addprefix $(PRJ_SRC_PATH)/, $$($(prefix)_OPENAPI_DIRS)) | sed 's/ /,/g') \ -p $$(PRJ_SRC_PATH)/$$($(prefix)_OPENAPI_OUTPUT_PKG) \ -O $$(OPENAPI_BASENAME) \ - -h $$(BOILERPLATE_FILENAME) \ -r $$($(prefix)_REPORT_FILENAME) \ "$$$$@" test -f $$($(prefix)_KNOWN_VIOLATION_FILENAME) || touch $$($(prefix)_KNOWN_VIOLATION_FILENAME) diff --git a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/boilerplate.go.txt b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/boilerplate.go.txt new file mode 100644 index 00000000000..b7c650da470 --- /dev/null +++ b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/boilerplate.go.txt @@ -0,0 +1,16 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + diff --git a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/update-codegen.sh b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/update-codegen.sh index 0f7bfa52ad6..b122f64087f 100755 --- a/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/update-codegen.sh +++ b/staging/src/k8s.io/apiextensions-apiserver/examples/client-go/hack/update-codegen.sh @@ -28,7 +28,9 @@ CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code- bash "${CODEGEN_PKG}/generate-groups.sh" all \ k8s.io/apiextensions-apiserver/examples/client-go/pkg/client k8s.io/apiextensions-apiserver/examples/client-go/pkg/apis \ cr:v1 \ - --output-base "$(dirname "${BASH_SOURCE[0]}")/../../../../.." + --output-base "$(dirname "${BASH_SOURCE[0]}")/../../../../.." \ + --go-header-file "${SCRIPT_ROOT}/hack/boilerplate.go.txt" + # To use your own boilerplate text append: # --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt diff --git a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go index b5d1207b6bc..b4e264042aa 100644 --- a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go @@ -25,13 +25,11 @@ import ( generatorargs "k8s.io/code-generator/cmd/applyconfiguration-gen/args" "k8s.io/code-generator/cmd/applyconfiguration-gen/generators" - "k8s.io/code-generator/pkg/util" ) func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() - genericArgs.GoHeaderFilePath = util.BoilerplatePath() genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of applyconfiguration-gen if err := flag.Set("logtostderr", "true"); err != nil { diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/main.go b/staging/src/k8s.io/code-generator/cmd/client-gen/main.go index bdb55461385..64a1274dfc0 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/main.go @@ -34,7 +34,6 @@ func main() { // Override defaults. // TODO: move this out of client-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/clientset_generated/" genericArgs.AddFlags(pflag.CommandLine) diff --git a/staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go b/staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go index a4687e199e8..5a461d27090 100644 --- a/staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go @@ -102,17 +102,12 @@ import ( generatorargs "k8s.io/code-generator/cmd/conversion-gen/args" "k8s.io/code-generator/cmd/conversion-gen/generators" - "k8s.io/code-generator/pkg/util" ) func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() - // Override defaults. - // TODO: move this out of conversion-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() - genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") diff --git a/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go b/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go index 16df95fd144..5622c1a1beb 100644 --- a/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go @@ -53,17 +53,12 @@ import ( "k8s.io/klog/v2" generatorargs "k8s.io/code-generator/cmd/deepcopy-gen/args" - "k8s.io/code-generator/pkg/util" ) func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() - // Override defaults. - // TODO: move this out of deepcopy-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() - genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") diff --git a/staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go b/staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go index 47967520aee..23d5d3271bb 100644 --- a/staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go @@ -49,17 +49,12 @@ import ( "k8s.io/klog/v2" generatorargs "k8s.io/code-generator/cmd/defaulter-gen/args" - "k8s.io/code-generator/pkg/util" ) func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() - // Override defaults. - // TODO: move this out of defaulter-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() - genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") diff --git a/staging/src/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go b/staging/src/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go index 8a92082bef1..c472b15dad7 100644 --- a/staging/src/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go +++ b/staging/src/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go @@ -30,7 +30,6 @@ import ( flag "github.com/spf13/pflag" - "k8s.io/code-generator/pkg/util" "k8s.io/gengo/args" "k8s.io/gengo/generator" "k8s.io/gengo/namer" @@ -56,8 +55,7 @@ type Generator struct { func New() *Generator { sourceTree := args.DefaultSourceTree() common := args.GeneratorArgs{ - OutputBase: sourceTree, - GoHeaderFilePath: util.BoilerplatePath(), + OutputBase: sourceTree, } defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf") cwd, err := os.Getwd() diff --git a/staging/src/k8s.io/code-generator/cmd/import-boss/main.go b/staging/src/k8s.io/code-generator/cmd/import-boss/main.go index 0fc56445e8c..34373c54117 100644 --- a/staging/src/k8s.io/code-generator/cmd/import-boss/main.go +++ b/staging/src/k8s.io/code-generator/cmd/import-boss/main.go @@ -21,7 +21,6 @@ import ( "os" "github.com/spf13/pflag" - "k8s.io/code-generator/pkg/util" "k8s.io/gengo/args" "k8s.io/gengo/examples/import-boss/generators" @@ -32,8 +31,6 @@ func main() { klog.InitFlags(nil) arguments := args.Default() - // Override defaults. - arguments.GoHeaderFilePath = util.BoilerplatePath() pflag.CommandLine.BoolVar(&arguments.IncludeTestFiles, "include-test-files", false, "If true, include *_test.go files.") if err := arguments.Execute( diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/main.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/main.go index 650a3d78bd2..1247c35b37a 100644 --- a/staging/src/k8s.io/code-generator/cmd/informer-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/main.go @@ -33,7 +33,6 @@ func main() { // Override defaults. // TODO: move out of informer-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated" customArgs.VersionedClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" customArgs.InternalClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" diff --git a/staging/src/k8s.io/code-generator/cmd/lister-gen/main.go b/staging/src/k8s.io/code-generator/cmd/lister-gen/main.go index 3418005c623..a7d7b610878 100644 --- a/staging/src/k8s.io/code-generator/cmd/lister-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/lister-gen/main.go @@ -33,7 +33,6 @@ func main() { // Override defaults. // TODO: move this out of lister-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers" genericArgs.AddFlags(pflag.CommandLine) diff --git a/staging/src/k8s.io/code-generator/cmd/prerelease-lifecycle-gen/main.go b/staging/src/k8s.io/code-generator/cmd/prerelease-lifecycle-gen/main.go index f722a9d113e..376788e4667 100644 --- a/staging/src/k8s.io/code-generator/cmd/prerelease-lifecycle-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/prerelease-lifecycle-gen/main.go @@ -40,7 +40,6 @@ import ( "github.com/spf13/pflag" generatorargs "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/args" statusgenerators "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/prerelease-lifecycle-generators" - "k8s.io/code-generator/pkg/util" "k8s.io/klog/v2" ) @@ -48,10 +47,6 @@ func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() - // Override defaults. - // TODO: move this out of prerelease-lifecycle-gen - genericArgs.GoHeaderFilePath = util.BoilerplatePath() - genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") diff --git a/staging/src/k8s.io/code-generator/cmd/register-gen/main.go b/staging/src/k8s.io/code-generator/cmd/register-gen/main.go index b8ba66f0da0..dc29144481b 100644 --- a/staging/src/k8s.io/code-generator/cmd/register-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/register-gen/main.go @@ -24,13 +24,11 @@ import ( generatorargs "k8s.io/code-generator/cmd/register-gen/args" "k8s.io/code-generator/cmd/register-gen/generators" - "k8s.io/code-generator/pkg/util" ) func main() { klog.InitFlags(nil) genericArgs := generatorargs.NewDefaults() - genericArgs.GoHeaderFilePath = util.BoilerplatePath() genericArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") pflag.CommandLine.AddGoFlagSet(flag.CommandLine) diff --git a/staging/src/k8s.io/code-generator/cmd/set-gen/main.go b/staging/src/k8s.io/code-generator/cmd/set-gen/main.go index f40c5e4a44e..0968ce762b9 100644 --- a/staging/src/k8s.io/code-generator/cmd/set-gen/main.go +++ b/staging/src/k8s.io/code-generator/cmd/set-gen/main.go @@ -27,7 +27,6 @@ package main import ( "os" - "k8s.io/code-generator/pkg/util" "k8s.io/gengo/args" "k8s.io/gengo/examples/set-gen/generators" @@ -39,7 +38,6 @@ func main() { arguments := args.Default() // Override defaults. - arguments.GoHeaderFilePath = util.BoilerplatePath() arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"} arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets" diff --git a/staging/src/k8s.io/code-generator/go.mod b/staging/src/k8s.io/code-generator/go.mod index 111a93d9c83..f46ab8638bd 100644 --- a/staging/src/k8s.io/code-generator/go.mod +++ b/staging/src/k8s.io/code-generator/go.mod @@ -8,7 +8,6 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/google/gnostic v0.5.7-v3refs github.com/spf13/pflag v1.0.5 - golang.org/x/tools v0.1.12 gopkg.in/yaml.v2 v2.4.0 k8s.io/gengo v0.0.0-20220902162205-c0856e24416d k8s.io/klog/v2 v2.80.1 @@ -33,6 +32,7 @@ require ( github.com/stretchr/testify v1.8.0 // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/tools v0.1.12 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect diff --git a/staging/src/k8s.io/code-generator/pkg/util/build.go b/staging/src/k8s.io/code-generator/pkg/util/build.go index 72ae683d8d8..53f93afe349 100644 --- a/staging/src/k8s.io/code-generator/pkg/util/build.go +++ b/staging/src/k8s.io/code-generator/pkg/util/build.go @@ -18,16 +18,10 @@ package util import ( gobuild "go/build" - "os" "path/filepath" - "reflect" "strings" - - "golang.org/x/tools/go/packages" ) -type empty struct{} - // CurrentPackage returns the go package of the current directory, or "" if it cannot // be derived from the GOPATH. func CurrentPackage() string { @@ -57,39 +51,6 @@ func hasSubdir(root, dir string) (rel string, ok bool) { return filepath.ToSlash(dir[len(root):]), true } -// BoilerplatePath returns the path to the boilerplate file in code-generator, -// or "" if the default boilerplate.go.txt file cannot be located. -func BoilerplatePath() string { - // set up paths to check - paths := []string{ - // works when run from root of $GOPATH containing k8s.io/code-generator - filepath.Join(reflect.TypeOf(empty{}).PkgPath(), "/../../hack/boilerplate.go.txt"), - // works when run from root of module vendoring k8s.io/code-generator - "vendor/k8s.io/code-generator/hack/boilerplate.go.txt", - // works when run from root of $GOPATH containing k8s.io/kubernetes - "k8s.io/kubernetes/vendor/k8s.io/code-generator/hack/boilerplate.go.txt", - } - - // see if we can locate the module directory and add that to the list - config := packages.Config{Mode: packages.NeedModule} - if loadedPackages, err := packages.Load(&config, "k8s.io/code-generator/pkg/util"); err == nil { - for _, loadedPackage := range loadedPackages { - if loadedPackage.Module != nil && loadedPackage.Module.Dir != "" { - paths = append(paths, filepath.Join(loadedPackage.Module.Dir, "hack/boilerplate.go.txt")) - } - } - } - - // try all paths and return the first that exists - for _, path := range paths { - if _, err := os.Stat(path); err == nil { - return path - } - } - // cannot be located, invoker will have to explicitly specify boilerplate file - return "" -} - // Vendorless trims vendor prefix from a package path to make it canonical func Vendorless(p string) string { if pos := strings.LastIndex(p, "/vendor/"); pos != -1 { diff --git a/vendor/modules.txt b/vendor/modules.txt index 234f0b11cae..6b0dd8ad0fb 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1950,7 +1950,6 @@ k8s.io/cluster-bootstrap/util/tokens k8s.io/code-generator/cmd/go-to-protobuf k8s.io/code-generator/cmd/go-to-protobuf/protobuf k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo -k8s.io/code-generator/pkg/util k8s.io/code-generator/third_party/forked/golang/reflect # k8s.io/component-base v0.0.0 => ./staging/src/k8s.io/component-base ## explicit; go 1.19