Add C symbol file to module sdk snapshot

cc_prebuilt_library_shared does not currently support generating stubs
from API symbol_files, and therefore the symbol file was removed from
the module sdk snapshots in https://ag.corp.google.com/11394495

As part of b/275273834, the stubs will be generated from the API files
for cc_prebuilt_library_shared, so add the symbol file back to the
module sdk

Bug: 275273834
Test: m nothing --no-skip-soong-tests
Test: m art-module-sdk and verified the map.txt is copied to the zip
next to the Android.bp file

Change-Id: I9551e7b8a76ceb9db3ed0434d315b6839f5e3d54
This commit is contained in:
Spandan Das
2024-07-23 21:34:24 +00:00
parent 9a2f01b762
commit e20c56cdf0
4 changed files with 24 additions and 0 deletions

View File

@@ -4079,6 +4079,13 @@ func (c *Module) BaseModuleName() string {
return c.ModuleBase.BaseModuleName() return c.ModuleBase.BaseModuleName()
} }
func (c *Module) stubsSymbolFilePath() android.Path {
if library, ok := c.linker.(*libraryDecorator); ok {
return library.stubsSymbolFilePath
}
return android.OptionalPath{}.Path()
}
var Bool = proptools.Bool var Bool = proptools.Bool
var BoolDefault = proptools.BoolDefault var BoolDefault = proptools.BoolDefault
var BoolPtr = proptools.BoolPtr var BoolPtr = proptools.BoolPtr

View File

@@ -428,6 +428,9 @@ type libraryDecorator struct {
*baseInstaller *baseInstaller
apiListCoverageXmlPath android.ModuleOutPath apiListCoverageXmlPath android.ModuleOutPath
// Path to the file containing the APIs exported by this library
stubsSymbolFilePath android.Path
} }
// linkerProps returns the list of properties structs relevant for this library. (For example, if // linkerProps returns the list of properties structs relevant for this library. (For example, if
@@ -596,6 +599,7 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa
ctx.PropertyErrorf("symbol_file", "%q doesn't have .map.txt suffix", symbolFile) ctx.PropertyErrorf("symbol_file", "%q doesn't have .map.txt suffix", symbolFile)
return Objects{} return Objects{}
} }
library.stubsSymbolFilePath = android.PathForModuleSrc(ctx, symbolFile)
// b/239274367 --apex and --systemapi filters symbols tagged with # apex and # // b/239274367 --apex and --systemapi filters symbols tagged with # apex and #
// systemapi, respectively. The former is for symbols defined in platform libraries // systemapi, respectively. The former is for symbols defined in platform libraries
// and the latter is for symbols defined in APEXes. // and the latter is for symbols defined in APEXes.

View File

@@ -406,6 +406,9 @@ func addPossiblyArchSpecificProperties(sdkModuleContext android.ModuleContext, b
if len(libInfo.StubsVersions) > 0 { if len(libInfo.StubsVersions) > 0 {
stubsSet := outputProperties.AddPropertySet("stubs") stubsSet := outputProperties.AddPropertySet("stubs")
stubsSet.AddProperty("versions", libInfo.StubsVersions) stubsSet.AddProperty("versions", libInfo.StubsVersions)
// The symbol file will be copied next to the Android.bp file
stubsSet.AddProperty("symbol_file", libInfo.StubsSymbolFilePath.Base())
builder.CopyToSnapshot(libInfo.StubsSymbolFilePath, libInfo.StubsSymbolFilePath.Base())
} }
} }
@@ -481,6 +484,9 @@ type nativeLibInfoProperties struct {
// is written to does not vary by arch so cannot be android specific. // is written to does not vary by arch so cannot be android specific.
StubsVersions []string `sdk:"ignored-on-host"` StubsVersions []string `sdk:"ignored-on-host"`
// The symbol file containing the APIs exported by this library.
StubsSymbolFilePath android.Path `sdk:"ignored-on-host"`
// Value of SanitizeProperties.Sanitize. Several - but not all - of these // Value of SanitizeProperties.Sanitize. Several - but not all - of these
// affect the expanded variants. All are propagated to avoid entangling the // affect the expanded variants. All are propagated to avoid entangling the
// sanitizer logic with the snapshot generation. // sanitizer logic with the snapshot generation.
@@ -549,6 +555,11 @@ func (p *nativeLibInfoProperties) PopulateFromVariant(ctx android.SdkMemberConte
// the versioned stub libs are retained in the prebuilt tree; currently only // the versioned stub libs are retained in the prebuilt tree; currently only
// the stub corresponding to ccModule.StubsVersion() is. // the stub corresponding to ccModule.StubsVersion() is.
p.StubsVersions = lib.allStubsVersions() p.StubsVersions = lib.allStubsVersions()
if lib.buildStubs() && ccModule.stubsSymbolFilePath() == nil {
ctx.ModuleErrorf("Could not determine symbol_file")
} else {
p.StubsSymbolFilePath = ccModule.stubsSymbolFilePath()
}
} }
} }
p.SystemSharedLibs = specifiedDeps.systemSharedLibs p.SystemSharedLibs = specifiedDeps.systemSharedLibs

View File

@@ -2205,6 +2205,7 @@ cc_prebuilt_library_shared {
"3", "3",
"current", "current",
], ],
symbol_file: "stubslib.map.txt",
}, },
arch: { arch: {
arm64: { arm64: {
@@ -2268,6 +2269,7 @@ cc_prebuilt_library_shared {
"3", "3",
"current", "current",
], ],
symbol_file: "stubslib.map.txt",
}, },
target: { target: {
host: { host: {