build/make side of move the module-info.json commands into standalone scripts.
Bug: 340648588 Test: run them Change-Id: I5c072ee8481630327be9dccbbca501293a7b34cd
This commit is contained in:
210
envsetup.sh
210
envsetup.sh
@@ -862,30 +862,6 @@ function run_tool_with_logging() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
# simplified version of ps; output in the form
|
|
||||||
# <pid> <procname>
|
|
||||||
function qpid() {
|
|
||||||
local prepend=''
|
|
||||||
local append=''
|
|
||||||
if [ "$1" = "--exact" ]; then
|
|
||||||
prepend=' '
|
|
||||||
append='$'
|
|
||||||
shift
|
|
||||||
elif [ "$1" = "--help" -o "$1" = "-h" ]; then
|
|
||||||
echo "usage: qpid [[--exact] <process name|pid>"
|
|
||||||
return 255
|
|
||||||
fi
|
|
||||||
|
|
||||||
local EXE="$1"
|
|
||||||
if [ "$EXE" ] ; then
|
|
||||||
qpid | \grep "$prepend$EXE$append"
|
|
||||||
else
|
|
||||||
adb shell ps \
|
|
||||||
| tr -d '\r' \
|
|
||||||
| sed -e 1d -e 's/^[^ ]* *\([0-9]*\).* \([^ ]*\)$/\1 \2/'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# coredump_setup - enable core dumps globally for any process
|
# coredump_setup - enable core dumps globally for any process
|
||||||
# that has the core-file-size limit set correctly
|
# that has the core-file-size limit set correctly
|
||||||
#
|
#
|
||||||
@@ -1195,87 +1171,10 @@ function godir () {
|
|||||||
\cd $T/$pathname
|
\cd $T/$pathname
|
||||||
}
|
}
|
||||||
|
|
||||||
# Verifies that module-info.txt exists, returning nonzero if it doesn't.
|
|
||||||
function verifymodinfo() {
|
|
||||||
if [ ! "$ANDROID_PRODUCT_OUT" ]; then
|
|
||||||
if [ "$QUIET_VERIFYMODINFO" != "true" ] ; then
|
|
||||||
echo "No ANDROID_PRODUCT_OUT. Try running 'lunch' first." >&2
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$ANDROID_PRODUCT_OUT/module-info.json" ]; then
|
|
||||||
if [ "$QUIET_VERIFYMODINFO" != "true" ] ; then
|
|
||||||
echo "Could not find module-info.json. Please run 'refreshmod' first." >&2
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# List all modules for the current device, as cached in all_modules.txt. If any build change is
|
|
||||||
# made and it should be reflected in the output, you should run `m nothing` first.
|
|
||||||
function allmod() {
|
|
||||||
cat $ANDROID_PRODUCT_OUT/all_modules.txt 2>/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get the path of a specific module in the android tree, as cached in module-info.json.
|
|
||||||
# If any build change is made, and it should be reflected in the output, you should run
|
|
||||||
# 'refreshmod' first. Note: This is the inverse of dirmods.
|
|
||||||
function pathmod() {
|
|
||||||
if [[ $# -ne 1 ]]; then
|
|
||||||
echo "usage: pathmod <module>" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
verifymodinfo || return 1
|
|
||||||
|
|
||||||
local relpath=$(python3 -c "import json, os
|
|
||||||
module = '$1'
|
|
||||||
module_info = json.load(open('$ANDROID_PRODUCT_OUT/module-info.json'))
|
|
||||||
if module not in module_info:
|
|
||||||
exit(1)
|
|
||||||
print(module_info[module]['path'][0])" 2>/dev/null)
|
|
||||||
|
|
||||||
if [ -z "$relpath" ]; then
|
|
||||||
echo "Could not find module '$1' (try 'refreshmod' if there have been build changes?)." >&2
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
echo "$ANDROID_BUILD_TOP/$relpath"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get the path of a specific module in the android tree, as cached in module-info.json.
|
|
||||||
# If any build change is made, and it should be reflected in the output, you should run
|
|
||||||
# 'refreshmod' first. Note: This is the inverse of pathmod.
|
|
||||||
function dirmods() {
|
|
||||||
if [[ $# -ne 1 ]]; then
|
|
||||||
echo "usage: dirmods <path>" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
verifymodinfo || return 1
|
|
||||||
|
|
||||||
python3 -c "import json, os
|
|
||||||
dir = '$1'
|
|
||||||
while dir.endswith('/'):
|
|
||||||
dir = dir[:-1]
|
|
||||||
prefix = dir + '/'
|
|
||||||
module_info = json.load(open('$ANDROID_PRODUCT_OUT/module-info.json'))
|
|
||||||
results = set()
|
|
||||||
for m in module_info.values():
|
|
||||||
for path in m.get(u'path', []):
|
|
||||||
if path == dir or path.startswith(prefix):
|
|
||||||
name = m.get(u'module_name')
|
|
||||||
if name:
|
|
||||||
results.add(name)
|
|
||||||
for name in sorted(results):
|
|
||||||
print(name)
|
|
||||||
"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Go to a specific module in the android tree, as cached in module-info.json. If any build change
|
# Go to a specific module in the android tree, as cached in module-info.json. If any build change
|
||||||
# is made, and it should be reflected in the output, you should run 'refreshmod' first.
|
# is made, and it should be reflected in the output, you should run 'refreshmod' first.
|
||||||
|
# Note: This function is in envsetup because changing the directory needs to happen in the current
|
||||||
|
# shell. All other functions that use module-info.json should be in build/soong/bin.
|
||||||
function gomod() {
|
function gomod() {
|
||||||
if [[ $# -ne 1 ]]; then
|
if [[ $# -ne 1 ]]; then
|
||||||
echo "usage: gomod <module>" >&2
|
echo "usage: gomod <module>" >&2
|
||||||
@@ -1289,72 +1188,6 @@ function gomod() {
|
|||||||
cd $path
|
cd $path
|
||||||
}
|
}
|
||||||
|
|
||||||
# Gets the list of a module's installed outputs, as cached in module-info.json.
|
|
||||||
# If any build change is made, and it should be reflected in the output, you should run 'refreshmod' first.
|
|
||||||
function outmod() {
|
|
||||||
if [[ $# -ne 1 ]]; then
|
|
||||||
echo "usage: outmod <module>" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
verifymodinfo || return 1
|
|
||||||
|
|
||||||
local relpath
|
|
||||||
relpath=$(python3 -c "import json, os
|
|
||||||
module = '$1'
|
|
||||||
module_info = json.load(open('$ANDROID_PRODUCT_OUT/module-info.json'))
|
|
||||||
if module not in module_info:
|
|
||||||
exit(1)
|
|
||||||
for output in module_info[module]['installed']:
|
|
||||||
print(os.path.join('$ANDROID_BUILD_TOP', output))" 2>/dev/null)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Could not find module '$1' (try 'refreshmod' if there have been build changes?)" >&2
|
|
||||||
return 1
|
|
||||||
elif [ ! -z "$relpath" ]; then
|
|
||||||
echo "$relpath"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# adb install a module's apk, as cached in module-info.json. If any build change
|
|
||||||
# is made, and it should be reflected in the output, you should run 'refreshmod' first.
|
|
||||||
# Usage: installmod [adb install arguments] <module>
|
|
||||||
# For example: installmod -r Dialer -> adb install -r /path/to/Dialer.apk
|
|
||||||
function installmod() {
|
|
||||||
if [[ $# -eq 0 ]]; then
|
|
||||||
echo "usage: installmod [adb install arguments] <module>" >&2
|
|
||||||
echo "" >&2
|
|
||||||
echo "Only flags to be passed after the \"install\" in adb install are supported," >&2
|
|
||||||
echo "with the exception of -s. If -s is passed it will be placed before the \"install\"." >&2
|
|
||||||
echo "-s must be the first flag passed if it exists." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local _path
|
|
||||||
_path=$(outmod ${@:$#:1})
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
_path=$(echo "$_path" | grep -E \\.apk$ | head -n 1)
|
|
||||||
if [ -z "$_path" ]; then
|
|
||||||
echo "Module '$1' does not produce a file ending with .apk (try 'refreshmod' if there have been build changes?)" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local serial_device=""
|
|
||||||
if [[ "$1" == "-s" ]]; then
|
|
||||||
if [[ $# -le 2 ]]; then
|
|
||||||
echo "-s requires an argument" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
serial_device="-s $2"
|
|
||||||
shift 2
|
|
||||||
fi
|
|
||||||
local length=$(( $# - 1 ))
|
|
||||||
echo adb $serial_device install ${@:1:$length} $_path
|
|
||||||
adb $serial_device install ${@:1:$length} $_path
|
|
||||||
}
|
|
||||||
|
|
||||||
function _complete_android_module_names() {
|
function _complete_android_module_names() {
|
||||||
local word=${COMP_WORDS[COMP_CWORD]}
|
local word=${COMP_WORDS[COMP_CWORD]}
|
||||||
COMPREPLY=( $(allmod | grep -E "^$word") )
|
COMPREPLY=( $(allmod | grep -E "^$word") )
|
||||||
@@ -1390,23 +1223,6 @@ function get_make_command()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function _trigger_build()
|
|
||||||
(
|
|
||||||
local -r bc="$1"; shift
|
|
||||||
local T=$(gettop)
|
|
||||||
if [ -n "$T" ]; then
|
|
||||||
_wrap_build "$T/build/soong/soong_ui.bash" --build-mode --${bc} --dir="$(pwd)" "$@"
|
|
||||||
else
|
|
||||||
>&2 echo "Couldn't locate the top of the tree. Try setting TOP."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local ret=$?
|
|
||||||
if [[ ret -eq 0 && -z "${ANDROID_QUIET_BUILD:-}" && -n "${ANDROID_BUILD_BANNER}" ]]; then
|
|
||||||
echo "${ANDROID_BUILD_BANNER}"
|
|
||||||
fi
|
|
||||||
return $ret
|
|
||||||
)
|
|
||||||
|
|
||||||
function make()
|
function make()
|
||||||
{
|
{
|
||||||
_wrap_build $(get_make_command "$@") "$@"
|
_wrap_build $(get_make_command "$@") "$@"
|
||||||
@@ -1508,32 +1324,38 @@ function showcommands() {
|
|||||||
# in build/soong/bin. Unset these for the time being so the real
|
# in build/soong/bin. Unset these for the time being so the real
|
||||||
# script is picked up.
|
# script is picked up.
|
||||||
# TODO: Remove this some time after a suitable delay (maybe 2025?)
|
# TODO: Remove this some time after a suitable delay (maybe 2025?)
|
||||||
|
unset allmod
|
||||||
unset aninja
|
unset aninja
|
||||||
unset overrideflags
|
|
||||||
unset m
|
|
||||||
unset mm
|
|
||||||
unset mmm
|
|
||||||
unset mma
|
|
||||||
unset mmma
|
|
||||||
unset cgrep
|
unset cgrep
|
||||||
|
unset dirmods
|
||||||
unset ggrep
|
unset ggrep
|
||||||
unset gogrep
|
unset gogrep
|
||||||
|
unset installmod
|
||||||
unset jgrep
|
unset jgrep
|
||||||
unset jsongrep
|
unset jsongrep
|
||||||
unset ktgrep
|
unset ktgrep
|
||||||
|
unset m
|
||||||
unset mangrep
|
unset mangrep
|
||||||
unset mgrep
|
unset mgrep
|
||||||
|
unset mm
|
||||||
|
unset mma
|
||||||
|
unset mmm
|
||||||
|
unset mmma
|
||||||
|
unset outmod
|
||||||
|
unset overrideflags
|
||||||
unset owngrep
|
unset owngrep
|
||||||
|
unset pathmod
|
||||||
unset pygrep
|
unset pygrep
|
||||||
|
unset qpid
|
||||||
unset rcgrep
|
unset rcgrep
|
||||||
|
unset refreshmod
|
||||||
unset resgrep
|
unset resgrep
|
||||||
unset rsgrep
|
unset rsgrep
|
||||||
unset sepgrep
|
unset sepgrep
|
||||||
unset sgrep
|
unset sgrep
|
||||||
|
unset syswrite
|
||||||
unset tomlgrep
|
unset tomlgrep
|
||||||
unset treegrep
|
unset treegrep
|
||||||
unset syswrite
|
|
||||||
unset refreshmod
|
|
||||||
|
|
||||||
|
|
||||||
validate_current_shell
|
validate_current_shell
|
||||||
|
Reference in New Issue
Block a user