diff options
Diffstat (limited to 'rust/protobuf.go')
-rw-r--r-- | rust/protobuf.go | 109 |
1 files changed, 5 insertions, 104 deletions
diff --git a/rust/protobuf.go b/rust/protobuf.go index 2982efdf2..d021076eb 100644 --- a/rust/protobuf.go +++ b/rust/protobuf.go @@ -19,10 +19,7 @@ import ( "strings" "android/soong/android" - "android/soong/bazel" "android/soong/cc" - - "github.com/google/blueprint/proptools" ) var ( @@ -59,6 +56,7 @@ type ProtobufProperties struct { // Use protobuf version 3.x. This will be deleted once we migrate all current users // of protobuf off of 2.x. + // ludovicb@: DEPRECATED, to be removed Use_protobuf3 *bool // List of exported include paths containing proto files for dependent rust_protobuf modules. @@ -77,10 +75,6 @@ type protobufDecorator struct { protoFlags android.ProtoFlags } -func (proto *protobufDecorator) useProtobuf3() bool { - return Bool(proto.Properties.Use_protobuf3) -} - func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) android.Path { var protoFlags android.ProtoFlags var grpcProtoFlags android.ProtoFlags @@ -90,12 +84,7 @@ func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) protoFiles := android.PathsForModuleSrc(ctx, proto.Properties.Protos) grpcFiles := android.PathsForModuleSrc(ctx, proto.Properties.Grpc_protos) - // For now protobuf2 (the deprecated version) remains the default. This will change in the - // future as we update the various users. - protoPluginPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust-deprecated") - if proto.useProtobuf3() == true { - protoPluginPath = ctx.Config().HostToolPath(ctx, "protoc-gen-rust") - } + protoPluginPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust") commonProtoFlags = append(commonProtoFlags, defaultProtobufFlags...) commonProtoFlags = append(commonProtoFlags, proto.Properties.Proto_flags...) @@ -189,7 +178,7 @@ func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) // stemFile must be first here as the first path in BaseSourceProvider.OutputFiles is the library entry-point. proto.BaseSourceProvider.OutputFiles = append(android.Paths{stemFile}, outputs.Paths()...) - ctx.SetProvider(cc.FlagExporterInfoProvider, cc.FlagExporterInfo{ + android.SetProvider(ctx, cc.FlagExporterInfoProvider, cc.FlagExporterInfo{ IncludeDirs: android.PathsForModuleSrc(ctx, proto.Properties.Exported_include_dirs), }) @@ -219,13 +208,7 @@ func (proto *protobufDecorator) genModFileContents() string { lines = append( lines, "pub mod empty {", - " pub use protobuf::well_known_types::Empty;", - "}", - "pub mod wrappers {", - " pub use protobuf::well_known_types::{", - " DoubleValue, FloatValue, Int64Value, UInt64Value, Int32Value, UInt32Value,", - " BoolValue, StringValue, BytesValue", - " };", + " pub use protobuf::well_known_types::empty::Empty;", "}") } @@ -238,20 +221,10 @@ func (proto *protobufDecorator) SourceProviderProps() []interface{} { func (proto *protobufDecorator) SourceProviderDeps(ctx DepsContext, deps Deps) Deps { deps = proto.BaseSourceProvider.SourceProviderDeps(ctx, deps) - useProtobuf3 := proto.useProtobuf3() - if useProtobuf3 == true { - deps.Rustlibs = append(deps.Rustlibs, "libprotobuf") - } else { - deps.Rustlibs = append(deps.Rustlibs, "libprotobuf_deprecated") - } + deps.Rustlibs = append(deps.Rustlibs, "libprotobuf") deps.HeaderLibs = append(deps.SharedLibs, proto.Properties.Header_libs...) if len(proto.Properties.Grpc_protos) > 0 { - if useProtobuf3 == true { - ctx.PropertyErrorf("protos", "rust_protobuf with grpc_protos defined must currently use "+ - "`use_protobuf3: false,` in the Android.bp file. This is temporary until the "+ - "grpcio crate is updated to use the current version of the protobuf crate.") - } deps.Rustlibs = append(deps.Rustlibs, "libgrpcio", "libfutures") deps.HeaderLibs = append(deps.HeaderLibs, "libprotobuf-cpp-full") } @@ -282,77 +255,5 @@ func NewRustProtobuf(hod android.HostOrDeviceSupported) (*Module, *protobufDecor module := NewSourceProviderModule(hod, protobuf, false, false) - android.InitBazelModule(module) - return module, protobuf } - -type rustProtoAttributes struct { - Srcs bazel.LabelListAttribute - Crate_name bazel.StringAttribute - Deps bazel.LabelListAttribute -} - -type protoLibraryAttributes struct { - Srcs bazel.LabelListAttribute -} - -func protoLibraryBp2build(ctx android.Bp2buildMutatorContext, m *Module) { - var protoFiles []string - - for _, propsInterface := range m.sourceProvider.SourceProviderProps() { - if possibleProps, ok := propsInterface.(*ProtobufProperties); ok { - protoFiles = possibleProps.Protos - break - } - } - - protoLibraryName := m.Name() + "_proto" - - protoDeps := bazel.LabelListAttribute{ - Value: bazel.LabelList{ - Includes: []bazel.Label{ - { - Label: ":" + protoLibraryName, - OriginalModuleName: m.Name(), - }, - }, - }, - } - - // TODO(b/295918553): Remove androidRestriction after rust toolchain for android is checked in. - var androidRestriction bazel.BoolAttribute - androidRestriction.SetSelectValue(bazel.OsConfigurationAxis, "android", proptools.BoolPtr(false)) - - ctx.CreateBazelTargetModuleWithRestrictions( - bazel.BazelTargetModuleProperties{ - Rule_class: "proto_library", - }, - android.CommonAttributes{ - Name: protoLibraryName, - }, - &protoLibraryAttributes{ - Srcs: bazel.MakeLabelListAttribute( - android.BazelLabelForModuleSrc(ctx, protoFiles), - ), - }, - androidRestriction, - ) - - ctx.CreateBazelTargetModuleWithRestrictions( - bazel.BazelTargetModuleProperties{ - Rule_class: "rust_proto_library", - Bzl_load_location: "@rules_rust//proto/protobuf:defs.bzl", - }, - android.CommonAttributes{ - Name: m.Name(), - }, - &rustProtoAttributes{ - Crate_name: bazel.StringAttribute{ - Value: proptools.StringPtr(m.CrateName()), - }, - Deps: protoDeps, - }, - androidRestriction, - ) -} |