list_unintended_exported_symbols.sh: work fine within jj. This moves all its data files into the build/ directory that cmake uses as well. Ensures that jj sees no untracked files, as jj automatically adds them to new commits. Bug: 42220000 Change-Id: Iae145316475dd0865f8e453204159b4f6a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/86447 Auto-Submit: Rudolf Polzer <rpolzer@google.com> Reviewed-by: Xiangfei Ding <xfding@google.com> Commit-Queue: Rudolf Polzer <rpolzer@google.com>
diff --git a/util/list_unintended_exported_symbols.sh b/util/list_unintended_exported_symbols.sh index deb043b..fff6ca9 100755 --- a/util/list_unintended_exported_symbols.sh +++ b/util/list_unintended_exported_symbols.sh
@@ -27,6 +27,9 @@ set -e set -o pipefail +: ${workdir:=$PWD/build} +mkdir -p "${workdir}" + include_files() { for file in "$@"; do echo "#include <${file}>" @@ -162,22 +165,22 @@ } echo >&2 'Indexing C++ includes...' -include_files $(public_cc_includes) | cc_source_to_identifiers - > include.cc.ids -include_files $(public_cc_includes) | cc_source_to_symbols - > include.cc.syms +include_files $(public_cc_includes) | cc_source_to_identifiers - > "${workdir}"/include.cc.ids +include_files $(public_cc_includes) | cc_source_to_symbols - > "${workdir}"/include.cc.syms echo >&2 'Indexing C includes...' -include_files $(public_c_includes) | c_source_to_identifiers - > include.c.ids -include_files $(public_c_includes) | c_source_to_symbols - > include.c.syms +include_files $(public_c_includes) | c_source_to_identifiers - > "${workdir}"/include.c.ids +include_files $(public_c_includes) | c_source_to_symbols - > "${workdir}"/include.c.syms echo >&2 'Indexing C includes as C++...' -include_files $(public_c_includes) | cc_source_to_identifiers - > include.c_as_cc.ids -include_files $(public_c_includes) | cc_source_to_symbols - > include.c_as_cc.syms +include_files $(public_c_includes) | cc_source_to_identifiers - > "${workdir}"/include.c_as_cc.ids +include_files $(public_c_includes) | cc_source_to_symbols - > "${workdir}"/include.c_as_cc.syms echo >&2 'Merging symbol lists...' -cat include.c.syms include.cc.syms include.c_as_cc.syms | sort -u > include.syms +cat "${workdir}"/include.c.syms "${workdir}"/include.cc.syms "${workdir}"/include.c_as_cc.syms | sort -u > "${workdir}"/include.syms # Check that the headers behave the same if included by C and C++ files, other # than for expected diffs. echo >&2 'Comparing C includes across including language...' -fix_c_cc_include_deltas < include.c.ids > include.c.common.ids -fix_c_cc_include_deltas < include.c_as_cc.ids > include.c_as_cc.common.ids +fix_c_cc_include_deltas < "${workdir}"/include.c.ids > "${workdir}"/include.c.common.ids +fix_c_cc_include_deltas < "${workdir}"/include.c_as_cc.ids > "${workdir}"/include.c_as_cc.common.ids # Check that no source file defines any public symbols that are not in the # public headers, namespaced or otherwise OK'd. @@ -190,28 +193,29 @@ done } for file in $(lib_sources); do - if ! [ -f "${file}.ids" ]; then + if ! [ -f "${workdir}/${file}.ids" ]; then echo >&2 "Indexing ${file} (new)..." - elif [ "${file}" -nt "${file}.ids" ]; then + elif [ "${file}" -nt ${workdir}/"${file}.ids" ]; then echo >&2 "Indexing ${file} (changed)..." - rm -f "${file}.ids" + rm -f "${workdir}/${file}.ids" else - perl -nE 'm!// (\S+):! and say $1' "${file}.ids" |\ + perl -nE 'm!// (\S+):! and say $1' "${workdir}/${file}.ids" |\ sort -u |\ while read -r dep; do - if [ "${dep}" -nt "${file}.ids" ]; then + if [ "${dep}" -nt "${workdir}/${file}.ids" ]; then echo >&2 "Indexing ${file} (dependency ${dep} changed)..." - rm -f "${file}.ids" + rm -f "${workdir}/${file}.ids" break fi done - if [ -f "${file}.ids" ]; then + if [ -f "${workdir}/${file}.ids" ]; then continue fi fi # NOTE: It'd be nice to only recompute ${file}.ids if ${file} _or_ one # of its dependencies changed. { + mkdir -p "${workdir}/${file%/*}" case "$file" in *.c) c_source_to_identifiers "${file}" @@ -220,10 +224,10 @@ # This includes headers too. cc_source_to_identifiers "${file}" ;; - esac > "${file}.ids.new" - mv "${file}.ids.new" "${file}.ids" + esac > "${workdir}/${file}.ids.new" + mv "${workdir}/${file}.ids.new" "${workdir}/${file}.ids" } & - set -- "$@" "${file}.ids" + set -- "$@" "${workdir}/${file}.ids" if [ $# -ge ${max_jobs} ]; then wait_jobs "$@" set -- @@ -233,5 +237,5 @@ echo >&2 'Comparing symbols...' for file in $(lib_sources); do - set_difference "${file}.ids" include.cc.ids | filter_difference + set_difference "${workdir}/${file}.ids" "${workdir}"/include.cc.ids | filter_difference done | sort -u | { ! grep .; }