Loading android/variable.go +3 −2 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ type variableProperties struct { Release_aidl_use_unfrozen struct { Cflags []string Cmd *string Vintf_fragments []string } } `android:"arch_variant"` } Loading apex/apex.go +10 −0 Original line number Diff line number Diff line Loading @@ -2072,8 +2072,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, return true // track transitive dependencies case *java.AndroidAppImport: vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, ap)...) addAconfigFiles(vctx, ctx, child) case *java.AndroidTestHelperApp: vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, ap)...) addAconfigFiles(vctx, ctx, child) case *java.AndroidAppSet: appDir := "app" if ap.Privileged() { Loading @@ -2087,6 +2089,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := newApexFile(ctx, ap.OutputFile(), ap.BaseModuleName(), appDirName, appSet, ap) af.certificate = java.PresignedCertificate vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) default: ctx.PropertyErrorf("apps", "%q is not an android_app module", depName) } Loading Loading @@ -2115,6 +2118,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, case prebuiltTag: if prebuilt, ok := child.(prebuilt_etc.PrebuiltEtcModule); ok { vctx.filesInfo = append(vctx.filesInfo, apexFileForPrebuiltEtc(ctx, prebuilt, depName)) addAconfigFiles(vctx, ctx, child) } else { ctx.PropertyErrorf("prebuilts", "%q is not a prebuilt_etc module", depName) } Loading @@ -2138,6 +2142,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := apexFileForExecutable(ctx, ccTest) af.class = nativeTest vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) } return true // track transitive dependencies } else { Loading Loading @@ -2223,11 +2228,13 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } else if rm, ok := child.(*rust.Module); ok { af := apexFileForRustLibrary(ctx, rm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } } else if cc.IsTestPerSrcDepTag(depTag) { Loading Loading @@ -2256,6 +2263,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := apexFileForRustLibrary(ctx, rustm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } } else if rust.IsRlibDepTag(depTag) { Loading @@ -2274,6 +2282,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, return false } vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies default: ctx.PropertyErrorf("bootclasspath_fragments", Loading @@ -2288,6 +2297,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, if profileAf := apexFileForJavaModuleProfile(ctx, child.(javaModule)); profileAf != nil { vctx.filesInfo = append(vctx.filesInfo, *profileAf) } addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies default: ctx.PropertyErrorf("systemserverclasspath_fragments", Loading apex/apex_test.go +14 −12 Original line number Diff line number Diff line Loading @@ -11128,10 +11128,10 @@ func TestAconfigFilesJavaDeps(t *testing.T) { t.Fatalf("Expected 5 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[4], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[5], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[6], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[7], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[4], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[5], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[6], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[7], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", Loading Loading @@ -11252,10 +11252,10 @@ func TestAconfigFilesJavaAndCcDeps(t *testing.T) { t.Fatalf("Expected 12 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[8], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[9], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[10], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[11], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[8], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[9], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[10], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[11], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", Loading Loading @@ -11393,13 +11393,15 @@ func TestAconfigFilesRustDeps(t *testing.T) { t.Fatalf("Expected 26 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[22], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[23], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[24], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[25], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[22], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[23], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[24], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[25], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", "my_aconfig_declarations_bar/intermediate.pb", "my_aconfig_declarations_baz/intermediate.pb", "my_rust_binary/android_arm64_armv8-a_apex10000/myapex/aconfig_merged.pb", } VerifyAconfigRule(t, &mod, "combine_aconfig_declarations", inputs, "android_common_myapex/aconfig_flags.pb", "", "") Loading apex/builder.go +5 −4 Original line number Diff line number Diff line Loading @@ -645,6 +645,7 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { prebuiltSdkToolsBinDir := filepath.Join("prebuilts", "sdk", "tools", runtime.GOOS, "bin") defaultReadOnlyFiles := []string{"apex_manifest.json", "apex_manifest.pb"} aconfigDest := imageDir.Join(ctx, "etc").String() if len(a.aconfigFiles) > 0 { apexAconfigFile := android.PathForModuleOut(ctx, "aconfig_flags.pb") ctx.Build(pctx, android.BuildParams{ Loading @@ -657,9 +658,9 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { }, }) copyCommands = append(copyCommands, "cp -f "+apexAconfigFile.String()+" "+imageDir.String()) copyCommands = append(copyCommands, "cp -f "+apexAconfigFile.String()+" "+aconfigDest) implicitInputs = append(implicitInputs, apexAconfigFile) defaultReadOnlyFiles = append(defaultReadOnlyFiles, apexAconfigFile.Base()) defaultReadOnlyFiles = append(defaultReadOnlyFiles, "etc/"+apexAconfigFile.Base()) for _, info := range createStorageInfo { outputFile := android.PathForModuleOut(ctx, info.Output_file) Loading @@ -675,9 +676,9 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { }, }) copyCommands = append(copyCommands, "cp -f "+outputFile.String()+" "+imageDir.String()) copyCommands = append(copyCommands, "cp -f "+outputFile.String()+" "+aconfigDest) implicitInputs = append(implicitInputs, outputFile) defaultReadOnlyFiles = append(defaultReadOnlyFiles, outputFile.Base()) defaultReadOnlyFiles = append(defaultReadOnlyFiles, "etc/"+outputFile.Base()) } } Loading java/aar.go +4 −4 Original line number Diff line number Diff line Loading @@ -1136,7 +1136,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { extractedAARDir := android.PathForModuleOut(ctx, "aar") a.classpathFile = extractedAARDir.Join(ctx, "classes-combined.jar") a.manifest = extractedAARDir.Join(ctx, "AndroidManifest.xml") aarRTxt := extractedAARDir.Join(ctx, "R.txt") a.rTxt = extractedAARDir.Join(ctx, "R.txt") a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip") a.proguardFlags = extractedAARDir.Join(ctx, "proguard.txt") android.SetProvider(ctx, ProguardSpecInfoProvider, ProguardSpecInfo{ Loading @@ -1150,7 +1150,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.Build(pctx, android.BuildParams{ Rule: unzipAAR, Input: a.aarPath, Outputs: android.WritablePaths{a.classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, aarRTxt}, Outputs: android.WritablePaths{a.classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, a.rTxt}, Description: "unzip AAR", Args: map[string]string{ "outDir": extractedAARDir.String(), Loading @@ -1168,7 +1168,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.exportPackage = android.PathForModuleOut(ctx, "package-res.apk") proguardOptionsFile := android.PathForModuleGen(ctx, "proguard.options") a.rTxt = android.PathForModuleOut(ctx, "R.txt") aaptRTxt := android.PathForModuleOut(ctx, "R.txt") a.extraAaptPackagesFile = android.PathForModuleOut(ctx, "extra_packages") var linkDeps android.Paths Loading Loading @@ -1205,7 +1205,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { } transitiveAssets := android.ReverseSliceInPlace(staticDeps.assets()) aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, a.rTxt, aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, aaptRTxt, linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil, nil) a.rJar = android.PathForModuleOut(ctx, "busybox/R.jar") Loading Loading
android/variable.go +3 −2 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ type variableProperties struct { Release_aidl_use_unfrozen struct { Cflags []string Cmd *string Vintf_fragments []string } } `android:"arch_variant"` } Loading
apex/apex.go +10 −0 Original line number Diff line number Diff line Loading @@ -2072,8 +2072,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, return true // track transitive dependencies case *java.AndroidAppImport: vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, ap)...) addAconfigFiles(vctx, ctx, child) case *java.AndroidTestHelperApp: vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, ap)...) addAconfigFiles(vctx, ctx, child) case *java.AndroidAppSet: appDir := "app" if ap.Privileged() { Loading @@ -2087,6 +2089,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := newApexFile(ctx, ap.OutputFile(), ap.BaseModuleName(), appDirName, appSet, ap) af.certificate = java.PresignedCertificate vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) default: ctx.PropertyErrorf("apps", "%q is not an android_app module", depName) } Loading Loading @@ -2115,6 +2118,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, case prebuiltTag: if prebuilt, ok := child.(prebuilt_etc.PrebuiltEtcModule); ok { vctx.filesInfo = append(vctx.filesInfo, apexFileForPrebuiltEtc(ctx, prebuilt, depName)) addAconfigFiles(vctx, ctx, child) } else { ctx.PropertyErrorf("prebuilts", "%q is not a prebuilt_etc module", depName) } Loading @@ -2138,6 +2142,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := apexFileForExecutable(ctx, ccTest) af.class = nativeTest vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) } return true // track transitive dependencies } else { Loading Loading @@ -2223,11 +2228,13 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } else if rm, ok := child.(*rust.Module); ok { af := apexFileForRustLibrary(ctx, rm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } } else if cc.IsTestPerSrcDepTag(depTag) { Loading Loading @@ -2256,6 +2263,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := apexFileForRustLibrary(ctx, rustm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } } else if rust.IsRlibDepTag(depTag) { Loading @@ -2274,6 +2282,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, return false } vctx.filesInfo = append(vctx.filesInfo, af) addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies default: ctx.PropertyErrorf("bootclasspath_fragments", Loading @@ -2288,6 +2297,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, if profileAf := apexFileForJavaModuleProfile(ctx, child.(javaModule)); profileAf != nil { vctx.filesInfo = append(vctx.filesInfo, *profileAf) } addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies default: ctx.PropertyErrorf("systemserverclasspath_fragments", Loading
apex/apex_test.go +14 −12 Original line number Diff line number Diff line Loading @@ -11128,10 +11128,10 @@ func TestAconfigFilesJavaDeps(t *testing.T) { t.Fatalf("Expected 5 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[4], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[5], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[6], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[7], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[4], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[5], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[6], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[7], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", Loading Loading @@ -11252,10 +11252,10 @@ func TestAconfigFilesJavaAndCcDeps(t *testing.T) { t.Fatalf("Expected 12 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[8], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[9], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[10], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[11], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[8], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[9], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[10], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[11], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", Loading Loading @@ -11393,13 +11393,15 @@ func TestAconfigFilesRustDeps(t *testing.T) { t.Fatalf("Expected 26 commands, got %d in:\n%s", len(copyCmds), s) } ensureMatches(t, copyCmds[22], "^cp -f .*/aconfig_flags.pb .*/image.apex$") ensureMatches(t, copyCmds[23], "^cp -f .*/package.map .*/image.apex$") ensureMatches(t, copyCmds[24], "^cp -f .*/flag.map .*/image.apex$") ensureMatches(t, copyCmds[25], "^cp -f .*/flag.val .*/image.apex$") ensureMatches(t, copyCmds[22], "^cp -f .*/aconfig_flags.pb .*/image.apex/etc$") ensureMatches(t, copyCmds[23], "^cp -f .*/package.map .*/image.apex/etc$") ensureMatches(t, copyCmds[24], "^cp -f .*/flag.map .*/image.apex/etc$") ensureMatches(t, copyCmds[25], "^cp -f .*/flag.val .*/image.apex/etc$") inputs := []string{ "my_aconfig_declarations_foo/intermediate.pb", "my_aconfig_declarations_bar/intermediate.pb", "my_aconfig_declarations_baz/intermediate.pb", "my_rust_binary/android_arm64_armv8-a_apex10000/myapex/aconfig_merged.pb", } VerifyAconfigRule(t, &mod, "combine_aconfig_declarations", inputs, "android_common_myapex/aconfig_flags.pb", "", "") Loading
apex/builder.go +5 −4 Original line number Diff line number Diff line Loading @@ -645,6 +645,7 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { prebuiltSdkToolsBinDir := filepath.Join("prebuilts", "sdk", "tools", runtime.GOOS, "bin") defaultReadOnlyFiles := []string{"apex_manifest.json", "apex_manifest.pb"} aconfigDest := imageDir.Join(ctx, "etc").String() if len(a.aconfigFiles) > 0 { apexAconfigFile := android.PathForModuleOut(ctx, "aconfig_flags.pb") ctx.Build(pctx, android.BuildParams{ Loading @@ -657,9 +658,9 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { }, }) copyCommands = append(copyCommands, "cp -f "+apexAconfigFile.String()+" "+imageDir.String()) copyCommands = append(copyCommands, "cp -f "+apexAconfigFile.String()+" "+aconfigDest) implicitInputs = append(implicitInputs, apexAconfigFile) defaultReadOnlyFiles = append(defaultReadOnlyFiles, apexAconfigFile.Base()) defaultReadOnlyFiles = append(defaultReadOnlyFiles, "etc/"+apexAconfigFile.Base()) for _, info := range createStorageInfo { outputFile := android.PathForModuleOut(ctx, info.Output_file) Loading @@ -675,9 +676,9 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { }, }) copyCommands = append(copyCommands, "cp -f "+outputFile.String()+" "+imageDir.String()) copyCommands = append(copyCommands, "cp -f "+outputFile.String()+" "+aconfigDest) implicitInputs = append(implicitInputs, outputFile) defaultReadOnlyFiles = append(defaultReadOnlyFiles, outputFile.Base()) defaultReadOnlyFiles = append(defaultReadOnlyFiles, "etc/"+outputFile.Base()) } } Loading
java/aar.go +4 −4 Original line number Diff line number Diff line Loading @@ -1136,7 +1136,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { extractedAARDir := android.PathForModuleOut(ctx, "aar") a.classpathFile = extractedAARDir.Join(ctx, "classes-combined.jar") a.manifest = extractedAARDir.Join(ctx, "AndroidManifest.xml") aarRTxt := extractedAARDir.Join(ctx, "R.txt") a.rTxt = extractedAARDir.Join(ctx, "R.txt") a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip") a.proguardFlags = extractedAARDir.Join(ctx, "proguard.txt") android.SetProvider(ctx, ProguardSpecInfoProvider, ProguardSpecInfo{ Loading @@ -1150,7 +1150,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.Build(pctx, android.BuildParams{ Rule: unzipAAR, Input: a.aarPath, Outputs: android.WritablePaths{a.classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, aarRTxt}, Outputs: android.WritablePaths{a.classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, a.rTxt}, Description: "unzip AAR", Args: map[string]string{ "outDir": extractedAARDir.String(), Loading @@ -1168,7 +1168,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.exportPackage = android.PathForModuleOut(ctx, "package-res.apk") proguardOptionsFile := android.PathForModuleGen(ctx, "proguard.options") a.rTxt = android.PathForModuleOut(ctx, "R.txt") aaptRTxt := android.PathForModuleOut(ctx, "R.txt") a.extraAaptPackagesFile = android.PathForModuleOut(ctx, "extra_packages") var linkDeps android.Paths Loading Loading @@ -1205,7 +1205,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { } transitiveAssets := android.ReverseSliceInPlace(staticDeps.assets()) aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, a.rTxt, aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, aaptRTxt, linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil, nil) a.rJar = android.PathForModuleOut(ctx, "busybox/R.jar") Loading