From 7810e17e548e238412d6832b9378615249178180 Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Fri, 29 Jul 2022 02:25:34 +0000 Subject: [PATCH] Export default apex version from updatable_modules.go to Bazel's apex_toolchain through soong_injection. This is necessary to keep both Bazel and Soong in sync. Test: presubmit Bug: 238723069 Fixes: 238153998 Change-Id: Ibf4a8ed91d358dc7800c10e4112485a52f0606bb --- apex/Android.bp | 1 + apex/bp2build.go | 30 ++++++++++++++++++++++++++++++ bp2build/conversion.go | 5 +++++ bp2build/conversion_test.go | 8 ++++++++ 4 files changed, 44 insertions(+) create mode 100644 apex/bp2build.go diff --git a/apex/Android.bp b/apex/Android.bp index 480ad0662..018d0306d 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -26,6 +26,7 @@ bootstrap_go_package { "apex_sdk_member.go", "apex_singleton.go", "builder.go", + "bp2build.go", "deapexer.go", "key.go", "prebuilt.go", diff --git a/apex/bp2build.go b/apex/bp2build.go new file mode 100644 index 000000000..221ab132f --- /dev/null +++ b/apex/bp2build.go @@ -0,0 +1,30 @@ +// Copyright (C) 2022 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package apex + +import ( + "android/soong/android" + "strings" +) + +// This file contains the bp2build integration for the apex package. + +// Export constants as Starlark using bp2build to Bazel. +func BazelApexToolchainVars() string { + content := []string{ + "# GENERATED BY SOONG. DO NOT EDIT.", + "default_manifest_version = " + android.DefaultUpdatableModuleVersion, // constants.go is different in every branch. + } + return strings.Join(content, "\n") +} diff --git a/bp2build/conversion.go b/bp2build/conversion.go index 4246f7da3..8cf9beaf4 100644 --- a/bp2build/conversion.go +++ b/bp2build/conversion.go @@ -10,6 +10,8 @@ import ( cc_config "android/soong/cc/config" java_config "android/soong/java/config" + "android/soong/apex" + "github.com/google/blueprint/proptools" ) @@ -28,6 +30,9 @@ func CreateSoongInjectionFiles(cfg android.Config, metrics CodegenMetrics) []Baz files = append(files, newFile("java_toolchain", GeneratedBuildFileName, "")) // Creates a //java_toolchain package. files = append(files, newFile("java_toolchain", "constants.bzl", java_config.BazelJavaToolchainVars(cfg))) + files = append(files, newFile("apex_toolchain", GeneratedBuildFileName, "")) // Creates a //apex_toolchain package. + files = append(files, newFile("apex_toolchain", "constants.bzl", apex.BazelApexToolchainVars())) + files = append(files, newFile("metrics", "converted_modules.txt", strings.Join(metrics.convertedModules, "\n"))) files = append(files, newFile("product_config", "soong_config_variables.bzl", cfg.Bp2buildSoongConfigDefinitions.String())) diff --git a/bp2build/conversion_test.go b/bp2build/conversion_test.go index b0d0740fc..0cb711ca5 100644 --- a/bp2build/conversion_test.go +++ b/bp2build/conversion_test.go @@ -103,6 +103,14 @@ func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) { dir: "java_toolchain", basename: "constants.bzl", }, + { + dir: "apex_toolchain", + basename: GeneratedBuildFileName, + }, + { + dir: "apex_toolchain", + basename: "constants.bzl", + }, { dir: "metrics", basename: "converted_modules.txt",