java_sdk_library: Use dist_stem when generating sdk snapshot file names
The API finalization process for platform releases copies various files from the apistubs/ dist directory into prebuilts/sdk/<n>/... Having them use the same name in both places makes that process simpler. For most modules the name of the file is derived from the name of the module by appending a suffix but unfortunately, for some modules that does not work. e.g. the conscrypt.txt file is produced by the conscrypt.module.public.api module. The dist_stem property was added to java_sdk_library to allow the stem name of the file to differ from the module name. The API finalization process for extension APIs does something similar as it extracts various files from the snapshots and copies them into the appropriate extension API specific directory in prebuilts/sdk/extensions/<n>. Instead of copying files from the apistubs/ dist directory (which is not built for trains) it copies them from sdk snapshots that are built as part of the train. Previously, the sdk snapshot used to derive the name of the files within the snapshot from the name of the module, it ignored the dist_stem property. This change causes it to use the dist_stem property to make it consistent with the apistubs/ dist directory naming. The file name is created in sdkLibrarySdkMemberProperties.AddPropertyToSet() which does not have access to the dist_stem property. So, it has to be supplied in the sdkLibrarySdkMemberProperties instance in the new Stem property. Bug: 248258460 Test: m nothing BUILD_NUMBER=fixed packages/modules/common/build/mainline_modules_sdks.sh --build-release=latest # Ran the previous command before and after and make sure that the # conscrypt, art and icu sdk snapshots use the dist_stem value but # none of the other snapshots are affected. Change-Id: Ied52003de63dcdb86a252a39bb8781f85d51a6ff
This commit is contained in:
parent
bfdca96828
commit
e840995ac3
2 changed files with 75 additions and 8 deletions
|
@ -539,7 +539,7 @@ type sdkLibraryProperties struct {
|
|||
}
|
||||
|
||||
// TODO: determines whether to create HTML doc or not
|
||||
//Html_doc *bool
|
||||
// Html_doc *bool
|
||||
}
|
||||
|
||||
// Paths to outputs from java_sdk_library and java_sdk_library_import.
|
||||
|
@ -1354,7 +1354,7 @@ func (module *SdkLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
|
|||
// Provide additional information for inclusion in an sdk's generated .info file.
|
||||
additionalSdkInfo := map[string]interface{}{}
|
||||
additionalSdkInfo["dist_stem"] = module.distStem()
|
||||
baseModuleName := module.BaseModuleName()
|
||||
baseModuleName := module.distStem()
|
||||
scopes := map[string]interface{}{}
|
||||
additionalSdkInfo["scopes"] = scopes
|
||||
for scope, scopePaths := range module.scopePaths {
|
||||
|
@ -2904,6 +2904,18 @@ var javaSdkLibrarySdkMemberType = &sdkLibrarySdkMemberType{
|
|||
type sdkLibrarySdkMemberProperties struct {
|
||||
android.SdkMemberPropertiesBase
|
||||
|
||||
// Stem name for files in the sdk snapshot.
|
||||
//
|
||||
// This is used to construct the path names of various sdk library files in the sdk snapshot to
|
||||
// make sure that they match the finalized versions of those files in prebuilts/sdk.
|
||||
//
|
||||
// This property is marked as keep so that it will be kept in all instances of this struct, will
|
||||
// not be cleared but will be copied to common structs. That is needed because this field is used
|
||||
// to construct many file names for other parts of this struct and so it needs to be present in
|
||||
// all structs. If it was not marked as keep then it would be cleared in some structs and so would
|
||||
// be unavailable for generating file names if there were other properties that were still set.
|
||||
Stem string `sdk:"keep"`
|
||||
|
||||
// Scope to per scope properties.
|
||||
Scopes map[*apiScope]*scopeProperties
|
||||
|
||||
|
@ -2965,6 +2977,9 @@ type scopeProperties struct {
|
|||
func (s *sdkLibrarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
|
||||
sdk := variant.(*SdkLibrary)
|
||||
|
||||
// Copy the stem name for files in the sdk snapshot.
|
||||
s.Stem = sdk.distStem()
|
||||
|
||||
s.Scopes = make(map[*apiScope]*scopeProperties)
|
||||
for _, apiScope := range allApiScopes {
|
||||
paths := sdk.findScopePaths(apiScope)
|
||||
|
@ -3017,6 +3032,8 @@ func (s *sdkLibrarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberCo
|
|||
propertySet.AddProperty("permitted_packages", s.Permitted_packages)
|
||||
}
|
||||
|
||||
stem := s.Stem
|
||||
|
||||
for _, apiScope := range allApiScopes {
|
||||
if properties, ok := s.Scopes[apiScope]; ok {
|
||||
scopeSet := propertySet.AddPropertySet(apiScope.propertyName)
|
||||
|
@ -3025,7 +3042,7 @@ func (s *sdkLibrarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberCo
|
|||
|
||||
var jars []string
|
||||
for _, p := range properties.Jars {
|
||||
dest := filepath.Join(scopeDir, ctx.Name()+"-stubs.jar")
|
||||
dest := filepath.Join(scopeDir, stem+"-stubs.jar")
|
||||
ctx.SnapshotBuilder().CopyToSnapshot(p, dest)
|
||||
jars = append(jars, dest)
|
||||
}
|
||||
|
@ -3033,31 +3050,31 @@ func (s *sdkLibrarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberCo
|
|||
|
||||
if ctx.SdkModuleContext().Config().IsEnvTrue("SOONG_SDK_SNAPSHOT_USE_SRCJAR") {
|
||||
// Copy the stubs source jar into the snapshot zip as is.
|
||||
srcJarSnapshotPath := filepath.Join(scopeDir, ctx.Name()+".srcjar")
|
||||
srcJarSnapshotPath := filepath.Join(scopeDir, stem+".srcjar")
|
||||
ctx.SnapshotBuilder().CopyToSnapshot(properties.StubsSrcJar, srcJarSnapshotPath)
|
||||
scopeSet.AddProperty("stub_srcs", []string{srcJarSnapshotPath})
|
||||
} else {
|
||||
// Merge the stubs source jar into the snapshot zip so that when it is unpacked
|
||||
// the source files are also unpacked.
|
||||
snapshotRelativeDir := filepath.Join(scopeDir, ctx.Name()+"_stub_sources")
|
||||
snapshotRelativeDir := filepath.Join(scopeDir, stem+"_stub_sources")
|
||||
ctx.SnapshotBuilder().UnzipToSnapshot(properties.StubsSrcJar, snapshotRelativeDir)
|
||||
scopeSet.AddProperty("stub_srcs", []string{snapshotRelativeDir})
|
||||
}
|
||||
|
||||
if properties.CurrentApiFile != nil {
|
||||
currentApiSnapshotPath := apiScope.snapshotRelativeCurrentApiTxtPath(ctx.Name())
|
||||
currentApiSnapshotPath := apiScope.snapshotRelativeCurrentApiTxtPath(stem)
|
||||
ctx.SnapshotBuilder().CopyToSnapshot(properties.CurrentApiFile, currentApiSnapshotPath)
|
||||
scopeSet.AddProperty("current_api", currentApiSnapshotPath)
|
||||
}
|
||||
|
||||
if properties.RemovedApiFile != nil {
|
||||
removedApiSnapshotPath := apiScope.snapshotRelativeRemovedApiTxtPath(ctx.Name())
|
||||
removedApiSnapshotPath := apiScope.snapshotRelativeRemovedApiTxtPath(stem)
|
||||
ctx.SnapshotBuilder().CopyToSnapshot(properties.RemovedApiFile, removedApiSnapshotPath)
|
||||
scopeSet.AddProperty("removed_api", removedApiSnapshotPath)
|
||||
}
|
||||
|
||||
if properties.AnnotationsZip != nil {
|
||||
annotationsSnapshotPath := filepath.Join(scopeDir, ctx.Name()+"_annotations.zip")
|
||||
annotationsSnapshotPath := filepath.Join(scopeDir, stem+"_annotations.zip")
|
||||
ctx.SnapshotBuilder().CopyToSnapshot(properties.AnnotationsZip, annotationsSnapshotPath)
|
||||
scopeSet.AddProperty("annotations", annotationsSnapshotPath)
|
||||
}
|
||||
|
|
|
@ -889,6 +889,56 @@ java_sdk_library_import {
|
|||
)
|
||||
}
|
||||
|
||||
func TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
|
||||
sdk {
|
||||
name: "mysdk",
|
||||
java_sdk_libs: ["myjavalib-foo"],
|
||||
}
|
||||
|
||||
java_sdk_library {
|
||||
name: "myjavalib-foo",
|
||||
apex_available: ["//apex_available:anyapex"],
|
||||
srcs: ["Test.java"],
|
||||
sdk_version: "current",
|
||||
shared_library: false,
|
||||
public: {
|
||||
enabled: true,
|
||||
},
|
||||
dist_stem: "myjavalib",
|
||||
}
|
||||
`)
|
||||
|
||||
CheckSnapshot(t, result, "mysdk", "",
|
||||
checkAndroidBpContents(`
|
||||
// This is auto-generated. DO NOT EDIT.
|
||||
|
||||
java_sdk_library_import {
|
||||
name: "myjavalib-foo",
|
||||
prefer: false,
|
||||
visibility: ["//visibility:public"],
|
||||
apex_available: ["//apex_available:anyapex"],
|
||||
shared_library: false,
|
||||
public: {
|
||||
jars: ["sdk_library/public/myjavalib-stubs.jar"],
|
||||
stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
|
||||
current_api: "sdk_library/public/myjavalib.txt",
|
||||
removed_api: "sdk_library/public/myjavalib-removed.txt",
|
||||
sdk_version: "current",
|
||||
},
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
.intermediates/myjavalib-foo.stubs/android_common/javac/myjavalib-foo.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
|
||||
.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
|
||||
.intermediates/myjavalib-foo.stubs.source/android_common/metalava/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
|
||||
`),
|
||||
checkMergeZips(
|
||||
".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
func TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForSdkTestWithJavaSdkLibrary,
|
||||
|
|
Loading…
Reference in a new issue