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 .; }