From 680387bf1d3ce7cbc77f535be7c42cec411b1687 Mon Sep 17 00:00:00 2001 From: Rupert Shuttleworth Date: Sun, 25 Oct 2020 12:31:27 +0000 Subject: [PATCH] Add code to enable USE_BAZEL=1 m functionality in AOSP. Test: Manually, but builds currently fail due to a recent change to bazel_handler.go. Change-Id: I9a45a2c73d1755032b11f6b913c03f83a28f63c5 --- cmd/soong_ui/main.go | 8 ++++++- ui/build/Android.bp | 1 + ui/build/bazel.go | 54 ++++++++++++++++++++++++++++++++++++++++++++ ui/build/build.go | 6 +++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 ui/build/bazel.go diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go index 774a87219..a1b0c8e90 100644 --- a/cmd/soong_ui/main.go +++ b/cmd/soong_ui/main.go @@ -470,7 +470,13 @@ func make(ctx build.Context, config build.Config, _ []string, logsDir string) { ctx.Fatal("done") } - toBuild := build.BuildAll + var toBuild int + if _, ok := config.Environment().Get("USE_BAZEL"); ok { + toBuild = build.BuildAllWithBazel + } else { + toBuild = build.BuildAll + } + if config.Checkbuild() { toBuild |= build.RunBuildTests } diff --git a/ui/build/Android.bp b/ui/build/Android.bp index 4ef27212a..c314b7b08 100644 --- a/ui/build/Android.bp +++ b/ui/build/Android.bp @@ -39,6 +39,7 @@ bootstrap_go_package { "blueprint-microfactory", ], srcs: [ + "bazel.go", "build.go", "cleanbuild.go", "config.go", diff --git a/ui/build/bazel.go b/ui/build/bazel.go new file mode 100644 index 000000000..c5702c086 --- /dev/null +++ b/ui/build/bazel.go @@ -0,0 +1,54 @@ +// Copyright 2020 Google Inc. All rights reserved. +// +// 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 build + +import ( + "path/filepath" + "strings" +) + +func runBazel(ctx Context, config Config) { + // "droid" is the default ninja target. + outputGroups := "droid" + if len(config.ninjaArgs) > 0 { + // At this stage, the residue slice of args passed to ninja + // are the ninja targets to build, which can correspond directly + // to ninja_build's output_groups. + outputGroups = strings.Join(config.ninjaArgs, ",") + } + + bazelExecutable := filepath.Join("tools", "bazel") + args := []string{ + "build", + "--verbose_failures", + "--show_progress_rate_limit=0.05", + "--color=yes", + "--curses=yes", + "--show_timestamps", + "--announce_rc", + "--output_groups=" + outputGroups, + "//:" + config.TargetProduct() + "-" + config.TargetBuildVariant(), + } + + cmd := Command(ctx, config, "bazel", bazelExecutable, args...) + + cmd.Environment.Set("DIST_DIR", config.DistDir()) + cmd.Environment.Set("SHELL", "/bin/bash") + + ctx.Println(cmd.Cmd) + cmd.Dir = filepath.Join(config.OutDir(), "..") + ctx.Status.Status("Starting Bazel..") + cmd.RunAndStreamOrFatal() +} diff --git a/ui/build/build.go b/ui/build/build.go index 396f54cda..1cf202353 100644 --- a/ui/build/build.go +++ b/ui/build/build.go @@ -84,8 +84,10 @@ const ( BuildSoong = 1 << iota BuildKati = 1 << iota BuildNinja = 1 << iota + BuildBazel = 1 << iota RunBuildTests = 1 << iota BuildAll = BuildProductConfig | BuildSoong | BuildKati | BuildNinja + BuildAllWithBazel = BuildProductConfig | BuildSoong | BuildKati | BuildBazel ) func checkProblematicFiles(ctx Context) { @@ -257,6 +259,10 @@ func Build(ctx Context, config Config, what int) { // Run ninja runNinja(ctx, config) } + + if what&BuildBazel != 0 { + runBazel(ctx, config) + } } // distGzipFile writes a compressed copy of src to the distDir if dist is enabled. Failures