From 971ad8f8d0c92434a0ef6693c75c38326ea07258 Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Sat, 12 Nov 2022 13:11:01 -0800 Subject: [PATCH] sync: fix sync script's use of bash array variables Don't wrap LIBBPF_PATHS[@] and LIBBPF_VIEW_PATHS[@] in quotes when passing it to git commands. Not clear how it worked before, but something recently broke. Either git commands became stricter or something. But either way, we do want to pass each element of LIBBPF_PATHS or LIBBPF_VIEW_PATHS as separate command line arguments, so putting them in quotes doesn't make sense, as that makes them look like a single argument to git. So drop all the quotes around these arrays. The only place where it's still needed is in commit_signature call, as we do want to pass array as single arg ($2) and then internally we unfold it into multiple command line arguments. Signed-off-by: Andrii Nakryiko --- scripts/sync-kernel.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/sync-kernel.sh b/scripts/sync-kernel.sh index 76e23b6..f1a259c 100755 --- a/scripts/sync-kernel.sh +++ b/scripts/sync-kernel.sh @@ -104,7 +104,8 @@ cherry_pick_commits() local libbpf_conflict_cnt local desc - new_commits=$(git rev-list --no-merges --topo-order --reverse ${baseline_tag}..${tip_tag} "${LIBBPF_PATHS[@]}") + # shellcheck disable=SC2068 + new_commits=$(git rev-list --no-merges --topo-order --reverse ${baseline_tag}..${tip_tag} -- ${LIBBPF_PATHS[@]}) for new_commit in ${new_commits}; do desc="$(commit_desc ${new_commit})" signature="$(commit_signature ${new_commit} "${LIBBPF_PATHS[@]}")" @@ -138,7 +139,8 @@ cherry_pick_commits() echo "Picking '${desc}'..." if ! git cherry-pick ${new_commit} &>/dev/null; then echo "Warning! Cherry-picking '${desc} failed, checking if it's non-libbpf files causing problems..." - libbpf_conflict_cnt=$(git diff --name-only --diff-filter=U -- "${LIBBPF_PATHS[@]}" | wc -l) + # shellcheck disable=SC2068 + libbpf_conflict_cnt=$(git diff --name-only --diff-filter=U -- ${LIBBPF_PATHS[@]} | wc -l) conflict_cnt=$(git diff --name-only | wc -l) prompt_resolution=1 @@ -316,10 +318,12 @@ cd_to ${LINUX_REPO} git checkout -b ${VIEW_TAG} ${TIP_COMMIT} FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch -f --tree-filter "${LIBBPF_TREE_FILTER}" ${VIEW_TAG}^..${VIEW_TAG} FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch -f --subdirectory-filter __libbpf ${VIEW_TAG}^..${VIEW_TAG} -git ls-files -- "${LIBBPF_VIEW_PATHS[@]}" | grep -v -E "${LINUX_VIEW_EXCLUDE_REGEX}" > ${TMP_DIR}/linux-view.ls +# shellcheck disable=SC2068 +git ls-files -- ${LIBBPF_VIEW_PATHS[@]} | grep -v -E "${LINUX_VIEW_EXCLUDE_REGEX}" > ${TMP_DIR}/linux-view.ls cd_to ${LIBBPF_REPO} -git ls-files -- "${LIBBPF_VIEW_PATHS[@]}" | grep -v -E "${LIBBPF_VIEW_EXCLUDE_REGEX}" > ${TMP_DIR}/github-view.ls +# shellcheck disable=SC2068 +git ls-files -- ${LIBBPF_VIEW_PATHS[@]} | grep -v -E "${LIBBPF_VIEW_EXCLUDE_REGEX}" > ${TMP_DIR}/github-view.ls echo "Comparing list of files..." diff -u ${TMP_DIR}/linux-view.ls ${TMP_DIR}/github-view.ls