Bitcoin Core integration/staging tree
Find a file
fanquake 711ce2e533
Merge bitcoin/bitcoin#23778: release: Guix 1.4.0 & GCC 10.3
84f9931cb4 guix: use upstream python-requests (2.26.0) (fanquake)
187dc1ec0c build: use python-asn1crypto from upstream (fanquake)
b1e8f0b96e guix: use uptream nsis-x86_64 (fanquake)
3ccfba1c7f guix: use GCC 10 (over GCC 8) to build releases (fanquake)

Pull request description:

  Guix's `core-updates-frozen` branch has been merged back into `master`, and a [`version-1.4.0`](https://git.savannah.gnu.org/cgit/guix.git/log/?h=version-1.4.0) branch has been created. This is great, as it means the next Guix release is on the horizon, and it contains a number of changes I'd like to take advantage of. In particular, is migrating the version of GCC we use for releases from GCC 8 to GCC 10.3.0 (which is also the new Guix default GCC). This is my preferred method of unblocking progress in #20744, which is currently stalled due to support for `std::filesystem` for Windows not arriving in GCC until version 9, whereas it's usable on Linux starting with GCC 8. The current set of changes in that PR [attempt to backport support](9604eda1ab) for `std::filesystem`, for Windows, to GCC 8, similar to what is currently done by Debian, however that is somewhat convoluted, and using GCC 10 with our current Guix version would require updating at least one Guix patch to GCC, so is not completely straightforward either.

  Other changes included here:
  * Dropping our `--no-*` patch for mingw binutils ld, as we can take advantage of the `--disable-*` flags that are now available in binutlils 2.37. The security check tests are updated accordingly.
  * Dropping our current patch for NSIS, as it's been integrated upstream, however given we are building v3.05, we need a different one (229b6136c4) for compiling against GCC 10.
  * Removing our `python-asn1crypto` package definition, as an identical package is available in Guix. Over time we should look at trying to get the rest of the python packages we define here upstreamed.
  * Adding a patch for `python-elfsteem` to fix an issue in the example code when using Python 3.9+.
  * Our base glibc (`2.24`) now inherits from glibc-2.31. Guix has removed packages of glibc < 2.29, and the current version of glibc is `2.33`. However glibc-2.31 is the newest version that still contains a workaround for installing sunrpc data, which we need, so inheriting from that version seemed like the most straightforward solution.
  * As mentioned, Guix has removed glibcs < 2.29, so we add our own package definition for glibc 2.27, which we use for our RISC-V toolchain (also inheriting from 2.31).

  The guix commit hash currently points to the head of the `version-1.4.0` branch. This can be updated to an official release tag when one is available.

  Looking for Concept ACKs on migrating to using GCC 10.3 for building releases. Keeping in mind issues like #20005, however that particular bug should be fixed in GCC 10.3.0+, according to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189.

  Guix Builds:
  ```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
  ea56ef38bd94dbcb11b9d10e2f10c205109daad03fea4313f79892fc497ba68d  guix-build-84f9931cb449/output/aarch64-linux-gnu/SHA256SUMS.part
  01123ab23e5a09dc06a897837389e859d302ba2b18fbe827936ec8983765e7df  guix-build-84f9931cb449/output/aarch64-linux-gnu/bitcoin-84f9931cb449-aarch64-linux-gnu-debug.tar.gz
  7a24e25c2237e5aeb14508b91c5c6954572814e1767e892c164494f32d73b0c0  guix-build-84f9931cb449/output/aarch64-linux-gnu/bitcoin-84f9931cb449-aarch64-linux-gnu.tar.gz
  0e1dba0233da1f487222b128964980d50393e61a6971bcf4c71951c29fdf3993  guix-build-84f9931cb449/output/arm-linux-gnueabihf/SHA256SUMS.part
  8cd4c6f42abc81427f1d2500f86daced2a4ee78882dd9d03b5a0211a1d96306e  guix-build-84f9931cb449/output/arm-linux-gnueabihf/bitcoin-84f9931cb449-arm-linux-gnueabihf-debug.tar.gz
  c180db6bffb1a54b6dc65929d86d5eba9adf876a28ad320590ed230233e57299  guix-build-84f9931cb449/output/arm-linux-gnueabihf/bitcoin-84f9931cb449-arm-linux-gnueabihf.tar.gz
  4efcda7b63646eb46dabea7122fb026f2c063d2919a9dcbbffbc0929b9c56ced  guix-build-84f9931cb449/output/dist-archive/bitcoin-84f9931cb449.tar.gz
  1e35e96034fed00674f362d6471fb402dd2758cec2860ded4fd7e37c38935a44  guix-build-84f9931cb449/output/powerpc64-linux-gnu/SHA256SUMS.part
  96a0b7f54d3b3935c134f8c2aaaf11a314b54c9d7924ba751503caa16bd1c840  guix-build-84f9931cb449/output/powerpc64-linux-gnu/bitcoin-84f9931cb449-powerpc64-linux-gnu-debug.tar.gz
  ae05137b6fb3494120f5413bf8a94ca3c1b0c047e1f512e6c2c5a0b1f122f075  guix-build-84f9931cb449/output/powerpc64-linux-gnu/bitcoin-84f9931cb449-powerpc64-linux-gnu.tar.gz
  c22e5fbcdcdbfa5d385537e2c1dab55004d9e94396ebccef0bc3d216edfacbbe  guix-build-84f9931cb449/output/powerpc64le-linux-gnu/SHA256SUMS.part
  52602b41e81a921435d93f2a3ae29549aa65a4147cdbf1ed7d9e4a44c4dc902a  guix-build-84f9931cb449/output/powerpc64le-linux-gnu/bitcoin-84f9931cb449-powerpc64le-linux-gnu-debug.tar.gz
  a2cc7e9385452163a7bda99f6f9aa630fd35d4ba13d4fd9a4dd7e8062206650d  guix-build-84f9931cb449/output/powerpc64le-linux-gnu/bitcoin-84f9931cb449-powerpc64le-linux-gnu.tar.gz
  e75fadf1b1c7e4ae3d52e7a8051a881de17bd4d9d32c1ca29ca0ddbb8028ee51  guix-build-84f9931cb449/output/riscv64-linux-gnu/SHA256SUMS.part
  3b643c33842a15befb5d36d13b598a5e628c11b95671336c8dea51b5eed9c79a  guix-build-84f9931cb449/output/riscv64-linux-gnu/bitcoin-84f9931cb449-riscv64-linux-gnu-debug.tar.gz
  e9a1ee7451502508cde73dc300aca8a421e379ac08c3f4adaf8c768fbfa942ac  guix-build-84f9931cb449/output/riscv64-linux-gnu/bitcoin-84f9931cb449-riscv64-linux-gnu.tar.gz
  c0508a0872cf1415a47983d2ebbc9e5a46282ce7b6453afac544e0d1315b7bf9  guix-build-84f9931cb449/output/x86_64-apple-darwin/SHA256SUMS.part
  7c02267cb91e2649088af5e96f81142beaad67f6a1a0588355174a4157b31458  guix-build-84f9931cb449/output/x86_64-apple-darwin/bitcoin-84f9931cb449-osx-unsigned.dmg
  46dbf5a911abfa63e3c5aa8440289da5fdea89da013253c08768ce58b798a99d  guix-build-84f9931cb449/output/x86_64-apple-darwin/bitcoin-84f9931cb449-osx-unsigned.tar.gz
  ab2e2360f18cb1b80bfd37f1a9508a938e89237767120472f932402cc809f0eb  guix-build-84f9931cb449/output/x86_64-apple-darwin/bitcoin-84f9931cb449-osx64.tar.gz
  f58aa000692f7ea09ab8e7ec159a806d3a665f0f70558e62a53d56afb361eb02  guix-build-84f9931cb449/output/x86_64-linux-gnu/SHA256SUMS.part
  78a76aef8469b07a41588e019a6dfa890c36fd5becf2c8d73a71c9e72bcabde6  guix-build-84f9931cb449/output/x86_64-linux-gnu/bitcoin-84f9931cb449-x86_64-linux-gnu-debug.tar.gz
  5e6e0040b37ff035de41c8fcfee5d498bd19fa489024704dd4caa0ab9f566450  guix-build-84f9931cb449/output/x86_64-linux-gnu/bitcoin-84f9931cb449-x86_64-linux-gnu.tar.gz
  d6e6af70f277d9c9ef9b4773ec05920355ac07ebec71ff3e179676047329964b  guix-build-84f9931cb449/output/x86_64-w64-mingw32/SHA256SUMS.part
  37f24f6899e7803ed07bd0f5eb3f0fb6237ac1254dd72f446e9e4e488a927c8e  guix-build-84f9931cb449/output/x86_64-w64-mingw32/bitcoin-84f9931cb449-win-unsigned.tar.gz
  14f7d1c14a5fc3b4c336d301f936c5578d6e31d61ec720dfc9d4129445d1e2a2  guix-build-84f9931cb449/output/x86_64-w64-mingw32/bitcoin-84f9931cb449-win64-debug.zip
  c8049dcc0308a76f21dd781e8561ebbafa84034fbf8e3afa7d4017866d7fd195  guix-build-84f9931cb449/output/x86_64-w64-mingw32/bitcoin-84f9931cb449-win64-setup-unsigned.exe
  fb1e6580c25b073118f121aabaa04aa09643bc97cfeaea7c9a24bbe65c33cbb6  guix-build-84f9931cb449/output/x86_64-w64-mingw32/bitcoin-84f9931cb449-win64.zip
  ```

