mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
Protobuf generation for staged packages
This commit is contained in:
parent
3cbfc6ba22
commit
e4b39b17d4
@ -39,6 +39,7 @@ type Generator struct {
|
|||||||
Common args.GeneratorArgs
|
Common args.GeneratorArgs
|
||||||
Packages string
|
Packages string
|
||||||
OutputBase string
|
OutputBase string
|
||||||
|
VendorOutputBase string
|
||||||
ProtoImport []string
|
ProtoImport []string
|
||||||
Conditional string
|
Conditional string
|
||||||
Clean bool
|
Clean bool
|
||||||
@ -56,9 +57,10 @@ func New() *Generator {
|
|||||||
}
|
}
|
||||||
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")
|
||||||
return &Generator{
|
return &Generator{
|
||||||
Common: common,
|
Common: common,
|
||||||
OutputBase: sourceTree,
|
OutputBase: sourceTree,
|
||||||
ProtoImport: []string{defaultProtoImport},
|
VendorOutputBase: filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor"),
|
||||||
|
ProtoImport: []string{defaultProtoImport},
|
||||||
Packages: strings.Join([]string{
|
Packages: strings.Join([]string{
|
||||||
`+k8s.io/kubernetes/pkg/util/intstr`,
|
`+k8s.io/kubernetes/pkg/util/intstr`,
|
||||||
`+k8s.io/kubernetes/pkg/api/resource`,
|
`+k8s.io/kubernetes/pkg/api/resource`,
|
||||||
@ -80,7 +82,7 @@ func New() *Generator {
|
|||||||
`k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1`,
|
`k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1`,
|
||||||
`k8s.io/kubernetes/pkg/apis/storage/v1beta1`,
|
`k8s.io/kubernetes/pkg/apis/storage/v1beta1`,
|
||||||
}, ","),
|
}, ","),
|
||||||
DropEmbeddedFields: "k8s.io/kubernetes/pkg/apis/meta/v1.TypeMeta",
|
DropEmbeddedFields: "k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,12 +189,25 @@ func Run(g *Generator) {
|
|||||||
c.Verify = g.Common.VerifyOnly
|
c.Verify = g.Common.VerifyOnly
|
||||||
c.FileTypes["protoidl"] = NewProtoFile()
|
c.FileTypes["protoidl"] = NewProtoFile()
|
||||||
|
|
||||||
|
var vendoredOutputPackages, localOutputPackages generator.Packages
|
||||||
|
for _, p := range protobufNames.packages {
|
||||||
|
p.Vendored = strings.Contains(c.Universe[p.PackagePath].SourcePath, "/vendor/")
|
||||||
|
if p.Vendored {
|
||||||
|
vendoredOutputPackages = append(vendoredOutputPackages, p)
|
||||||
|
} else {
|
||||||
|
localOutputPackages = append(localOutputPackages, p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if err := protobufNames.AssignTypesToPackages(c); err != nil {
|
if err := protobufNames.AssignTypesToPackages(c); err != nil {
|
||||||
log.Fatalf("Failed to identify Common types: %v", err)
|
log.Fatalf("Failed to identify Common types: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := c.ExecutePackages(g.OutputBase, outputPackages); err != nil {
|
if err := c.ExecutePackages(g.VendorOutputBase, vendoredOutputPackages); err != nil {
|
||||||
log.Fatalf("Failed executing generator: %v", err)
|
log.Fatalf("Failed executing vendor generator: %v", err)
|
||||||
|
}
|
||||||
|
if err := c.ExecutePackages(g.OutputBase, localOutputPackages); err != nil {
|
||||||
|
log.Fatalf("Failed executing local generator: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if g.OnlyIDL {
|
if g.OnlyIDL {
|
||||||
@ -222,6 +237,10 @@ func Run(g *Generator) {
|
|||||||
|
|
||||||
path := filepath.Join(g.OutputBase, p.ImportPath())
|
path := filepath.Join(g.OutputBase, p.ImportPath())
|
||||||
outputPath := filepath.Join(g.OutputBase, p.OutputPath())
|
outputPath := filepath.Join(g.OutputBase, p.OutputPath())
|
||||||
|
if p.Vendored {
|
||||||
|
path = filepath.Join(g.VendorOutputBase, p.ImportPath())
|
||||||
|
outputPath = filepath.Join(g.VendorOutputBase, p.OutputPath())
|
||||||
|
}
|
||||||
|
|
||||||
// generate the gogoprotobuf protoc
|
// generate the gogoprotobuf protoc
|
||||||
cmd := exec.Command("protoc", append(args, path)...)
|
cmd := exec.Command("protoc", append(args, path)...)
|
||||||
@ -277,8 +296,11 @@ func Run(g *Generator) {
|
|||||||
p := outputPackage.(*protobufPackage)
|
p := outputPackage.(*protobufPackage)
|
||||||
p.OmitGogo = true
|
p.OmitGogo = true
|
||||||
}
|
}
|
||||||
if err := c.ExecutePackages(g.OutputBase, outputPackages); err != nil {
|
if err := c.ExecutePackages(g.VendorOutputBase, vendoredOutputPackages); err != nil {
|
||||||
log.Fatalf("Failed executing generator: %v", err)
|
log.Fatalf("Failed executing vendor generator: %v", err)
|
||||||
|
}
|
||||||
|
if err := c.ExecutePackages(g.OutputBase, localOutputPackages); err != nil {
|
||||||
|
log.Fatalf("Failed executing local generator: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,6 +312,9 @@ func Run(g *Generator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pattern := filepath.Join(g.OutputBase, p.PackagePath, "*.go")
|
pattern := filepath.Join(g.OutputBase, p.PackagePath, "*.go")
|
||||||
|
if p.Vendored {
|
||||||
|
pattern = filepath.Join(g.VendorOutputBase, p.PackagePath, "*.go")
|
||||||
|
}
|
||||||
files, err := filepath.Glob(pattern)
|
files, err := filepath.Glob(pattern)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Can't glob pattern %q: %v", pattern, err)
|
log.Fatalf("Can't glob pattern %q: %v", pattern, err)
|
||||||
|
@ -57,6 +57,10 @@ func newProtobufPackage(packagePath, packageName string, generateAll bool, omitF
|
|||||||
type protobufPackage struct {
|
type protobufPackage struct {
|
||||||
generator.DefaultPackage
|
generator.DefaultPackage
|
||||||
|
|
||||||
|
// If true, this package has been vendored into our source tree and thus can
|
||||||
|
// only be generated by changing the vendor tree.
|
||||||
|
Vendored bool
|
||||||
|
|
||||||
// If true, generate protobuf serializations for all public types.
|
// If true, generate protobuf serializations for all public types.
|
||||||
// If false, only generate protobuf serializations for structs that
|
// If false, only generate protobuf serializations for structs that
|
||||||
// request serialization.
|
// request serialization.
|
||||||
|
Loading…
Reference in New Issue
Block a user