From 9288025c28225af383556c9d671032afcf38c1fe Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Fri, 5 May 2017 13:21:37 -0700 Subject: [PATCH 1/2] let client-gen understand vendor --- .../client-gen/generators/client_generator.go | 4 ++- .../fake/generator_fake_for_type.go | 3 +- .../generators/generator_for_group.go | 5 +-- .../generators/scheme/generator_for_scheme.go | 5 +-- cmd/libs/go2idl/client-gen/path/path.go | 31 +++++++++++++++++++ 5 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 cmd/libs/go2idl/client-gen/path/path.go diff --git a/cmd/libs/go2idl/client-gen/generators/client_generator.go b/cmd/libs/go2idl/client-gen/generators/client_generator.go index cafb98ee5fe..c2604d917e7 100644 --- a/cmd/libs/go2idl/client-gen/generators/client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/client_generator.go @@ -29,6 +29,7 @@ import ( clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/fake" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/scheme" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types" "github.com/golang/glog" @@ -221,7 +222,8 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat gvToTypes := map[clientgentypes.GroupVersion][]*types.Type{} for gv, inputDir := range customArgs.GroupVersionToInputPath { - p := context.Universe.Package(inputDir) + // Package are indexed with the vendor prefix stripped + p := context.Universe.Package(path.Vendorless(inputDir)) for n, t := range p.Types { // filter out types which are not included in user specified overrides. typesOverride, ok := includedTypesOverrides[gv] diff --git a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go index c5c58719033..f6a4c3310b5 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go @@ -24,6 +24,7 @@ import ( "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/types" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path" ) // genFakeForType produces a file for each top-level type. @@ -99,7 +100,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io. } // allow user to define a group name that's different from the one parsed from the directory. - p := c.Universe.Package(g.inputPackage) + p := c.Universe.Package(path.Vendorless(g.inputPackage)) if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil { groupName = override[0] } diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go index 39de23e52f6..c419ad25149 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go @@ -23,6 +23,7 @@ import ( "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/types" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path" ) // genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group. @@ -76,7 +77,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer groupName = "" } // allow user to define a group name that's different from the one parsed from the directory. - p := c.Universe.Package(g.inputPackage) + p := c.Universe.Package(path.Vendorless(g.inputPackage)) if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil { groupName = override[0] } @@ -95,7 +96,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer "restDefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}), "restRESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}), "restRESTClientFor": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}), - "SchemeGroupVersion": c.Universe.Variable(types.Name{Package: g.inputPackage, Name: "SchemeGroupVersion"}), + "SchemeGroupVersion": c.Universe.Variable(types.Name{Package: path.Vendorless(g.inputPackage), Name: "SchemeGroupVersion"}), } sw.Do(groupInterfaceTemplate, m) sw.Do(groupClientTemplate, m) diff --git a/cmd/libs/go2idl/client-gen/generators/scheme/generator_for_scheme.go b/cmd/libs/go2idl/client-gen/generators/scheme/generator_for_scheme.go index 869c76a3b54..e4a2b02e14d 100644 --- a/cmd/libs/go2idl/client-gen/generators/scheme/generator_for_scheme.go +++ b/cmd/libs/go2idl/client-gen/generators/scheme/generator_for_scheme.go @@ -26,6 +26,7 @@ import ( "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/types" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types" ) @@ -66,10 +67,10 @@ func (g *GenScheme) Imports(c *generator.Context) (imports []string) { packagePath = filepath.Dir(packagePath) } packagePath = filepath.Join(packagePath, "install") - imports = append(imports, strings.ToLower(fmt.Sprintf("%s \"%s\"", group.Group.NonEmpty(), packagePath))) + imports = append(imports, strings.ToLower(fmt.Sprintf("%s \"%s\"", group.Group.NonEmpty(), path.Vendorless(packagePath)))) break } else { - imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), packagePath))) + imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), path.Vendorless(packagePath)))) } } } diff --git a/cmd/libs/go2idl/client-gen/path/path.go b/cmd/libs/go2idl/client-gen/path/path.go new file mode 100644 index 00000000000..19b269bdf28 --- /dev/null +++ b/cmd/libs/go2idl/client-gen/path/path.go @@ -0,0 +1,31 @@ +/* +Copyright 2017 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. +*/ + +package path + +import "strings" + +// Vendorless removes the longest match of "*/vendor/" from the front of p. +// It is useful if a package locates in vendor/, e.g., +// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1, because gengo +// indexes the package with its import path, e.g., +// k8s.io/apimachinery/pkg/apis/meta/v1, +func Vendorless(p string) string { + if pos := strings.LastIndex(p, "/vendor/"); pos != -1 { + return p[pos+len("/vendor/"):] + } + return p +} From bd6a9604dc2b41854c60204d1205820b23a03220 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Tue, 16 May 2017 20:29:43 -0700 Subject: [PATCH 2/2] generated --- cmd/libs/go2idl/client-gen/BUILD | 1 + cmd/libs/go2idl/client-gen/generators/BUILD | 1 + .../go2idl/client-gen/generators/fake/BUILD | 1 + .../go2idl/client-gen/generators/scheme/BUILD | 1 + cmd/libs/go2idl/client-gen/path/BUILD | 27 +++++++++++++++++++ hack/.linted_packages | 1 + 6 files changed, 32 insertions(+) create mode 100644 cmd/libs/go2idl/client-gen/path/BUILD diff --git a/cmd/libs/go2idl/client-gen/BUILD b/cmd/libs/go2idl/client-gen/BUILD index 81dd0f7b2a1..6a13076b0fb 100644 --- a/cmd/libs/go2idl/client-gen/BUILD +++ b/cmd/libs/go2idl/client-gen/BUILD @@ -41,6 +41,7 @@ filegroup( ":package-srcs", "//cmd/libs/go2idl/client-gen/args:all-srcs", "//cmd/libs/go2idl/client-gen/generators:all-srcs", + "//cmd/libs/go2idl/client-gen/path:all-srcs", "//cmd/libs/go2idl/client-gen/test_apis/testgroup:all-srcs", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset:all-srcs", "//cmd/libs/go2idl/client-gen/types:all-srcs", diff --git a/cmd/libs/go2idl/client-gen/generators/BUILD b/cmd/libs/go2idl/client-gen/generators/BUILD index dd089164209..72b1eb726b1 100644 --- a/cmd/libs/go2idl/client-gen/generators/BUILD +++ b/cmd/libs/go2idl/client-gen/generators/BUILD @@ -22,6 +22,7 @@ go_library( "//cmd/libs/go2idl/client-gen/args:go_default_library", "//cmd/libs/go2idl/client-gen/generators/fake:go_default_library", "//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library", + "//cmd/libs/go2idl/client-gen/path:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/gengo/args:go_default_library", diff --git a/cmd/libs/go2idl/client-gen/generators/fake/BUILD b/cmd/libs/go2idl/client-gen/generators/fake/BUILD index cad1c60c1a6..08ad1ac1daa 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/BUILD +++ b/cmd/libs/go2idl/client-gen/generators/fake/BUILD @@ -19,6 +19,7 @@ go_library( deps = [ "//cmd/libs/go2idl/client-gen/args:go_default_library", "//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library", + "//cmd/libs/go2idl/client-gen/path:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/gengo/generator:go_default_library", diff --git a/cmd/libs/go2idl/client-gen/generators/scheme/BUILD b/cmd/libs/go2idl/client-gen/generators/scheme/BUILD index de5835d84a2..d3f058386c8 100644 --- a/cmd/libs/go2idl/client-gen/generators/scheme/BUILD +++ b/cmd/libs/go2idl/client-gen/generators/scheme/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["generator_for_scheme.go"], tags = ["automanaged"], deps = [ + "//cmd/libs/go2idl/client-gen/path:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library", "//vendor/k8s.io/gengo/generator:go_default_library", "//vendor/k8s.io/gengo/namer:go_default_library", diff --git a/cmd/libs/go2idl/client-gen/path/BUILD b/cmd/libs/go2idl/client-gen/path/BUILD new file mode 100644 index 00000000000..1c967c9b846 --- /dev/null +++ b/cmd/libs/go2idl/client-gen/path/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["path.go"], + tags = ["automanaged"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/hack/.linted_packages b/hack/.linted_packages index c2b1cf655d6..b215082a27b 100644 --- a/hack/.linted_packages +++ b/hack/.linted_packages @@ -26,6 +26,7 @@ cmd/kubectl cmd/kubelet cmd/libs/go2idl/client-gen cmd/libs/go2idl/client-gen/generators +cmd/libs/go2idl/client-gen/path cmd/libs/go2idl/client-gen/test_apis/testgroup/install cmd/libs/go2idl/conversion-gen cmd/libs/go2idl/deepcopy-gen