From 5de47de7cf354d37e1211e13d261a19d258f8a82 Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Thu, 16 Jul 2020 14:54:06 -0700 Subject: [PATCH 1/3] use canonical import path in client-gen so that package comments are honored --- hack/update-codegen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index 838fe0917cc..b7fdfa988c9 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -59,7 +59,7 @@ GV_DIRS_CSV=$(IFS=',';echo "${GV_DIRS[*]// /,}";IFS=$) # This can be called with one flag, --verify-only, so it works for both the # update- and verify- scripts. -${clientgen} --output-base "${KUBE_ROOT}/vendor" --output-package="k8s.io/client-go" --clientset-name="kubernetes" --input-base="k8s.io/kubernetes/vendor/k8s.io/api" --input="${GV_DIRS_CSV}" --go-header-file "${KUBE_ROOT}/hack/boilerplate/boilerplate.generatego.txt" "$@" +${clientgen} --output-base "${KUBE_ROOT}/vendor" --output-package="k8s.io/client-go" --clientset-name="kubernetes" --input-base="k8s.io/api" --input="${GV_DIRS_CSV}" --go-header-file "${KUBE_ROOT}/hack/boilerplate/boilerplate.generatego.txt" "$@" listergen_external_apis=() kube::util::read-array listergen_external_apis < <( From bf85180bf59841d4ffa133276c3ca44dd9e1eebe Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Thu, 16 Jul 2020 16:57:01 -0700 Subject: [PATCH 2/3] add vendorless to client-gen --- .../cmd/client-gen/generators/client_generator.go | 3 ++- .../cmd/conversion-gen/generators/conversion.go | 9 ++------- .../cmd/informer-gen/generators/packages.go | 9 +-------- staging/src/k8s.io/code-generator/pkg/util/build.go | 8 ++++++++ 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go index 2c0bc9b5c46..1f1c3b4c02b 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go @@ -28,6 +28,7 @@ import ( "k8s.io/code-generator/cmd/client-gen/path" clientgentypes "k8s.io/code-generator/cmd/client-gen/types" codegennamer "k8s.io/code-generator/pkg/namer" + genutil "k8s.io/code-generator/pkg/util" "k8s.io/gengo/args" "k8s.io/gengo/generator" "k8s.io/gengo/namer" @@ -279,7 +280,7 @@ func applyGroupOverrides(universe types.Universe, customArgs *clientgenargs.Cust // Create a map from "old GV" to "new GV" so we know what changes we need to make. changes := make(map[clientgentypes.GroupVersion]clientgentypes.GroupVersion) for gv, inputDir := range customArgs.GroupVersionPackages() { - p := universe.Package(inputDir) + p := universe.Package(genutil.Vendorless(inputDir)) if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil { newGV := clientgentypes.GroupVersion{ Group: clientgentypes.Group(override[0]), diff --git a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go index b35b7007849..e725b5cfd30 100644 --- a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go +++ b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go @@ -33,6 +33,7 @@ import ( "k8s.io/klog/v2" conversionargs "k8s.io/code-generator/cmd/conversion-gen/args" + genutil "k8s.io/code-generator/pkg/util" ) // These are the comment tags that carry parameters for conversion generation. @@ -292,14 +293,8 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat // in the output directory. // TODO: build a more fundamental concept in gengo for dealing with modifications // to vendored packages. - vendorless := func(pkg string) string { - if pos := strings.LastIndex(pkg, "/vendor/"); pos != -1 { - return pkg[pos+len("/vendor/"):] - } - return pkg - } for i := range peerPkgs { - peerPkgs[i] = vendorless(peerPkgs[i]) + peerPkgs[i] = genutil.Vendorless(peerPkgs[i]) } // Make sure our peer-packages are added and fully parsed. diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/packages.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/packages.go index 2eaa7cc9307..dd2c9cceb93 100644 --- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/packages.go +++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/packages.go @@ -89,13 +89,6 @@ func packageForInternalInterfaces(base string) string { return filepath.Join(base, "internalinterfaces") } -func vendorless(p string) string { - if pos := strings.LastIndex(p, "/vendor/"); pos != -1 { - return p[pos+len("/vendor/"):] - } - return p -} - // Packages makes the client package definition. func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages { boilerplate, err := arguments.LoadGoBoilerplate() @@ -122,7 +115,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat internalGroupVersions := make(map[string]clientgentypes.GroupVersions) groupGoNames := make(map[string]string) for _, inputDir := range arguments.InputDirs { - p := context.Universe.Package(vendorless(inputDir)) + p := context.Universe.Package(genutil.Vendorless(inputDir)) objectMeta, internal, err := objectMetaForPackage(p) if err != nil { 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 6ea8f52ee09..6ed1fe497c2 100644 --- a/staging/src/k8s.io/code-generator/pkg/util/build.go +++ b/staging/src/k8s.io/code-generator/pkg/util/build.go @@ -59,3 +59,11 @@ func hasSubdir(root, dir string) (rel string, ok bool) { func BoilerplatePath() string { return path.Join(reflect.TypeOf(empty{}).PkgPath(), "/../../hack/boilerplate.go.txt") } + +// 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 { + return p[pos+len("/vendor/"):] + } + return p +} From a42299bc94dc923963528958797120d4f4b1dbcf Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Thu, 16 Jul 2020 16:57:24 -0700 Subject: [PATCH 3/3] generated --- .../src/k8s.io/code-generator/cmd/client-gen/generators/BUILD | 1 + .../k8s.io/code-generator/cmd/conversion-gen/generators/BUILD | 1 + 2 files changed, 2 insertions(+) diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD index adf7860179d..dc6e75aba6a 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD @@ -24,6 +24,7 @@ go_library( "//staging/src/k8s.io/code-generator/cmd/client-gen/path:go_default_library", "//staging/src/k8s.io/code-generator/cmd/client-gen/types:go_default_library", "//staging/src/k8s.io/code-generator/pkg/namer:go_default_library", + "//staging/src/k8s.io/code-generator/pkg/util:go_default_library", "//vendor/k8s.io/gengo/args:go_default_library", "//vendor/k8s.io/gengo/generator:go_default_library", "//vendor/k8s.io/gengo/namer:go_default_library", diff --git a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/BUILD b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/BUILD index b1abbf6cb64..5c46543d7f9 100644 --- a/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/BUILD +++ b/staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/BUILD @@ -12,6 +12,7 @@ go_library( importpath = "k8s.io/code-generator/cmd/conversion-gen/generators", deps = [ "//staging/src/k8s.io/code-generator/cmd/conversion-gen/args:go_default_library", + "//staging/src/k8s.io/code-generator/pkg/util:go_default_library", "//vendor/k8s.io/gengo/args:go_default_library", "//vendor/k8s.io/gengo/generator:go_default_library", "//vendor/k8s.io/gengo/namer:go_default_library",