Merge "[rust] Clean up unused link variations."
diff --git a/android/config.go b/android/config.go
index aeed81d..3387706 100644
--- a/android/config.go
+++ b/android/config.go
@@ -1271,3 +1271,7 @@
func (c *deviceConfig) BoardUsesRecoveryAsBoot() bool {
return Bool(c.config.productVariables.BoardUsesRecoveryAsBoot)
}
+
+func (c *deviceConfig) BoardKernelBinaries() []string {
+ return c.config.productVariables.BoardKernelBinaries
+}
diff --git a/android/variable.go b/android/variable.go
index 5826138..c1e1b42 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -344,6 +344,8 @@
InstallExtraFlattenedApexes *bool `json:",omitempty"`
BoardUsesRecoveryAsBoot *bool `json:",omitempty"`
+
+ BoardKernelBinaries []string `json:",omitempty"`
}
func boolPtr(v bool) *bool {
diff --git a/apex/androidmk.go b/apex/androidmk.go
index 82a902b..082aa60 100644
--- a/apex/androidmk.go
+++ b/apex/androidmk.go
@@ -50,6 +50,11 @@
return moduleNames
}
+ // b/162366062. Prevent GKI APEXes to emit make rules to avoid conflicts.
+ if strings.HasPrefix(apexName, "com.android.gki.") && apexType != flattenedApex {
+ return moduleNames
+ }
+
// b/140136207. When there are overriding APEXes for a VNDK APEX, the symbols file for the overridden
// APEX and the overriding APEX will have the same installation paths at /apex/com.android.vndk.v<ver>
// as their apexName will be the same. To avoid the path conflicts, skip installing the symbol files
diff --git a/apex/apex.go b/apex/apex.go
index e3a95fa..9905b79 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -2162,10 +2162,7 @@
return false
}
if cc.UseVndk() && proptools.Bool(a.properties.Use_vndk_as_stable) && cc.IsVndk() {
- // For vendor APEX with use_vndk_as_stable: true, we don't include VNDK libs
- // and use them from VNDK APEX.
- // TODO(b/159576928): add "vndk" as requiredDeps so that linkerconfig can make "vndk"
- // linker namespace avaiable to this apex.
+ requireNativeLibs = append(requireNativeLibs, ":vndk")
return false
}
af := apexFileForNativeLibrary(ctx, cc, handleSpecialLibs)
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 7db61d5..bfd7dfe 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -236,13 +236,15 @@
ctx.PreArchMutators(android.RegisterComponentsMutator)
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
- cc.RegisterRequiredBuildComponentsForTest(ctx)
+ android.RegisterPrebuiltMutators(ctx)
- // Register this after the prebuilt mutators have been registered (in
- // cc.RegisterRequiredBuildComponentsForTest) to match what happens at runtime.
+ // Register these after the prebuilt mutators have been registered to match what
+ // happens at runtime.
ctx.PreArchMutators(android.RegisterVisibilityRuleGatherer)
ctx.PostDepsMutators(android.RegisterVisibilityRuleEnforcer)
+ cc.RegisterRequiredBuildComponentsForTest(ctx)
+
ctx.RegisterModuleType("cc_test", cc.TestFactory)
ctx.RegisterModuleType("vndk_prebuilt_shared", cc.VndkPrebuiltSharedFactory)
ctx.RegisterModuleType("vndk_libraries_txt", cc.VndkLibrariesTxtFactory)
@@ -2201,6 +2203,10 @@
data.Custom(&builder, name, prefix, "", data)
androidMk := builder.String()
ensureContains(t, androidMk, `LOCAL_MODULE_PATH := /tmp/target/product/test_device/vendor/apex`)
+
+ apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
+ requireNativeLibs := names(apexManifestRule.Args["requireNativeLibs"])
+ ensureListNotContains(t, requireNativeLibs, ":vndk")
}
func TestVendorApex_use_vndk_as_stable(t *testing.T) {
@@ -2250,6 +2256,10 @@
"bin/mybin",
"lib64/libvendor.so",
})
+
+ apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
+ requireNativeLibs := names(apexManifestRule.Args["requireNativeLibs"])
+ ensureListContains(t, requireNativeLibs, ":vndk")
}
func TestAndroidMk_UseVendorRequired(t *testing.T) {
@@ -5534,6 +5544,7 @@
ctx.RegisterModuleType("apex_key", ApexKeyFactory)
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
+ android.RegisterPrebuiltMutators(ctx)
cc.RegisterRequiredBuildComponentsForTest(ctx)
java.RegisterJavaBuildComponents(ctx)
java.RegisterSystemModulesBuildComponents(ctx)
diff --git a/cc/testing.go b/cc/testing.go
index 4d0b28b..c2353d8 100644
--- a/cc/testing.go
+++ b/cc/testing.go
@@ -20,8 +20,6 @@
func RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
RegisterPrebuiltBuildComponents(ctx)
- android.RegisterPrebuiltMutators(ctx)
-
RegisterCCBuildComponents(ctx)
RegisterBinaryBuildComponents(ctx)
RegisterLibraryBuildComponents(ctx)
@@ -570,6 +568,7 @@
ctx.RegisterModuleType("vndk_prebuilt_shared", VndkPrebuiltSharedFactory)
ctx.RegisterModuleType("vndk_libraries_txt", VndkLibrariesTxtFactory)
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
+ android.RegisterPrebuiltMutators(ctx)
RegisterRequiredBuildComponentsForTest(ctx)
ctx.RegisterSingletonType("vndk-snapshot", VndkSnapshotSingleton)
ctx.RegisterSingletonType("vendor-snapshot", VendorSnapshotSingleton)
diff --git a/cmd/diff_target_files/Android.bp b/cmd/diff_target_files/Android.bp
index 5397f4b..bc6b068 100644
--- a/cmd/diff_target_files/Android.bp
+++ b/cmd/diff_target_files/Android.bp
@@ -5,12 +5,12 @@
"diff_target_files.go",
"glob.go",
"target_files.go",
- "whitelist.go",
+ "allow_list.go",
"zip_artifact.go",
],
testSrcs: [
"compare_test.go",
"glob_test.go",
- "whitelist_test.go",
+ "allow_list_test.go",
],
}
diff --git a/cmd/diff_target_files/whitelist.go b/cmd/diff_target_files/allow_list.go
similarity index 77%
rename from cmd/diff_target_files/whitelist.go
rename to cmd/diff_target_files/allow_list.go
index f00fc1e..ca55b43 100644
--- a/cmd/diff_target_files/whitelist.go
+++ b/cmd/diff_target_files/allow_list.go
@@ -25,18 +25,13 @@
"unicode"
)
-type jsonWhitelist struct {
- Paths []string
- IgnoreMatchingLines []string
-}
-
-type whitelist struct {
+type allowList struct {
path string
ignoreMatchingLines []string
}
-func parseWhitelists(whitelists []string, whitelistFiles []string) ([]whitelist, error) {
- var ret []whitelist
+func parseAllowLists(allowLists []string, allowListFiles []string) ([]allowList, error) {
+ var ret []allowList
add := func(path string, ignoreMatchingLines []string) {
for _, x := range ret {
@@ -46,24 +41,24 @@
}
}
- ret = append(ret, whitelist{
+ ret = append(ret, allowList{
path: path,
ignoreMatchingLines: ignoreMatchingLines,
})
}
- for _, file := range whitelistFiles {
- newWhitelists, err := parseWhitelistFile(file)
+ for _, file := range allowListFiles {
+ newAllowlists, err := parseAllowListFile(file)
if err != nil {
return nil, err
}
- for _, w := range newWhitelists {
+ for _, w := range newAllowlists {
add(w.path, w.ignoreMatchingLines)
}
}
- for _, s := range whitelists {
+ for _, s := range allowLists {
colon := strings.IndexRune(s, ':')
var ignoreMatchingLines []string
if colon >= 0 {
@@ -75,7 +70,7 @@
return ret, nil
}
-func parseWhitelistFile(file string) ([]whitelist, error) {
+func parseAllowListFile(file string) ([]allowList, error) {
r, err := os.Open(file)
if err != nil {
return nil, err
@@ -84,27 +79,32 @@
d := json.NewDecoder(newJSONCommentStripper(r))
- var jsonWhitelists []jsonWhitelist
+ var jsonAllowLists []struct {
+ Paths []string
+ IgnoreMatchingLines []string
+ }
- err = d.Decode(&jsonWhitelists)
+ if err := d.Decode(&jsonAllowLists); err != nil {
+ return nil, err
+ }
- var whitelists []whitelist
- for _, w := range jsonWhitelists {
+ var allowLists []allowList
+ for _, w := range jsonAllowLists {
for _, p := range w.Paths {
- whitelists = append(whitelists, whitelist{
+ allowLists = append(allowLists, allowList{
path: p,
ignoreMatchingLines: w.IgnoreMatchingLines,
})
}
}
- return whitelists, err
+ return allowLists, err
}
-func filterModifiedPaths(l [][2]*ZipArtifactFile, whitelists []whitelist) ([][2]*ZipArtifactFile, error) {
+func filterModifiedPaths(l [][2]*ZipArtifactFile, allowLists []allowList) ([][2]*ZipArtifactFile, error) {
outer:
for i := 0; i < len(l); i++ {
- for _, w := range whitelists {
+ for _, w := range allowLists {
if match, err := Match(w.path, l[i][0].Name); err != nil {
return l, err
} else if match {
@@ -126,10 +126,10 @@
return l, nil
}
-func filterNewPaths(l []*ZipArtifactFile, whitelists []whitelist) ([]*ZipArtifactFile, error) {
+func filterNewPaths(l []*ZipArtifactFile, allowLists []allowList) ([]*ZipArtifactFile, error) {
outer:
for i := 0; i < len(l); i++ {
- for _, w := range whitelists {
+ for _, w := range allowLists {
if match, err := Match(w.path, l[i].Name); err != nil {
return l, err
} else if match && len(w.ignoreMatchingLines) == 0 {
@@ -192,18 +192,18 @@
return bytes.Compare(bufA, bufB) == 0, nil
}
-func applyWhitelists(diff zipDiff, whitelists []whitelist) (zipDiff, error) {
+func applyAllowLists(diff zipDiff, allowLists []allowList) (zipDiff, error) {
var err error
- diff.modified, err = filterModifiedPaths(diff.modified, whitelists)
+ diff.modified, err = filterModifiedPaths(diff.modified, allowLists)
if err != nil {
return diff, err
}
- diff.onlyInA, err = filterNewPaths(diff.onlyInA, whitelists)
+ diff.onlyInA, err = filterNewPaths(diff.onlyInA, allowLists)
if err != nil {
return diff, err
}
- diff.onlyInB, err = filterNewPaths(diff.onlyInB, whitelists)
+ diff.onlyInB, err = filterNewPaths(diff.onlyInB, allowLists)
if err != nil {
return diff, err
}
diff --git a/cmd/diff_target_files/whitelist_test.go b/cmd/diff_target_files/allow_list_test.go
similarity index 82%
rename from cmd/diff_target_files/whitelist_test.go
rename to cmd/diff_target_files/allow_list_test.go
index 4b19fdd..8410e5a 100644
--- a/cmd/diff_target_files/whitelist_test.go
+++ b/cmd/diff_target_files/allow_list_test.go
@@ -57,10 +57,10 @@
var f2 = bytesToZipArtifactFile("dir/f2", nil)
-func Test_applyWhitelists(t *testing.T) {
+func Test_applyAllowLists(t *testing.T) {
type args struct {
diff zipDiff
- whitelists []whitelist
+ allowLists []allowList
}
tests := []struct {
name string
@@ -74,7 +74,7 @@
diff: zipDiff{
onlyInA: []*ZipArtifactFile{f1a, f2},
},
- whitelists: []whitelist{{path: "dir/f1"}},
+ allowLists: []allowList{{path: "dir/f1"}},
},
want: zipDiff{
onlyInA: []*ZipArtifactFile{f2},
@@ -86,7 +86,7 @@
diff: zipDiff{
onlyInA: []*ZipArtifactFile{f1a, f2},
},
- whitelists: []whitelist{{path: "dir/*"}},
+ allowLists: []allowList{{path: "dir/*"}},
},
want: zipDiff{},
},
@@ -96,7 +96,7 @@
diff: zipDiff{
modified: [][2]*ZipArtifactFile{{f1a, f1b}},
},
- whitelists: []whitelist{{path: "dir/*"}},
+ allowLists: []allowList{{path: "dir/*"}},
},
want: zipDiff{},
},
@@ -106,20 +106,20 @@
diff: zipDiff{
modified: [][2]*ZipArtifactFile{{f1a, f1b}},
},
- whitelists: []whitelist{{path: "dir/*", ignoreMatchingLines: []string{"foo: .*"}}},
+ allowLists: []allowList{{path: "dir/*", ignoreMatchingLines: []string{"foo: .*"}}},
},
want: zipDiff{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- got, err := applyWhitelists(tt.args.diff, tt.args.whitelists)
+ got, err := applyAllowLists(tt.args.diff, tt.args.allowLists)
if (err != nil) != tt.wantErr {
- t.Errorf("applyWhitelists() error = %v, wantErr %v", err, tt.wantErr)
+ t.Errorf("Test_applyAllowLists() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("applyWhitelists() = %v, want %v", got, tt.want)
+ t.Errorf("Test_applyAllowLists() = %v, want %v", got, tt.want)
}
})
}
diff --git a/cmd/diff_target_files/compare.go b/cmd/diff_target_files/compare.go
index 00cd9ca..45b6d6b 100644
--- a/cmd/diff_target_files/compare.go
+++ b/cmd/diff_target_files/compare.go
@@ -21,7 +21,7 @@
// compareTargetFiles takes two ZipArtifacts and compares the files they contain by examining
// the path, size, and CRC of each file.
-func compareTargetFiles(priZip, refZip ZipArtifact, artifact string, whitelists []whitelist, filters []string) (zipDiff, error) {
+func compareTargetFiles(priZip, refZip ZipArtifact, artifact string, allowLists []allowList, filters []string) (zipDiff, error) {
priZipFiles, err := priZip.Files()
if err != nil {
return zipDiff{}, fmt.Errorf("error fetching target file lists from primary zip %v", err)
@@ -45,7 +45,7 @@
// Compare the file lists from both builds
diff := diffTargetFilesLists(refZipFiles, priZipFiles)
- return applyWhitelists(diff, whitelists)
+ return applyAllowLists(diff, allowLists)
}
// zipDiff contains the list of files that differ between two zip files.
diff --git a/cmd/diff_target_files/diff_target_files.go b/cmd/diff_target_files/diff_target_files.go
index 75bc8ee..634565b 100644
--- a/cmd/diff_target_files/diff_target_files.go
+++ b/cmd/diff_target_files/diff_target_files.go
@@ -22,8 +22,8 @@
)
var (
- whitelists = newMultiString("whitelist", "whitelist patterns in the form <pattern>[:<regex of line to ignore>]")
- whitelistFiles = newMultiString("whitelist_file", "files containing whitelist definitions")
+ allowLists = newMultiString("allowlist", "allowlist patterns in the form <pattern>[:<regex of line to ignore>]")
+ allowListFiles = newMultiString("allowlist_file", "files containing allowlist definitions")
filters = newMultiString("filter", "filter patterns to apply to files in target-files.zip before comparing")
)
@@ -47,9 +47,9 @@
os.Exit(1)
}
- whitelists, err := parseWhitelists(*whitelists, *whitelistFiles)
+ allowLists, err := parseAllowLists(*allowLists, *allowListFiles)
if err != nil {
- fmt.Fprintf(os.Stderr, "Error parsing whitelists: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Error parsing allowlists: %v\n", err)
os.Exit(1)
}
@@ -67,7 +67,7 @@
}
defer refZip.Close()
- diff, err := compareTargetFiles(priZip, refZip, targetFilesPattern, whitelists, *filters)
+ diff, err := compareTargetFiles(priZip, refZip, targetFilesPattern, allowLists, *filters)
if err != nil {
fmt.Fprintf(os.Stderr, "Error comparing zip files: %v\n", err)
os.Exit(1)
diff --git a/cmd/merge_zips/merge_zips.go b/cmd/merge_zips/merge_zips.go
index a95aca9..274c8ee 100644
--- a/cmd/merge_zips/merge_zips.go
+++ b/cmd/merge_zips/merge_zips.go
@@ -429,7 +429,7 @@
if maxOpenZips < 3 {
panic(fmt.Errorf("open zips limit should be above 3"))
}
- // In the dummy element .older points to the most recently opened InputZip, and .newer points to the oldest.
+ // In the fake element .older points to the most recently opened InputZip, and .newer points to the oldest.
head := new(ManagedInputZip)
head.older = head
head.newer = head
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 935b839..d2f8d83 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -198,7 +198,7 @@
// the generated removed Dex API filename by Doclava.
Removed_dex_api_filename *string
- // if set to false, don't allow droiddoc to generate stubs source files. Defaults to true.
+ // if set to false, don't allow droiddoc to generate stubs source files. Defaults to false.
Create_stubs *bool
Check_api struct {
@@ -870,6 +870,10 @@
}
}
+func (d *Droiddoc) createStubs() bool {
+ return BoolDefault(d.properties.Create_stubs, false)
+}
+
func (d *Droiddoc) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsDir android.WritablePath) {
if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") ||
apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released") ||
@@ -892,7 +896,7 @@
cmd.FlagWithOutput("-removedDexApi ", d.removedDexApiFile)
}
- if BoolDefault(d.properties.Create_stubs, true) {
+ if d.createStubs() {
cmd.FlagWithArg("-stubs ", stubsDir.String())
}
diff --git a/java/hiddenapi_singleton.go b/java/hiddenapi_singleton.go
index bff591c..7afba2a 100644
--- a/java/hiddenapi_singleton.go
+++ b/java/hiddenapi_singleton.go
@@ -208,7 +208,7 @@
}
// flagsRule creates a rule to build hiddenapi-flags.csv out of flags.csv files generated for boot image modules and
-// the greylists.
+// the unsupported API.
func flagsRule(ctx android.SingletonContext) android.Path {
var flagsCSV android.Paths
var greylistRemovedApis android.Paths
@@ -247,18 +247,18 @@
Tool(android.PathForSource(ctx, "frameworks/base/tools/hiddenapi/generate_hiddenapi_lists.py")).
FlagWithInput("--csv ", stubFlags).
Inputs(flagsCSV).
- FlagWithInput("--greylist ",
+ FlagWithInput("--unsupported ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist.txt")).
- FlagWithInput("--greylist-ignore-conflicts ", combinedRemovedApis).
- FlagWithInput("--greylist-max-q ",
+ FlagWithInput("--unsupported-ignore-conflicts ", combinedRemovedApis).
+ FlagWithInput("--max-target-q ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist-max-q.txt")).
- FlagWithInput("--greylist-max-p ",
+ FlagWithInput("--max-target-p ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist-max-p.txt")).
- FlagWithInput("--greylist-max-o-ignore-conflicts ",
+ FlagWithInput("--max-target-o-ignore-conflicts ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist-max-o.txt")).
- FlagWithInput("--blacklist ",
+ FlagWithInput("--blocked ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-force-blacklist.txt")).
- FlagWithInput("--greylist-packages ",
+ FlagWithInput("--unsupported-packages ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist-packages.txt")).
FlagWithOutput("--output ", tempPath)
diff --git a/java/java_test.go b/java/java_test.go
index 582ebe9..a3c7854 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -96,6 +96,8 @@
ctx.RegisterPreSingletonType("overlay", android.SingletonFactoryAdaptor(OverlaySingletonFactory))
ctx.RegisterPreSingletonType("sdk_versions", android.SingletonFactoryAdaptor(sdkPreSingletonFactory))
+ android.RegisterPrebuiltMutators(ctx)
+
// Register module types and mutators from cc needed for JNI testing
cc.RegisterRequiredBuildComponentsForTest(ctx)
@@ -1107,8 +1109,13 @@
"bar-doc/a.java": nil,
"bar-doc/b.java": nil,
})
+ barDocModule := ctx.ModuleForTests("bar-doc", "android_common")
+ barDoc := barDocModule.Rule("javadoc")
+ notExpected := " -stubs "
+ if strings.Contains(barDoc.RuleParams.Command, notExpected) {
+ t.Errorf("bar-doc command contains flag %q to create stubs, but should not", notExpected)
+ }
- barDoc := ctx.ModuleForTests("bar-doc", "android_common").Rule("javadoc")
var javaSrcs []string
for _, i := range barDoc.Inputs {
javaSrcs = append(javaSrcs, i.Base())
@@ -1117,7 +1124,7 @@
t.Errorf("inputs of bar-doc must be []string{\"a.java\"}, but was %#v.", javaSrcs)
}
- aidl := ctx.ModuleForTests("bar-doc", "android_common").Rule("aidl")
+ aidl := barDocModule.Rule("aidl")
if g, w := barDoc.Implicits.Strings(), aidl.Output.String(); !inList(w, g) {
t.Errorf("implicits of bar-doc must contain %q, but was %q.", w, g)
}
diff --git a/rust/testing.go b/rust/testing.go
index f2d4c5e..83b2828 100644
--- a/rust/testing.go
+++ b/rust/testing.go
@@ -77,6 +77,7 @@
func CreateTestContext() *android.TestContext {
ctx := android.NewTestArchContext()
+ android.RegisterPrebuiltMutators(ctx)
cc.RegisterRequiredBuildComponentsForTest(ctx)
ctx.RegisterModuleType("genrule", genrule.GenRuleFactory)
ctx.RegisterModuleType("rust_binary", RustBinaryFactory)
diff --git a/scripts/build-mainline-modules.sh b/scripts/build-mainline-modules.sh
index 1bc78e6..0520d31 100755
--- a/scripts/build-mainline-modules.sh
+++ b/scripts/build-mainline-modules.sh
@@ -24,7 +24,6 @@
i18n-module-test-exports
i18n-module-sdk
platform-mainline-sdk
- platform-mainline-host-exports
)
# List of libraries installed on the platform that are needed for ART chroot
diff --git a/sdk/testing.go b/sdk/testing.go
index 34ea8f0..b53558d 100644
--- a/sdk/testing.go
+++ b/sdk/testing.go
@@ -97,6 +97,11 @@
ctx.PreArchMutators(android.RegisterVisibilityRuleChecker)
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
ctx.PreArchMutators(android.RegisterComponentsMutator)
+
+ android.RegisterPrebuiltMutators(ctx)
+
+ // Register these after the prebuilt mutators have been registered to match what
+ // happens at runtime.
ctx.PreArchMutators(android.RegisterVisibilityRuleGatherer)
ctx.PostDepsMutators(android.RegisterVisibilityRuleEnforcer)
diff --git a/sysprop/sysprop_test.go b/sysprop/sysprop_test.go
index 8503386..711129c 100644
--- a/sysprop/sysprop_test.go
+++ b/sysprop/sysprop_test.go
@@ -67,6 +67,8 @@
ctx.BottomUp("sysprop_deps", syspropDepsMutator).Parallel()
})
+ android.RegisterPrebuiltMutators(ctx)
+
cc.RegisterRequiredBuildComponentsForTest(ctx)
ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
ctx.BottomUp("sysprop_java", java.SyspropMutator).Parallel()