From c79ad935f0412bac3e19a6b925efdb390eb00bd9 Mon Sep 17 00:00:00 2001 From: fanquake Date: Tue, 12 Apr 2022 10:35:15 +0100 Subject: [PATCH 1/3] refactor: fix includes in src/compat Add missing includes. Swap C headers for their C++ counterparts. Remove pointless / unmaintainable include comments. This is even more the case when we are actually using IWYU, as if anyone wants to see the comments they can just get IWYU to generate them. --- src/compat/byteswap.h | 2 +- src/compat/cpuid.h | 2 ++ src/compat/endian.h | 2 +- src/compat/glibcxx_sanity.cpp | 1 + src/compat/stdin.cpp | 18 +++++++----------- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/compat/byteswap.h b/src/compat/byteswap.h index 27ef1a18df8..2f4232fa5ce 100644 --- a/src/compat/byteswap.h +++ b/src/compat/byteswap.h @@ -9,7 +9,7 @@ #include #endif -#include +#include #if defined(HAVE_BYTESWAP_H) #include diff --git a/src/compat/cpuid.h b/src/compat/cpuid.h index 0877ad47d30..e78c1ce6d1f 100644 --- a/src/compat/cpuid.h +++ b/src/compat/cpuid.h @@ -10,6 +10,8 @@ #include +#include + // We can't use cpuid.h's __get_cpuid as it does not support subleafs. void static inline GetCPUID(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d) { diff --git a/src/compat/endian.h b/src/compat/endian.h index c5cf7a46cc8..bdd8b84c1bb 100644 --- a/src/compat/endian.h +++ b/src/compat/endian.h @@ -11,7 +11,7 @@ #include -#include +#include #if defined(HAVE_ENDIAN_H) #include diff --git a/src/compat/glibcxx_sanity.cpp b/src/compat/glibcxx_sanity.cpp index e6e6208e404..f2ceeeeb9cb 100644 --- a/src/compat/glibcxx_sanity.cpp +++ b/src/compat/glibcxx_sanity.cpp @@ -5,6 +5,7 @@ #include #include #include +#include namespace { diff --git a/src/compat/stdin.cpp b/src/compat/stdin.cpp index 0fc4e0fcf2d..61d66e39f22 100644 --- a/src/compat/stdin.cpp +++ b/src/compat/stdin.cpp @@ -2,23 +2,19 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#if defined(HAVE_CONFIG_H) -#include -#endif +#include -#include // for fileno(), stdin +#include #ifdef WIN32 -#include // for SetStdinEcho() -#include // for isatty() +#include +#include #else -#include // for SetStdinEcho() -#include // for SetStdinEcho(), isatty() -#include // for StdinReady() +#include +#include +#include #endif -#include - // https://stackoverflow.com/questions/1413445/reading-a-password-from-stdcin void SetStdinEcho(bool enable) { From 74cd038e300bfbe2473295fc3b0c3a4f3e853a07 Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 13 Apr 2022 09:11:33 +0100 Subject: [PATCH 2/3] refactor: fix includes in src/init --- src/init/bitcoin-gui.cpp | 1 + src/init/bitcoin-node.cpp | 1 + src/init/bitcoin-qt.cpp | 1 + src/init/bitcoin-wallet.cpp | 2 ++ src/init/bitcoind.cpp | 1 + src/init/common.cpp | 5 +++++ 6 files changed, 11 insertions(+) diff --git a/src/init/bitcoin-gui.cpp b/src/init/bitcoin-gui.cpp index e297b487180..2fa4add4e51 100644 --- a/src/init/bitcoin-gui.cpp +++ b/src/init/bitcoin-gui.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include diff --git a/src/init/bitcoin-node.cpp b/src/init/bitcoin-node.cpp index 511a872bc0d..78bc3e5980f 100644 --- a/src/init/bitcoin-node.cpp +++ b/src/init/bitcoin-node.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include diff --git a/src/init/bitcoin-qt.cpp b/src/init/bitcoin-qt.cpp index 37d4e426c5a..bb3bb945d0a 100644 --- a/src/init/bitcoin-qt.cpp +++ b/src/init/bitcoin-qt.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include diff --git a/src/init/bitcoin-wallet.cpp b/src/init/bitcoin-wallet.cpp index e9dcde72fe2..c8d499da10a 100644 --- a/src/init/bitcoin-wallet.cpp +++ b/src/init/bitcoin-wallet.cpp @@ -4,6 +4,8 @@ #include +#include + namespace interfaces { std::unique_ptr MakeWalletInit(int argc, char* argv[], int& exit_status) { diff --git a/src/init/bitcoind.cpp b/src/init/bitcoind.cpp index 2addff07c19..b473ebb8055 100644 --- a/src/init/bitcoind.cpp +++ b/src/init/bitcoind.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include diff --git a/src/init/common.cpp b/src/init/common.cpp index 688471b35da..eac6732968a 100644 --- a/src/init/common.cpp +++ b/src/init/common.cpp @@ -9,16 +9,21 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include +#include #include +#include +#include static std::unique_ptr globalVerifyHandle; From 9b0a13a2891641a3d12e525cee8ddddb1aa1bc73 Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 11 Apr 2022 20:45:22 +0100 Subject: [PATCH 3/3] tidy: Add include-what-you-use --- ci/test/00_setup_env_native_tidy.sh | 2 +- ci/test/04_install.sh | 7 +++++++ ci/test/06_script_b.sh | 2 ++ configure.ac | 1 + contrib/devtools/iwyu/bitcoin.core.imp | 6 ++++++ 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 contrib/devtools/iwyu/bitcoin.core.imp diff --git a/ci/test/00_setup_env_native_tidy.sh b/ci/test/00_setup_env_native_tidy.sh index 87dd315e2e2..e4d34684734 100755 --- a/ci/test/00_setup_env_native_tidy.sh +++ b/ci/test/00_setup_env_native_tidy.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export DOCKER_NAME_TAG="ubuntu:22.04" export CONTAINER_NAME=ci_native_tidy -export PACKAGES="clang llvm clang-tidy bear libevent-dev libboost-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev systemtap-sdt-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libqrencode-dev libsqlite3-dev libdb++-dev" +export PACKAGES="clang libclang-dev llvm-dev clang-tidy bear cmake libevent-dev libboost-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev systemtap-sdt-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libqrencode-dev libsqlite3-dev libdb++-dev" export NO_DEPENDS=1 export RUN_UNIT_TESTS=false export RUN_FUNCTIONAL_TESTS=false diff --git a/ci/test/04_install.sh b/ci/test/04_install.sh index c1324a0b143..227bdf33192 100755 --- a/ci/test/04_install.sh +++ b/ci/test/04_install.sh @@ -111,6 +111,13 @@ if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then CI_EXEC "cd ${BASE_SCRATCH_DIR}/msan/build/ && make $MAKEJOBS cxx" fi +if [[ "${RUN_TIDY}" == "true" ]]; then + CI_EXEC "mkdir -p ${BASE_SCRATCH_DIR}/iwyu/build/" + CI_EXEC "git clone --depth=1 https://github.com/include-what-you-use/include-what-you-use -b clang_14 ${BASE_SCRATCH_DIR}/iwyu/include-what-you-use" + CI_EXEC "cd ${BASE_SCRATCH_DIR}/iwyu/build && cmake -G 'Unix Makefiles' -DCMAKE_PREFIX_PATH=/usr/lib/llvm-14 ../include-what-you-use" + CI_EXEC "cd ${BASE_SCRATCH_DIR}/iwyu/build && make install $MAKEJOBS" +fi + if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then echo "Create $BASE_ROOT_DIR" CI_EXEC rsync -a /ro_base/ "$BASE_ROOT_DIR" diff --git a/ci/test/06_script_b.sh b/ci/test/06_script_b.sh index 30788f1543e..afab4c5e780 100755 --- a/ci/test/06_script_b.sh +++ b/ci/test/06_script_b.sh @@ -37,6 +37,8 @@ fi if [ "${RUN_TIDY}" = "true" ]; then export P_CI_DIR="${BASE_BUILD_DIR}/bitcoin-$HOST/src/" CI_EXEC run-clang-tidy "${MAKEJOBS}" + export P_CI_DIR="${BASE_BUILD_DIR}/bitcoin-$HOST/" + CI_EXEC "python3 ${BASE_SCRATCH_DIR}/iwyu/include-what-you-use/iwyu_tool.py src/compat src/init -p . ${MAKEJOBS} -- -Xiwyu --cxx17ns -Xiwyu --mapping_file=${BASE_BUILD_DIR}/bitcoin-$HOST/contrib/devtools/iwyu/bitcoin.core.imp" fi if [ "$RUN_SECURITY_TESTS" = "true" ]; then diff --git a/configure.ac b/configure.ac index ee5f0e8d06c..38d21cc4281 100644 --- a/configure.ac +++ b/configure.ac @@ -1934,6 +1934,7 @@ AC_CONFIG_LINKS([contrib/devtools/security-check.py:contrib/devtools/security-ch AC_CONFIG_LINKS([contrib/devtools/symbol-check.py:contrib/devtools/symbol-check.py]) AC_CONFIG_LINKS([contrib/devtools/test-security-check.py:contrib/devtools/test-security-check.py]) AC_CONFIG_LINKS([contrib/devtools/test-symbol-check.py:contrib/devtools/test-symbol-check.py]) +AC_CONFIG_LINKS([contrib/devtools/iwyu/bitcoin.core.imp:contrib/devtools/iwyu/bitcoin.core.imp]) AC_CONFIG_LINKS([contrib/filter-lcov.py:contrib/filter-lcov.py]) AC_CONFIG_LINKS([contrib/macdeploy/background.tiff:contrib/macdeploy/background.tiff]) AC_CONFIG_LINKS([src/.clang-tidy:src/.clang-tidy]) diff --git a/contrib/devtools/iwyu/bitcoin.core.imp b/contrib/devtools/iwyu/bitcoin.core.imp new file mode 100644 index 00000000000..ce7786f58c2 --- /dev/null +++ b/contrib/devtools/iwyu/bitcoin.core.imp @@ -0,0 +1,6 @@ +# Fixups / upstreamed changes +[ + { include: [ "", private, "", public ] }, + { include: [ "", private, "", public ] }, + { include: [ "", private, "", public ] }, +]