Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff3a5b31 authored by Ivan Lozano's avatar Ivan Lozano
Browse files

Make source_stem required for Rust SourceProviders

This removes ambiguity for developers with the 'stem' property.

Bug: 159064919
Test: New Soong test; error is produced if this property is undefined.
Change-Id: I790fbcfa6cd7dbf6df63b5cf5c22983426ec072e
parent b14e1415
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ bootstrap_go_package {
        "library_test.go",
        "project_json_test.go",
        "rust_test.go",
        "source_provider_test.go",
        "test_test.go",
    ],
    pluginFor: ["soong_build"],
+6 −7
Original line number Diff line number Diff line
@@ -19,9 +19,8 @@ import (
)

type SourceProviderProperties struct {
	// name for the generated source file. Defaults to module name (e.g. moduleNameFoo.rs is produced by default).
	// Importantly, the inherited "stem" property for this module sets the output filename for the generated library
	// variants only
	// filename for the generated source file (<source_stem>.rs). This field is required.
	// The inherited "stem" property sets the output filename for the generated library variants only.
	Source_stem *string `android:"arch_variant"`

	// crate name, used for the library variant of this source provider. See additional details in rust_library.
@@ -65,11 +64,11 @@ func NewSourceProvider() *baseSourceProvider {
}

func (sp *baseSourceProvider) getStem(ctx android.ModuleContext) string {
	stem := ctx.ModuleName()
	if String(sp.Properties.Source_stem) != "" {
		stem = String(sp.Properties.Source_stem)
	if String(sp.Properties.Source_stem) == "" {
		ctx.PropertyErrorf("source_stem",
			"source_stem property is undefined but required for rust_bindgen modules")
	}
	return stem
	return String(sp.Properties.Source_stem)
}

func (sp *baseSourceProvider) sourceProviderDeps(ctx DepsContext, deps Deps) Deps {
+31 −0
Original line number Diff line number Diff line
// Copyright 2020 The Android Open Source Project
//
// 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.

package rust

import (
	"testing"
)

var stemRequiredError = "source_stem property is undefined but required for rust_bindgen modules"

func TestSourceProviderRequiredFields(t *testing.T) {
	testRustError(t, stemRequiredError, `
		rust_bindgen {
			name: "libbindgen",
			wrapper_src: "src/any.h",
			crate_name: "bindgen",
		}
	`)
}