From 8481186d56e040fffc8f01d0a392704310295435 Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Tue, 21 Jul 2020 11:32:19 +0000 Subject: [PATCH] Fix dist(s)-with-tag and add tests to prevent regression. While AndroidMkEntries' DistFiles were populated from java_library properly, there was a bug in the conditionals that dropped the tagged DistFiles. Fixes b/152834186 Fixes b/161339864 Test: soong tests, m sdk dist (creates out/dist/test.jar with aosp/1363578) Signed-off-by: Jingwen Chen Change-Id: Id895282256fd367b2f46dcb7a643465fa66c9456 --- android/androidmk.go | 2 +- android/androidmk_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/android/androidmk.go b/android/androidmk.go index dfc68c437..94b4b8175 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -165,7 +165,7 @@ func (a *AndroidMkEntries) GetDistForGoals(mod blueprint.Module) []string { var ret []string availableTaggedDists := TaggedDistFiles{} - if a.DistFiles != nil && len(a.DistFiles[""]) > 0 { + if a.DistFiles != nil { availableTaggedDists = a.DistFiles } else if a.OutputFile.Valid() { availableTaggedDists = MakeDefaultDistFiles(a.OutputFile.Path()) diff --git a/android/androidmk_test.go b/android/androidmk_test.go index 250f086e5..a558f453f 100644 --- a/android/androidmk_test.go +++ b/android/androidmk_test.go @@ -45,6 +45,8 @@ func (m *customModule) OutputFiles(tag string) (Paths, error) { return PathsForTesting("one.out"), nil case ".multiple": return PathsForTesting("two.out", "three/four.out"), nil + case ".another-tag": + return PathsForTesting("another.out"), nil default: return nil, fmt.Errorf("unsupported module reference tag %q", tag) } @@ -119,6 +121,38 @@ func TestGetDistForGoals(t *testing.T) { "$(call dist-for-goals,my_goal,one.out:one.out)\n", }, }, + { + bp: ` + custom { + name: "foo", + dist: { + targets: ["my_goal"], + tag: ".another-tag", + } + } + `, + expectedAndroidMkLines: []string{ + ".PHONY: my_goal\n", + "$(call dist-for-goals,my_goal,another.out:another.out)\n", + }, + }, + { + bp: ` + custom { + name: "foo", + dists: [ + { + targets: ["my_goal"], + tag: ".another-tag", + }, + ], + } + `, + expectedAndroidMkLines: []string{ + ".PHONY: my_goal\n", + "$(call dist-for-goals,my_goal,another.out:another.out)\n", + }, + }, { bp: ` custom {