{
 "number": 35167,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35167",
 "title": "Convert check-deps.sh to python",
 "author": "ajtowns",
 "author_association": "MEMBER",
 "created_at": "2026-04-27T15:12:08Z",
 "updated_at": "2026-09-09T11:47:20Z",
 "age_days": 143,
 "draft": false,
 "labels": [
  "Needs rebase"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
 "head_ref": "202604-checkdeps",
 "head_repo": "ajtowns/bitcoin",
 "head_history": [
  {
   "t": "2026-04-29T05:24:49Z",
   "sha": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506"
  }
 ],
 "additions": 296,
 "deletions": 219,
 "changed_files": 5,
 "commit_count": 4,
 "size_bucket": "L",
 "mergeable_state": "dirty",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "ack": [
     {
      "login": "sedited",
      "url": "https://github.com/bitcoin/bitcoin/pull/35167#pullrequestreview-4213352015"
     }
    ],
    "concept_ack": [
     {
      "login": "janb84",
      "url": "https://github.com/bitcoin/bitcoin/pull/35167#pullrequestreview-4200282274"
     },
     {
      "login": "BrandonOdiwuor",
      "url": "https://github.com/bitcoin/bitcoin/pull/35167#pullrequestreview-4204197101"
     },
     {
      "login": "ryanofsky",
      "url": "https://github.com/bitcoin/bitcoin/pull/35167#pullrequestreview-4330746512"
     }
    ]
   },
   "conflicts": [
    {
     "number": 35778,
     "title": "scripted-diff: Use C.UTF-8 locale in all shell scripts",
     "author": "hebasto"
    },
    {
     "number": 35037,
     "title": "ipc: support per-address max-connections options on -ipcbind",
     "author": "enirox001"
    },
    {
     "number": 30437,
     "title": "ipc: add bitcoin-mine test program",
     "author": "ryanofsky"
    },
    {
     "number": 28690,
     "title": "build: Introduce internal kernel library",
     "author": "sedited"
    }
   ]
  }
 },
 "acks_parsed": {
  "janb84": {
   "kind": "concept_ack",
   "hash": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "t": "2026-04-29T19:57:39Z",
   "stale": false
  },
  "BrandonOdiwuor": {
   "kind": "concept_ack",
   "hash": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "t": "2026-04-30T10:00:04Z",
   "stale": false
  },
  "sedited": {
   "kind": "ack",
   "hash": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "t": "2026-05-01T20:46:59Z",
   "stale": false
  }
 },
 "acks_tally": {
  "ack": 1,
  "stale_ack": 0,
  "concept_ack": 2,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 2,
  "changes_requested": 0,
  "distinct_reviewers": [
   "BrandonOdiwuor",
   "fanquake",
   "hebasto",
   "janb84",
   "maflcko",
   "ryanofsky",
   "sedited"
  ]
 },
 "signals": {
  "needs_rebase": true,
  "ci_failed": false,
  "mergeable_state": "dirty",
  "last_author_activity": "2026-04-29T05:24:49Z",
  "last_reviewer_activity": "2026-07-04T09:15:05Z",
  "last_reviewer": "sedited",
  "author_silent_days": 141,
  "waiting_on_author_days": 75,
  "days_since_update": 8
 },
 "refs": {
  "mentioned": [
   10102,
   30437
  ],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [
   {
    "number": 10102,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "Multiprocess bitcoin"
   },
   {
    "number": 30437,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "ipc: add bitcoin-mine test program"
   }
  ],
  "conflicts": [
   35778,
   35037,
   30437,
   28690
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [
  "contrib/devtools/check-deps.py",
  "doc/design/libraries.md",
  "src/CMakeLists.txt"
 ],
 "body": "Converts check-deps.sh to python so that it can use the mermaid graph from doc/design/libraries.md as its source of truth, as well as automatically resolve transitive dependencies and demangle C++ names.",
 "commits": [
  {
   "sha": "8a748323140425cb42ce7f036d1991f175148f4f",
   "date": "2026-04-27T12:31:05Z",
   "message": "doc: Update library dependencies"
  },
  {
   "sha": "5d3c53858e4924ac17676fc6bbcc716abbb52036",
   "date": "2026-04-29T00:26:33Z",
   "message": "ci: Convert check-deps to python and use design doc dependencies directly"
  },
  {
   "sha": "9399bf309a69a05fb468603977d10a306bc6c2dd",
   "date": "2026-04-29T00:26:33Z",
   "message": "refactor: Move init/common.cpp to libbitcoin_node\n\nThese init functions are only used by node implementations, so the\nspecial case in dep-check can be removed."
  },
  {
   "sha": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "date": "2026-04-29T00:26:33Z",
   "message": "doc: Drop transitive lib dependencies and lib wallet-tool"
  }
 ],
 "timeline": [
  {
   "t": "2026-04-27T15:15:35Z",
   "kind": "comment",
   "who": "ajtowns",
   "assoc": "MEMBER",
   "text": "Not sure if we want to remove all the transitive deps from the md file, but without them it's a fair bit easier to follow, at least compared to [master](https://github.com/bitcoin/bitcoin/blob/master/doc/design/libraries.md#dependencies):\n\n```mermaid\n%%{ init : { \"flowchart\" : { \"curve\" : \"basis\" }}}%%\n\ngraph TD;\n\nbitcoin-cli[bitcoin-cli]-->libbitcoin_cli;\n\nbitcoind[bitcoind]-->libbitcoin_node;\nbitcoind[bitcoind]-->libbitcoin_wallet;\n\nbitcoin-qt[bitcoin-qt]-->libbitcoinqt;\n\nbitcoin-wallet[bitcoin-wallet]-->libbitcoin_wallet;\n\nlibbitcoin_cli-->libbitcoin_util;\n\nlibbitcoin_consensus-->libbitcoin_util;\n\nlibbitcoin_common-->libbitcoin_consensus;\n\nlibbitcoin_kernel-->libbitcoin_consensus;\n\nlibbitcoin_node-->libbitcoin_kernel;\nlibbitcoin_node-->libbitcoin_common;\n\nlibbitcoinqt-->libbitcoin_cli;\nlibbitcoinqt-->libbitcoin_node;\nlibbitcoinqt-->libbitcoin_wallet;\n\nlibbitcoin_util-->libbitcoin_crypto;\n\nlibbitcoin_wallet-->libbitcoin_common;\n\nclassDef bold stroke-width:2px, font-weight:bold, font-size: smaller;\nclass bitcoin-qt,bitcoind,bitcoin-cli,bitcoin-wallet bold\n```"
  },
  {
   "t": "2026-04-27T20:47:04Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "Nice, Concept ACK\n\n[quoted text omitted]\nI feel like this was brought up before - makes it indeed much cleaner."
  },
  {
   "t": "2026-04-28T09:52:04Z",
   "kind": "review_comment",
   "who": "janb84",
   "assoc": "MEMBER",
   "path": "doc/design/libraries.md",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "in_reply_to": null,
   "text": "```suggestion\n**Dependency graph**. Arrows show permitted linker symbol dependencies; the maximum each library is allowed to reference. Actual usage is a subset; the linker enforces nothing automatically. A permitted edge may be unexercised, which is not a bug and can be removed from the graph once verified. *Crypto* lib depends on nothing. *Util* lib is depended on by everything. *Kernel* lib depends only on consensus, crypto, and util.\n```\n\nNIT: For me it was not clear that the depicted Dependency graph is more a \"allow list\" than an actual state of dependency usage. If you know you will read this distinction in the rest of the document but I think it would help to be a bit more clear for the casual reader / first time bitcoin dev-er.  Text is nothing more than a suggestion."
  },
  {
   "t": "2026-04-28T14:24:27Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "It's really nice to actually be able to read this now.\n\nRe the additional warning we get now:\n```\nDeclared dependencies with no symbol references:\n  bitcoin_cli -> bitcoin_util\n```\n\n`libbitcoin_cli` really doesn't seem to require `libbitcoin_util`, so maybe we can add an edge for `bitcoin-cli`->`libbitcoin_util` and remove the existing `libbitcoin_cli`->`libbitcoin_util` edge? Could also use this opportunity to cleanup the `common/args.h` include from `rpc/client.cpp`.\n\nACK 24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e"
  },
  {
   "t": "2026-04-28T14:25:54Z",
   "kind": "review_comment",
   "who": "janb84",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "in_reply_to": null,
   "text": "```suggestion\n        loc = parts[0]\n        sym_type = parts[-2]\n        symbol = parts[-1]\n```\n\nNIT: there is a slight behavioral difference between nm on linux and on mac:\n\nlinux nm:   \"lib.a:obj.o:<addr> <type> <symbol>\"  (addr glued to obj:, blank for undefined)\nApple nm: \"lib.a:obj.o: <addr> <type> <symbol>\" (space after obj:, addr always its own token)\nBoth, the last two whitespace tokens are \\<type> \\<symbol>,  NIT is to use that.\n\nnm linux:\n\n```bash\n nm -o -g build_dev_mode/lib/libbitcoin_util.a 2>/dev/null | head -8\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __assert_fail\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __cxa_allocate_exception\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __cxa_begin_catch\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __cxa_end_catch\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __cxa_free_exception\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                 U __cxa_throw\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:0000000000000000 V DW.ref.__gxx_personality_v0\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:0000000000000000 V DW.ref._ZTIN10tinyformat12format_errorE\n```\n\nnm macos:\n```bash\nnm -o -g build_dev_mode/lib/libbitcoin_util.a 2>/dev/null | head -8\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                  U __Unwind_Resume\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o: 00000000000012fc T __Z11DecodeAsmapN2fs4pathE\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                  U __Z11GetMockTimev\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o: 0000000000001d08 T __Z12AsmapVersionNSt3__14spanIKSt4byteLm18446744073709551615EEE\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o:                  U __Z14SysErrorStringi\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o: 0000000000000994 T __Z16SanityCheckAsmapNSt3__14spanIKSt4byteLm18446744073709551615EEEi\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o: 0000000000000f48 T __Z18CheckStandardAsmapNSt3__14spanIKSt4byteLm18446744073709551615EEE\nbuild_dev_mode/lib/libbitcoin_util.a:asmap.cpp.o: 0000000000000ffc T __Z22LogPrintFormatInternalIJEEvO14SourceLocationN5BCLog8LogFlagsEN4util3log5LevelEbNS4_21ConstevalFormatStringIXsZT_EEEDpRKT_\n```\n\nscript to check behavior:\n\n```script\npython3 -c \"\nimport sys\nsys.path.insert(0, 'contrib/devtools')\nimport importlib.util\nspec = importlib.util.spec_from_file_location('cd', 'contrib/devtools/check-deps.py')\nm = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)\ndefined, undefined = m.get_symbols_per_obj('build_dev_mode/lib/libbitcoin_util.a')\nprint('defined symbols  :', sum(len(v) for v in defined.values()))\nprint('undefined symbols:', sum(len(v) for v in undefined.values()))\nprint('sample defined  :', sorted(next(iter(defined.values())))[:2])\n\"\n```\n\non macos, before:\n```terminal\ndefined symbols captured : 0\nundefined symbols captured: 1104\n```\n\nAfter:\n```terminal\ndefined symbols  : 902\nundefined symbols: 1104\n```"
  },
  {
   "t": "2026-04-28T14:31:40Z",
   "kind": "review",
   "who": "janb84",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "text": "Concept ACK 24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e\n\nBrings the script more in line with the programming language used for the other tools.\n\nFound some small Nits."
  },
  {
   "t": "2026-04-28T16:29:57Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI have always considered `doc/design/libraries.md` to be a design goal rather than a current reality.\n\nI don't think it can be considered the \"source of truth\" at this stage of development. For example, `bitcoind.cpp` directly uses symbols from `bitcoin_common` (such as `ArgsManager::GetBoolArg`), and `bitcoin_common` headers are build requirements for the `bitcoind` target. This relationship isn't reflected in `doc/design/libraries.md` and is currently out of scope for the `check-deps` script, which might cause [confusion](https://github.com/bitcoin/bitcoin/pull/34995#discussion_r3147872918).\n\ncc @purpleKarrot"
  },
  {
   "t": "2026-04-29T00:27:03Z",
   "kind": "review_comment",
   "who": "ajtowns",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "in_reply_to": 3154874411,
   "text": "It would have also failed on macos with the shell script, right?"
  },
  {
   "t": "2026-04-29T00:30:54Z",
   "kind": "comment",
   "who": "ajtowns",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nNeither the shell or python check-deps script check binary dependencies -- binaries without all their deps will just fail to run anyway, so there's not much point. Even if they were checked, the transitive resolution in the python script would cover this case -- bitcoind depends on libbitcoin_node which depends on libbitcoin_common. (bitcoind would still need to explicitly link to libbitcoin_common presuming libbitcoin_node doesn't publicly incorporate libbitcoin_common though)"
  },
  {
   "t": "2026-04-29T00:31:40Z",
   "kind": "review_comment",
   "who": "ajtowns",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "in_reply_to": 3154874411,
   "text": "Switched to a regex that should also work on macos"
  },
  {
   "t": "2026-04-29T05:24:49Z",
   "kind": "force_push",
   "who": "ajtowns",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506"
  },
  {
   "t": "2026-04-29T19:46:29Z",
   "kind": "review_comment",
   "who": "janb84",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "24b0d4c0496b1d4c1986269e11b9bb2a23c67f2e",
   "in_reply_to": 3154874411,
   "text": "[quoted text omitted]\n\nYes, well even worse it would give a \"false\" succes report."
  },
  {
   "t": "2026-04-29T19:57:21Z",
   "kind": "review_comment",
   "who": "janb84",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "in_reply_to": null,
   "text": "Not sure about suppressing build output, this deviates from the shell script variant and it somewhat confusing that \"nothing\" happens in default mode. (but it's building in the background)"
  },
  {
   "t": "2026-04-29T19:57:39Z",
   "kind": "review",
   "who": "janb84",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "text": "Concept ACK 3c0e2f544ecc9097661baaac0ade1a4ea6ad6506\n\nBig improvement for MacOs usage, it will no-longer report a false succes :\n\nMaster:\n```shell\nWarning: suppression 'common.cpp.o interface_ui.cpp.o _Z9InitErrorRK13bilingual_str' was ignored, consider deleting.\nWarning: suppression 'common.cpp.o interface_ui.cpp.o _Z11InitWarningRK13bilingual_str' was ignored, consider deleting.\nSuccess! No unexpected dependencies were detected.\n```\n\nNew Python based script (--no-build to reuse master build):\n\n```shell\n./contrib/devtools/check-deps.py --no-build\nWarning: libraries not found: bitcoin_kernel, bitcoinqt\nError: bitcoin_common -> bitcoin_node (2 symbols)\n  common.cpp.o -> interface_ui.cpp.o: InitWarning(bilingual_str const&)\n  common.cpp.o -> interface_ui.cpp.o: InitError(bilingual_str const&)\n\n(use --show-suppressions to see suppress directives)\n\n2 unexpected dependencies found.\n```"
  },
  {
   "t": "2026-04-30T10:00:04Z",
   "kind": "review",
   "who": "BrandonOdiwuor",
   "assoc": "CONTRIBUTOR",
   "state": "COMMENTED",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "text": "Concept ACK 3c0e2f544ecc9097661baaac0ade1a4ea6ad6506 moving the `./contrib/devtools/check-deps.sh` to Python\n\nThe previous `check-deps.sh` was transparent about triggering a rebuild, while the new check-deps.py builds silently in the background with no feedback, which feels confusing\n\n**Master** (before PR)\n\nRunning  `./contrib/devtools/check-deps.sh`\n\n```bash\ngit checkout master\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nbrandon-odiwuor@brandon-odiwuor-ubuntu:~/bitcoin/bitcoin$ ./contrib/devtools/check-deps.sh build_dev_mode/\n-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version \"0.5.0\")\n-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE dot)\n\nConfiguring secp256k1 subtree...\n-- Could NOT find Valgrind (missing: Valgrind_INCLUDE_DIR Valgrind_WORKS)\n\nsecp256k1 configure summary\n===========================\nBuild artifacts:\n  library type ........................ Static\nOptional modules:\n  ECDH ................................ OFF\n  ECDSA pubkey recovery ............... ON\n  extrakeys ........................... ON\n  schnorrsig .......................... ON\n  musig ............................... ON\n  ElligatorSwift ...................... ON\nParameters:\n  ecmult window size .................. 15\n  ecmult gen table size ............... 86 KiB\nOptional features:\n  assembly ............................ x86_64\n  external callbacks .................. OFF\nOptional binaries:\n  benchmark ........................... OFF\n  noverify_tests ...................... ON\n  tests ............................... ON\n  exhaustive tests .................... ON\n  ctime_tests ......................... OFF\n  examples ............................ OFF\n\nCross compiling ....................... FALSE\nAPI visibility attributes ............. OFF\nValgrind .............................. OFF\nPreprocessor defined macros ........... ECMULT_WINDOW_SIZE=15 COMB_BLOCKS=43 COMB_TEETH=6 USE_ASM_X86_64=1\nC compiler ............................ GNU 13.3.0, /usr/bin/cc\nCFLAGS ................................\nCompile options ....................... -Wall -pedantic -Wcast-align -Wcast-align=strict -Wextra -Wnested-externs -Wno-long-long -Wno-overlength-strings -Wno-unused-function -Wshadow -Wstrict-prototypes -Wundef\nBuild type:\n - CMAKE_BUILD_TYPE ................... RelWithDebInfo\n - CFLAGS ............................. -O2 -g\n - LDFLAGS for executables ............\n - LDFLAGS for shared libraries .......\n\nConfigure summary\n=================\nExecutables:\n  bitcoin ............................. ON\n  bitcoind ............................ ON\n  bitcoin-node (multiprocess) ......... ON\n  bitcoin-qt (GUI) .................... ON\n  bitcoin-gui (GUI, multiprocess) ..... ON\n  bitcoin-cli ......................... ON\n  bitcoin-tx .......................... ON\n  bitcoin-util ........................ ON\n  bitcoin-wallet ...................... ON\n  bitcoin-chainstate (experimental) ... ON\n  libbitcoinkernel (experimental) ..... ON\n  kernel-test (experimental) .......... ON\nOptional features:\n  wallet support ...................... ON\n  external signer ..................... ON\n  ZeroMQ .............................. ON\n  IPC ................................. ON\n  Embedded ASMap ...................... ON\n  USDT tracing ........................ ON\n  QR code (GUI) ....................... ON\n  DBus (GUI) .......................... ON\nTests:\n  test_bitcoin ........................ ON\n  test_bitcoin-qt ..................... ON\n  bench_bitcoin ....................... ON\n  fuzz binary ......................... ON\n\nCross compiling ....................... FALSE\nC++ compiler .......................... GNU 13.3.0, /usr/bin/c++\nCMAKE_BUILD_TYPE ...................... RelWithDebInfo\nPreprocessor defined macros ...........\nC++ compiler flags .................... -O2 -g -std=c++20 -fPIC -fno-extended-identifiers -fmacro-prefix-map=/home/brandon-odiwuor/bitcoin/bitcoin/src=. -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter\nLinker flags .......................... -O2 -g -fstack-reuse=none -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie\n\nNOTE: The summary above may not exactly match the final applied build flags\n      if any additional CMAKE_* or environment variables have been modified.\n      To see the exact flags applied, build with the --verbose option.\n\nTreat compiler warnings as errors ..... OFF\nUse ccache for compiling .............. ON\n\n-- Configuring done (42.1s)\n-- Generating done (4.5s)\n-- Build files have been written to: /home/brandon-odiwuor/bitcoin/bitcoin/build_dev_mode\n[  0%] Generating bitcoin-build-info.h\n[  0%] Built target generate_build_info\n[  0%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/mempool.cpp.o\n[  0%] Linking CXX static library ../lib/libbitcoin_node.a\n[100%] Built target bitcoin_node\nBuilt target bitcoin_cli\n[100%] Built target bitcoin_consensus\n[  0%] Generating bitcoin-build-info.h\n[  0%] Built target generate_build_info\n[100%] Built target bitcoin_wallet\n[  0%] Generating bitcoin-build-info.h\n[  0%] Built target generate_build_info\n[  0%] Building CXX object src/CMakeFiles/bitcoin_common.dir/init/common.cpp.o\n[  0%] Linking CXX static library ../lib/libbitcoin_common.a\n[100%] Built target bitcoin_common\n[  0%] Generating bitcoin-build-info.h\n[  0%] Built target generate_build_info\n[100%] Built target bitcoin_util\n[100%] Built target bitcoin_crypto\nSuccess! No unexpected dependencies were detected.\n```\n\nPR at **3c0e2f544ecc9097661baaac0ade1a4ea6ad6506**\n\nRunning  `./contrib/devtools/check-deps.py`\n\n```bash\nbrandon-odiwuor@brandon-odiwuor-ubuntu:~/bitcoin/bitcoin$ rm -rf build_dev_mode/\nbrandon-odiwuor@brandon-odiwuor-ubuntu:~/bitcoin/bitcoin$ cmake --preset dev-mode\nPreset CMake variables:\n\n  BUILD_BENCH=\"ON\"\n  BUILD_CLI=\"ON\"\n  BUILD_DAEMON=\"ON\"\n  BUILD_FUZZ_BINARY=\"ON\"\n  BUILD_GUI=\"ON\"\n  BUILD_GUI_TESTS=\"ON\"\n  BUILD_KERNEL_LIB=\"ON\"\n  BUILD_SHARED_LIBS=\"ON\"\n  BUILD_TESTS=\"ON\"\n  BUILD_TX=\"ON\"\n  BUILD_UTIL=\"ON\"\n  BUILD_UTIL_CHAINSTATE=\"ON\"\n  BUILD_WALLET_TOOL=\"ON\"\n  ENABLE_EXTERNAL_SIGNER=\"ON\"\n  ENABLE_IPC=\"ON\"\n  ENABLE_WALLET=\"ON\"\n  WITH_QRENCODE=\"ON\"\n  WITH_USDT=\"ON\"\n  WITH_ZMQ=\"ON\"\n\n-- The CXX compiler identification is GNU 13.3.0\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Setting build type to \"RelWithDebInfo\" as none was specified\n-- Performing Test CXX_SUPPORTS__WERROR\n-- Performing Test CXX_SUPPORTS__WERROR - Success\n-- Performing Test CXX_SUPPORTS__G3\n-- Performing Test CXX_SUPPORTS__G3 - Success\n-- Performing Test LINKER_SUPPORTS__G3\n-- Performing Test LINKER_SUPPORTS__G3 - Success\n-- Performing Test CXX_SUPPORTS__FTRAPV\n-- Performing Test CXX_SUPPORTS__FTRAPV - Success\n-- Performing Test LINKER_SUPPORTS__FTRAPV\n-- Performing Test LINKER_SUPPORTS__FTRAPV - Success\n-- Found SQLite3: /usr/include (found suitable version \"3.45.1\", minimum required is \"3.7.17\")\n-- Found PkgConfig: /usr/bin/pkg-config (found version \"1.8.1\")\n-- Found ZeroMQ: /usr/lib/x86_64-linux-gnu (found suitable version \"4.3.5\", minimum required is \"4.0.0\")\n-- Performing Test HAVE_USDT_H\n-- Performing Test HAVE_USDT_H - Success\n-- Found USDT: /usr/include/x86_64-linux-gnu\n-- Found QRencode: /usr/lib/x86_64-linux-gnu/libqrencode.so (found version \"4.1.1\")\n-- Performing Test CMAKE_HAVE_LIBC_PTHREAD\n-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success\n-- Found Threads: TRUE\n-- Performing Test HAVE_STDATOMIC\n-- Performing Test HAVE_STDATOMIC - Success\n-- Found WrapAtomic: TRUE\n-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so\n-- Found WrapOpenGL: TRUE\n-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version \"0.5.0\")\n-- Found WrapVulkanHeaders: /usr/include\n-- Found Qt: /usr/lib/x86_64-linux-gnu/cmake/Qt6 (found suitable version \"6.4.2\", minimum required is \"6.2\")\n-- Performing Test LINKER_SUPPORTS__WL___FATAL_WARNINGS\n-- Performing Test LINKER_SUPPORTS__WL___FATAL_WARNINGS - Success\n-- Performing Test FUZZ_BINARY_LINKS_WITHOUT_MAIN_FUNCTION\n-- Performing Test FUZZ_BINARY_LINKS_WITHOUT_MAIN_FUNCTION - Failed\n-- Performing Test NO_DIAGNOSTICS_BOOST_NO_CXX98_FUNCTION_BASE\n-- Performing Test NO_DIAGNOSTICS_BOOST_NO_CXX98_FUNCTION_BASE - Success\n-- Found Libevent: /usr/lib/x86_64-linux-gnu (found suitable version \"2.1.12-stable\", minimum required is \"2.1.8\")\n-- Performing Test HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR\n-- Performing Test HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR - Failed\n-- Looking for O_CLOEXEC\n-- Looking for O_CLOEXEC - found\n-- Looking for fdatasync\n-- Looking for fdatasync - found\n-- Looking for fork\n-- Looking for fork - found\n-- Looking for pipe2\n-- Looking for pipe2 - found\n-- Looking for setsid\n-- Looking for setsid - found\n-- Performing Test IFADDR_LINKS_WITHOUT_LIBSOCKET\n-- Performing Test IFADDR_LINKS_WITHOUT_LIBSOCKET - Success\n-- Performing Test STD_ATOMIC_LINKS_WITHOUT_LIBATOMIC\n-- Performing Test STD_ATOMIC_LINKS_WITHOUT_LIBATOMIC - Success\n-- Looking for std::system\n-- Looking for std::system - found\n-- Looking for ::_wsystem\n-- Looking for ::_wsystem - not found\n-- Performing Test STRERROR_R_CHAR_P\n-- Performing Test STRERROR_R_CHAR_P - Success\n-- Looking for malloc_info\n-- Looking for malloc_info - found\n-- Performing Test HAVE_MALLOPT_ARENA_MAX\n-- Performing Test HAVE_MALLOPT_ARENA_MAX - Success\n-- Performing Test HAVE_POSIX_FALLOCATE\n-- Performing Test HAVE_POSIX_FALLOCATE - Success\n-- Performing Test HAVE_STRONG_GETAUXVAL\n-- Performing Test HAVE_STRONG_GETAUXVAL - Success\n-- Performing Test HAVE_SOCKADDR_UN\n-- Performing Test HAVE_SOCKADDR_UN - Success\n-- Performing Test HAVE_GETRANDOM\n-- Performing Test HAVE_GETRANDOM - Success\n-- Performing Test HAVE_GETENTROPY_RAND\n-- Performing Test HAVE_GETENTROPY_RAND - Success\n-- Performing Test HAVE_SYSCTL\n-- Performing Test HAVE_SYSCTL - Failed\n-- Performing Test HAVE_SYSCTL_ARND\n-- Performing Test HAVE_SYSCTL_ARND - Failed\n-- Performing Test HAVE_SSE41\n-- Performing Test HAVE_SSE41 - Success\n-- Performing Test HAVE_AVX2\n-- Performing Test HAVE_AVX2 - Success\n-- Performing Test HAVE_X86_SHANI\n-- Performing Test HAVE_X86_SHANI - Success\n-- Performing Test HAVE_ARM_SHANI\n-- Performing Test HAVE_ARM_SHANI - Failed\n-- Performing Test CXX_SUPPORTS__WALL\n-- Performing Test CXX_SUPPORTS__WALL - Success\n-- Performing Test CXX_SUPPORTS__WEXTRA\n-- Performing Test CXX_SUPPORTS__WEXTRA - Success\n-- Performing Test CXX_SUPPORTS__WGNU\n-- Performing Test CXX_SUPPORTS__WGNU - Failed\n-- Performing Test CXX_SUPPORTS__WCOVERED_SWITCH_DEFAULT\n-- Performing Test CXX_SUPPORTS__WCOVERED_SWITCH_DEFAULT - Failed\n-- Performing Test CXX_SUPPORTS__WFORMAT__WFORMAT_SECURITY\n-- Performing Test CXX_SUPPORTS__WFORMAT__WFORMAT_SECURITY - Success\n-- Performing Test CXX_SUPPORTS__WVLA\n-- Performing Test CXX_SUPPORTS__WVLA - Success\n-- Performing Test CXX_SUPPORTS__WSHADOW_FIELD\n-- Performing Test CXX_SUPPORTS__WSHADOW_FIELD - Failed\n-- Performing Test CXX_SUPPORTS__WTHREAD_SAFETY\n-- Performing Test CXX_SUPPORTS__WTHREAD_SAFETY - Failed\n-- Performing Test CXX_SUPPORTS__WTHREAD_SAFETY_POINTER\n-- Performing Test CXX_SUPPORTS__WTHREAD_SAFETY_POINTER - Failed\n-- Performing Test CXX_SUPPORTS__WLOOP_ANALYSIS\n-- Performing Test CXX_SUPPORTS__WLOOP_ANALYSIS - Failed\n-- Performing Test CXX_SUPPORTS__WREDUNDANT_DECLS\n-- Performing Test CXX_SUPPORTS__WREDUNDANT_DECLS - Success\n-- Performing Test CXX_SUPPORTS__WUNUSED_MEMBER_FUNCTION\n-- Performing Test CXX_SUPPORTS__WUNUSED_MEMBER_FUNCTION - Failed\n-- Performing Test CXX_SUPPORTS__WDATE_TIME\n-- Performing Test CXX_SUPPORTS__WDATE_TIME - Success\n-- Performing Test CXX_SUPPORTS__WCONDITIONAL_UNINITIALIZED\n-- Performing Test CXX_SUPPORTS__WCONDITIONAL_UNINITIALIZED - Failed\n-- Performing Test CXX_SUPPORTS__WDUPLICATED_BRANCHES\n-- Performing Test CXX_SUPPORTS__WDUPLICATED_BRANCHES - Success\n-- Performing Test CXX_SUPPORTS__WDUPLICATED_COND\n-- Performing Test CXX_SUPPORTS__WDUPLICATED_COND - Success\n-- Performing Test CXX_SUPPORTS__WLOGICAL_OP\n-- Performing Test CXX_SUPPORTS__WLOGICAL_OP - Success\n-- Performing Test CXX_SUPPORTS__WOVERLOADED_VIRTUAL\n-- Performing Test CXX_SUPPORTS__WOVERLOADED_VIRTUAL - Success\n-- Performing Test CXX_SUPPORTS__WSUGGEST_OVERRIDE\n-- Performing Test CXX_SUPPORTS__WSUGGEST_OVERRIDE - Success\n-- Performing Test CXX_SUPPORTS__WIMPLICIT_FALLTHROUGH\n-- Performing Test CXX_SUPPORTS__WIMPLICIT_FALLTHROUGH - Success\n-- Performing Test CXX_SUPPORTS__WUNREACHABLE_CODE\n-- Performing Test CXX_SUPPORTS__WUNREACHABLE_CODE - Success\n-- Performing Test CXX_SUPPORTS__WDOCUMENTATION\n-- Performing Test CXX_SUPPORTS__WDOCUMENTATION - Failed\n-- Performing Test CXX_SUPPORTS__WSELF_ASSIGN\n-- Performing Test CXX_SUPPORTS__WSELF_ASSIGN - Failed\n-- Performing Test CXX_SUPPORTS__WBIDI_CHARS_ANY\n-- Performing Test CXX_SUPPORTS__WBIDI_CHARS_ANY - Success\n-- Performing Test CXX_SUPPORTS__WUNDEF\n-- Performing Test CXX_SUPPORTS__WUNDEF - Success\n-- Performing Test CXX_SUPPORTS__WLEADING_WHITESPACE_SPACES\n-- Performing Test CXX_SUPPORTS__WLEADING_WHITESPACE_SPACES - Failed\n-- Performing Test CXX_SUPPORTS__WTRAILING_WHITESPACE_ANY\n-- Performing Test CXX_SUPPORTS__WTRAILING_WHITESPACE_ANY - Failed\n-- Performing Test CXX_SUPPORTS__WUNUSED_PARAMETER\n-- Performing Test CXX_SUPPORTS__WUNUSED_PARAMETER - Success\n-- Performing Test CXX_SUPPORTS__FNO_EXTENDED_IDENTIFIERS\n-- Performing Test CXX_SUPPORTS__FNO_EXTENDED_IDENTIFIERS - Success\n-- Performing Test CXX_SUPPORTS__FMACRO_PREFIX_MAP_A_B\n-- Performing Test CXX_SUPPORTS__FMACRO_PREFIX_MAP_A_B - Success\n-- Performing Test CXX_SUPPORTS__FSTACK_REUSE_NONE\n-- Performing Test CXX_SUPPORTS__FSTACK_REUSE_NONE - Success\n-- Performing Test LINKER_SUPPORTS__FSTACK_REUSE_NONE\n-- Performing Test LINKER_SUPPORTS__FSTACK_REUSE_NONE - Success\n-- Performing Test CXX_SUPPORTS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_3_2d08\n-- Performing Test CXX_SUPPORTS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_3_2d08 - Success\n-- Performing Test LINKER_SUPPORTS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_3_2d08\n-- Performing Test LINKER_SUPPORTS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_3_2d08 - Success\n-- Performing Test CXX_SUPPORTS__WSTACK_PROTECTOR\n-- Performing Test CXX_SUPPORTS__WSTACK_PROTECTOR - Success\n-- Performing Test CXX_SUPPORTS__FSTACK_PROTECTOR_ALL\n-- Performing Test CXX_SUPPORTS__FSTACK_PROTECTOR_ALL - Success\n-- Performing Test LINKER_SUPPORTS__FSTACK_PROTECTOR_ALL\n-- Performing Test LINKER_SUPPORTS__FSTACK_PROTECTOR_ALL - Success\n-- Performing Test CXX_SUPPORTS__FCF_PROTECTION_FULL\n-- Performing Test CXX_SUPPORTS__FCF_PROTECTION_FULL - Success\n-- Performing Test LINKER_SUPPORTS__FCF_PROTECTION_FULL\n-- Performing Test LINKER_SUPPORTS__FCF_PROTECTION_FULL - Success\n-- Performing Test CXX_SUPPORTS__FSTACK_CLASH_PROTECTION\n-- Performing Test CXX_SUPPORTS__FSTACK_CLASH_PROTECTION - Success\n-- Performing Test LINKER_SUPPORTS__FSTACK_CLASH_PROTECTION\n-- Performing Test LINKER_SUPPORTS__FSTACK_CLASH_PROTECTION - Success\n-- Performing Test LINKER_SUPPORTS__WL___ENABLE_RELOC_SECTION\n-- Performing Test LINKER_SUPPORTS__WL___ENABLE_RELOC_SECTION - Failed\n-- Performing Test LINKER_SUPPORTS__WL___DYNAMICBASE\n-- Performing Test LINKER_SUPPORTS__WL___DYNAMICBASE - Failed\n-- Performing Test LINKER_SUPPORTS__WL___NXCOMPAT\n-- Performing Test LINKER_SUPPORTS__WL___NXCOMPAT - Failed\n-- Performing Test LINKER_SUPPORTS__WL___HIGH_ENTROPY_VA\n-- Performing Test LINKER_SUPPORTS__WL___HIGH_ENTROPY_VA - Failed\n-- Performing Test LINKER_SUPPORTS__WL__Z_RELRO\n-- Performing Test LINKER_SUPPORTS__WL__Z_RELRO - Success\n-- Performing Test LINKER_SUPPORTS__WL__Z_NOW\n-- Performing Test LINKER_SUPPORTS__WL__Z_NOW - Success\n-- Performing Test LINKER_SUPPORTS__WL__Z_SEPARATE_CODE\n-- Performing Test LINKER_SUPPORTS__WL__Z_SEPARATE_CODE - Success\n-- Found Python3: /usr/bin/python3 (found suitable version \"3.12.3\", minimum required is \"3.10\") found components: Interpreter\n-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE dot)\n-- Performing Test HAVE_BUILTIN_PREFETCH\n-- Performing Test HAVE_BUILTIN_PREFETCH - Success\n-- Performing Test HAVE_MM_PREFETCH\n-- Performing Test HAVE_MM_PREFETCH - Success\n-- Performing Test HAVE_SSE42\n-- Performing Test HAVE_SSE42 - Success\n-- Performing Test HAVE_ARM64_CRC32C\n-- Performing Test HAVE_ARM64_CRC32C - Failed\n-- Looking for F_FULLFSYNC\n-- Looking for F_FULLFSYNC - not found\n-- Performing Test HAVE_CLMUL\n-- Performing Test HAVE_CLMUL - Success\n-- Performing Test HAVE_PTHREAD_GETNAME_NP\n-- Performing Test HAVE_PTHREAD_GETNAME_NP - Success\n-- Performing Test HAVE_PTHREAD_THREADID_NP\n-- Performing Test HAVE_PTHREAD_THREADID_NP - Failed\n-- Performing Test HAVE_PTHREAD_GETTHREADID_NP\n-- Performing Test HAVE_PTHREAD_GETTHREADID_NP - Failed\n-- The C compiler identification is GNU 13.3.0\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n\nConfiguring secp256k1 subtree...\n-- Performing Test HAVE_X86_64_ASM\n-- Performing Test HAVE_X86_64_ASM - Success\n-- Could NOT find Valgrind (missing: Valgrind_INCLUDE_DIR Valgrind_WORKS)\n-- Performing Test C_SUPPORTS__WALL\n-- Performing Test C_SUPPORTS__WALL - Success\n-- Performing Test C_SUPPORTS__PEDANTIC\n-- Performing Test C_SUPPORTS__PEDANTIC - Success\n-- Performing Test C_SUPPORTS__WCAST_ALIGN\n-- Performing Test C_SUPPORTS__WCAST_ALIGN - Success\n-- Performing Test C_SUPPORTS__WCAST_ALIGN_STRICT\n-- Performing Test C_SUPPORTS__WCAST_ALIGN_STRICT - Success\n-- Performing Test C_SUPPORTS__WCONDITIONAL_UNINITIALIZED\n-- Performing Test C_SUPPORTS__WCONDITIONAL_UNINITIALIZED - Failed\n-- Performing Test C_SUPPORTS__WEXTRA\n-- Performing Test C_SUPPORTS__WEXTRA - Success\n-- Performing Test C_SUPPORTS__WLEADING_WHITESPACE_SPACES\n-- Performing Test C_SUPPORTS__WLEADING_WHITESPACE_SPACES - Failed\n-- Performing Test C_SUPPORTS__WNESTED_EXTERNS\n-- Performing Test C_SUPPORTS__WNESTED_EXTERNS - Success\n-- Performing Test C_SUPPORTS__WNO_LONG_LONG\n-- Performing Test C_SUPPORTS__WNO_LONG_LONG - Success\n-- Performing Test C_SUPPORTS__WNO_OVERLENGTH_STRINGS\n-- Performing Test C_SUPPORTS__WNO_OVERLENGTH_STRINGS - Success\n-- Performing Test C_SUPPORTS__WNO_UNUSED_FUNCTION\n-- Performing Test C_SUPPORTS__WNO_UNUSED_FUNCTION - Success\n-- Performing Test C_SUPPORTS__WRESERVED_IDENTIFIER\n-- Performing Test C_SUPPORTS__WRESERVED_IDENTIFIER - Failed\n-- Performing Test C_SUPPORTS__WSHADOW\n-- Performing Test C_SUPPORTS__WSHADOW - Success\n-- Performing Test C_SUPPORTS__WSTRICT_PROTOTYPES\n-- Performing Test C_SUPPORTS__WSTRICT_PROTOTYPES - Success\n-- Performing Test C_SUPPORTS__WTRAILING_WHITESPACE_ANY\n-- Performing Test C_SUPPORTS__WTRAILING_WHITESPACE_ANY - Failed\n-- Performing Test C_SUPPORTS__WUNDEF\n-- Performing Test C_SUPPORTS__WUNDEF - Success\n-- Looking for sys/types.h\n-- Looking for sys/types.h - found\n-- Looking for sys/wait.h\n-- Looking for sys/wait.h - found\n-- Looking for unistd.h\n-- Looking for unistd.h - found\n\nsecp256k1 configure summary\n===========================\nBuild artifacts:\n  library type ........................ Static\nOptional modules:\n  ECDH ................................ OFF\n  ECDSA pubkey recovery ............... ON\n  extrakeys ........................... ON\n  schnorrsig .......................... ON\n  musig ............................... ON\n  ElligatorSwift ...................... ON\nParameters:\n  ecmult window size .................. 15\n  ecmult gen table size ............... 86 KiB\nOptional features:\n  assembly ............................ x86_64\n  external callbacks .................. OFF\nOptional binaries:\n  benchmark ........................... OFF\n  noverify_tests ...................... ON\n  tests ............................... ON\n  exhaustive tests .................... ON\n  ctime_tests ......................... OFF\n  examples ............................ OFF\n\nCross compiling ....................... FALSE\nAPI visibility attributes ............. OFF\nValgrind .............................. OFF\nPreprocessor defined macros ........... ECMULT_WINDOW_SIZE=15 COMB_BLOCKS=43 COMB_TEETH=6 USE_ASM_X86_64=1\nC compiler ............................ GNU 13.3.0, /usr/bin/cc\nCFLAGS ................................\nCompile options ....................... -Wall -pedantic -Wcast-align -Wcast-align=strict -Wextra -Wnested-externs -Wno-long-long -Wno-overlength-strings -Wno-unused-function -Wshadow -Wstrict-prototypes -Wundef\nBuild type:\n - CMAKE_BUILD_TYPE ................... RelWithDebInfo\n - CFLAGS ............................. -O2 -g\n - LDFLAGS for executables ............\n - LDFLAGS for shared libraries .......\n\n-- Performing Test CXX_SUPPORTS__WUNIQUE_OBJECT_DUPLICATION\n-- Performing Test CXX_SUPPORTS__WUNIQUE_OBJECT_DUPLICATION - Failed\n\nConfigure summary\n=================\nExecutables:\n  bitcoin ............................. ON\n  bitcoind ............................ ON\n  bitcoin-node (multiprocess) ......... ON\n  bitcoin-qt (GUI) .................... ON\n  bitcoin-gui (GUI, multiprocess) ..... ON\n  bitcoin-cli ......................... ON\n  bitcoin-tx .......................... ON\n  bitcoin-util ........................ ON\n  bitcoin-wallet ...................... ON\n  bitcoin-chainstate (experimental) ... ON\n  libbitcoinkernel (experimental) ..... ON\n  kernel-test (experimental) .......... ON\nOptional features:\n  wallet support ...................... ON\n  external signer ..................... ON\n  ZeroMQ .............................. ON\n  IPC ................................. ON\n  Embedded ASMap ...................... ON\n  USDT tracing ........................ ON\n  QR code (GUI) ....................... ON\n  DBus (GUI) .......................... ON\nTests:\n  test_bitcoin ........................ ON\n  test_bitcoin-qt ..................... ON\n  bench_bitcoin ....................... ON\n  fuzz binary ......................... ON\n\nCross compiling ....................... FALSE\nC++ compiler .......................... GNU 13.3.0, /usr/bin/c++\nCMAKE_BUILD_TYPE ...................... RelWithDebInfo\nPreprocessor defined macros ...........\nC++ compiler flags .................... -O2 -g -std=c++20 -fPIC -fno-extended-identifiers -fmacro-prefix-map=/home/brandon-odiwuor/bitcoin/bitcoin/src=. -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter\nLinker flags .......................... -O2 -g -fstack-reuse=none -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie\n\nNOTE: The summary above may not exactly match the final applied build flags\n      if any additional CMAKE_* or environment variables have been modified.\n      To see the exact flags applied, build with the --verbose option.\n\nTreat compiler warnings as errors ..... OFF\nUse ccache for compiling .............. ON\n\n-- Configuring done (30.8s)\n-- Generating done (0.5s)\n-- Build files have been written to: /home/brandon-odiwuor/bitcoin/bitcoin/build_dev_mode\nbrandon-odiwuor@brandon-odiwuor-ubuntu:~/bitcoin/bitcoin$ ./contrib/devtools/check-deps.py build_dev_mode/\nWarning: targets not buildable: bitcoin_kernel\nSuccess! No unexpected dependencies detected.\n```"
  },
  {
   "t": "2026-05-01T20:46:59Z",
   "kind": "review",
   "who": "sedited",
   "assoc": "MEMBER",
   "state": "APPROVED",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "text": "Re-ACK 3c0e2f544ecc9097661baaac0ade1a4ea6ad6506"
  },
  {
   "t": "2026-05-20T13:24:27Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "@ryanofsky you might be interested in reviewing here?"
  },
  {
   "t": "2026-05-20T17:32:05Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "doc/design/libraries.md",
   "commit": "8a748323140425cb42ce7f036d1991f175148f4f",
   "in_reply_to": null,
   "text": "In commit \"doc: Update library dependencies\" (8a74832)\n\nThe dependency doesn't really make sense to add. Consensus library was meant to be a very minimal library and not need things in util.\n\nThere is no problem dropping this dependency for release builds, but for debug builds I needed to add a suppression for the `Assume` used in `merkle.cpp`, similar to the suppression the PR already adds for `muhash.cpp.o`:\n\nhttps://github.com/bitcoin/bitcoin/blob/9877c0983dfb4b856da33306276d67ced3f11614/contrib/devtools/check-deps.py#L30"
  },
  {
   "t": "2026-05-20T17:47:06Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "doc/design/libraries.md",
   "commit": "8a748323140425cb42ce7f036d1991f175148f4f",
   "in_reply_to": null,
   "text": "In commit \"doc: Update library dependencies\" (8a748323140425cb42ce7f036d1991f175148f4f)\n\nThese dependencies are not great to add, and it would be better to use suppressions instead. GUI code is meant to use `src/interfaces` classes to call node and wallet code. Or, in cases where common functions (like psbt functions) need to be shared by GUI/node/wallet libraries, they should be moved to `bitcoin_common`.\n\nGUI code calling node and wallet functions is a problem because it could indicate improper access to node/wallet internals, and create difficulties for other GUI's like the QML port. Also, the GUI should not depend on `bitcoin_cli` since it is not an RPC client.\n\nIn my branch I suggested keeping check-deps behavior unchanged and not checking `bitcoinqt` for now:\n\nhttps://github.com/bitcoin/bitcoin/blob/9877c0983dfb4b856da33306276d67ced3f11614/contrib/devtools/check-deps.py#L43-L47"
  },
  {
   "t": "2026-05-20T18:07:19Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "5d3c53858e4924ac17676fc6bbcc716abbb52036",
   "in_reply_to": null,
   "text": "In commit \"ci: Convert check-deps to python and use design doc dependencies directly\" (5d3c53858e4924ac17676fc6bbcc716abbb52036)\n\nNot important, but would be nice to drop this line so build progress is visible like in the previous script.\n\nAlternately if the goal is actually to suppress build output, maybe don't do it when --verbose is specified, and consider using `stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL` instead of capturing and later discarding."
  },
  {
   "t": "2026-05-20T18:13:48Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "contrib/devtools/check-deps.py",
   "commit": "5d3c53858e4924ac17676fc6bbcc716abbb52036",
   "in_reply_to": null,
   "text": "In commit \"ci: Convert check-deps to python and use design doc dependencies directly\" (5d3c53858e4924ac17676fc6bbcc716abbb52036)\n\nSince this is run in CI it doesn't seem good to silently just warn about targets that fail to build.\n\nIt also doesn't seem good to try to build targets that don't exist, like this currently does with `bitcoin_kernel`.\n\nIn my suggested branch, I skip building `bitcoin_kernel`:\n\nhttps://github.com/bitcoin/bitcoin/blob/9877c0983dfb4b856da33306276d67ced3f11614/contrib/devtools/check-deps.py#L37-L41\n\nand change both warnings about missing libraries to errors\n\nhttps://github.com/bitcoin/bitcoin/blob/9877c0983dfb4b856da33306276d67ced3f11614/contrib/devtools/check-deps.py#L194\n\nhttps://github.com/bitcoin/bitcoin/blob/9877c0983dfb4b856da33306276d67ced3f11614/contrib/devtools/check-deps.py#L219"
  },
  {
   "t": "2026-05-20T18:26:55Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "src/CMakeLists.txt",
   "commit": "9399bf309a69a05fb468603977d10a306bc6c2dd",
   "in_reply_to": null,
   "text": "In commit \"refactor: Move init/common.cpp to libbitcoin_node\" (9399bf309a69a05fb468603977d10a306bc6c2dd)\n\nI don't think it's good to remove `init/common.cpp` from libbitcoin_common and move it to libbitcoin_node, because this prevents binaries other than `bitcoind` from being able to call `StartLogging` and take advantage of logging.\n\nCurrently, we don't have other command line binaries that use logging, but in #30437 `StartLogging` is called to make IPC messages visible in the `bitcoin-mine` client, and in #10102 it is called from the `bitcoin-wallet` wallet subprocess to log wallet messages. Both of these PR's use aa78d98d82c67c3eb479e7589525678ac369c308, which basically does the opposite of this commit, moving the depended-on file from libbitcoin_node to libbitcoin_common instead of the other way around.\n\nSo suggestion here is just to replace this commit with aa78d98d82c67c3eb479e7589525678ac369c308"
  },
  {
   "t": "2026-05-20T18:43:23Z",
   "kind": "review",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "state": "APPROVED",
   "commit": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
   "text": "Code review 3c0e2f544ecc9097661baaac0ade1a4ea6ad6506 and concept ACK.\n\nThese are very nice changes. It's a great idea to parse dependencies from libraries.md, and to not require manually listing transitive dependencies.\n\nIn theory, there could be cases where we might not want to allow transitive dependencies, but if you look at the list of implicit dependencies which are newly allowed as a result of this PR, they all seem acceptable even if they are unnecessary:\n\n```\nImplicit transitive dependencies (allowed transitively, not declared directly):\n  bitcoin_cli -> bitcoin_consensus\n  bitcoin_cli -> bitcoin_crypto\n  bitcoin_wallet -> bitcoin_consensus\n```\n\nI do think there are some changes that should be made to this PR before it is merged. I left various comments below with suggestions, and also applied all the suggestions in a branch you should feel free to use: https://github.com/ryanofsky/bitcoin/commits/pr/dep2"
  },
  {
   "t": "2026-05-21T11:34:33Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "doc/design/libraries.md",
   "commit": "8a748323140425cb42ce7f036d1991f175148f4f",
   "in_reply_to": 3275886532,
   "text": "[quoted text omitted]\n\nNo strong opinion on the implementation details, but I think devs should be able to use Assume/Assert or other low-level utils in consensus. Also linking to your earlier comment https://github.com/bitcoin/bitcoin/pull/34520#discussion_r3051461827:\n\n[quoted text omitted]\n:sweat_smile:\n\n[quoted text omitted]\nSeems fine, if those are meant as temporary suppressions, with the goal of fixing it with a proper dependency in one way or another."
  },
  {
   "t": "2026-05-21T14:49:57Z",
   "kind": "review_comment",
   "who": "ryanofsky",
   "assoc": "MEMBER",
   "path": "doc/design/libraries.md",
   "commit": "8a748323140425cb42ce7f036d1991f175148f4f",
   "in_reply_to": 3275886532,
   "text": "On the earlier comment, just because something isn't harmful doesn't make it a good idea.\n\nTo fix the suppression, I'd be most inclined to switch from `Assume` to assert, or maybe just make the consensus code part of kernel if there is no longer a clear distinction between consensus & kernel libraries. Different approaches seem fine though."
  },
  {
   "t": "2026-07-04T09:15:05Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "@ajtowns there's been some pending review here for a while. Can you follow up on the comments and questions? I still think the changes here are basically fine as is, but it might give other reviewers more confidence if the pending questions are answered."
  }
 ],
 "labels_log": [
  {
   "t": "2026-09-09T11:47:19Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  }
 ],
 "state_log": [],
 "text_chars": 38378,
 "text_tokens_estimate": 9594,
 "changed_paths": [
  "ci/test/03_test_script.sh",
  "contrib/devtools/check-deps.py",
  "contrib/devtools/check-deps.sh",
  "doc/design/libraries.md",
  "src/CMakeLists.txt"
 ],
 "files": [
  {
   "path": "ci/test/03_test_script.sh",
   "add": 1,
   "del": 1
  },
  {
   "path": "contrib/devtools/check-deps.py",
   "add": 290,
   "del": 0
  },
  {
   "path": "contrib/devtools/check-deps.sh",
   "add": 0,
   "del": 197
  },
  {
   "path": "doc/design/libraries.md",
   "add": 4,
   "del": 20
  },
  {
   "path": "src/CMakeLists.txt",
   "add": 1,
   "del": 1
  }
 ],
 "test_lines": 489,
 "git": {
  "head": "3c0e2f544ecc9097661baaac0ade1a4ea6ad6506",
  "head_matches_backup": true,
  "base": "a7bea426b4a155f4cf29572fcc51caf12b4992df",
  "commits": [
   {
    "sha": "8a74832314",
    "subject": "doc: Update library dependencies",
    "files": 1,
    "add": 4,
    "del": 0
   },
   {
    "sha": "5d3c53858e",
    "subject": "ci: Convert check-deps to python and use design doc dependencies directly",
    "files": 3,
    "add": 295,
    "del": 198
   },
   {
    "sha": "9399bf309a",
    "subject": "refactor: Move init/common.cpp to libbitcoin_node",
    "files": 2,
    "add": 1,
    "del": 5
   },
   {
    "sha": "3c0e2f544e",
    "subject": "doc: Drop transitive lib dependencies and lib wallet-tool",
    "files": 1,
    "add": 0,
    "del": 20
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "3ce407073cd0af62",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}