Revert "rust: validate existence of library source"
Revert submission 1391076
Reason for revert: Broken downstream Darwin build (b/162975597)
Reverted Changes:
I275f04639:rust: handle modules with same crate_name
Ie736d7ebb:rust: validate existence of library source
Change-Id: I1732d50a08546864f17cd826c8af574c1064c670
diff --git a/rust/project_json.go b/rust/project_json.go
index 7537540..41dd194 100644
--- a/rust/project_json.go
+++ b/rust/project_json.go
@@ -75,6 +75,7 @@
knownCrates map[string]crateInfo, module android.Module,
crate *rustProjectCrate, deps map[string]int) {
+ //TODO(tweek): The stdlib dependencies do not appear here. We need to manually add them.
ctx.VisitDirectDeps(module, func(child android.Module) {
childId, childName, ok := appendLibraryAndDeps(ctx, project, knownCrates, child)
if !ok {
@@ -114,11 +115,8 @@
return cInfo.ID, crateName, true
}
crate := rustProjectCrate{Deps: make([]rustProjectDep, 0), Cfgs: make([]string, 0)}
- srcs := rustLib.baseCompiler.Properties.Srcs
- if len(srcs) == 0 {
- return 0, "", false
- }
- crate.RootModule = path.Join(ctx.ModuleDir(rModule), srcs[0])
+ src := rustLib.baseCompiler.Properties.Srcs[0]
+ crate.RootModule = path.Join(ctx.ModuleDir(rModule), src)
crate.Edition = rustLib.baseCompiler.edition()
deps := make(map[string]int)
diff --git a/rust/project_json_test.go b/rust/project_json_test.go
index 89ba8d3..6786e72 100644
--- a/rust/project_json_test.go
+++ b/rust/project_json_test.go
@@ -15,7 +15,6 @@
package rust
import (
- "encoding/json"
"io/ioutil"
"path/filepath"
"testing"
@@ -24,12 +23,20 @@
"android/soong/cc"
)
-// testProjectJson run the generation of rust-project.json. It returns the raw
-// content of the generated file.
-func testProjectJson(t *testing.T, bp string, fs map[string][]byte) []byte {
+func TestProjectJson(t *testing.T) {
+ bp := `rust_library {
+ name: "liba",
+ srcs: ["src/lib.rs"],
+ crate_name: "a"
+ }` + GatherRequiredDepsForTest()
+ env := map[string]string{"SOONG_GEN_RUST_PROJECT": "1"}
+ fs := map[string][]byte{
+ "foo.rs": nil,
+ "src/lib.rs": nil,
+ }
+
cc.GatherRequiredFilesForTest(fs)
- env := map[string]string{"SOONG_GEN_RUST_PROJECT": "1"}
config := android.TestArchConfig(buildDir, env, bp, fs)
ctx := CreateTestContext()
ctx.Register(config)
@@ -41,79 +48,8 @@
// The JSON file is generated via WriteFileToOutputDir. Therefore, it
// won't appear in the Output of the TestingSingleton. Manually verify
// it exists.
- content, err := ioutil.ReadFile(filepath.Join(buildDir, rustProjectJsonFileName))
+ _, err := ioutil.ReadFile(filepath.Join(buildDir, "rust-project.json"))
if err != nil {
t.Errorf("rust-project.json has not been generated")
}
- return content
-}
-
-// validateJsonCrates validates that content follows the basic structure of
-// rust-project.json. It returns the crates attribute if the validation
-// succeeded.
-// It uses an empty interface instead of relying on a defined structure to
-// avoid a strong dependency on our implementation.
-func validateJsonCrates(t *testing.T, rawContent []byte) []interface{} {
- var content interface{}
- err := json.Unmarshal(rawContent, &content)
- if err != nil {
- t.Errorf("Unable to parse the rust-project.json as JSON: %v", err)
- }
- root, ok := content.(map[string]interface{})
- if !ok {
- t.Errorf("Unexpected JSON format: %v", content)
- }
- if _, ok = root["crates"]; !ok {
- t.Errorf("No crates attribute in rust-project.json: %v", root)
- }
- crates, ok := root["crates"].([]interface{})
- if !ok {
- t.Errorf("Unexpected crates format: %v", root["crates"])
- }
- return crates
-}
-
-func TestProjectJsonDep(t *testing.T) {
- bp := `
- rust_library {
- name: "liba",
- srcs: ["a/src/lib.rs"],
- crate_name: "a"
- }
- rust_library {
- name: "libb",
- srcs: ["b/src/lib.rs"],
- crate_name: "b",
- rlibs: ["liba"],
- }
- ` + GatherRequiredDepsForTest()
- fs := map[string][]byte{
- "a/src/lib.rs": nil,
- "b/src/lib.rs": nil,
- }
- jsonContent := testProjectJson(t, bp, fs)
- validateJsonCrates(t, jsonContent)
-}
-
-func TestProjectJsonBindGen(t *testing.T) {
- bp := `
- rust_library {
- name: "liba",
- srcs: ["src/lib.rs"],
- rlibs: ["libbindings"],
- crate_name: "a"
- }
- rust_bindgen {
- name: "libbindings",
- crate_name: "bindings",
- source_stem: "bindings",
- host_supported: true,
- wrapper_src: "src/any.h",
- }
- ` + GatherRequiredDepsForTest()
- fs := map[string][]byte{
- "src/lib.rs": nil,
- }
- jsonContent := testProjectJson(t, bp, fs)
- validateJsonCrates(t, jsonContent)
}