Add module based host-tools snapshot

Add new module:
host_snapshot {
    name: "host-snapshot"
    deps: [
      (list of host tools)
    ],
    ...
}

Package host tools using android.PackagingBase to capture host tools and transitive packaging data.
Add JSON meta data to snapshot that allows snapshot to be installed via development/vendor_snapshot/update.py

Add support to generate a fake host snapshot of all host modules that is used to detect required
modules via development/vendor_snapshot/update.py.

Bug: 192556798
Bug: 194799048
Bug: 192896149
Test: m HOST_FAKE_SNAPSHOT_ENABLE=true host-fake-snapshot dist -- check snapshot exists in dist

Change-Id: I849c4db801cd858408f6fe6a3ce69262a23a5be9
This commit is contained in:
Rob Seymour
2021-08-10 20:42:03 +00:00
parent bf49705608
commit 925aa09ea1
15 changed files with 642 additions and 20 deletions

View File

@@ -310,13 +310,16 @@ func versionSplitMutator() func(android.BottomUpMutatorContext) {
// HostToolPath returns a path if appropriate such that this module can be used as a host tool,
// fulfilling HostToolProvider interface.
func (p *Module) HostToolPath() android.OptionalPath {
if p.installer == nil {
// python_library is just meta module, and doesn't have any installer.
return android.OptionalPath{}
if p.installer != nil {
if bin, ok := p.installer.(*binaryDecorator); ok {
// TODO: This should only be set when building host binaries -- tests built for device would be
// setting this incorrectly.
return android.OptionalPathForPath(bin.path)
}
}
// TODO: This should only be set when building host binaries -- tests built for device would be
// setting this incorrectly.
return android.OptionalPathForPath(p.installer.(*binaryDecorator).path)
return android.OptionalPath{}
}
// OutputFiles returns output files based on given tag, returns an error if tag is unsupported.