ACKs for top commit:
  hebasto:
    re-ACK 84f9931cb4

Tree-SHA512: 2f5f4f6bb1f55a048dba88523f235320e51c4af963355abf6a86b7035623b2100ae3dc44396c76fbeea89ae9cfbc5342abd3e2c41760ede8b689d7757d6e7f25
2022-01-07 19:50:57 +08:00
.github doc: Remove label from good first issue template 2020-08-24 09:31:24 +02:00
.tx qt: Bump transifex slug for 22.x 2021-04-21 13:46:41 +02:00
build-aux/m4 build: Drop redundant AC_SUBST macros 2021-12-29 23:14:45 +02:00
build_msvc Merge bitcoin/bitcoin#23828: scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2022-01-06 14:59:17 +01:00
ci Merge bitcoin/bitcoin#23938: ci: Clone entire bitcoin-core/qa-assets repo only when run fuzzing 2022-01-06 17:15:17 +01:00
contrib guix: use upstream python-requests (2.26.0) 2022-01-05 10:32:24 +08:00
depends Merge bitcoin/bitcoin#23909: build: use a static .tiff for macOS .dmg rather than generating 2022-01-05 10:25:03 +08:00
doc Merge bitcoin/bitcoin#23909: build: use a static .tiff for macOS .dmg rather than generating 2022-01-05 10:25:03 +08:00
share scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
src Merge bitcoin/bitcoin#23974: Make blockstorage globals private members of BlockManager 2022-01-07 11:14:16 +08:00
test Merge bitcoin/bitcoin#23996: test: set ban after mocking time 2022-01-07 07:49:13 +08:00
.cirrus.yml ci: Update Cirrus CI task name 2022-01-03 18:52:40 +02:00
.editorconfig ci: Drop AppVeyor CI integration 2021-09-07 06:12:53 +03:00
.gitattributes Separate protocol versioning from clientversion 2014-10-29 00:24:40 -04:00
.gitignore build: use a static .tiff for macOS .dmg over generating 2022-01-02 15:38:19 +08:00
.python-version Bump minimum python version to 3.6 2020-11-09 17:53:47 +10:00
.style.yapf test: .style.yapf: Set column_limit=160 2019-03-04 18:28:13 -05:00
autogen.sh scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
configure.ac Merge bitcoin/bitcoin#23909: build: use a static .tiff for macOS .dmg rather than generating 2022-01-05 10:25:03 +08:00
CONTRIBUTING.md Use the imperative mood in example subject line 2021-12-10 11:49:20 +11:00
COPYING doc: Update license year range to 2022 2022-01-03 04:48:41 +08:00
INSTALL.md doc: Added hyperlink for doc/build 2021-09-09 19:53:12 +05:30
libbitcoinconsensus.pc.in build: remove libcrypto as internal dependency in libbitcoinconsensus.pc 2019-11-19 15:03:44 +01:00
Makefile.am Merge bitcoin/bitcoin#23784: bitcoin-tx: Require that input amount is provided for witness transactions 2022-01-05 17:48:55 +01:00
README.md doc: Rework internal and external links 2021-02-17 09:18:46 +01:00
REVIEWERS reviewers: add tracing 2022-01-05 17:22:49 -08:00
SECURITY.md doc: Suggest keys.openpgp.org as keyserver in SECURITY.md 2021-11-08 12:22:04 +01:00

Bitcoin Core integration/staging tree

https://bitcoincore.org

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.