diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 78b5f0ccd..bb542c49c 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -761,6 +761,9 @@ type bootclasspathFragmentSdkMemberProperties struct { // The path to the generated index.csv file. Index_path android.OptionalPath + // The path to the generated signature-patterns.csv file. + Signature_patterns_path android.OptionalPath + // The path to the generated stub-flags.csv file. Stub_flags_path android.OptionalPath @@ -784,6 +787,7 @@ func (b *bootclasspathFragmentSdkMemberProperties) PopulateFromVariant(ctx andro b.Metadata_path = android.OptionalPathForPath(hiddenAPIInfo.MetadataPath) b.Index_path = android.OptionalPathForPath(hiddenAPIInfo.IndexPath) + b.Signature_patterns_path = android.OptionalPathForPath(hiddenAPIInfo.SignaturePatternsPath) b.Stub_flags_path = android.OptionalPathForPath(hiddenAPIInfo.StubFlagsPath) b.All_flags_path = android.OptionalPathForPath(hiddenAPIInfo.AllFlagsPath) @@ -851,6 +855,7 @@ func (b *bootclasspathFragmentSdkMemberProperties) AddToPropertySet(ctx android. copyOptionalPath(b.Annotation_flags_path, "annotation_flags") copyOptionalPath(b.Metadata_path, "metadata") copyOptionalPath(b.Index_path, "index") + copyOptionalPath(b.Signature_patterns_path, "signature_patterns") copyOptionalPath(b.Stub_flags_path, "stub_flags") copyOptionalPath(b.All_flags_path, "all_flags") } @@ -870,6 +875,9 @@ type prebuiltBootclasspathFragmentProperties struct { // The path to the index.csv file created by the bootclasspath_fragment. Index *string `android:"path"` + // The path to the signature-patterns.csv file created by the bootclasspath_fragment. + Signature_patterns *string `android:"path"` + // The path to the stub-flags.csv file created by the bootclasspath_fragment. Stub_flags *string `android:"path"` @@ -901,6 +909,12 @@ func (module *prebuiltBootclasspathFragmentModule) Name() string { // produceHiddenAPIOutput returns a path to the prebuilt all-flags.csv or nil if none is specified. func (module *prebuiltBootclasspathFragmentModule) produceHiddenAPIOutput(ctx android.ModuleContext, contents []android.Module, input HiddenAPIFlagInput) *HiddenAPIOutput { + pathForOptionalSrc := func(src *string) android.Path { + if src == nil { + return nil + } + return android.PathForModuleSrc(ctx, *src) + } pathForSrc := func(property string, src *string) android.Path { if src == nil { ctx.PropertyErrorf(property, "is required but was not specified") @@ -915,11 +929,12 @@ func (module *prebuiltBootclasspathFragmentModule) produceHiddenAPIOutput(ctx an output := HiddenAPIOutput{ HiddenAPIFlagOutput: HiddenAPIFlagOutput{ - AnnotationFlagsPath: pathForSrc("hidden_api.annotation_flags", module.prebuiltProperties.Hidden_api.Annotation_flags), - MetadataPath: pathForSrc("hidden_api.metadata", module.prebuiltProperties.Hidden_api.Metadata), - IndexPath: pathForSrc("hidden_api.index", module.prebuiltProperties.Hidden_api.Index), - StubFlagsPath: pathForSrc("hidden_api.stub_flags", module.prebuiltProperties.Hidden_api.Stub_flags), - AllFlagsPath: pathForSrc("hidden_api.all_flags", module.prebuiltProperties.Hidden_api.All_flags), + AnnotationFlagsPath: pathForSrc("hidden_api.annotation_flags", module.prebuiltProperties.Hidden_api.Annotation_flags), + MetadataPath: pathForSrc("hidden_api.metadata", module.prebuiltProperties.Hidden_api.Metadata), + IndexPath: pathForSrc("hidden_api.index", module.prebuiltProperties.Hidden_api.Index), + SignaturePatternsPath: pathForOptionalSrc(module.prebuiltProperties.Hidden_api.Signature_patterns), + StubFlagsPath: pathForSrc("hidden_api.stub_flags", module.prebuiltProperties.Hidden_api.Stub_flags), + AllFlagsPath: pathForSrc("hidden_api.all_flags", module.prebuiltProperties.Hidden_api.All_flags), }, EncodedBootDexFilesByModule: encodedBootDexJarsByModule, } diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go index b60f81360..916610957 100644 --- a/sdk/bootclasspath_fragment_sdk_test.go +++ b/sdk/bootclasspath_fragment_sdk_test.go @@ -137,6 +137,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -164,6 +165,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -188,6 +190,7 @@ sdk_snapshot { .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv +.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv .intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar @@ -335,6 +338,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -419,6 +423,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -497,6 +502,7 @@ sdk_snapshot { .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv +.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv .intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar @@ -538,8 +544,16 @@ sdk_snapshot { rule = module.Output("updatable-bcp-packages.txt") expectedContents := `'mybootlib\nmyothersdklibrary\n'` android.AssertStringEquals(t, "updatable-bcp-packages.txt", expectedContents, rule.Args["content"]) + + rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid") + android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " snapshot/hiddenapi/all-flags.csv:snapshot/hiddenapi/signature-patterns.csv ") }), snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot), + snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) { + module := result.ModuleForTests("platform-bootclasspath", "android_common") + rule := module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid") + android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/all-flags.csv:out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv ") + }), snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot), ) } @@ -639,6 +653,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -841,6 +856,7 @@ prebuilt_bootclasspath_fragment { annotation_flags: "hiddenapi/annotation-flags.csv", metadata: "hiddenapi/metadata.csv", index: "hiddenapi/index.csv", + signature_patterns: "hiddenapi/signature-patterns.csv", stub_flags: "hiddenapi/stub-flags.csv", all_flags: "hiddenapi/all-flags.csv", }, @@ -884,6 +900,7 @@ my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv +.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv .intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar