mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-27 11:43:26 -03:00
52ddbd52f9
935acdcc79
refactor: modernize the implementation of uint256.* (pasta) Pull request description: - Constructors of uint256 to utilize Span instead of requiring a std::vector - converts m_data into a std::array - Prefers using `WIDTH` instead of `sizeof(m_data)` - make all the things constexpr - replace C style functions with c++ equivalents - memset -> std::fill This may also be replaced by std::memset, but I think that std::fill is more idiomatic of modern c++ and readable. - memcpy -> std::copy Note: In practice, implementations of std::copy avoid multiple assignments and use bulk copy functions such as std::memmove if the value type is TriviallyCopyable and the iterator types satisfy LegacyContiguousIterator. (https://en.cppreference.com/w/cpp/algorithm/copy) This could also likely be replaced by std::memcpy, but as said above, I believe the using std::copy is the more c++ way to do anything and is almost guaranteed to compile to the same asm - memcmp -> std::memcmp ACKs for top commit: achow101: ACK935acdcc79
hebasto: Approach ACK935acdcc79
. aureleoules: reACK935acdcc79
john-moffett: ACK935acdcc79
stickies-v: Approach ACK935acdcc7
Tree-SHA512: 4f1ba54ff2198eea0e505d41e73d552c84c60f6878d5c85a94a8ab57f39afc94ef8d79258e7afd01fa84ec2a99f4404bb877eecd671f65e1ee9273f3129fc650
98 lines
3.8 KiB
Bash
Executable file
98 lines
3.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2018-2022 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
export LC_ALL=C.UTF-8
|
|
|
|
if [[ $HOST = *-mingw32 ]]; then
|
|
# Generate all binaries, so that they can be wrapped
|
|
CI_EXEC make "$MAKEJOBS" -C src/secp256k1 VERBOSE=1
|
|
CI_EXEC make "$MAKEJOBS" -C src minisketch/test.exe VERBOSE=1
|
|
CI_EXEC "${BASE_ROOT_DIR}/ci/test/wrap-wine.sh"
|
|
fi
|
|
|
|
if [ -n "$QEMU_USER_CMD" ]; then
|
|
# Generate all binaries, so that they can be wrapped
|
|
CI_EXEC make "$MAKEJOBS" -C src/secp256k1 VERBOSE=1
|
|
CI_EXEC make "$MAKEJOBS" -C src minisketch/test VERBOSE=1
|
|
CI_EXEC "${BASE_ROOT_DIR}/ci/test/wrap-qemu.sh"
|
|
fi
|
|
|
|
if [ -n "$USE_VALGRIND" ]; then
|
|
CI_EXEC "${BASE_ROOT_DIR}/ci/test/wrap-valgrind.sh"
|
|
fi
|
|
|
|
if [ "$RUN_UNIT_TESTS" = "true" ]; then
|
|
CI_EXEC "${TEST_RUNNER_ENV}" DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" make "$MAKEJOBS" check VERBOSE=1
|
|
fi
|
|
|
|
if [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then
|
|
CI_EXEC "${TEST_RUNNER_ENV}" DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}/bin/test_bitcoin" --catch_system_errors=no -l test_suite
|
|
fi
|
|
|
|
if [ "$RUN_FUNCTIONAL_TESTS" = "true" ]; then
|
|
CI_EXEC LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${TEST_RUNNER_ENV}" test/functional/test_runner.py --ci "$MAKEJOBS" --tmpdirprefix "${BASE_SCRATCH_DIR}/test_runner/" --ansi --combinedlogslen=99999999 --timeout-factor="${TEST_RUNNER_TIMEOUT_FACTOR}" "${TEST_RUNNER_EXTRA}" --quiet --failfast
|
|
fi
|
|
|
|
if [ "${RUN_TIDY}" = "true" ]; then
|
|
set -eo pipefail
|
|
export P_CI_DIR="${BASE_BUILD_DIR}/bitcoin-$HOST/src/"
|
|
( CI_EXEC run-clang-tidy -quiet "${MAKEJOBS}" ) | grep -C5 "error"
|
|
export P_CI_DIR="${BASE_BUILD_DIR}/bitcoin-$HOST/"
|
|
CI_EXEC "python3 ${DIR_IWYU}/include-what-you-use/iwyu_tool.py"\
|
|
" src/common/url.cpp"\
|
|
" src/compat"\
|
|
" src/dbwrapper.cpp"\
|
|
" src/init"\
|
|
" src/kernel"\
|
|
" src/node/chainstate.cpp"\
|
|
" src/node/chainstatemanager_args.cpp"\
|
|
" src/node/mempool_args.cpp"\
|
|
" src/node/utxo_snapshot.cpp"\
|
|
" src/node/validation_cache_args.cpp"\
|
|
" src/policy/feerate.cpp"\
|
|
" src/policy/packages.cpp"\
|
|
" src/policy/settings.cpp"\
|
|
" src/primitives/transaction.cpp"\
|
|
" src/rpc/fees.cpp"\
|
|
" src/rpc/signmessage.cpp"\
|
|
" src/test/fuzz/txorphan.cpp"\
|
|
" src/test/fuzz/util/"\
|
|
" src/uint256.cpp"\
|
|
" src/util/bip32.cpp"\
|
|
" src/util/bytevectorhash.cpp"\
|
|
" src/util/check.cpp"\
|
|
" src/util/error.cpp"\
|
|
" src/util/getuniquepath.cpp"\
|
|
" src/util/hasher.cpp"\
|
|
" src/util/message.cpp"\
|
|
" src/util/moneystr.cpp"\
|
|
" src/util/serfloat.cpp"\
|
|
" src/util/spanparsing.cpp"\
|
|
" src/util/strencodings.cpp"\
|
|
" src/util/string.cpp"\
|
|
" src/util/syserror.cpp"\
|
|
" src/util/threadinterrupt.cpp"\
|
|
" src/zmq"\
|
|
" -p . ${MAKEJOBS}"\
|
|
" -- -Xiwyu --cxx17ns -Xiwyu --mapping_file=${BASE_BUILD_DIR}/bitcoin-$HOST/contrib/devtools/iwyu/bitcoin.core.imp"\
|
|
" |& tee /tmp/iwyu_ci.out"
|
|
export P_CI_DIR="${BASE_ROOT_DIR}/src"
|
|
CI_EXEC "python3 ${DIR_IWYU}/include-what-you-use/fix_includes.py --nosafe_headers < /tmp/iwyu_ci.out"
|
|
CI_EXEC "git --no-pager diff"
|
|
fi
|
|
|
|
if [ "$RUN_SECURITY_TESTS" = "true" ]; then
|
|
CI_EXEC make test-security-check
|
|
fi
|
|
|
|
if [ "$RUN_FUZZ_TESTS" = "true" ]; then
|
|
CI_EXEC LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" test/fuzz/test_runner.py "${FUZZ_TESTS_CONFIG}" "$MAKEJOBS" -l DEBUG "${DIR_FUZZ_IN}"
|
|
fi
|
|
|
|
if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
|
|
echo "Stop and remove CI container by ID"
|
|
docker container kill "${CI_CONTAINER_ID}"
|
|
fi
|