1bfd60de09
With Kernel caching enabled for files in Cog, we no longer need this workaround. This also makes clean builds after make clean simpler (no need to rerun source again after m clean). Bug: b/289391270 TESTED: Ran ~5 full builds without workaround and none of them stalled NOTE FOR REVIEWERS - original patch and result patch are not identical. PLEASE REVIEW CAREFULLY. Diffs between the patches: # This function moves the reclient binaries into a directory that exists in a > -# non-cog part of the overall filesystem. This is to workaround the problem > -# described in b/289391270. > -function _copy_reclient_binaries_from_cog() { > - if [[ "${OUT_DIR}" == "" ]]; then > - OUT_DIR="out" > - fi > - local RECLIENT_VERSION=`readlink prebuilts/remoteexecution-client/live` > - > - local NONCOG_RECLIENT_BIN_DIR_BASE="${OUT_DIR}/.reclient" > - local NONCOG_RECLIENT_BIN_DIR="${NONCOG_RECLIENT_BIN_DIR_BASE}/${RECLIENT_VERSION}" > - > - # Create the non cog directory and setup live symlink. > - mkdir -p ${NONCOG_RECLIENT_BIN_DIR} > - > - if [ `ls ${NONCOG_RECLIENT_BIN_DIR} | wc -l` -lt 8 ]; then > - # Not all binaries exist, copy them from the Cog directory. > - local TOP=$(gettop) > - cp ${TOP}/prebuilts/remoteexecution-client/live/* ${NONCOG_RECLIENT_BIN_DIR} > - fi > - > - ln -sfn ${RECLIENT_VERSION} ${NONCOG_RECLIENT_BIN_DIR_BASE}/live > - export RBE_DIR="${NONCOG_RECLIENT_BIN_DIR_BASE}/live" > -} > - > - _copy_reclient_binaries_from_cog Original patch: diff --git a/cogsetup.sh b/cogsetup.sh old mode 100644 new mode 100644 --- a/cogsetup.sh +++ b/cogsetup.sh @@ -34,31 +34,6 @@ mkdir -p ${DEFAULT_OUTPUT_DIR} ln -s ${DEFAULT_OUTPUT_DIR} `pwd`/out } - -# This function moves the reclient binaries into a directory that exists in a -# non-cog part of the overall filesystem. This is to workaround the problem -# described in b/289391270. -function _copy_reclient_binaries_from_cog() { - if [[ "${OUT_DIR}" == "" ]]; then - OUT_DIR="out" - fi - local RECLIENT_VERSION=`readlink prebuilts/remoteexecution-client/live` - - local NONCOG_RECLIENT_BIN_DIR_BASE="${OUT_DIR}/.reclient" - local NONCOG_RECLIENT_BIN_DIR="${NONCOG_RECLIENT_BIN_DIR_BASE}/${RECLIENT_VERSION}" - - # Create the non cog directory and setup live symlink. - mkdir -p ${NONCOG_RECLIENT_BIN_DIR} - - if [ `ls ${NONCOG_RECLIENT_BIN_DIR} | wc -l` -lt 8 ]; then - # Not all binaries exist, copy them from the Cog directory. - local TOP=$(gettop) - cp ${TOP}/prebuilts/remoteexecution-clie [[[Original patch trimmed due to size. Decoded string size: 1502. Decoded string SHA1: f5a824559440a15a8ccb76dbf414facf5d578da9.]]] Result patch: diff --git a/cogsetup.sh b/cogsetup.sh index 3005d58..6439af0 100644 --- a/cogsetup.sh +++ b/cogsetup.sh @@ -35,31 +35,6 @@ ln -s ${DEFAULT_OUTPUT_DIR} `pwd`/out } -# This function moves the reclient binaries into a directory that exists in a -# non-cog part of the overall filesystem. This is to workaround the problem -# described in b/289391270. -function _copy_reclient_binaries_from_cog() { - if [[ "${OUT_DIR}" == "" ]]; then - OUT_DIR="out" - fi - local RECLIENT_VERSION=`readlink prebuilts/remoteexecution-client/live` - - local NONCOG_RECLIENT_BIN_DIR_BASE="${OUT_DIR}/.reclient" - local NONCOG_RECLIENT_BIN_DIR="${NONCOG_RECLIENT_BIN_DIR_BASE}/${RECLIENT_VERSION}" - - # Create the non cog directory and setup live symlink. - mkdir -p ${NONCOG_RECLIENT_BIN_DIR} - - if [ `ls ${NONCOG_RECLIENT_BIN_DIR} | wc -l` -lt 8 ]; then - # Not all binaries exist, copy them from the Cog directory. - local TOP=$(gettop) - cp ${TOP}/prebuilts/remoteexecution-client/live/* ${NONCOG_RECLIENT_BIN_DIR} [[[Result patch trimmed due to size. Decoded string size: 1500. Decoded string SHA1: 75090baaf2a80305e8faea0e882e7edf257a2420.]]] Change-Id: Id9963c3f1de7d3d4151a2e84fe52cf9d2f66ba10
66 lines
No EOL
2.1 KiB
Bash
66 lines
No EOL
2.1 KiB
Bash
#
|
|
# Copyright (C) 2023 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.
|
|
#
|
|
|
|
# This file is executed by build/envsetup.sh, and can use anything
|
|
# defined in envsetup.sh.
|
|
function _create_out_symlink_for_cog() {
|
|
if [[ "${OUT_DIR}" == "" ]]; then
|
|
OUT_DIR="out"
|
|
fi
|
|
|
|
if [[ -L "${OUT_DIR}" ]]; then
|
|
return
|
|
fi
|
|
if [ -d "${OUT_DIR}" ]; then
|
|
echo -e "\tOutput directory ${OUT_DIR} cannot be present in a Cog workspace."
|
|
echo -e "\tDelete \"${OUT_DIR}\" or create a symlink from \"${OUT_DIR}\" to a directory outside your workspace."
|
|
return 1
|
|
fi
|
|
|
|
DEFAULT_OUTPUT_DIR="${HOME}/.cog/android-build-out"
|
|
mkdir -p ${DEFAULT_OUTPUT_DIR}
|
|
ln -s ${DEFAULT_OUTPUT_DIR} `pwd`/out
|
|
}
|
|
|
|
# This function sets up the build environment to be appropriate for Cog.
|
|
function _setup_cog_env() {
|
|
_create_out_symlink_for_cog
|
|
if [ "$?" -eq "1" ]; then
|
|
echo -e "\e[0;33mWARNING:\e[00m Cog environment setup failed!"
|
|
return 1
|
|
fi
|
|
|
|
export ANDROID_BUILD_ENVIRONMENT_CONFIG="googler-cog"
|
|
|
|
# Running repo command within Cog workspaces is not supported, so override
|
|
# it with this function. If the user is running repo within a Cog workspace,
|
|
# we'll fail with an error, otherwise, we run the original repo command with
|
|
# the given args.
|
|
ORIG_REPO_PATH=`which repo`
|
|
function repo {
|
|
if [[ "${PWD}" == /google/cog/* ]]; then
|
|
echo "\e[01;31mERROR:\e[0mrepo command is disallowed within Cog workspaces."
|
|
return 1
|
|
fi
|
|
${ORIG_REPO_PATH} "$@"
|
|
}
|
|
}
|
|
|
|
if [[ "${PWD}" != /google/cog/* ]]; then
|
|
echo -e "\e[01;31mERROR:\e[0m This script must be run from a Cog workspace."
|
|
fi
|
|
|
|
_setup_cog_env |