From 0c9a276dedcf24ab0708b6c263dff15481b70d21 Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Fri, 4 Nov 2022 09:40:47 +0000 Subject: [PATCH] bazel apex: Add mixed builds support for _using.txt file. Test: presubmits Change-Id: I7203fcccb09f6c93e702550ffa47a4029c3351dd --- apex/apex.go | 12 +++++------- apex/apex_test.go | 13 +++++++++---- bazel/cquery/request_type.go | 16 +++++++++------- bazel/cquery/request_type_test.go | 16 +++++++++------- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index cb5a5e9b9..ff0f50475 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1903,16 +1903,14 @@ func (a *apexBundle) ProcessBazelQueryResponse(ctx android.ModuleContext) { apexType := a.properties.ApexType switch apexType { case imageApex: - // TODO(asmundak): Bazel does not create these files yet. - // b/190817312 + // TODO(b/190817312): Generate the notice file from the apex rule. a.htmlGzNotice = android.PathForBazelOut(ctx, "NOTICE.html.gz") - // b/239081457 + // TODO(b/239081457): Generate the bazel bundle module file from the apex rule. a.bundleModuleFile = android.PathForBazelOut(ctx, a.Name()+apexType.suffix()+"-base.zip") - // b/239081455 - a.nativeApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, a.Name()+"_using.txt")) - // b/239081456 + a.nativeApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.SymbolsUsedByApex)) + // TODO(b/239081456): Generate the backing.txt file from Bazel. a.nativeApisBackedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, a.Name()+"_backing.txt")) - // b/239084755 + // TODO(b/239084755): Generate the java api using.xml file from Bazel. a.javaApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, a.Name()+"_using.xml")) installSuffix := imageApexSuffix if a.isCompressed { diff --git a/apex/apex_test.go b/apex/apex_test.go index a02300e4d..48ad02497 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -9768,10 +9768,11 @@ apex { OutputBaseDir: outputBaseDir, LabelToApexInfo: map[string]cquery.ApexInfo{ "//:foo": cquery.ApexInfo{ - SignedOutput: "signed_out.apex", - UnsignedOutput: "unsigned_out.apex", - BundleKeyInfo: []string{"public_key", "private_key"}, - ContainerKeyInfo: []string{"container_cert", "container_private"}, + SignedOutput: "signed_out.apex", + UnsignedOutput: "unsigned_out.apex", + BundleKeyInfo: []string{"public_key", "private_key"}, + ContainerKeyInfo: []string{"container_cert", "container_private"}, + SymbolsUsedByApex: "foo_using.txt", // unused PackageName: "pkg_name", @@ -9808,4 +9809,8 @@ apex { if w, g := "out/bazel/execroot/__main__/signed_out.apex", ab.outputFile.String(); w != g { t.Errorf("Expected output file %q, got %q", w, g) } + + if w, g := "out/bazel/execroot/__main__/foo_using.txt", ab.nativeApisUsedByModuleFile.String(); w != g { + t.Errorf("Expected output file %q, got %q", w, g) + } } diff --git a/bazel/cquery/request_type.go b/bazel/cquery/request_type.go index f624bf887..572bbd1d0 100644 --- a/bazel/cquery/request_type.go +++ b/bazel/cquery/request_type.go @@ -218,17 +218,19 @@ return json_encode({ "bundle_key_info": [bundle_key_info.public_key.path, bundle_key_info.private_key.path], "container_key_info": [container_key_info.pem.path, container_key_info.pk8.path, container_key_info.key_name], "package_name": info.package_name, + "symbols_used_by_apex": info.symbols_used_by_apex.path, })` } type ApexInfo struct { - SignedOutput string `json:"signed_output"` - UnsignedOutput string `json:"unsigned_output"` - ProvidesLibs []string `json:"provides_native_libs"` - RequiresLibs []string `json:"requires_native_libs"` - BundleKeyInfo []string `json:"bundle_key_info"` - ContainerKeyInfo []string `json:"container_key_info"` - PackageName string `json:"package_name"` + SignedOutput string `json:"signed_output"` + UnsignedOutput string `json:"unsigned_output"` + ProvidesLibs []string `json:"provides_native_libs"` + RequiresLibs []string `json:"requires_native_libs"` + BundleKeyInfo []string `json:"bundle_key_info"` + ContainerKeyInfo []string `json:"container_key_info"` + PackageName string `json:"package_name"` + SymbolsUsedByApex string `json:"symbols_used_by_apex"` } // ParseResult returns a value obtained by parsing the result of the request's Starlark function. diff --git a/bazel/cquery/request_type_test.go b/bazel/cquery/request_type_test.go index 09e388589..c7eb84e60 100644 --- a/bazel/cquery/request_type_test.go +++ b/bazel/cquery/request_type_test.go @@ -148,15 +148,17 @@ func TestGetApexInfoParseResults(t *testing.T) { `"bundle_key_info":["foo.pem", "foo.privkey"],` + `"container_key_info":["foo.x509.pem", "foo.pk8", "foo"],` + `"package_name":"package.name",` + + `"symbols_used_by_apex": "path/to/my.apex_using.txt",` + `"provides_native_libs":[]}`, expectedOutput: ApexInfo{ - SignedOutput: "my.apex", - UnsignedOutput: "my.apex.unsigned", - RequiresLibs: []string{"//bionic/libc:libc", "//bionic/libdl:libdl"}, - ProvidesLibs: []string{}, - BundleKeyInfo: []string{"foo.pem", "foo.privkey"}, - ContainerKeyInfo: []string{"foo.x509.pem", "foo.pk8", "foo"}, - PackageName: "package.name", + SignedOutput: "my.apex", + UnsignedOutput: "my.apex.unsigned", + RequiresLibs: []string{"//bionic/libc:libc", "//bionic/libdl:libdl"}, + ProvidesLibs: []string{}, + BundleKeyInfo: []string{"foo.pem", "foo.privkey"}, + ContainerKeyInfo: []string{"foo.x509.pem", "foo.pk8", "foo"}, + PackageName: "package.name", + SymbolsUsedByApex: "path/to/my.apex_using.txt", }, }, }