mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 09:17:49 +08:00

Removes gogo/protobuf from buildx and updates to a version of moby/buildkit where gogo is removed. This also changes how the proto files are generated. This is because newer versions of protobuf are more strict about name conflicts. If two files have the same name (even if they are relative paths) and are used in different protoc commands, they'll conflict in the registry. Since protobuf file generation doesn't work very well with `paths=source_relative`, this removes the `go:generate` expression and just relies on the dockerfile to perform the generation. Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
77 lines
2.4 KiB
Go
77 lines
2.4 KiB
Go
/*
|
|
*
|
|
* Copyright 2020 gRPC 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.
|
|
*
|
|
*/
|
|
|
|
// protoc-gen-go-grpc is a plugin for the Google protocol buffer compiler to
|
|
// generate Go code. Install it by building this program and making it
|
|
// accessible within your PATH with the name:
|
|
//
|
|
// protoc-gen-go-grpc
|
|
//
|
|
// The 'go-grpc' suffix becomes part of the argument for the protocol compiler,
|
|
// such that it can be invoked as:
|
|
//
|
|
// protoc --go-grpc_out=. path/to/file.proto
|
|
//
|
|
// This generates Go service definitions for the protocol buffer defined by
|
|
// file.proto. With that input, the output will be written to:
|
|
//
|
|
// path/to/file_grpc.pb.go
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
|
|
"google.golang.org/protobuf/compiler/protogen"
|
|
"google.golang.org/protobuf/types/descriptorpb"
|
|
"google.golang.org/protobuf/types/pluginpb"
|
|
)
|
|
|
|
const version = "1.5.1"
|
|
|
|
var requireUnimplemented *bool
|
|
var useGenericStreams *bool
|
|
|
|
func main() {
|
|
showVersion := flag.Bool("version", false, "print the version and exit")
|
|
flag.Parse()
|
|
if *showVersion {
|
|
fmt.Printf("protoc-gen-go-grpc %v\n", version)
|
|
return
|
|
}
|
|
|
|
var flags flag.FlagSet
|
|
requireUnimplemented = flags.Bool("require_unimplemented_servers", true, "set to false to match legacy behavior")
|
|
useGenericStreams = flags.Bool("use_generic_streams_experimental", true, "set to true to use generic types for streaming client and server objects; this flag is EXPERIMENTAL and may be changed or removed in a future release")
|
|
|
|
protogen.Options{
|
|
ParamFunc: flags.Set,
|
|
}.Run(func(gen *protogen.Plugin) error {
|
|
gen.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL) | uint64(pluginpb.CodeGeneratorResponse_FEATURE_SUPPORTS_EDITIONS)
|
|
gen.SupportedEditionsMinimum = descriptorpb.Edition_EDITION_PROTO2
|
|
gen.SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023
|
|
for _, f := range gen.Files {
|
|
if !f.Generate {
|
|
continue
|
|
}
|
|
generateFile(gen, f)
|
|
}
|
|
return nil
|
|
})
|
|
}
|