mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-16 17:48:59 +02:00
ci: backport iwyu PR 2013 std::hash mapping
Cherry-pick include-what-you-use commit 52f85e1f4d99 onto the clang_22 branch tracked by ci/test/00_setup_env_native_iwyu.sh, fixing the false positive where std::hash was mapped to <string_view>/<variant> instead of its real provider (<functional>, <memory>, etc).
This commit is contained in:
@@ -86,7 +86,10 @@ fi
|
||||
|
||||
if [[ "${RUN_IWYU}" == true ]]; then
|
||||
${CI_RETRY_EXE} git clone --depth=1 https://github.com/include-what-you-use/include-what-you-use -b clang_"${IWYU_LLVM_V}" /include-what-you-use
|
||||
(cd /include-what-you-use && patch -p1 < /ci_container_base/ci/test/01_iwyu.patch)
|
||||
pushd /include-what-you-use
|
||||
patch -p1 < /ci_container_base/ci/test/01_iwyu.patch
|
||||
patch -p1 < /ci_container_base/ci/test/02_iwyu_hash.patch
|
||||
popd
|
||||
cmake -B /iwyu-build/ -G 'Unix Makefiles' -DCMAKE_PREFIX_PATH=/usr/lib/llvm-"${IWYU_LLVM_V}" -S /include-what-you-use
|
||||
make -C /iwyu-build/ install "$MAKEJOBS"
|
||||
fi
|
||||
|
||||
44
ci/test/02_iwyu_hash.patch
Normal file
44
ci/test/02_iwyu_hash.patch
Normal file
@@ -0,0 +1,44 @@
|
||||
Map std::hash to its providing standard headers.
|
||||
Backport of https://github.com/include-what-you-use/include-what-you-use/pull/2013
|
||||
(commit 52f85e1f4d990f55fc6556d543eb051d79364a16) to the clang_22 release
|
||||
branch. Drop once the upstream fix lands in the IWYU branch tracked by
|
||||
ci/test/00_setup_env_native_iwyu.sh.
|
||||
|
||||
--- a/std_symbol_map.inc
|
||||
+++ b/std_symbol_map.inc
|
||||
@@ -1054,12 +1054,27 @@
|
||||
{ "std::has_unique_object_representations_v", kPrivate, "<type_traits>", kPublic },
|
||||
{ "std::has_virtual_destructor", kPrivate, "<type_traits>", kPublic },
|
||||
{ "std::has_virtual_destructor_v", kPrivate, "<type_traits>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<functional>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<bitset>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<coroutine>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<filesystem>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<memory>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<optional>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<stacktrace>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<string>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<string_view>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<system_error>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<thread>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<typeindex>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<variant>", kPublic },
|
||||
+{ "std::hash", kPrivate, "<vector>", kPublic },
|
||||
{ "std::hash<std::basic_stacktrace<:0>>", kPrivate, "<stacktrace>", kPublic },
|
||||
{ "std::hash<std::basic_string<char, std::char_traits<char>, :0>>", kPrivate, "<string>", kPublic },
|
||||
{ "std::hash<std::basic_string<char16_t, std::char_traits<char16_t>, :0>>", kPrivate, "<string>", kPublic },
|
||||
{ "std::hash<std::basic_string<char32_t, std::char_traits<char32_t>, :0>>", kPrivate, "<string>", kPublic },
|
||||
{ "std::hash<std::basic_string<char8_t, std::char_traits<char8_t>, :0>>", kPrivate, "<string>", kPublic },
|
||||
{ "std::hash<std::basic_string<wchar_t, std::char_traits<wchar_t>, :0>>", kPrivate, "<string>", kPublic },
|
||||
+{ "std::hash<std::bitset<:0>>", kPrivate, "<bitset>", kPublic },
|
||||
{ "std::hash<std::coroutine_handle<:0>>", kPrivate, "<coroutine>", kPublic },
|
||||
{ "std::hash<std::error_code>", kPrivate, "<system_error>", kPublic },
|
||||
{ "std::hash<std::error_condition>", kPrivate, "<system_error>", kPublic },
|
||||
@@ -1069,6 +1084,7 @@
|
||||
{ "std::hash<std::shared_ptr<:0>>", kPrivate, "<memory>", kPublic },
|
||||
{ "std::hash<std::stacktrace_entry>", kPrivate, "<stacktrace>", kPublic },
|
||||
{ "std::hash<std::string_view>", kPrivate, "<string_view>", kPublic },
|
||||
+{ "std::hash<std::thread::id>", kPrivate, "<thread>", kPublic },
|
||||
{ "std::hash<std::type_index>", kPrivate, "<typeindex>", kPublic },
|
||||
{ "std::hash<std::u16string_view>", kPrivate, "<string_view>", kPublic },
|
||||
{ "std::hash<std::u32string_view>", kPrivate, "<string_view>", kPublic },
|
||||
@@ -16,7 +16,8 @@ ENV BASE_ROOT_DIR=${BASE_ROOT_DIR}
|
||||
|
||||
# Make retry available in PATH, needed for CI_RETRY_EXE
|
||||
COPY ./ci/retry/retry /usr/bin/retry
|
||||
COPY ./ci/test/00_setup_env.sh ./${FILE_ENV} ./ci/test/01_base_install.sh ./ci/test/01_iwyu.patch /ci_container_base/ci/test/
|
||||
COPY ./ci/test/00_setup_env.sh ./${FILE_ENV} ./ci/test/01_base_install.sh /ci_container_base/ci/test/
|
||||
COPY ./ci/test/*.patch /ci_container_base/ci/test/
|
||||
|
||||
# Bash is required, so install it when missing
|
||||
RUN sh -c "bash -c 'true' || ( apk update && apk add --no-cache bash )"
|
||||
|
||||
Reference in New Issue
Block a user