aboutsummaryrefslogtreecommitdiff
path: root/shell_utils.sh
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2022-12-05 15:15:36 -0800
committerJoe Onorato <joeo@google.com>2023-01-03 14:12:43 -0800
commit344e404abbab047903097ce00dc54d32491f3166 (patch)
treebbebc28456d1cf04295e2daefae3411e178831a7 /shell_utils.sh
parent0ffb3e522edf10a85ffd3a7519011c9fa47a36f3 (diff)
downloadbuild-344e404abbab047903097ce00dc54d32491f3166.tar.gz
Pull common methods into shell_utils.sh, which can be included by scripts.
So we can stop copying gettop and others all over the place. Test: manual Bug: 260003429 Change-Id: Ic1b5d6bec8726d9253fb33ec588e503d6fc8167a
Diffstat (limited to 'shell_utils.sh')
-rw-r--r--shell_utils.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/shell_utils.sh b/shell_utils.sh
new file mode 100644
index 0000000000..9de5a504e5
--- /dev/null
+++ b/shell_utils.sh
@@ -0,0 +1,74 @@
+# 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.
+
+function gettop
+{
+ local TOPFILE=build/make/core/envsetup.mk
+ # The ${TOP-} expansion allows this to work even with set -u
+ 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
+ local 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
+}
+
+# Sets TOP, or if the root of the tree can't be found, prints a message and
+# exits. Since this function exits, it should not be called from functions
+# defined in envsetup.sh.
+if [ -z "${IMPORTING_ENVSETUP:-}" ] ; then
+function require_top
+{
+ TOP=$(gettop)
+ if [[ ! $TOP ]] ; then
+ echo "Can not locate root of source tree. $(basename $0) must be run from within the Android source tree." >&2
+ exit 1
+ fi
+}
+fi
+
+function getoutdir
+{
+ local top=$(gettop)
+ local out_dir="${OUT_DIR:-}"
+ if [[ -z "${out_dir}" ]]; then
+ if [[ -n "${OUT_DIR_COMMON_BASE:-}" && -n "${top}" ]]; then
+ out_dir="${OUT_DIR_COMMON_BASE}/$(basename ${top})"
+ else
+ out_dir="out"
+ fi
+ fi
+ if [[ "${out_dir}" != /* ]]; then
+ out_dir="${top}/${out_dir}"
+ fi
+ echo "${out_dir}"
+}
+
+