34094aff13build: consistently quote AC_CHECK_LIB() arguments (fanquake)efd4fe156abuild: consistently quote AC_MSG_* arguments (fanquake)c39732694dbuild: consistently quote AC_CHECK_PROG() arguments (fanquake)80762dfc45build: consistently quote arguments in AC_ARG_VAR() (fanquake)e6749a4f99build: consistently quote arguments in AM_CONDITIONAL() (fanquake)cdb47e18b7build: consistently quote AC_DEFINE() arguments (fanquake)a17a3f9d62build: consistently quote AC_MSG_CHECKING() arguments (fanquake)50d99f202dbuild: consistently quote AC_PATH_TOOL arguments (fanquake)05923e7c62build: AC_PATH_PROG(S) consistently quote arguments (fanquake)407f3a495bbuild: cleanup AX_CHECK_PREPROC_FLAG() usage (fanquake)b4dba0c6c7build: AX_CHECK_PREPROC_FLAG() serial 6 (fanquake)5ced925283build: cleanup AX_CHECK_COMPILE_FLAG() usage (fanquake)b3dd6c1d0fbuild: AX_CHECK_COMPILE_FLAG() serial 6 (fanquake)5e6bc437c5build: cleanup AX_CHECK_LINK_FLAG() usage (fanquake)a874637bf9build: AX_CHECK_LINK_FLAG serial 6 (fanquake) Pull request description: This is mostly just being consistent with how we do things, and migrating towards a style (we have already been doing so ad-hoc) that is clearer for anyone who cares to read `.m4`. For example: `master`: ```m4 AX_CHECK_COMPILE_FLAG( [-g3], [[DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -g3"]], [AX_CHECK_COMPILE_FLAG([-g],[[DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -g"]],,[[$CXXFLAG_WERROR]])], [[$CXXFLAG_WERROR]]) ``` This PR: ```m4 AX_CHECK_COMPILE_FLAG( [-g3], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -g3"], [AX_CHECK_COMPILE_FLAG([-g], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -g"], [], [$CXXFLAG_WERROR])], [$CXXFLAG_WERROR]) ``` Drop unneeded double-quoting (which we use inconsistently), use `[]` for empty arguments, space things out. There should be no functional change, before & after binaries identical. Very boring. Guix build: ```bash bash-5.1# find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum 22097cd621cd88348f827b916f4b4b120b40c3515a3752595347e36d57dc9158 guix-build-34094aff1348/output/aarch64-linux-gnu/SHA256SUMS.part 43f10bb857afa7ea52a8ed9beed36ff0e3ee02dba31100fc04c8e0b2443d94eb guix-build-34094aff1348/output/aarch64-linux-gnu/bitcoin-34094aff1348-aarch64-linux-gnu-debug.tar.gz 9095a8228376094065103f4adc9cdcb8189111fb9536ad88e4f8cecc3df6fc75 guix-build-34094aff1348/output/aarch64-linux-gnu/bitcoin-34094aff1348-aarch64-linux-gnu.tar.gz 9c73179059c6fe1f7643445ec5a530003fc41187aa0a94cb1f5c106097161e5b guix-build-34094aff1348/output/arm-linux-gnueabihf/SHA256SUMS.part 70ddd4dd0a06c7491937084125f690c1d62fa2647c16048fc1a4a9a09d8b10b4 guix-build-34094aff1348/output/arm-linux-gnueabihf/bitcoin-34094aff1348-arm-linux-gnueabihf-debug.tar.gz 0a338fdc9788c33a0d519b6c09fdf6271e3bd68846ee61eef0a06a2df6bab419 guix-build-34094aff1348/output/arm-linux-gnueabihf/bitcoin-34094aff1348-arm-linux-gnueabihf.tar.gz 25eda7fae2984b9dadf47420d1dc09b0224d425144233482602bd9e6d348255c guix-build-34094aff1348/output/dist-archive/bitcoin-34094aff1348.tar.gz d70d84e43ffa2d809063cda868f708539e9114b2d14edb6ddcf05fdf73f3187b guix-build-34094aff1348/output/powerpc64-linux-gnu/SHA256SUMS.part 8d1291e576d2b5f8f7120fe6e6ed4b23415249e22a657a350ccce68ff261e088 guix-build-34094aff1348/output/powerpc64-linux-gnu/bitcoin-34094aff1348-powerpc64-linux-gnu-debug.tar.gz eab448186aee18ac33c39eed4d24501208d10d257fe6e2739adf589b1d4b693a guix-build-34094aff1348/output/powerpc64-linux-gnu/bitcoin-34094aff1348-powerpc64-linux-gnu.tar.gz 4d28617b4d0ddb88c8b20d06ca21314ee40814043f92cabcd9ea3e3d8ee39183 guix-build-34094aff1348/output/powerpc64le-linux-gnu/SHA256SUMS.part dea02168e170e92600012f5806ec8b39209282c2270669f2040682f74bc3f320 guix-build-34094aff1348/output/powerpc64le-linux-gnu/bitcoin-34094aff1348-powerpc64le-linux-gnu-debug.tar.gz c7122e89d3186a183ac08e7f3020654722c98bf8acc8b790bb292b39f5ba8225 guix-build-34094aff1348/output/powerpc64le-linux-gnu/bitcoin-34094aff1348-powerpc64le-linux-gnu.tar.gz 0802a52720d2bec1264dc13f6554a9da347baa3d096242b29bb524f4b121eb10 guix-build-34094aff1348/output/riscv64-linux-gnu/SHA256SUMS.part 4aee9fc41f35d2adb2d0562902dd8584a8413a73c015ddcdcef00586779f63a7 guix-build-34094aff1348/output/riscv64-linux-gnu/bitcoin-34094aff1348-riscv64-linux-gnu-debug.tar.gz 3f0c4d6096ac7e08389e851c2d252632c044a700ce0174473ac4d7f66290e8cc guix-build-34094aff1348/output/riscv64-linux-gnu/bitcoin-34094aff1348-riscv64-linux-gnu.tar.gz c5149c46b9b7081d5715daf3e22fd30ffca23d333f664da1fabc8143ff8bf76c guix-build-34094aff1348/output/x86_64-apple-darwin19/SHA256SUMS.part 81848355751e55a8a60636e3ea2f03ca6abb78736a5431715cd51cebd46bb961 guix-build-34094aff1348/output/x86_64-apple-darwin19/bitcoin-34094aff1348-osx-unsigned.dmg d2f6f689cbedddd865f90dba9ddf21479c71c61b0350fda62804b2f233116a43 guix-build-34094aff1348/output/x86_64-apple-darwin19/bitcoin-34094aff1348-osx-unsigned.tar.gz 99d8fe428fcb67f9975e6b8d9a63d84946215a0a6b8f94967ce96cc3af4b7772 guix-build-34094aff1348/output/x86_64-apple-darwin19/bitcoin-34094aff1348-osx64.tar.gz 3dac13c7556d9a25ff5513bbb2638fe4fa74d8a88304bbdce52364df7832a3ab guix-build-34094aff1348/output/x86_64-linux-gnu/SHA256SUMS.part e4baa7da80fdabbb50953efaaa7b4867c7e575a7a156b728e8e197142df55697 guix-build-34094aff1348/output/x86_64-linux-gnu/bitcoin-34094aff1348-x86_64-linux-gnu-debug.tar.gz f82f5bcc7197c1741b106f62be7b468aadbdf5b3198091582026cd450bf13b3a guix-build-34094aff1348/output/x86_64-linux-gnu/bitcoin-34094aff1348-x86_64-linux-gnu.tar.gz db22b5f48783917f985920ddb26aa170b4d6cc65112406548847a883099505b8 guix-build-34094aff1348/output/x86_64-w64-mingw32/SHA256SUMS.part ead0809193ca1d462553a6f3f233cdbff7a3f8419100d825abfc10835508e485 guix-build-34094aff1348/output/x86_64-w64-mingw32/bitcoin-34094aff1348-win-unsigned.tar.gz e1006b6c114eaf33274144d8e9a20abc0cee01e26a4594063ee615bf09c1b344 guix-build-34094aff1348/output/x86_64-w64-mingw32/bitcoin-34094aff1348-win64-debug.zip 2d3fbc593b58d353a6859e02c0dd096d453cf5f1e3150c2a1c234bdfc97b4f24 guix-build-34094aff1348/output/x86_64-w64-mingw32/bitcoin-34094aff1348-win64-setup-unsigned.exe 25cfa8a3655727572593f100b7a70c1061fa6f3b017014ad7444059611c3ddda guix-build-34094aff1348/output/x86_64-w64-mingw32/bitcoin-34094aff1348-win64.zip ``` ACKs for top commit: hebasto: re-ACK34094aff13Tree-SHA512: 7515e85b4dedddf430ddf0bf31f25fca8f73898cf2ba4b6a66b9f21feeaff4c2600fe24efdd2e81822f059827b5b35341b183ea8342fd689248d8c355bf5cb42
Bitcoin Core integration/staging tree
For an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/.
Further information about Bitcoin Core is available in the doc folder.
What is Bitcoin?
Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.
For more information read the original Bitcoin whitepaper.
License
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master branch is regularly built (see doc/build-*.md for instructions) and tested, but it is not guaranteed to be
completely stable. Tags are created
regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.