Add pre-built attribute to host module definition for fake snapshot.
The host-snapshot provides host tools via prebuilt modules. Having 2 prebuilts of the same module in a source tree leads to a build time error. Add new attribute when building the fake snapshot to indicate that the host tool contains a prebuilt version. When installing the host snapshot the user can opt not to include modules that have a prebuilt version. Bug: 225890931 Test: m HOST_FAKE_SNAPSHOT_ENABLE=true host-fake-snapshot dist Change-Id: I044a92a280536f9c5ec93dcb277a5e5568cc4e42
This commit is contained in:
@@ -68,6 +68,12 @@ func init() {
|
|||||||
registerHostSnapshotComponents(android.InitRegistrationContext)
|
registerHostSnapshotComponents(android.InitRegistrationContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add prebuilt information to snapshot data
|
||||||
|
type hostSnapshotFakeJsonFlags struct {
|
||||||
|
SnapshotJsonFlags
|
||||||
|
Prebuilt bool `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
func registerHostSnapshotComponents(ctx android.RegistrationContext) {
|
func registerHostSnapshotComponents(ctx android.RegistrationContext) {
|
||||||
ctx.RegisterSingletonType("host-fake-snapshot", HostToolsFakeAndroidSingleton)
|
ctx.RegisterSingletonType("host-fake-snapshot", HostToolsFakeAndroidSingleton)
|
||||||
}
|
}
|
||||||
@@ -94,7 +100,9 @@ func (c *hostFakeSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
|||||||
// Find all host binary modules add 'fake' versions to snapshot
|
// Find all host binary modules add 'fake' versions to snapshot
|
||||||
var outputs android.Paths
|
var outputs android.Paths
|
||||||
seen := make(map[string]bool)
|
seen := make(map[string]bool)
|
||||||
var jsonData []SnapshotJsonFlags
|
var jsonData []hostSnapshotFakeJsonFlags
|
||||||
|
prebuilts := make(map[string]bool)
|
||||||
|
|
||||||
ctx.VisitAllModules(func(module android.Module) {
|
ctx.VisitAllModules(func(module android.Module) {
|
||||||
if module.Target().Os != ctx.Config().BuildOSTarget.Os {
|
if module.Target().Os != ctx.Config().BuildOSTarget.Os {
|
||||||
return
|
return
|
||||||
@@ -104,9 +112,10 @@ func (c *hostFakeSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if android.IsModulePrebuilt(module) {
|
if android.IsModulePrebuilt(module) {
|
||||||
|
// Add non-prebuilt module name to map of prebuilts
|
||||||
|
prebuilts[android.RemoveOptionalPrebuiltPrefix(module.Name())] = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !module.Enabled() || module.IsHideFromMake() {
|
if !module.Enabled() || module.IsHideFromMake() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -120,11 +129,17 @@ func (c *hostFakeSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
|||||||
if !seen[outFile] {
|
if !seen[outFile] {
|
||||||
seen[outFile] = true
|
seen[outFile] = true
|
||||||
outputs = append(outputs, WriteStringToFileRule(ctx, "", outFile))
|
outputs = append(outputs, WriteStringToFileRule(ctx, "", outFile))
|
||||||
jsonData = append(jsonData, *hostJsonDesc(module))
|
jsonData = append(jsonData, hostSnapshotFakeJsonFlags{*hostJsonDesc(module), false})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// Update any module prebuilt information
|
||||||
|
for idx, _ := range jsonData {
|
||||||
|
if _, ok := prebuilts[jsonData[idx].ModuleName]; ok {
|
||||||
|
// Prebuilt exists for this module
|
||||||
|
jsonData[idx].Prebuilt = true
|
||||||
|
}
|
||||||
|
}
|
||||||
marsh, err := json.Marshal(jsonData)
|
marsh, err := json.Marshal(jsonData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Errorf("host fake snapshot json marshal failure: %#v", err)
|
ctx.Errorf("host fake snapshot json marshal failure: %#v", err)
|
||||||
|
Reference in New Issue
Block a user