{
 "number": 35395,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35395",
 "title": "doc: Improve test suite dependencies documentation",
 "author": "hebasto",
 "author_association": "MEMBER",
 "created_at": "2026-05-27T13:28:24Z",
 "updated_at": "2026-09-03T15:51:21Z",
 "age_days": 113,
 "draft": false,
 "labels": [
  "Docs",
  "Tests"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "22230f49f02b99be7077d6c52a775c322049903c",
 "head_ref": "260527-ft-needed",
 "head_repo": "hebasto/bitcoin",
 "head_history": [
  {
   "t": "2026-07-06T12:25:39Z",
   "sha": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425"
  },
  {
   "t": "2026-07-06T16:08:55Z",
   "sha": "c14f888996d45bc60af4a9e7023d836dff66bcb9"
  },
  {
   "t": "2026-09-02T11:39:36Z",
   "sha": "22230f49f02b99be7077d6c52a775c322049903c"
  }
 ],
 "additions": 40,
 "deletions": 67,
 "changed_files": 7,
 "commit_count": 3,
 "size_bucket": "M",
 "mergeable_state": "clean",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "l0rinc",
      "url": "https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4582814883"
     }
    ],
    "stale_ack": [
     {
      "login": "maflcko",
      "url": "https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4900752426"
     }
    ]
   },
   "conflicts": [
    {
     "number": 35762,
     "title": "test: optionally run functional tests via CTest",
     "author": "willcl-ark"
    }
   ]
  }
 },
 "acks_parsed": {},
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 0,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "fanquake",
   "l0rinc",
   "maflcko",
   "sedited"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "clean",
  "last_author_activity": "2026-09-02T11:56:00Z",
  "last_reviewer_activity": "2026-08-27T12:21:10Z",
  "last_reviewer": "sedited",
  "author_silent_days": 15,
  "waiting_on_author_days": 0,
  "days_since_update": 14
 },
 "refs": {
  "mentioned": [
   33201,
   34256
  ],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [
   {
    "number": 33201,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2025-09-05",
    "title": "Add functional test for IPC interface"
   },
   {
    "number": 34256,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-04-30",
    "title": "test: support `get_bind_addrs` and `feature_bind_extra` on macOS & BSD"
   }
  ],
  "conflicts": [
   35762
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [
  "doc/build-freebsd.md",
  "doc/build-unix.md",
  "test/README.md"
 ],
 "body": "The current documentation has multiple issues:\n1. OS-specific notes are missing for the `pycapnp` module.\n2. `python3-zmq` is a package name in some Linux distros, rather than a Unix-wide convention.\n3. Installing `pyzmq` from PyPI works in general, not only on macOS.\n\nThis PR resolves these issues. Additionally, two minor improvements have been added (see commit messages).",
 "commits": [
  {
   "sha": "b51979ea7f6f39c0e22ef722557da7a35657f26f",
   "date": "2026-09-02T10:04:19Z",
   "message": "doc: Fix header formatting in `test/README.md`"
  },
  {
   "sha": "39502b49b27ace1ffd27e9c5a28c8a97673b69c7",
   "date": "2026-09-02T10:04:27Z",
   "message": "doc: Improve Python UTF-8 mode note\n\nAdditionally, switch the example code to PowerShell to match our other\nWindows docs."
  },
  {
   "sha": "22230f49f02b99be7077d6c52a775c322049903c",
   "date": "2026-09-02T11:38:58Z",
   "message": "doc: Unify Python optional module and test dependency documentation\n\nThe current documentation combine two different approaches: OS-specific\nnotes and OS-agnostic Python-specific notes. This has multiple issues:\n1. OS-specific notes miss the `pycapnp` module.\n2. `python3-zmq` is a package name in some Linux distros, rather than a\nUnix-wide convention.\n3. Installing `pyzmq` from PyPI works in general, not only on macOS.\n\nAs the functional test framework is Python-based, this consolidates\nthe documentation in Python-focused notes fixing the mentioned issues."
  }
 ],
 "timeline": [
  {
   "t": "2026-05-27T13:34:06Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Looks like you've just removed immediately usable OS specific instructions, and replaced them with general ones, just forcing devs to go and find the same info? i.e currently a FreeBSD dev could just copy `pkg install python3 databases/py-sqlite3 net/py-pyzmq`, now they'd have to go and find the package names themselves?"
  },
  {
   "t": "2026-05-27T14:40:51Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThat's correct, it is a trade-off. While it does require a quick search from the developer, the alternative is duplicating every dependency instruction across all OS-specific notes, e.g., `pkg install lsof` or `pip3 install pycapnp`. As we saw with recent updates (#33201 and #34256), trying to maintain exact, OS-specific package names quickly becomes a fragile approach."
  },
  {
   "t": "2026-05-28T09:28:53Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nNot sure I agree. That's what we do in the rest of the build documentation, and it seems to work fine."
  },
  {
   "t": "2026-05-28T10:37:23Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "I haven't looked, but are the bsd docs largely different? if not, maybe they can be merged into a single `build-bsd.md` in the style of `build-unix.md` from https://github.com/bitcoin/bitcoin/pull/35402?\n\nGoing further, maybe we can just merge build-bsd.md and build-unix.md into a single `build.md` (and only keep build-osx and build-windows), or possibly merge even them into a separate section in a general build.md file?"
  },
  {
   "t": "2026-05-30T12:28:20Z",
   "kind": "comment",
   "who": "l0rinc",
   "assoc": "MEMBER",
   "text": "Thanks for documenting these, concept ACK"
  },
  {
   "t": "2026-06-10T14:30:18Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": null,
   "text": "If FreeBSD is the only one sticking out here, it would be fine to briefly mention `databases/py-sqlite3` for FreeBSD, but not strong opinion."
  },
  {
   "t": "2026-06-10T14:34:43Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425",
   "in_reply_to": null,
   "text": "Maybe add a sentence that the docs here only mention the pip package names, which can be installed via the system package manager (if they are offered), or via pip in a venv, or uv, or any other choice the user prefers?"
  },
  {
   "t": "2026-06-10T14:37:48Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": null,
   "text": "Do we recall why this was needed and if it is still needed? If not, it can be removed?"
  },
  {
   "t": "2026-06-10T14:43:19Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": null,
   "text": "Can be removed after 8bfb422de83654c18cd341de8eb8e5351959d998 ?"
  },
  {
   "t": "2026-06-10T14:44:58Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "doc/build-freebsd.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": null,
   "text": "nit in 807b77cc978d44a4b22267473283b4de6c43b62f: When adding those to *bsd.md, why not add them to *unix.md as well?"
  },
  {
   "t": "2026-06-10T14:49:50Z",
   "kind": "review",
   "who": "maflcko",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "61226c09c137cc552976cbc86fb69da3c12fc295",
   "text": "lgtm, just some nits\n\nreview ACK 61226c09c137cc552976cbc86fb69da3c12fc295 \ud83d\udc21\n\nShow signature\n\nSignature:\n\n```\nuntrusted comment: signature from minisign secret key on empty file; verify via: minisign -Vm \"${path_to_any_empty_file}\" -P RWTRmVTMeKV5noAMqVlsMugDDCyyTSbA3Re5AkUrhvLVln0tSaFWglOw -x \"${path_to_this_whole_four_line_signature_blob}\"\nRUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=\ntrusted comment: review ACK 61226c09c137cc552976cbc86fb69da3c12fc295 \ud83d\udc21\nsGJAuu2CrT3orY5rhqcct7ih5+h56G7KQYBzbPy1/WlHTDbf5BUktHfI2CcZB/tFBpFEXYbMTBukQf2RhFZLDQ==\n```"
  },
  {
   "t": "2026-06-15T15:15:53Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": 3389244121,
   "text": "(Happy to address the nits here in a separate pull, as they are somewhat unrelated)"
  },
  {
   "t": "2026-06-15T15:23:25Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": 3389244121,
   "text": "[quoted text omitted]\n\nGo for it :)"
  },
  {
   "t": "2026-06-16T08:35:59Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": 3389244121,
   "text": "Actually, I think this refers to running tests individually, not to running the tests with the test_runner, so the docs here still apply and can be kept for now.\n\nFeel free to resolve this thread and push your rebase, with or without the other nits. Happy to re-ack either way."
  },
  {
   "t": "2026-07-06T09:54:48Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "@hebasto  rebase ping :pray:"
  },
  {
   "t": "2026-07-06T12:25:39Z",
   "kind": "force_push",
   "who": "hebasto",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425"
  },
  {
   "t": "2026-07-06T12:26:59Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Rebased and addressed some of the feedback."
  },
  {
   "t": "2026-07-06T12:27:25Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389152071,
   "text": "[Done](https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4892765036)."
  },
  {
   "t": "2026-07-06T12:28:59Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425",
   "in_reply_to": 3389183261,
   "text": "Would you mind suggesting the exact wording?"
  },
  {
   "t": "2026-07-06T12:29:34Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "I'm going to test a few platforms."
  },
  {
   "t": "2026-07-06T12:30:45Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "doc/build-freebsd.md",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c",
   "in_reply_to": 3389256549,
   "text": "Thanks! [Done](https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4892765036)."
  },
  {
   "t": "2026-07-06T15:18:54Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "4f6aa41e4b4219b56842cad7120f5289dbbede40",
   "in_reply_to": null,
   "text": "nit in 4f6aa41e4b4219b56842cad7120f5289dbbede40: Bad rebase?"
  },
  {
   "t": "2026-07-06T15:42:14Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425",
   "in_reply_to": 3389183261,
   "text": "Maybe this?\n\n```\nThe optional modules can be installed with any suitable tool, like the system package manager, `pip` in a virtual environment, or `uv`."
  },
  {
   "t": "2026-07-06T15:42:45Z",
   "kind": "review",
   "who": "maflcko",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425",
   "text": "only change is rebase.\n\nre-ACK 0e1e0d1d8573a581b7d0a61a5d9fef1525723425 \ud83d\udde8\n\nShow signature\n\nSignature:\n\n```\nuntrusted comment: signature from minisign secret key on empty file; verify via: minisign -Vm \"${path_to_any_empty_file}\" -P RWTRmVTMeKV5noAMqVlsMugDDCyyTSbA3Re5AkUrhvLVln0tSaFWglOw -x \"${path_to_this_whole_four_line_signature_blob}\"\nRUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=\ntrusted comment: re-ACK 0e1e0d1d8573a581b7d0a61a5d9fef1525723425 \ud83d\udde8\nUhvUQl8X2jK/OK1ddcEmHhM2trWYI6rIKsc7KWTLBfbbzbC1t9KuP93GspZStR9Zhtln5586PX7w4dscaT2+Bw==\n```"
  },
  {
   "t": "2026-07-06T16:08:55Z",
   "kind": "force_push",
   "who": "hebasto",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9"
  },
  {
   "t": "2026-07-06T16:10:41Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Thanks @maflcko for the review.\n\nYour recent feedback has been addressed."
  },
  {
   "t": "2026-07-06T16:10:59Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "4f6aa41e4b4219b56842cad7120f5289dbbede40",
   "in_reply_to": 3530013134,
   "text": "Thanks! [Fixed](https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4895004650)."
  },
  {
   "t": "2026-07-06T16:11:25Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "0e1e0d1d8573a581b7d0a61a5d9fef1525723425",
   "in_reply_to": 3389183261,
   "text": "Thanks! [Reworked](https://github.com/bitcoin/bitcoin/pull/35395#issuecomment-4895004650)."
  },
  {
   "t": "2026-07-07T06:17:17Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "Thx. Still curious about the pip error (https://github.com/bitcoin/bitcoin/pull/35395/changes/e25d9c8addd5ff489a7dac8b767e7901a5359f49#r3389204933), but this seems pre-existing and orthogonal.\n\nreview ACK c14f888996d45bc60af4a9e7023d836dff66bcb9 \ud83c\udfe3\n\nShow signature\n\nSignature:\n\n```\nuntrusted comment: signature from minisign secret key on empty file; verify via: minisign -Vm \"${path_to_any_empty_file}\" -P RWTRmVTMeKV5noAMqVlsMugDDCyyTSbA3Re5AkUrhvLVln0tSaFWglOw -x \"${path_to_this_whole_four_line_signature_blob}\"\nRUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=\ntrusted comment: review ACK c14f888996d45bc60af4a9e7023d836dff66bcb9 \ud83c\udfe3\nTcQoY0WUul655XhC3MTHu6HevFIlTp+ndnyWgNaK6Mkrv6d/E+roJXDdFPCji6aVMYBoKpRYWQXTeEumDrVYCA==\n```"
  },
  {
   "t": "2026-07-07T15:12:20Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "The package installation via `pip` works flawlessly: https://github.com/hebasto/github-actions/actions/runs/28876798270."
  },
  {
   "t": "2026-07-07T15:16:48Z",
   "kind": "review_comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "Should we remove the instructions then?"
  },
  {
   "t": "2026-07-07T16:11:36Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "Yeah, should be fine to remove in a new commit. If it is ever needed in the future, it will be trivial to revert that commit."
  },
  {
   "t": "2026-07-08T10:54:50Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "On my local NetBSD 10.1, `pip3 install pycapnp` works just fine. However, on the [same OS in the CI](https://github.com/hebasto/bitcoin-core-nightly/pull/300), a quirk is necessary:\n```console\nCXXFLAGS=\"-DKJ_NO_EXCEPTIONS=0\" pip3.13 install pycapnp\n```\nI'm fine with that for the following reasons:\n1. The same quirk is already used to [build](https://github.com/hebasto/bitcoin-core-nightly/blob/ef17ea7ff5f0d0107c25a2313e02e7043141a654/.github/workflows/netbsd.yml#L70-L91) the `capnp` package.\n2. It won't be needed on NetBSD 11.0."
  },
  {
   "t": "2026-07-08T11:01:41Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "Interesting. Though, I presume a NetBSD 10.1 error wasn't the reason why the section was originally added?\n\nAlso, I wonder if installing from source also requires enabling exceptions, or if this is just a pip package and NetBSD-package thing on NetBSD 10.1?\n\nAlso, I wonder what the error message is in case exceptions are disabled. If the error message literally says to set `CXXFLAGS=\"-DKJ_NO_EXCEPTIONS=0\"`, then it seems fine to just let the error message do the heavy lifting here instead of adding it to the docs?"
  },
  {
   "t": "2026-07-08T11:02:55Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": null,
   "text": "What's the point of this sentence?"
  },
  {
   "t": "2026-07-08T11:03:14Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389152071,
   "text": "[quoted text omitted]\n\nIt isn't. I still don't quite understand how removing working instructions is an \"improvement\", especially given the rationale is that it's impossible to maintain individual package names (even though we do it everywhere else just fine)."
  },
  {
   "t": "2026-07-08T11:05:35Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3543382826,
   "text": "It's not available on OpenBSD."
  },
  {
   "t": "2026-07-08T11:06:43Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "doc/build-unix.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": null,
   "text": "Now users building from source, who copy-paste the required deps from here, will get spurious warnings about a missing Python. That seems a bit worse than no warnings in the average case?"
  },
  {
   "t": "2026-07-08T11:12:27Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389152071,
   "text": "[quoted text omitted]\n\nI'm open to alternative suggestions on how to fix the issues mentioned in the PR description in way that prevents documentation from rotting in the future."
  },
  {
   "t": "2026-07-08T11:15:45Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "doc/build-unix.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3543405166,
   "text": "Fair point."
  },
  {
   "t": "2026-07-08T11:35:56Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "Here are more details: https://github.com/bitcoin-core/libmultiprocess/pull/196#issuecomment-3684300640."
  },
  {
   "t": "2026-07-08T12:06:00Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389152071,
   "text": "I don't mind either way. Just listing the Pip names is fine, or listing all.\n\nIf all should be listed, it can be done with a compact markdown table, like:\n\n```\n| Dependency | Python | zmq | capnp | sqlite3 |\n| :--- | :--- | :--- | :--- | :--- |\n| **Pip** | n/a | `pyzmq` | `pycapnp` | n/a |\n| **Ubuntu/Debian** | `python3` | `python3-zmq` | n/a | n/a |\n| **FreeBSD** | `python3` | `net/py-pyzmq` | n/a | `databases/py-sqlite3` |\n| **NetBSD** | `python313` | `py313-zmq` | n/a | n/a |\n| **OpenBSD** | `python` | `py3-zmq` | n/a | n/a |\n```\n\nRendered:\n\n| Test dependency | Python | zmq | capnp | sqlite3 |\n| :--- | :--- | :--- | :--- | :--- |\n| **Pip** | n/a | `pyzmq` | `pycapnp` | n/a |\n| **Ubuntu/Debian** | `python3` | `python3-zmq` | n/a | n/a |\n| **FreeBSD** | `python3` | `net/py-pyzmq` | n/a | `databases/py-sqlite3` |\n| **NetBSD** | `python313` | `py313-zmq` | n/a | n/a |\n| **OpenBSD** | `python` | `py3-zmq` | n/a | n/a |"
  },
  {
   "t": "2026-07-09T14:04:21Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389204933,
   "text": "On OpenBSD, the situation is even [uglier](https://github.com/hebasto/bitcoin-core-nightly/blob/443a32d692134943822172301636c15e77373d43/.github/workflows/openbsd.yml#L171-L186) than on NetBSD:\n```yaml\n          # The system's `capnproto` package ships static libraries\n          # built without -fPIC, causing relocation errors when linking\n          # pycapnp's shared extension module.\n          #\n          # A two-part workaround is applied:\n          #  1. Force building the bundled libcapnp, which is compiled\n          #     with -fPIC.\n          #  2. Override LDCXXSHARED to drop the -L/usr/local/lib/ that\n          #     Python's sysconfig injects ahead of the bundled library\n          #     directories, and which would otherwise resolve -lcapnp*\n          #     and -lkj* to the system's static archives.\n          if pkg_info -e 'capnproto-*'; then\n            LDCXXSHARED=\"c++ -pthread -shared -fPIC\" pip3 install --break-system-packages pycapnp -C force-bundled-libcapnp=True\n          else\n            pip3 install --break-system-packages pycapnp\n          fi\n```\n\nHowever, our current docs don't seem helpful for either NetBSD or OpenBSD users."
  },
  {
   "t": "2026-08-27T12:21:10Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "@hebasto rebase ping."
  },
  {
   "t": "2026-09-02T11:39:36Z",
   "kind": "force_push",
   "who": "hebasto",
   "commit": "22230f49f02b99be7077d6c52a775c322049903c"
  },
  {
   "t": "2026-09-02T11:53:24Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "test/README.md",
   "commit": "c14f888996d45bc60af4a9e7023d836dff66bcb9",
   "in_reply_to": 3389152071,
   "text": "Thanks! Reworked."
  },
  {
   "t": "2026-09-02T11:56:00Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Rebased and reworked to address the reviewers' feedback. Please let me know if I've left any comments unaddressed."
  }
 ],
 "labels_log": [
  {
   "t": "2026-05-27T13:28:26Z",
   "action": "labeled",
   "label": "Docs",
   "who": "hebasto"
  },
  {
   "t": "2026-05-27T13:28:26Z",
   "action": "labeled",
   "label": "Tests",
   "who": "hebasto"
  },
  {
   "t": "2026-06-15T14:20:08Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-06T13:48:34Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-04T16:08:20Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-02T11:50:24Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2026-06-15T14:43:12Z",
   "kind": "convert_to_draft",
   "who": "hebasto"
  },
  {
   "t": "2026-07-06T16:09:50Z",
   "kind": "ready_for_review",
   "who": "hebasto"
  }
 ],
 "text_chars": 10682,
 "text_tokens_estimate": 2670,
 "changed_paths": [
  "doc/build-freebsd.md",
  "doc/build-netbsd.md",
  "doc/build-openbsd.md",
  "doc/build-osx.md",
  "doc/build-unix.md",
  "doc/build-windows-msvc.md",
  "test/README.md"
 ],
 "files": [
  {
   "path": "doc/build-freebsd.md",
   "add": 1,
   "del": 6
  },
  {
   "path": "doc/build-netbsd.md",
   "add": 1,
   "del": 13
  },
  {
   "path": "doc/build-openbsd.md",
   "add": 1,
   "del": 5
  },
  {
   "path": "doc/build-osx.md",
   "add": 1,
   "del": 6
  },
  {
   "path": "doc/build-unix.md",
   "add": 4,
   "del": 0
  },
  {
   "path": "doc/build-windows-msvc.md",
   "add": 2,
   "del": 8
  },
  {
   "path": "test/README.md",
   "add": 30,
   "del": 29
  }
 ],
 "test_lines": 59,
 "git": {
  "head": "22230f49f02b99be7077d6c52a775c322049903c",
  "head_matches_backup": true,
  "base": "6f6b2bbde244ba205699cf2fc0d50d392842eec0",
  "commits": [
   {
    "sha": "b51979ea7f",
    "subject": "doc: Fix header formatting in `test/README.md`",
    "files": 1,
    "add": 10,
    "del": 10
   },
   {
    "sha": "39502b49b2",
    "subject": "doc: Improve Python UTF-8 mode note",
    "files": 1,
    "add": 7,
    "del": 3
   },
   {
    "sha": "22230f49f0",
    "subject": "doc: Unify Python optional module and test dependency documentation",
    "files": 7,
    "add": 24,
    "del": 55
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "6f914ee9d66de565",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}