envsetup: add bmod to get Bazel label of a Soong module.
This benefits interactive workflows of folks who are used to typing just module names on the command line, and lowers the cognitive load to find the package name, and can be used to check if a module is converted. Can be used as : $ bmod libaapt2 //frameworks/base/tools/aapt2:libaapt2 $ b build $(bmod aapt2) If the mod is not in the bp2build metrics file, it returns: $ bmod nonexistent nonexistent is not converted to Bazel. Test: build/make/core/tests/b_tests.sh Change-Id: I245665a393621a47598e6743c0fedcd87ac33631
This commit is contained in:
39
envsetup.sh
39
envsetup.sh
@@ -38,6 +38,7 @@ Invoke ". build/envsetup.sh" from your shell to add the following functions to y
|
|||||||
- godir: Go to the directory containing a file.
|
- godir: Go to the directory containing a file.
|
||||||
- allmod: List all modules.
|
- allmod: List all modules.
|
||||||
- gomod: Go to the directory containing a module.
|
- gomod: Go to the directory containing a module.
|
||||||
|
- bmod: Get the Bazel label of a Soong module if it is converted with bp2build.
|
||||||
- pathmod: Get the directory containing a module.
|
- pathmod: Get the directory containing a module.
|
||||||
- outmod: Gets the location of a module's installed outputs with a certain extension.
|
- outmod: Gets the location of a module's installed outputs with a certain extension.
|
||||||
- dirmods: Gets the modules defined in a given directory.
|
- dirmods: Gets the modules defined in a given directory.
|
||||||
@@ -430,6 +431,7 @@ function addcompletions()
|
|||||||
complete -F _complete_android_module_names gomod
|
complete -F _complete_android_module_names gomod
|
||||||
complete -F _complete_android_module_names outmod
|
complete -F _complete_android_module_names outmod
|
||||||
complete -F _complete_android_module_names installmod
|
complete -F _complete_android_module_names installmod
|
||||||
|
complete -F _complete_android_module_names bmod
|
||||||
complete -F _complete_android_module_names m
|
complete -F _complete_android_module_names m
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1608,6 +1610,43 @@ function allmod() {
|
|||||||
python3 -c "import json; print('\n'.join(sorted(json.load(open('$ANDROID_PRODUCT_OUT/module-info.json')).keys())))"
|
python3 -c "import json; print('\n'.join(sorted(json.load(open('$ANDROID_PRODUCT_OUT/module-info.json')).keys())))"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Return the Bazel label of a Soong module if it is converted with bp2build.
|
||||||
|
function bmod()
|
||||||
|
(
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "usage: bmod <module>" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We could run bp2build here, but it might trigger bp2build invalidation
|
||||||
|
# when used with `b` (e.g. --run_soong_tests) and/or add unnecessary waiting
|
||||||
|
# time overhead.
|
||||||
|
#
|
||||||
|
# For a snappy result, use the latest generated version in soong_injection,
|
||||||
|
# and ask users to run m bp2build if it doesn't exist.
|
||||||
|
converted_json="out/soong/soong_injection/metrics/converted_modules_path_map.json"
|
||||||
|
|
||||||
|
if [ ! -f $(gettop)/${converted_json} ]; then
|
||||||
|
echo "bp2build files not found. Have you ran 'm bp2build'?" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local target_label=$(python3 -c "import json
|
||||||
|
module = '$1'
|
||||||
|
converted_json='$converted_json'
|
||||||
|
bp2build_converted_map = json.load(open(converted_json))
|
||||||
|
if module not in bp2build_converted_map:
|
||||||
|
exit(1)
|
||||||
|
print(bp2build_converted_map[module] + ':' + module)")
|
||||||
|
|
||||||
|
if [ -z "${target_label}" ]; then
|
||||||
|
echo "$1 is not converted to Bazel." >&2
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
echo "${target_label}"
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
# Get the path of a specific module in the android tree, as cached in module-info.json.
|
# 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
|
# 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.
|
# 'refreshmod' first. Note: This is the inverse of dirmods.
|
||||||
|
@@ -26,3 +26,8 @@ b build --run-soong-tests "$test_target"
|
|||||||
b --run-soong-tests build "$test_target"
|
b --run-soong-tests build "$test_target"
|
||||||
b cquery 'kind(test, //build/bazel/examples/android_app/...)' --config=android
|
b cquery 'kind(test, //build/bazel/examples/android_app/...)' --config=android
|
||||||
b run $test_target -- --help >/dev/null
|
b run $test_target -- --help >/dev/null
|
||||||
|
|
||||||
|
# Workflow tests for bmod
|
||||||
|
bmod libm
|
||||||
|
b run $(bmod fastboot) -- help
|
||||||
|
b build $(bmod libm) $(bmod libcutils) --config=android
|
||||||
|
Reference in New Issue
Block a user