Merge pull request #103847 from liggitt/generator-install-fix

Generator install fix
This commit is contained in:
Kubernetes Prow Robot 2021-08-05 01:44:51 -07:00 committed by GitHub
commit d9de848739
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 55 additions and 40 deletions

View File

@ -19,10 +19,8 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
generatorargs "k8s.io/code-generator/cmd/applyconfiguration-gen/args" generatorargs "k8s.io/code-generator/cmd/applyconfiguration-gen/args"
@ -33,7 +31,7 @@ import (
func main() { func main() {
klog.InitFlags(nil) klog.InitFlags(nil)
genericArgs, customArgs := generatorargs.NewDefaults() genericArgs, customArgs := generatorargs.NewDefaults()
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of client-gen customArgs.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of client-gen
if err := flag.Set("logtostderr", "true"); err != nil { if err := flag.Set("logtostderr", "true"); err != nil {

View File

@ -19,10 +19,8 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
generatorargs "k8s.io/code-generator/cmd/client-gen/args" generatorargs "k8s.io/code-generator/cmd/client-gen/args"
@ -36,7 +34,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of client-gen // TODO: move this out of client-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/clientset_generated/" genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/clientset_generated/"
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)

View File

@ -87,10 +87,8 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
generatorargs "k8s.io/code-generator/cmd/conversion-gen/args" generatorargs "k8s.io/code-generator/cmd/conversion-gen/args"
@ -104,7 +102,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of conversion-gen // TODO: move this out of conversion-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine)

View File

@ -44,10 +44,8 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/gengo/args"
"k8s.io/gengo/examples/deepcopy-gen/generators" "k8s.io/gengo/examples/deepcopy-gen/generators"
"k8s.io/klog/v2" "k8s.io/klog/v2"
@ -61,7 +59,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of deepcopy-gen // TODO: move this out of deepcopy-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine)

View File

@ -43,10 +43,8 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/gengo/args"
"k8s.io/gengo/examples/defaulter-gen/generators" "k8s.io/gengo/examples/defaulter-gen/generators"
"k8s.io/klog/v2" "k8s.io/klog/v2"
@ -60,7 +58,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of defaulter-gen // TODO: move this out of defaulter-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine)

View File

@ -57,7 +57,7 @@ func New() *Generator {
sourceTree := args.DefaultSourceTree() sourceTree := args.DefaultSourceTree()
common := args.GeneratorArgs{ common := args.GeneratorArgs{
OutputBase: sourceTree, OutputBase: sourceTree,
GoHeaderFilePath: filepath.Join(sourceTree, util.BoilerplatePath()), GoHeaderFilePath: util.BoilerplatePath(),
} }
defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf") defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf")
cwd, err := os.Getwd() cwd, err := os.Getwd()

View File

@ -19,7 +19,6 @@ package main
import ( import (
"os" "os"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
@ -34,7 +33,7 @@ func main() {
arguments := args.Default() arguments := args.Default()
// Override defaults. // Override defaults.
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) arguments.GoHeaderFilePath = util.BoilerplatePath()
pflag.CommandLine.BoolVar(&arguments.IncludeTestFiles, "include-test-files", false, "If true, include *_test.go files.") pflag.CommandLine.BoolVar(&arguments.IncludeTestFiles, "include-test-files", false, "If true, include *_test.go files.")
if err := arguments.Execute( if err := arguments.Execute(

View File

@ -18,12 +18,10 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/code-generator/cmd/informer-gen/generators" "k8s.io/code-generator/cmd/informer-gen/generators"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
generatorargs "k8s.io/code-generator/cmd/informer-gen/args" generatorargs "k8s.io/code-generator/cmd/informer-gen/args"
@ -35,7 +33,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move out of informer-gen // TODO: move out of informer-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated" genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated"
customArgs.VersionedClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" customArgs.VersionedClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
customArgs.InternalClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" customArgs.InternalClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"

View File

@ -18,12 +18,10 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/code-generator/cmd/lister-gen/generators" "k8s.io/code-generator/cmd/lister-gen/generators"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
generatorargs "k8s.io/code-generator/cmd/lister-gen/args" generatorargs "k8s.io/code-generator/cmd/lister-gen/args"
@ -35,7 +33,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of lister-gen // TODO: move this out of lister-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers" genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers"
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)

View File

@ -34,13 +34,11 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
generatorargs "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/args" generatorargs "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/args"
statusgenerators "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/prerelease-lifecycle-generators" statusgenerators "k8s.io/code-generator/cmd/prerelease-lifecycle-gen/prerelease-lifecycle-generators"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/klog/v2" "k8s.io/klog/v2"
) )
@ -50,7 +48,7 @@ func main() {
// Override defaults. // Override defaults.
// TODO: move this out of prerelease-lifecycle-gen // TODO: move this out of prerelease-lifecycle-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine)

View File

@ -18,7 +18,6 @@ package main
import ( import (
"flag" "flag"
"path/filepath"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/klog/v2" "k8s.io/klog/v2"
@ -26,13 +25,12 @@ import (
generatorargs "k8s.io/code-generator/cmd/register-gen/args" generatorargs "k8s.io/code-generator/cmd/register-gen/args"
"k8s.io/code-generator/cmd/register-gen/generators" "k8s.io/code-generator/cmd/register-gen/generators"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
) )
func main() { func main() {
klog.InitFlags(nil) klog.InitFlags(nil)
genericArgs := generatorargs.NewDefaults() genericArgs := generatorargs.NewDefaults()
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) genericArgs.GoHeaderFilePath = util.BoilerplatePath()
genericArgs.AddFlags(pflag.CommandLine) genericArgs.AddFlags(pflag.CommandLine)
flag.Set("logtostderr", "true") flag.Set("logtostderr", "true")
pflag.CommandLine.AddGoFlagSet(flag.CommandLine) pflag.CommandLine.AddGoFlagSet(flag.CommandLine)

View File

@ -26,7 +26,6 @@ package main
import ( import (
"os" "os"
"path/filepath"
"k8s.io/code-generator/pkg/util" "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args" "k8s.io/gengo/args"
@ -40,7 +39,7 @@ func main() {
arguments := args.Default() arguments := args.Default()
// Override defaults. // Override defaults.
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath()) arguments.GoHeaderFilePath = util.BoilerplatePath()
arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"} arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"}
arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets" arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets"

View File

@ -47,10 +47,10 @@ GROUPS_WITH_VERSIONS="$4"
shift 4 shift 4
( (
# To support running this script from anywhere, we have to first cd into this directory # To support running this script from anywhere, first cd into this directory,
# so we can install the tools. # and then install with forced module mode on and fully qualified name.
cd "$(dirname "${0}")" cd "$(dirname "${0}")"
go install ./cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen} GO111MODULE=on go install k8s.io/code-generator/cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen}
) )
# Go installs the above commands to get installed in $GOBIN if defined, and $GOPATH/bin otherwise: # Go installs the above commands to get installed in $GOBIN if defined, and $GOPATH/bin otherwise:
GOBIN="$(go env GOBIN)" GOBIN="$(go env GOBIN)"

View File

@ -47,7 +47,12 @@ EXT_APIS_PKG="$4"
GROUPS_WITH_VERSIONS="$5" GROUPS_WITH_VERSIONS="$5"
shift 5 shift 5
go install ./"$(dirname "${0}")"/cmd/{defaulter-gen,conversion-gen,client-gen,lister-gen,informer-gen,deepcopy-gen,openapi-gen} (
# To support running this script from anywhere, first cd into this directory,
# and then install with forced module mode on and fully qualified name.
cd "$(dirname "${0}")"
GO111MODULE=on go install k8s.io/code-generator/cmd/{defaulter-gen,conversion-gen,client-gen,lister-gen,informer-gen,deepcopy-gen,openapi-gen}
)
function codegen::join() { local IFS="$1"; shift; echo "$*"; } function codegen::join() { local IFS="$1"; shift; echo "$*"; }

View File

@ -17,7 +17,7 @@ require (
github.com/stretchr/testify v1.7.0 // indirect github.com/stretchr/testify v1.7.0 // indirect
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 // indirect golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 // indirect
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 // indirect golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 // indirect
golang.org/x/tools v0.1.2 // indirect golang.org/x/tools v0.1.2
gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027 k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027

View File

@ -18,10 +18,12 @@ package util
import ( import (
gobuild "go/build" gobuild "go/build"
"path" "os"
"path/filepath" "path/filepath"
"reflect" "reflect"
"strings" "strings"
"golang.org/x/tools/go/packages"
) )
type empty struct{} type empty struct{}
@ -55,9 +57,37 @@ func hasSubdir(root, dir string) (rel string, ok bool) {
return filepath.ToSlash(dir[len(root):]), true return filepath.ToSlash(dir[len(root):]), true
} }
// BoilerplatePath uses the boilerplate in code-generator by calculating the relative path to it. // 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 { func BoilerplatePath() string {
return path.Join(reflect.TypeOf(empty{}).PkgPath(), "/../../hack/boilerplate.go.txt") // 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 // Vendorless trims vendor prefix from a package path to make it canonical