From fab53b5fd45cf55a1d4d313e46ffce7396c9590e Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 26 Jan 2022 08:30:25 +0000 Subject: [PATCH 1/2] ci/doc: Set minimum required clang/libc++ version to 8.0 --- ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh | 6 +++--- doc/dependencies.md | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh b/ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh index 89d62562988..763a5e8b6ff 100755 --- a/ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh +++ b/ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8 export CONTAINER_NAME=ci_native_nowallet_libbitcoinkernel export DOCKER_NAME_TAG=ubuntu:18.04 # Use bionic to have one config run the tests in python3.6, see doc/dependencies.md -export PACKAGES="python3-zmq clang-7 llvm-7 libc++abi-7-dev libc++-7-dev" # Use clang-7 to test C++17 compatibility, see doc/dependencies.md -export DEP_OPTS="NO_WALLET=1 CC=clang-7 CXX='clang++-7 -stdlib=libc++'" +export PACKAGES="python3-zmq clang-8 llvm-8 libc++abi-8-dev libc++-8-dev" # Use clang-8 to test C++17 compatibility, see doc/dependencies.md +export DEP_OPTS="NO_WALLET=1 CC=clang-8 CXX='clang++-8 -stdlib=libc++'" export GOAL="install" -export BITCOIN_CONFIG="--enable-reduce-exports CC=clang-7 CXX='clang++-7 -stdlib=libc++' --enable-experimental-util-chainstate" +export BITCOIN_CONFIG="--enable-reduce-exports CC=clang-8 CXX='clang++-8 -stdlib=libc++' --enable-experimental-util-chainstate" diff --git a/doc/dependencies.md b/doc/dependencies.md index 99ff26f457e..53d65da604b 100644 --- a/doc/dependencies.md +++ b/doc/dependencies.md @@ -7,7 +7,7 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct | --- | --- | --- | --- | --- | --- | | Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | | | Boost | [1.77.0](https://www.boost.org/users/download/) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No | | | -| Clang[ \* ](#note1) | | [7.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | | +| Clang | | [8.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | | | Fontconfig | [2.12.6](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | | | FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) | | GCC | | [8.1](https://gcc.gnu.org/) (C++17 & std::filesystem support) | | | | @@ -28,8 +28,6 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct | ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | | | zlib | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) | -Note \* : When compiling with `-stdlib=libc++`, the minimum supported libc++ version is 7.0. - Controlling dependencies ------------------------ Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list. From fae20e6b50306f91c74037e915aa0ab75a0a6b3b Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 26 Jan 2022 08:57:56 +0000 Subject: [PATCH 2/2] Revert "Avoid the use of P0083R3 std::set::merge" This reverts commit 6cf4ea71878c0a83f2e49831e4dfa119c53761b7. --- src/script/standard.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/script/standard.cpp b/src/script/standard.cpp index 5fb98cc3072..7e32754d6c0 100644 --- a/src/script/standard.cpp +++ b/src/script/standard.cpp @@ -366,13 +366,7 @@ void TaprootSpendData::Merge(TaprootSpendData other) merkle_root = other.merkle_root; } for (auto& [key, control_blocks] : other.scripts) { - // Once P0083R3 is supported by all our targeted platforms, - // this loop body can be replaced with: - // scripts[key].merge(std::move(control_blocks)); - auto& target = scripts[key]; - for (auto& control_block: control_blocks) { - target.insert(std::move(control_block)); - } + scripts[key].merge(std::move(control_blocks)); } }