Integrate bazelenv.sh environment variables into soong_ui environment.
This removes the need to source bazelenv.sh for USE_BAZEL_ANALYSIS, and unifies mixed builds to use the checked in tools/bazel and bazelrc. It also unifies all bazel-related output to be in out/bazel. Without aosp/1502095, this change still requires toplevel_output_directories to be an empty list, otherwise there'll be this error: ERROR: Directories specified with toplevel_output_directories should be ignored and can not be used as sources. Test: With aosp/1441774: rm -rf out/ && lunch aosp_cf_x86_auto && USE_BAZEL_ANALYSIS=1 m libc && prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-aosp_cf_x86_auto.ninja -t commands libc | grep bazel-out | wc -l # 2 results Change-Id: I69b217ec88da531415792bb6e04b6a194ca4718d
This commit is contained in:
@@ -192,8 +192,7 @@ func pwdPrefix() string {
|
||||
func (context *bazelContext) issueBazelCommand(command string, labels []string,
|
||||
extraFlags ...string) (string, error) {
|
||||
|
||||
cmdFlags := []string{"--bazelrc=build/bazel/common.bazelrc",
|
||||
"--output_base=" + context.outputBase, command}
|
||||
cmdFlags := []string{"--output_base=" + context.outputBase, command}
|
||||
cmdFlags = append(cmdFlags, labels...)
|
||||
cmdFlags = append(cmdFlags, extraFlags...)
|
||||
|
||||
|
@@ -1,78 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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.
|
||||
|
||||
# Helper script for setting environment variables required for Bazel/Soong
|
||||
# mixed builds prototype. For development use only.
|
||||
#
|
||||
# Usage:
|
||||
# export BAZEL_PATH=[some_bazel_path] && source bazelenv.sh
|
||||
#
|
||||
# If BAZEL_PATH is not set, `which bazel` will be used
|
||||
# to locate the appropriate bazel to use.
|
||||
|
||||
|
||||
# Function to find top of the source tree (if $TOP isn't set) by walking up the
|
||||
# tree.
|
||||
function gettop
|
||||
{
|
||||
local TOPFILE=build/soong/root.bp
|
||||
if [ -n "${TOP-}" -a -f "${TOP-}/${TOPFILE}" ] ; then
|
||||
# The following circumlocution ensures we remove symlinks from TOP.
|
||||
(cd $TOP; PWD= /bin/pwd)
|
||||
else
|
||||
if [ -f $TOPFILE ] ; then
|
||||
# The following circumlocution (repeated below as well) ensures
|
||||
# that we record the true directory name and not one that is
|
||||
# faked up with symlink names.
|
||||
PWD= /bin/pwd
|
||||
else
|
||||
local HERE=$PWD
|
||||
T=
|
||||
while [ \( ! \( -f $TOPFILE \) \) -a \( $PWD != "/" \) ]; do
|
||||
\cd ..
|
||||
T=`PWD= /bin/pwd -P`
|
||||
done
|
||||
\cd $HERE
|
||||
if [ -f "$T/$TOPFILE" ]; then
|
||||
echo $T
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR="$(mktemp -d)"
|
||||
|
||||
if [ -z "$BAZEL_PATH" ] ; then
|
||||
export BAZEL_PATH="$(which bazel)"
|
||||
fi
|
||||
|
||||
# TODO(cparsons): Use USE_BAZEL=1 instead once "mixed Soong/Bazel builds" are
|
||||
# production ready.
|
||||
export USE_BAZEL_ANALYSIS=1
|
||||
# TODO(cparsons): Retrieve this information in either envsetup.sh or
|
||||
# bazel.sh.
|
||||
export BAZEL_HOME="$BASE_DIR/bazelhome"
|
||||
export BAZEL_OUTPUT_BASE="$BASE_DIR/output"
|
||||
export BAZEL_WORKSPACE="$(gettop)"
|
||||
|
||||
echo "USE_BAZEL_ANALYSIS=${USE_BAZEL_ANALYSIS}"
|
||||
echo "BAZEL_PATH=${BAZEL_PATH}"
|
||||
echo "BAZEL_HOME=${BAZEL_HOME}"
|
||||
echo "BAZEL_OUTPUT_BASE=${BAZEL_OUTPUT_BASE}"
|
||||
echo "BAZEL_WORKSPACE=${BAZEL_WORKSPACE}"
|
||||
|
||||
mkdir -p $BAZEL_HOME
|
||||
mkdir -p $BAZEL_OUTPUT_BASE
|
@@ -703,6 +703,10 @@ func (c *configImpl) NinjaArgs() []string {
|
||||
return c.ninjaArgs
|
||||
}
|
||||
|
||||
func (c *configImpl) BazelOutDir() string {
|
||||
return filepath.Join(c.OutDir(), "bazel")
|
||||
}
|
||||
|
||||
func (c *configImpl) SoongOutDir() string {
|
||||
return filepath.Join(c.OutDir(), "soong")
|
||||
}
|
||||
|
@@ -133,6 +133,13 @@ func runSoong(ctx Context, config Config) {
|
||||
"-j", strconv.Itoa(config.Parallel()),
|
||||
"--frontend_file", fifo,
|
||||
"-f", filepath.Join(config.SoongOutDir(), file))
|
||||
|
||||
// For Bazel mixed builds.
|
||||
cmd.Environment.Set("BAZEL_PATH", "./tools/bazel")
|
||||
cmd.Environment.Set("BAZEL_HOME", filepath.Join(config.BazelOutDir(), "bazelhome"))
|
||||
cmd.Environment.Set("BAZEL_OUTPUT_BASE", filepath.Join(config.BazelOutDir(), "output"))
|
||||
cmd.Environment.Set("BAZEL_WORKSPACE", absPath(ctx, "."))
|
||||
|
||||
cmd.Environment.Set("SOONG_SANDBOX_SOONG_BUILD", "true")
|
||||
cmd.Sandbox = soongSandbox
|
||||
cmd.RunAndStreamOrFatal()
|
||||
|
Reference in New Issue
Block a user