depends: modernize clang flags for Darwin #27798

pull theuni wants to merge 2 commits into bitcoin:master from theuni:darwin-cross-modernize-flags changing 2 files +17 −36
  1. theuni commented at 10:18 pm on May 31, 2023: member

    This is a cleaner and simpler alternative to #25098. Inspired by this conversation. The diff is large but the change itself is quite small.

    Fixes builds with llvm >= 11 in guix by working around the problem. As a bonus, this is much cleaner and more maintainable than what we had before.

    See the updated comment for more info. At a high level: rather than playing tricks and trying to work around clang’s default includes, disable them and re-add what we want.

  2. DrahtBot commented at 10:18 pm on May 31, 2023: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK fanquake, TheCharlatan
    Concept ACK hebasto

    If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #21778 (build: LLVM 15 & LLD based macOS toolchain by fanquake)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  3. DrahtBot added the label Build system on May 31, 2023
  4. hebasto commented at 10:28 pm on May 31, 2023: member
    Concept ACK.
  5. DrahtBot added the label CI failed on Jun 1, 2023
  6. in depends/hosts/darwin.mk:64 in 1c0c344b0f outdated
    60@@ -63,53 +61,33 @@ $(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$(
    61 #         Explicitly point to our binaries (e.g. cctools) so that they are
    62 #         ensured to be found and preferred over other possibilities.
    63 #
    64-#     -stdlib++-isystem$(OSX_SDK)/usr/include/c++/v1
    65+#     -isysroot$(OSX_SDK) -nostdlibinc
    


    maflcko commented at 6:23 am on June 1, 2023:

    from CI:

    0clang: error: argument unused during compilation: '-nostdlibinc' [-Werror,-Wunused-command-line-argument]
    

    theuni commented at 11:49 am on June 1, 2023:
    ffs…

    theuni commented at 4:38 pm on June 2, 2023:
  7. theuni commented at 5:49 pm on June 2, 2023: member

    @fanquake and @hebasto have both pointed out to me in discussions that this works even without the -nostdlibinc. That is purely accidental and coincidental, as the addition of -nostdlibinc is what’s intended to make the other changes here work.

    By sheer luck though, they manage to put everything in the correct order such that the poisoned paths come last in the search-order. That feels brittle, but maybe good enough.

    I’d also like to see what the consequences of the argument unused during compilation warning are as it’ll be quite a while until we’re using clang 17. If it turns out to only be a problem with our -Werror build, we can probably just hack around it. But I suspect that some libs in depends may be degraded due to failing configure checks. Will have a look.

  8. theuni commented at 7:11 pm on June 16, 2023: member

    I’d also like to see what the consequences of the argument unused during compilation warning are as it’ll be quite a while until we’re using clang 17. If it turns out to only be a problem with our -Werror build, we can probably just hack around it. But I suspect that some libs in depends may be degraded due to failing configure checks. Will have a look.

    I tested this in detail today. I minimally patched clang-12 and built from depends with and without the patch. I’ve verified that at least bitcoind, bitcoiin-qt, and univalue/test/object (one of the c-i offenders) are all identical.

    config.log shows a few differences which boil down to:

    0-ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=-Qunused-arguments
    1+ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=no
    

    Because a few tests are thrown off by the warning.

    And the end-result is:

    0-PTHREAD_CFLAGS='-Qunused-arguments -pthread'
    1+PTHREAD_CFLAGS='-pthread'
    

    So.. only cosmetic, and nothing that changes the final binaries.


    I propose that we take this commit as-is, with one on top to keep c-i from failing for this particular warning. So we just need to stick a -Wno-error,-Wunused-command-line-argument somewhere.

    I think that makes sense because eventually (once clang17+ becomes the norm) everything will work perfectly, and before then there may just be a few harmless warnings. @fanquake Thoughts? If you agree, where’s the best place to disable the Werror?

  9. fanquake commented at 4:48 pm on June 20, 2023: member

    If you agree, where’s the best place to disable the Werror?

    I think it’s best to just suppress in 00_setup_env_mac.sh. You can add a CXXFLAGS="-Wno-error,-Wunused-command-line-argument" to BITCOIN_CONFIG.

  10. theuni force-pushed on Jun 20, 2023
  11. theuni commented at 6:33 pm on June 20, 2023: member

    If you agree, where’s the best place to disable the Werror?

    I think it’s best to just suppress in 00_setup_env_mac.sh. You can add a CXXFLAGS="-Wno-error,-Wunused-command-line-argument" to BITCOIN_CONFIG.

    Done. Scoped to LDFLAGS because that should be enough. We’ll see if the c-i likes it.

  12. theuni commented at 7:08 pm on June 20, 2023: member
    Failures are unrelated, macOS test is now happy.
  13. maflcko added the label DrahtBot Guix build requested on Jun 20, 2023
  14. ci: disable false-positive warnings for now
    clang <=17 warns on -nostdlibinc, which causes an error on our -Werror builds.
    
    Note that this breaks the "-fPIE" check in configure because it relies on
    catching warnings, but that is not a problem for macOS.
    2a85857ce5
  15. depends: modernize clang flags
    Fixes builds with llvm >= 11 in guix by working around the problem. As a bonus,
    this is much cleaner and more maintainable than what we had before.
    cbee1d7091
  16. theuni force-pushed on Jun 20, 2023
  17. DrahtBot commented at 2:23 am on June 21, 2023: contributor

    Guix builds

    File commit e4bbfb2d495291010914767321beb07ff5194b61(master) commit 86fccc5c635acc45cac16c61f49b1ed6b9c7236d(master and this pull)
    SHA256SUMS.part b42c5c16eca1a343... 1797e68b75625c23...
    *-aarch64-linux-gnu-debug.tar.gz d4c77ecbfc2e744c... 8e9a7d7520cd0dce...
    *-aarch64-linux-gnu.tar.gz b903162024c74da0... 6312a3652aa42b01...
    *-arm-linux-gnueabihf-debug.tar.gz dc842d366efb2172... 7a339517ac5f62ad...
    *-arm-linux-gnueabihf.tar.gz 2d74411d3f70ed18... 1e7045a38b4bd880...
    *-powerpc64-linux-gnu-debug.tar.gz 39506eecd3b7a4d3... 10bea6d5e9efc746...
    *-powerpc64-linux-gnu.tar.gz 0c4c190ffc715867... cff1fc9132d1daad...
    *-powerpc64le-linux-gnu-debug.tar.gz c0f3b78cac740b17... 64f394aa619aa38e...
    *-powerpc64le-linux-gnu.tar.gz 56b037b15388e49e... b77edaf67bf22fd0...
    *-riscv64-linux-gnu-debug.tar.gz 1ff2d865bd22f6db... 7eb45bcd4b31fc84...
    *-riscv64-linux-gnu.tar.gz 9669a439fb9400df... dc0d659adc9fd71f...
    *-x86_64-linux-gnu-debug.tar.gz 9d1166dd9b9a0e01... 8e730a8de56de0b1...
    *-x86_64-linux-gnu.tar.gz e41fe82f314a1d1d... 010495308290729d...
    *.tar.gz 0f8e5a3581a7440b... d0b268d9f625d0cf...
    guix_build.log b46d4373d4d794e9... 018fdaa8523dd11f...
    guix_build.log.diff 375bafc4dd7a5141...
  18. DrahtBot removed the label DrahtBot Guix build requested on Jun 21, 2023
  19. fanquake commented at 11:12 am on June 21, 2023: member

    Guix Build:

     0597dfa270c4fc66692222de6f88862b2df5889ab95e6912814a0eb4fbdc08ef7  guix-build-cbee1d70918b/output/aarch64-linux-gnu/SHA256SUMS.part
     19132ca580774acbd977d74a78cd6f0fbf7d1006a16cc9249c953ba3720833085  guix-build-cbee1d70918b/output/aarch64-linux-gnu/bitcoin-cbee1d70918b-aarch64-linux-gnu-debug.tar.gz
     29835f60101b801cebb2f04157041b59b01d78cc9b732adc6c6b07ec52ab4242f  guix-build-cbee1d70918b/output/aarch64-linux-gnu/bitcoin-cbee1d70918b-aarch64-linux-gnu.tar.gz
     31dc24ddd70c76e1ca33d76724ca780aa35408cec5533194083bebd695524eeff  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/SHA256SUMS.part
     4b20349a3db7e45e942d83795c7cd0df40dd179729c37cad9d3d063f7a8e216fc  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/bitcoin-cbee1d70918b-arm-linux-gnueabihf-debug.tar.gz
     5b83d8d4cf207ec990a8a313ff894d20d5ceb66f14400ff8d8cbf42ae6761ac86  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/bitcoin-cbee1d70918b-arm-linux-gnueabihf.tar.gz
     626cdfe05fc51c248995a8a681cde88b5117b3c60df283ca6e5f146b2ac2eac13  guix-build-cbee1d70918b/output/arm64-apple-darwin/SHA256SUMS.part
     73ce6abf6036e3651afa920724266eb0160778633beef34e193868e441c4619ae  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin-unsigned.dmg
     8147738bf6a27712f3d55815f92c288626bf7d348bd9492b087b0883d71ed3ac9  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin-unsigned.tar.gz
     905dd239ff2f10212595b60ab786717f597dcbf111a1200450a92d69ec9f46b8f  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin.tar.gz
    108c3bd6d8f3f44a5587040e7bdd162823091402ee73aeb1bb2ab68b4837770899  guix-build-cbee1d70918b/output/dist-archive/bitcoin-cbee1d70918b.tar.gz
    1121cb5c1fa7dde9bb0c6d664b6a03c2327f10a1e6abbf678a0239b4a7e55be931  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/SHA256SUMS.part
    12cdfb60ad7f2b238a51d220be388f4e5ca22338aa571f3310beda3a5b06a34828  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/bitcoin-cbee1d70918b-powerpc64-linux-gnu-debug.tar.gz
    134ff45ea00ba4fd34676aaea40b830bacb15f91e7ec8282a4e4c50757b84aa9b5  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/bitcoin-cbee1d70918b-powerpc64-linux-gnu.tar.gz
    14568a714dcd7a61377f1f2e750fd1aee31e03e5112819157f9cbc12a476e6a42b  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/SHA256SUMS.part
    15a7bbc58da1ff3895ed97e09751da881c0a0c0175bce53fec656764096ff4b6fa  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/bitcoin-cbee1d70918b-powerpc64le-linux-gnu-debug.tar.gz
    167e96548895e240fa36e6d07871021d445b23b8dbc776d9494938a4fe1bff8aaf  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/bitcoin-cbee1d70918b-powerpc64le-linux-gnu.tar.gz
    17ee9cbece1e8b5fde078f846bd43ad4cbb1e1e327a2405365e1225d4352a61a2b  guix-build-cbee1d70918b/output/riscv64-linux-gnu/SHA256SUMS.part
    182150bd12cae0cdd3de889d64af292602ea0a82c34979b917d98349a67b215614  guix-build-cbee1d70918b/output/riscv64-linux-gnu/bitcoin-cbee1d70918b-riscv64-linux-gnu-debug.tar.gz
    19075afbd5f88d32e0aed1b659fb6118f113e1a14fc004a03ea238f31aca5c3880  guix-build-cbee1d70918b/output/riscv64-linux-gnu/bitcoin-cbee1d70918b-riscv64-linux-gnu.tar.gz
    20cdd31a69d1b00a6565a4642608f5d23010cba9fc5006548fabc36a874e284f0b  guix-build-cbee1d70918b/output/x86_64-apple-darwin/SHA256SUMS.part
    219b08280e2f8299830b0bab052071a9c6af3accf27dc6601420eec1f504cd3bee  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin-unsigned.dmg
    22b19b8185f1525aba6e11acd68603d05de012e9589a1a650b1747bb8c28e5c5eb  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin-unsigned.tar.gz
    237b30ac37734950e47e62f5df7249a7dbda17bcde17f0f87abf256f96023f16bd  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin.tar.gz
    24e58a695934e4a4425af64bd75c34662f88dfb4b18873bc62a1c3847c25130c34  guix-build-cbee1d70918b/output/x86_64-linux-gnu/SHA256SUMS.part
    2589c771455f0b72cd7f110eacf15fb694b871bbb70f7d23a9e5f5deec18d39c97  guix-build-cbee1d70918b/output/x86_64-linux-gnu/bitcoin-cbee1d70918b-x86_64-linux-gnu-debug.tar.gz
    26436dc7634b41ec09e2426d0cf8bea238994d9a4e4fcc074772919db0ac96434e  guix-build-cbee1d70918b/output/x86_64-linux-gnu/bitcoin-cbee1d70918b-x86_64-linux-gnu.tar.gz
    2763743df509e31704539b5ee87036a4a3c5933ae3bfecf825fedb15365021f010  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/SHA256SUMS.part
    28b138acae44967c121749b01ac91fbbeb41b0b6d336f13b8de54dbfaac8b9b9a1  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-debug.zip
    292aae3ce0dee19e3a2dac884d1e18ea44bfbdaeffb37cce30c81693c6236fa937  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-setup-unsigned.exe
    30bf0512130cbcf7da7b35370db62a741d3acdc5d19be465dbce849e60ff565377  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-unsigned.tar.gz
    312bdb86b1a8cff65684f01652fda85046d02f8a0f7beff975415649bc64e196c4  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64.zip
    
  20. fanquake requested review from TheCharlatan on Jun 21, 2023
  21. fanquake approved
  22. fanquake commented at 11:28 am on June 21, 2023: member
    ACK cbee1d70918b7c8e524c07f3da7049c3a1a2cbff - tested Guix and the depends cross-compile. Would like to move this along, to unblock #27676, which itself might be a blocker for #27897. Note that macOS might seem somewhat in flux for the moment, but once we finish the migration to LLVM Clang + LLD, things will be must simpler, and ultimately more maintainable.
  23. TheCharlatan commented at 6:25 pm on June 21, 2023: contributor
     0find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
     1597dfa270c4fc66692222de6f88862b2df5889ab95e6912814a0eb4fbdc08ef7  guix-build-cbee1d70918b/output/aarch64-linux-gnu/SHA256SUMS.part
     29132ca580774acbd977d74a78cd6f0fbf7d1006a16cc9249c953ba3720833085  guix-build-cbee1d70918b/output/aarch64-linux-gnu/bitcoin-cbee1d70918b-aarch64-linux-gnu-debug.tar.gz
     39835f60101b801cebb2f04157041b59b01d78cc9b732adc6c6b07ec52ab4242f  guix-build-cbee1d70918b/output/aarch64-linux-gnu/bitcoin-cbee1d70918b-aarch64-linux-gnu.tar.gz
     41dc24ddd70c76e1ca33d76724ca780aa35408cec5533194083bebd695524eeff  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/SHA256SUMS.part
     5b20349a3db7e45e942d83795c7cd0df40dd179729c37cad9d3d063f7a8e216fc  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/bitcoin-cbee1d70918b-arm-linux-gnueabihf-debug.tar.gz
     6b83d8d4cf207ec990a8a313ff894d20d5ceb66f14400ff8d8cbf42ae6761ac86  guix-build-cbee1d70918b/output/arm-linux-gnueabihf/bitcoin-cbee1d70918b-arm-linux-gnueabihf.tar.gz
     726cdfe05fc51c248995a8a681cde88b5117b3c60df283ca6e5f146b2ac2eac13  guix-build-cbee1d70918b/output/arm64-apple-darwin/SHA256SUMS.part
     83ce6abf6036e3651afa920724266eb0160778633beef34e193868e441c4619ae  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin-unsigned.dmg
     9147738bf6a27712f3d55815f92c288626bf7d348bd9492b087b0883d71ed3ac9  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin-unsigned.tar.gz
    1005dd239ff2f10212595b60ab786717f597dcbf111a1200450a92d69ec9f46b8f  guix-build-cbee1d70918b/output/arm64-apple-darwin/bitcoin-cbee1d70918b-arm64-apple-darwin.tar.gz
    118c3bd6d8f3f44a5587040e7bdd162823091402ee73aeb1bb2ab68b4837770899  guix-build-cbee1d70918b/output/dist-archive/bitcoin-cbee1d70918b.tar.gz
    1221cb5c1fa7dde9bb0c6d664b6a03c2327f10a1e6abbf678a0239b4a7e55be931  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/SHA256SUMS.part
    13cdfb60ad7f2b238a51d220be388f4e5ca22338aa571f3310beda3a5b06a34828  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/bitcoin-cbee1d70918b-powerpc64-linux-gnu-debug.tar.gz
    144ff45ea00ba4fd34676aaea40b830bacb15f91e7ec8282a4e4c50757b84aa9b5  guix-build-cbee1d70918b/output/powerpc64-linux-gnu/bitcoin-cbee1d70918b-powerpc64-linux-gnu.tar.gz
    15568a714dcd7a61377f1f2e750fd1aee31e03e5112819157f9cbc12a476e6a42b  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/SHA256SUMS.part
    16a7bbc58da1ff3895ed97e09751da881c0a0c0175bce53fec656764096ff4b6fa  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/bitcoin-cbee1d70918b-powerpc64le-linux-gnu-debug.tar.gz
    177e96548895e240fa36e6d07871021d445b23b8dbc776d9494938a4fe1bff8aaf  guix-build-cbee1d70918b/output/powerpc64le-linux-gnu/bitcoin-cbee1d70918b-powerpc64le-linux-gnu.tar.gz
    18ee9cbece1e8b5fde078f846bd43ad4cbb1e1e327a2405365e1225d4352a61a2b  guix-build-cbee1d70918b/output/riscv64-linux-gnu/SHA256SUMS.part
    192150bd12cae0cdd3de889d64af292602ea0a82c34979b917d98349a67b215614  guix-build-cbee1d70918b/output/riscv64-linux-gnu/bitcoin-cbee1d70918b-riscv64-linux-gnu-debug.tar.gz
    20075afbd5f88d32e0aed1b659fb6118f113e1a14fc004a03ea238f31aca5c3880  guix-build-cbee1d70918b/output/riscv64-linux-gnu/bitcoin-cbee1d70918b-riscv64-linux-gnu.tar.gz
    21cdd31a69d1b00a6565a4642608f5d23010cba9fc5006548fabc36a874e284f0b  guix-build-cbee1d70918b/output/x86_64-apple-darwin/SHA256SUMS.part
    229b08280e2f8299830b0bab052071a9c6af3accf27dc6601420eec1f504cd3bee  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin-unsigned.dmg
    23b19b8185f1525aba6e11acd68603d05de012e9589a1a650b1747bb8c28e5c5eb  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin-unsigned.tar.gz
    247b30ac37734950e47e62f5df7249a7dbda17bcde17f0f87abf256f96023f16bd  guix-build-cbee1d70918b/output/x86_64-apple-darwin/bitcoin-cbee1d70918b-x86_64-apple-darwin.tar.gz
    25e58a695934e4a4425af64bd75c34662f88dfb4b18873bc62a1c3847c25130c34  guix-build-cbee1d70918b/output/x86_64-linux-gnu/SHA256SUMS.part
    2689c771455f0b72cd7f110eacf15fb694b871bbb70f7d23a9e5f5deec18d39c97  guix-build-cbee1d70918b/output/x86_64-linux-gnu/bitcoin-cbee1d70918b-x86_64-linux-gnu-debug.tar.gz
    27436dc7634b41ec09e2426d0cf8bea238994d9a4e4fcc074772919db0ac96434e  guix-build-cbee1d70918b/output/x86_64-linux-gnu/bitcoin-cbee1d70918b-x86_64-linux-gnu.tar.gz
    2863743df509e31704539b5ee87036a4a3c5933ae3bfecf825fedb15365021f010  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/SHA256SUMS.part
    29b138acae44967c121749b01ac91fbbeb41b0b6d336f13b8de54dbfaac8b9b9a1  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-debug.zip
    302aae3ce0dee19e3a2dac884d1e18ea44bfbdaeffb37cce30c81693c6236fa937  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-setup-unsigned.exe
    31bf0512130cbcf7da7b35370db62a741d3acdc5d19be465dbce849e60ff565377  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64-unsigned.tar.gz
    322bdb86b1a8cff65684f01652fda85046d02f8a0f7beff975415649bc64e196c4  guix-build-cbee1d70918b/output/x86_64-w64-mingw32/bitcoin-cbee1d70918b-win64.zi
    
  24. TheCharlatan approved
  25. TheCharlatan commented at 7:11 pm on June 21, 2023: contributor

    ACK cbee1d70918b7c8e524c07f3da7049c3a1a2cbff

    This indeed seems “more modern”. I did check that this still compiles on my systems, did not verify if the binaries actually run though.

  26. fanquake merged this on Jun 22, 2023
  27. fanquake closed this on Jun 22, 2023

  28. sidhujag referenced this in commit de3fee1023 on Jun 22, 2023
  29. hebasto commented at 4:35 pm on June 23, 2023: member
    Post-merge ACK cbee1d70918b7c8e524c07f3da7049c3a1a2cbff.
  30. Fabcien referenced this in commit 082d9ee179 on Mar 1, 2024
  31. bitcoin locked this on Jun 22, 2024

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-22 06:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me