Use a presingleton to create hiddenapi singleton paths early

If no module uses hiddenapi (because it is an unbundled build that
does not build any boot image modules), then the makevars singleton
panics because it will always run before the hiddenapi singleton
(due to package init() function ordering), and the hiddenapi singleton
paths have not been initialized yet.  Add a presingleton to initialize
the paths early.

Bug: 123645297
Test: tapas Launcher3 && m on unbundled branch
Change-Id: I9386ac87848a2181f51140129288df80fff9acfd
This commit is contained in:
Colin Cross
2019-02-07 08:57:26 -08:00
parent 6e8fe6feb1
commit 76e3e1f554

View File

@@ -19,6 +19,7 @@ import (
)
func init() {
android.RegisterPreSingletonType("pre-hiddenapi", hiddenAPIPreSingletonFactory)
android.RegisterSingletonType("hiddenapi", hiddenAPISingletonFactory)
}
@@ -43,6 +44,18 @@ func hiddenAPISingletonPaths(ctx android.PathContext) hiddenAPISingletonPathsStr
}).(hiddenAPISingletonPathsStruct)
}
func hiddenAPIPreSingletonFactory() android.Singleton {
return hiddenAPIPreSingleton{}
}
type hiddenAPIPreSingleton struct{}
// hiddenAPI pre-singleton rules to ensure paths are always generated before
// makevars
func (hiddenAPIPreSingleton) GenerateBuildActions(ctx android.SingletonContext) {
hiddenAPISingletonPaths(ctx)
}
func hiddenAPISingletonFactory() android.Singleton {
return hiddenAPISingleton{}
}