From 6f4963b99fa75b06522b6329237b1a3c46b157d8 Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Fri, 9 Sep 2022 07:08:25 +0000 Subject: [PATCH] Fix b with zsh (again), remove shwordsplit use. Context: zsh doesn't do string splitting like bash, so it passes the post-processed bazel args to bazel as a single arg. So this CL adds a conditional to split explicitly with zsh using the {=} flag syntax. Reference: https://zsh.sourceforge.io/FAQ/zshfaq03.html (for shwordsplit) Reference: https://zsh.sourceforge.io/Guide/zshguide05.html (Section 5.4.4) For bash, this uses array[@] to split the list into separate shell words. Test: zsh; source build/envsetup.sh && b test //system/logging/logd:logd-unit-tests --config=linux_x86_64 Test: bash; source build/envsetup.sh && b test //system/logging/logd:logd-unit-tests --config=linux_x86_64 Change-Id: Id92462661bbe1799a6de8dd3393799d91e3044e8 --- envsetup.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/envsetup.sh b/envsetup.sh index 19a6bfc435..ea72ca7657 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -1858,7 +1858,7 @@ function b() _trigger_build "all-modules" bp2build $skip_tests USE_BAZEL_ANALYSIS= || return 1 # Then, run Bazel using the synthetic workspace as the --package_path. if [[ -z "$bazel_args" ]]; then - # If there are no args, show help. + # If there are no args, show help and exit. bazel help else # Else, always run with the bp2build configuration, which sets Bazel's package path to the synthetic workspace. @@ -1882,13 +1882,15 @@ function b() bazel_args_with_config+=("--config=bp2build ") fi - if [ -n "$ZSH_VERSION" ]; then - # zsh breaks posix by not doing string-splitting on unquoted args - # by default. Enable the compatibility option. - setopt shwordsplit - fi # Call Bazel. - bazel ${bazel_args_with_config[@]} + if [ -n "$ZSH_VERSION" ]; then + # zsh breaks posix by not doing string-splitting on unquoted args + # by default. Explicitly use the "=" flag to split. + # See https://zsh.sourceforge.io/Guide/zshguide05.html section 5.4.4. + bazel ${=bazel_args_with_config} + else + bazel ${bazel_args_with_config[@]} + fi fi )