From f5451127512e42294564efae97d4cb669df54f49 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Wed, 20 Sep 2017 14:46:47 +0200 Subject: [PATCH] conversion-gen: make staging dirs independent of living in vendor/ --- build/root/Makefile.generated_files | 3 ++- .../pkg/apis/apiextensions/v1beta1/doc.go | 2 +- .../pkg/apis/testapigroup/v1/doc.go | 2 +- .../pkg/apis/apiserver/v1alpha1/doc.go | 2 +- .../apiserver/pkg/apis/audit/v1alpha1/doc.go | 2 +- .../apiserver/pkg/apis/audit/v1beta1/doc.go | 2 +- .../apiserver/pkg/apis/example/v1/doc.go | 2 +- .../conversion-gen/generators/conversion.go | 20 ++++++++++++++----- .../pkg/apis/apiregistration/v1beta1/doc.go | 2 +- .../pkg/apis/custom_metrics/v1beta1/doc.go | 2 +- .../metrics/pkg/apis/metrics/v1alpha1/doc.go | 2 +- .../metrics/pkg/apis/metrics/v1beta1/doc.go | 2 +- 12 files changed, 27 insertions(+), 16 deletions(-) diff --git a/build/root/Makefile.generated_files b/build/root/Makefile.generated_files index a743cfa503d..96caaf87a73 100644 --- a/build/root/Makefile.generated_files +++ b/build/root/Makefile.generated_files @@ -685,7 +685,8 @@ $(foreach dir, $(CONVERSION_DIRS), \ $(META_DIR)/$(dir)/$(CONVERSIONS_META)): TAGS=$$(grep --color=never -h '^// *+k8s:conversion-gen=' $$@.tmp; \ if ! cmp -s $@.tmp $@; then \ diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go index 5ef43c18457..67af169a132 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions +// +k8s:conversion-gen=k8s.io/apiextensions-apiserver/pkg/apis/apiextensions // +k8s:defaulter-gen=TypeMeta // Package v1beta1 is the v1beta1 version of the API. diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go index 92085894e3c..9f935b3d4bf 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/testapigroup +// +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/testapigroup // +k8s:openapi-gen=false // +k8s:defaulter-gen=TypeMeta diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go index c18a62f1f9e..10cc03cfed4 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/apiserver +// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/apiserver // +k8s:defaulter-gen=TypeMeta // Package v1alpha1 is the v1alpha1 version of the API. diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go index ecb3eec11dd..b7020f207bb 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit +// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/audit // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta diff --git a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go index d95306bbfd8..226d9263a83 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit +// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/audit // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta diff --git a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go index 06bd5f416f2..819ae5ef7a8 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/example/v1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example +// +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/example // +k8s:openapi-gen=false // +k8s:defaulter-gen=TypeMeta 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 dfb065e58e7..ba1eabc313d 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 @@ -284,10 +284,6 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat } return pkg } - fqPkgPath := pkg.Path - if strings.Contains(pkg.SourcePath, "/vendor/") { - fqPkgPath = filepath.Join("k8s.io", "kubernetes", "vendor", pkg.Path) - } for i := range peerPkgs { peerPkgs[i] = vendorless(peerPkgs[i]) } @@ -303,10 +299,24 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat unsafeEquality = noEquality{} } + path := pkg.Path + // if the source path is within a /vendor/ directory (for example, + // k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1), allow + // generation to output to the proper relative path (under vendor). + // Otherwise, the generator will create the file in the wrong location + // in the output directory. + // TODO: build a more fundamental concept in gengo for dealing with modifications + // to vendored packages. + if strings.HasPrefix(pkg.SourcePath, arguments.OutputBase) { + expandedPath := strings.TrimPrefix(pkg.SourcePath, arguments.OutputBase) + if strings.Contains(expandedPath, "/vendor/") { + path = expandedPath + } + } packages = append(packages, &generator.DefaultPackage{ PackageName: filepath.Base(pkg.Path), - PackagePath: fqPkgPath, + PackagePath: path, HeaderText: header, GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { return []generator.Generator{ diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go index 4560cfa1d10..594192ffd13 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration +// +k8s:conversion-gen=k8s.io/kube-aggregator/pkg/apis/apiregistration // +k8s:openapi-gen=true // Package v1beta1 contains the API Registration API, which is responsible for diff --git a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go index 28ef6f96f1f..b20dfa79714 100644 --- a/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go +++ b/staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/custom_metrics +// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/custom_metrics // +k8s:openapi-gen=true package v1beta1 diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go index 625f75ad116..76c2b9a7dbd 100644 --- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go +++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/metrics +// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/metrics // +k8s:openapi-gen=true package v1alpha1 diff --git a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go index 911595b3f42..ec9ac583b03 100644 --- a/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go +++ b/staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/metrics +// +k8s:conversion-gen=k8s.io/metrics/pkg/apis/metrics // +k8s:openapi-gen=true package v1beta1