{
 "number": 25573,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/25573",
 "title": "guix: produce a `-static-pie` bitcoind",
 "author": "fanquake",
 "author_association": "MEMBER",
 "created_at": "2022-07-08T16:49:48Z",
 "updated_at": "2026-09-16T13:35:08Z",
 "age_days": 1531,
 "draft": false,
 "labels": [
  "Build system"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "804b126f093c5f3aad35e2a20ec2f6d77c291eeb",
 "head_ref": "fully_static_bitcoind",
 "head_repo": "fanquake/bitcoin",
 "head_history": [
  {
   "t": "2022-07-13T17:44:50Z",
   "sha": "26c437e5b37a6bb20a24294db6f6d54e2c4438bd"
  },
  {
   "t": "2022-07-14T10:41:06Z",
   "sha": "8cccf45444f4d1331845a73932ff81300c9d19a5"
  },
  {
   "t": "2022-07-19T16:27:18Z",
   "sha": "caa066465973fab5e22218b8117440b08c607158"
  },
  {
   "t": "2022-08-05T08:35:01Z",
   "sha": "ef0edd55f3bc1e3f229134ec7ecac632de52eea7"
  },
  {
   "t": "2022-08-24T15:33:33Z",
   "sha": "6e63e75a243881dcff4334bc39129f18c582b159"
  },
  {
   "t": "2022-09-05T16:54:17Z",
   "sha": "b49c0bae9f5a759672e31ec108386aae80d69d8f"
  },
  {
   "t": "2022-09-07T13:07:45Z",
   "sha": "0acb0b0ae474b4237b2ea1fc0d3aa7ca9521ea15"
  },
  {
   "t": "2022-09-13T11:21:38Z",
   "sha": "07fd1470295c4e1e6ce7ffeaa7b49e8de74adbc0"
  },
  {
   "t": "2023-01-13T10:44:23Z",
   "sha": "361177ff0f19728325e15664eb2ec1c5d22b3cd7"
  },
  {
   "t": "2023-01-25T09:41:30Z",
   "sha": "dd558c82c8c742866d10d5995ebf8977a1ccc342"
  },
  {
   "t": "2023-02-17T11:15:45Z",
   "sha": "a4ac3aa5cc0a261f3367f76519f91063e4ca4fbf"
  },
  {
   "t": "2023-02-17T11:18:56Z",
   "sha": "f3faa76e95ed76e5e0e89c7f3adc6f5d4ddb6486"
  },
  {
   "t": "2023-03-27T16:44:30Z",
   "sha": "eb6823aa2b910d013b7239b379b7ea6ba1777b65"
  },
  {
   "t": "2023-05-22T10:00:41Z",
   "sha": "14324e2b1676245505072426f181c9c6b8a9b119"
  },
  {
   "t": "2023-06-30T08:52:19Z",
   "sha": "cb6d757ab52ec57446ea2337706ad2dfb376ce74"
  },
  {
   "t": "2023-08-23T13:38:51Z",
   "sha": "efd1041ee07c7bfa2da6af2cabe7ea4495c4e291"
  },
  {
   "t": "2023-08-24T10:37:55Z",
   "sha": "61c8e7249b19ded77db4835f91e51f2266105f67"
  },
  {
   "t": "2023-08-26T08:06:22Z",
   "sha": "90a1d4f8594738616403526455f5aed56fac0ce5"
  },
  {
   "t": "2023-08-27T14:16:44Z",
   "sha": "3434d14820701977d1028098ed6967b164f1cd61"
  },
  {
   "t": "2023-09-08T11:16:20Z",
   "sha": "a50f29fdd29b1aa0d6843a1d0b8fc026640d2bdc"
  },
  {
   "t": "2023-11-13T10:16:18Z",
   "sha": "3051d37cc0fd6444517e0539d9132ffb490090b8"
  },
  {
   "t": "2024-01-16T11:40:22Z",
   "sha": "86e6eb474a711aaf1ca6322f9103a992774ad616"
  },
  {
   "t": "2024-02-16T14:54:41Z",
   "sha": "0cf3c2bcbf1e2a933d5190fe10aab77fe293435d"
  },
  {
   "t": "2024-03-15T17:16:45Z",
   "sha": "054894f89493f6e21e57ec5c21efc02b24dea1f9"
  },
  {
   "t": "2024-03-26T13:54:35Z",
   "sha": "a4c5193db8e3d1b914ce7e4a5b014190ed166d15"
  },
  {
   "t": "2024-04-15T13:32:20Z",
   "sha": "d73587b725c2c8556333b7da0a847a0f6531078d"
  },
  {
   "t": "2024-05-02T03:41:39Z",
   "sha": "c9541a62261d7d3f75fc98582ff26c7f9692e35b"
  },
  {
   "t": "2024-07-01T17:00:25Z",
   "sha": "c31bc451f8ffec8b1ef6cee9477bdb7fbd6c8808"
  },
  {
   "t": "2024-07-01T17:05:28Z",
   "sha": "daa40e30d2994fd3b35554ef1128e77e649a9de9"
  },
  {
   "t": "2024-07-25T11:44:31Z",
   "sha": "0bef12524c3bfc56604e9b68a71985ca9ce2c2d5"
  },
  {
   "t": "2024-08-28T16:00:48Z",
   "sha": "f65aa9b2f0f7feb9ad7c726d9d4e00f56eefd296"
  },
  {
   "t": "2024-09-19T11:31:59Z",
   "sha": "60289cd0b7e70e56535daab955c15e1f4d63221a"
  },
  {
   "t": "2025-01-20T17:00:52Z",
   "sha": "182a49fd29194296ce8d71b0aafa445f11aabbc2"
  },
  {
   "t": "2025-02-05T11:34:25Z",
   "sha": "62de794f1328b6d1de0db724052f9b644aa2051a"
  },
  {
   "t": "2025-02-12T09:51:03Z",
   "sha": "0d34d133a46e986de3e9bf07cc00969aefe0ea9a"
  },
  {
   "t": "2025-02-19T20:40:47Z",
   "sha": "80a9ee00450c072a1ca505a99ba7024a3a318dfd"
  },
  {
   "t": "2025-02-27T14:40:12Z",
   "sha": "41720e2e263b92b2ca3377a671c1cc8d07befe85"
  },
  {
   "t": "2025-03-12T03:36:13Z",
   "sha": "550bb0d8ff52123c67edc5c434cc57fb8d1d8416"
  },
  {
   "t": "2025-03-20T06:21:44Z",
   "sha": "d657be0adf1af184f3dac8c11ead3003fe6b7cd0"
  },
  {
   "t": "2025-04-11T13:53:52Z",
   "sha": "e881c8c7090b956aac5d88e740875e7535af2c8b"
  },
  {
   "t": "2025-05-12T18:52:23Z",
   "sha": "9c7154ab236f29e28ede9415e5f5ee5280b7b81d"
  },
  {
   "t": "2025-05-14T16:06:48Z",
   "sha": "74e927fbdbf134a7dda59c37101018a98ec2bf7b"
  },
  {
   "t": "2025-05-14T16:08:31Z",
   "sha": "5959093d519db517e03ac73432e75fa9c28dbb0d"
  },
  {
   "t": "2025-05-28T10:03:00Z",
   "sha": "e7bdb2b2db2b90e227b97676057a6721eaf3bc48"
  },
  {
   "t": "2025-06-11T14:03:35Z",
   "sha": "fa0d534df6740d8e160285282a9a46acc9f30f49"
  },
  {
   "t": "2025-10-28T12:33:05Z",
   "sha": "eaf0751a4cf68b02c635bd04d222a24da053bfdb"
  },
  {
   "t": "2025-10-28T13:09:26Z",
   "sha": "4f04b8645aaa3bf0f741fe02583e15106e35b4b8"
  },
  {
   "t": "2025-10-29T15:31:36Z",
   "sha": "9fa45c3851a1bf5b00d3cd34bbb543232e1b05fd"
  },
  {
   "t": "2025-10-29T16:55:22Z",
   "sha": "d7a7b785f6e02be0a8aaf8688a6739c40f204b4b"
  },
  {
   "t": "2025-11-04T16:10:52Z",
   "sha": "23d30e9d16e94203cf23718b3cd5dbf30098f948"
  },
  {
   "t": "2025-11-05T11:30:16Z",
   "sha": "59722602ce7bdc9582fdd25ed25f974b6987a818"
  },
  {
   "t": "2025-11-05T14:48:14Z",
   "sha": "d7bab7601145d6b5fb2793ddb689e08a61fe3f19"
  },
  {
   "t": "2025-11-06T16:07:07Z",
   "sha": "cad086763ee762f69e3ffab2fa798e9382ecc083"
  },
  {
   "t": "2025-11-11T11:28:16Z",
   "sha": "597b5296d3adc693001ce39626fe32b9545eb604"
  },
  {
   "t": "2025-11-12T16:32:04Z",
   "sha": "2dda3bdd02ae6f5b024f34b82ea898c9f415e83c"
  },
  {
   "t": "2025-11-14T13:30:37Z",
   "sha": "b374abcd4624fba40994f483c888fa95669781c6"
  },
  {
   "t": "2025-11-17T11:13:22Z",
   "sha": "84d3c4d14e70578c3b364e1a462234e3bd1ee958"
  },
  {
   "t": "2025-11-26T17:00:25Z",
   "sha": "fb73b54670ceb532b028534644821467272ab4e0"
  },
  {
   "t": "2025-11-28T16:50:28Z",
   "sha": "fa4bc9b9ef54a7df474fa57e5c414a886bd0894c"
  },
  {
   "t": "2025-12-03T10:58:48Z",
   "sha": "6b2e397d5d2861cf7bec867a110e09eb15895bf9"
  },
  {
   "t": "2026-01-09T13:31:34Z",
   "sha": "da33b9dcddd7679f330fdde104d8a4ebfc8e2c1e"
  },
  {
   "t": "2026-01-14T16:34:48Z",
   "sha": "8f61933f103adebfe22924ccb681d0c66f884402"
  },
  {
   "t": "2026-02-09T10:29:57Z",
   "sha": "357892ab35cd565b30f4ea077d734e1879a2469e"
  },
  {
   "t": "2026-02-09T11:11:05Z",
   "sha": "3051d5bcdbe9fe20e4c34f93ff0b0ef56638b950"
  },
  {
   "t": "2026-02-25T17:07:31Z",
   "sha": "7d10e2b7ff5766d53bfc5942a131e97e97941a5d"
  },
  {
   "t": "2026-03-20T02:53:05Z",
   "sha": "96eb889c2cec192f5e1ab0cb8022e45955247bab"
  },
  {
   "t": "2026-04-01T10:58:42Z",
   "sha": "86ac3fdb4bcd71022c441561d34fa3e967166d7f"
  },
  {
   "t": "2026-04-08T03:38:12Z",
   "sha": "e2ce4db0c8e8772484ede2e83191740a257ac6dc"
  },
  {
   "t": "2026-04-08T08:49:33Z",
   "sha": "307825cfa6b0569630d9697f23d94dd04644e417"
  },
  {
   "t": "2026-04-09T08:33:27Z",
   "sha": "a2680ef6e874efb3fe199215b5d35d111aafb9d7"
  },
  {
   "t": "2026-04-13T07:37:43Z",
   "sha": "2e5a8065faa51754131b8173ec104e4606e4e0e3"
  },
  {
   "t": "2026-04-16T15:36:05Z",
   "sha": "8221f64044ba0ca0ab6f9858240415c69630b6ad"
  },
  {
   "t": "2026-04-16T16:21:11Z",
   "sha": "0a9e8dfff7b128f20f87969fce222cf2761011d3"
  },
  {
   "t": "2026-04-27T19:46:22Z",
   "sha": "e0dbacb159d400d9fa55b856b6703bf1f5664709"
  },
  {
   "t": "2026-04-27T19:49:53Z",
   "sha": "6b9495d2689550c1be7679260ab50782176ef55a"
  },
  {
   "t": "2026-05-20T08:55:44Z",
   "sha": "6472ac76aff10417a44fe614f30076681a3bd007"
  },
  {
   "t": "2026-05-27T11:32:03Z",
   "sha": "cd9cf1aa4e10702d2a4b1e2386d08a41464c6212"
  },
  {
   "t": "2026-05-28T09:01:41Z",
   "sha": "4512e344d8d1b5969d516343f113ae2b04fc5971"
  },
  {
   "t": "2026-05-30T09:32:43Z",
   "sha": "05f24361c0c85081e33a83a92f5f802c751c4fa9"
  },
  {
   "t": "2026-06-04T09:08:32Z",
   "sha": "42229ffa62b9a58a0fe123b2435bcc1eaf0d2a30"
  },
  {
   "t": "2026-06-09T20:53:38Z",
   "sha": "976c52c62a99e0ddf4264925cb95497583aae039"
  },
  {
   "t": "2026-06-15T13:46:54Z",
   "sha": "cd007a2c20c90d5d2b9cd4415515948b427c93db"
  },
  {
   "t": "2026-06-15T13:49:07Z",
   "sha": "33488a979784401fb1cf224ada826707c6898bef"
  },
  {
   "t": "2026-06-15T13:54:29Z",
   "sha": "4cd36860467eba8ecffa6c01846759528b75624e"
  },
  {
   "t": "2026-06-15T15:05:17Z",
   "sha": "b9607d9d05ad12158303cf708b33caab0d9a482e"
  },
  {
   "t": "2026-06-17T15:10:50Z",
   "sha": "284d9e9d358385e6e41533a027134ad9b3a63226"
  },
  {
   "t": "2026-06-19T20:52:11Z",
   "sha": "bbbdc959d74dd5e28bfe8acef3bba91d86b99867"
  },
  {
   "t": "2026-06-22T16:02:20Z",
   "sha": "08e434af2f7dded131a0ddbeb0057ae5117ba09d"
  },
  {
   "t": "2026-06-26T12:52:43Z",
   "sha": "fcc37031fe752c9047baa57ac180aef8ab4084dd"
  },
  {
   "t": "2026-07-02T09:10:07Z",
   "sha": "62692c6575defdbbe27c952b92a1a96551c9baba"
  },
  {
   "t": "2026-07-02T10:19:32Z",
   "sha": "2cd5ab8a01a54933358cbbfe60c49e96715b72fd"
  },
  {
   "t": "2026-07-02T14:38:18Z",
   "sha": "bc55954edd13435cebfd40a3e1aee1da8962e33f"
  },
  {
   "t": "2026-07-02T14:50:30Z",
   "sha": "d436e20cabacd72c1b4a2164ea9685b616cbb0a4"
  },
  {
   "t": "2026-07-18T06:44:35Z",
   "sha": "8e977c8aa44fd380debd7b15e53c90586951b135"
  },
  {
   "t": "2026-07-21T14:41:23Z",
   "sha": "88a03c6f3ca23fabff23f596df54b1ea31b24ec8"
  },
  {
   "t": "2026-07-23T13:36:37Z",
   "sha": "b3c0d224da1367e36b36042dc0772c844b4784b6"
  },
  {
   "t": "2026-07-24T08:26:01Z",
   "sha": "6b399cbd3f394d464cd9ff3a0eb5913a30c0c454"
  },
  {
   "t": "2026-07-25T10:37:40Z",
   "sha": "c0214cf4c13f35a1c3286de61515f53f14fc1f0c"
  },
  {
   "t": "2026-07-25T10:45:15Z",
   "sha": "cbe062ffb9416a86b9a8a336fd99f8047cf374d9"
  },
  {
   "t": "2026-07-27T08:09:21Z",
   "sha": "6adfebc9bcbcea3472f8209a0eb38b9443eda914"
  },
  {
   "t": "2026-07-27T12:26:35Z",
   "sha": "955b54623b8459ce61f451bfa3fc54f90dd4dbc6"
  },
  {
   "t": "2026-07-29T15:15:15Z",
   "sha": "4dda4003026c04a6d6d80fa4583a06ca557036a3"
  },
  {
   "t": "2026-07-29T15:41:26Z",
   "sha": "f6db51826719663d3240e910dd8c965c072fe84d"
  },
  {
   "t": "2026-07-30T10:25:14Z",
   "sha": "f2e1a8f3e16e50de469e62d8aa015c1a2e98fd08"
  },
  {
   "t": "2026-08-04T09:27:28Z",
   "sha": "bbe6c00a30abf6c1de20130b4456ed48e52b4ffb"
  },
  {
   "t": "2026-08-04T09:30:37Z",
   "sha": "1389db25a918add8adf33f81cdfca91885116707"
  },
  {
   "t": "2026-08-04T15:29:38Z",
   "sha": "5ac3db9560404c463fe18d96adb145969812d982"
  },
  {
   "t": "2026-08-05T09:25:36Z",
   "sha": "522ed336d03a9864bbc42da3d4e621c7bc4ba4b5"
  },
  {
   "t": "2026-08-06T09:36:40Z",
   "sha": "8ed465e123b5831bc3285b294ca907b5ee7bb6cb"
  },
  {
   "t": "2026-08-12T14:14:07Z",
   "sha": "06b842f50872e38a6ac4956c9305edf543bca695"
  }
 ],
 "additions": 590,
 "deletions": 281,
 "changed_files": 13,
 "commit_count": 9,
 "size_bucket": "L",
 "mergeable_state": "clean",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "dergoegge",
      "url": "https://github.com/bitcoin/bitcoin/pull/25573#issuecomment-3432902129"
     },
     {
      "login": "w0xlt",
      "url": "https://github.com/bitcoin/bitcoin/pull/25573#issuecomment-4208182611"
     }
    ],
    "approach_ack": [
     {
      "login": "willcl-ark",
      "url": "https://github.com/bitcoin/bitcoin/pull/25573#issuecomment-4517444483"
     },
     {
      "login": "hebasto",
      "url": "https://github.com/bitcoin/bitcoin/pull/25573#pullrequestreview-4951849191"
     },
     {
      "login": "jsarenik",
      "url": "https://github.com/bitcoin/bitcoin/pull/25573#issuecomment-5293214921"
     }
    ]
   },
   "conflicts": [
    {
     "number": 36193,
     "title": "guix: pass `--disable-wchar_t` to (non-GUI) libstdc++",
     "author": "fanquake"
    },
    {
     "number": 33593,
     "title": "guix: Use UCRT runtime for Windows release binaries",
     "author": "hebasto"
    }
   ]
  }
 },
 "acks_parsed": {
  "dergoegge": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2025-10-22T15:08:53Z",
   "stale": false
  },
  "w0xlt": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2026-04-08T17:32:32Z",
   "stale": false
  },
  "willcl-ark": {
   "kind": "approach_ack",
   "hash": null,
   "t": "2026-05-22T09:30:13Z",
   "stale": false
  },
  "hebasto": {
   "kind": "approach_ack",
   "hash": "06b842f50872e38a6ac4956c9305edf543bca695",
   "t": "2026-08-17T13:00:11Z",
   "stale": false
  },
  "jsarenik": {
   "kind": "approach_ack",
   "hash": null,
   "t": "2026-08-14T12:20:30Z",
   "stale": false
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 2,
  "approach_ack": 3,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "0xB10C",
   "151henry151",
   "Frank-GER",
   "dergoegge",
   "hebasto",
   "janb84",
   "jsarenik",
   "ketominer",
   "luke-jr",
   "m3dwards",
   "nkatha23",
   "ottosch",
   "sedited",
   "sipa",
   "theStack",
   "theuni",
   "tobtoht",
   "w0xlt",
   "willcl-ark",
   "xrviv"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "clean",
  "last_author_activity": "2026-09-16T12:13:25Z",
  "last_reviewer_activity": "2026-08-30T07:56:14Z",
  "last_reviewer": "ketominer",
  "author_silent_days": 1,
  "waiting_on_author_days": 0,
  "days_since_update": 1
 },
 "refs": {
  "mentioned": [
   19075,
   23203,
   27029,
   34948,
   35459,
   35499,
   35537,
   35853,
   35870,
   35929,
   35993,
   36006,
   36193,
   36272
  ],
  "depends_on": [
   36272
  ],
  "fixes": [
   19075
  ],
  "linked_issues": [
   {
    "number": 19075,
    "type": "issue",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "build: Investigate aarch64 pointer authentication"
   }
  ],
  "references": [
   {
    "number": 36272,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "guix: split Linux toolchain"
   },
   {
    "number": 19075,
    "type": "issue",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "build: Investigate aarch64 pointer authentication"
   },
   {
    "number": 23203,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "[POC] build: static musl libc based bitcoind"
   },
   {
    "number": 36193,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "guix: pass `--disable-wchar_t` to (non-GUI) libstdc++"
   },
   {
    "number": 27029,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2023-02-17",
    "title": "guix: consolidate to glibc 2.27 for Linux builds"
   },
   {
    "number": 34948,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-05-28",
    "title": "guix: Split manifest into build and codesign manifests"
   },
   {
    "number": 35459,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-09",
    "title": "guix: add setup.sh"
   },
   {
    "number": 35499,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-15",
    "title": "guix: add `package.sh`"
   },
   {
    "number": 35537,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-07-21",
    "title": "guix: split builds into Linux, Linux GUI and macOS/Windows"
   },
   {
    "number": 35853,
    "type": "issue",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "CI failure: Task `riscv32 bare metal, static libbitcoin_consensus`:  submodule cloning rate limited"
   },
   {
    "number": 35870,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-08-04",
    "title": "guix: move `python-minimal` to Linux GUI build"
   },
   {
    "number": 35929,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "guix, depends: Drop `GUIX_ENVIRONMENT` from `gen_id` calculations"
   },
   {
    "number": 35993,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-08-18",
    "title": "guix: build glibc with `--enable-kernel=3.17.0`"
   },
   {
    "number": 36006,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "ci: add Guix builds to CI"
   }
  ],
  "conflicts": [
   36193,
   33593
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [
  "contrib/guix/linux_static.scm",
  "contrib/guix/security-check.py",
  "contrib/guix/symbol-check.py",
  "contrib/guix/toolchains.scm",
  "doc/release-notes-25573.md"
 ],
 "body": "Use Guix to produce a `-static-pie` bitcoind using GCC `14.3.0` and glibc `2.44`. Using glibc for static builds, would be less of a leap compared to switching to musl libc (POC in #23203).\n\n[`-static-pie`](https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html)\n[quoted text omitted]\nA static position independent executable is similar to a static executable,\nbut can be loaded at any address without a dynamic linker.\n\n```bash\n# file bitcoind\n\tELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\n\n# ldd bitcoind\n\tstatically linked\n```\n\n### Tested on:\n- [ ] Alpine 3.24\n- [ ] CentOS 9\n- [ ] Debian 11\n- [ ] Debian 13\n- [ ] NixOS\n- [ ] Ubuntu 20.04\n- [ ] Ubuntu 26.04\n\nRelated upstream links / discussions:\n* [[RFC] Avoiding dlopen in statically linked applications that use nss](https://sourceware.org/pipermail/libc-alpha/2023-May/148682.html)\n* [arm: add -static-pie support](https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg288303.html)\n\nAlso fixes #19075.\n\nBased on #36272 & #36193.",
 "commits": [
  {
   "sha": "c49d45d9136082f1b529fb2a43cde5d7fe4a6903",
   "date": "2026-09-16T12:13:22Z",
   "message": "guix: split linux toolchain for static builds\n\nCo-authored-by: willcl-ark <will8clark@gmail.com>"
  },
  {
   "sha": "50b0c2b700a5b70e30e2ca2468b2174fd64c9cb1",
   "date": "2026-09-16T12:13:24Z",
   "message": "depends: patch around Boost Test std::wcrtomb usage\n\nIf libstdc++ is built with --disable-wchar_t, test_bitcoin will fail to\ncompile."
  },
  {
   "sha": "d588d6344debe0d4db2e0344a354392d92de3f19",
   "date": "2026-09-16T12:13:24Z",
   "message": "guix: gcc --disable-wchar_t"
  },
  {
   "sha": "5793485ec6d950c1d8b92fde62d07c57ba0426c8",
   "date": "2026-09-16T12:13:24Z",
   "message": "guix: add helper to generate /gnu/store mappings"
  },
  {
   "sha": "45435e6bf59cd5d03aa0b5637ef8e5f19d21a156",
   "date": "2026-09-16T12:13:25Z",
   "message": "guix: add glibc 2.44\n\nhttps://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.44/master\n\nStore path patch kills paths like:\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/lib/gconv/gconv-modules.cache\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/share/locale\n/gnu/store/0v9fwaigryb9qrzqbwwifj3k64li3bmg-bash-static-5.2.37/bin/bash\n/gnu/store/0v9fwaigryb9qrzqbwwifj3k64li3bmg-bash-static-5.2.37/bin/sh\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/libexec/getconf\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/lib/gconv\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/share/locale\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/share/zoneinfo\n/gnu/store/kv58f3znb62s7ygalb6xk3ipnfmq6qgv-glibc-cross-x86_64-linux-gnu-2.44/lib/"
  },
  {
   "sha": "8d34a695e1219fc9aeb32549622e35a43c48605b",
   "date": "2026-09-16T12:13:25Z",
   "message": "guix: adapt symbol and security checks for static ELF"
  },
  {
   "sha": "5f63279caf7a4adf49e2bca8f436cce3969f3d00",
   "date": "2026-09-16T12:13:25Z",
   "message": "guix: build x86_64-linux bitcoind & utils statically\n\n-static-pie\nProduce a static position independent executable on targets that support it.\nA static position independent executable is similar to a static executable,\nbut can be loaded at any address without a dynamic linker.\n\nSee https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html"
  },
  {
   "sha": "fb64215a53b8c9813e377e0c46bd91bedb272afc",
   "date": "2026-09-16T12:13:25Z",
   "message": "guix: build aarch64-linux bitcoind fully statically\n\n-static-pie\nProduce a static position independent executable on targets that support it.\nA static position independent executable is similar to a static executable,\nbut can be loaded at any address without a dynamic linker.\n\nSee https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html"
  },
  {
   "sha": "804b126f093c5f3aad35e2a20ec2f6d77c291eeb",
   "date": "2026-09-16T12:13:25Z",
   "message": "doc: add release note for #25573\n\nCo-authored-by: sedited <seb.kung@gmail.com>"
  }
 ],
 "timeline": [
  {
   "t": "2022-07-13T17:44:50Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "26c437e5b37a6bb20a24294db6f6d54e2c4438bd"
  },
  {
   "t": "2022-07-13T17:46:41Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased, and made small changes to fixup the linter and improve the security/symbol checks."
  },
  {
   "t": "2022-07-13T21:00:03Z",
   "kind": "comment",
   "who": "theuni",
   "assoc": "MEMBER",
   "text": "This is amazing!\n\n[quoted text omitted]\nHard agree. Static musl builds would be very cool but tricky to audit for parity and thus pretty unlikely to ever become official/supported imo. This is a MUCH more palatable change."
  },
  {
   "t": "2022-07-14T10:41:06Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "8cccf45444f4d1331845a73932ff81300c9d19a5"
  },
  {
   "t": "2022-07-14T10:41:43Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Added an additional patch to disable building various features/libs in GCC that we don't need. i.e libquadmath, libsanitizer, gcov, libada and native language support. This should speed up compiling GCC, and slightly reduces the size of the pthread patch. I'm not currently disabling these features via the available [configure flags](https://gcc.gnu.org/install/configure.html), because they get passed through to GMP, which cannot handle them.\n\nI've also updated `-flto` usage to be `-flto=auto`, as that seems to now be the preferred invocation, and it mitigates GCC warning output. i.e:\n```bash\nlto-wrapper: warning: using serial compilation of 84 LTRANS jobs\nlto-wrapper: note: see the '-flto' option documentation for more information\n```\n\nI've also split the ELF PIE check into it's own func, so we can special-case x86_64, and re-added the list of allowed ELF libs, but special-cased x86_64 to only pass if the list is empty."
  },
  {
   "t": "2022-07-16T17:00:56Z",
   "kind": "comment",
   "who": "luke-jr",
   "assoc": "CONTRIBUTOR",
   "text": "How does this handle resolvers? eg, static glibc 2.33 applications break on systems with glibc 2.34..."
  },
  {
   "t": "2022-07-19T16:27:18Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "caa066465973fab5e22218b8117440b08c607158"
  },
  {
   "t": "2022-08-04T16:47:53Z",
   "kind": "comment",
   "who": "Frank-GER",
   "assoc": "NONE",
   "text": "Which OS did you build on?\n\nOn Ubuntu 20.04 after build:\nfile bitcoind\nbitcoind: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), **dynamically linked**, for GNU/Linux 3.2.0, stripped\n\nTrying to run it, it crashes after seconds:\naddcon thread start\nLoading addresses from DNS seed dnsseed.emzy.de.\nbitcoind: dl-call-libc-early-init.c:37: _dl_call_libc_early_init: Assertion `sym != NULL' failed.\nAborted (core dumped)\n\nAny ideas?"
  },
  {
   "t": "2022-08-05T08:05:35Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThe base OS shouldn't matter, because the build is performed with Guix. However I've been performing these builds on Ubuntu 22.04.\n\n[quoted text omitted]\nHow did you actually build bitcoind? Something like `HOSTS=\"x86_64-linux-gnu\" ./contrib/guix/guix-build`?"
  },
  {
   "t": "2022-08-05T08:35:01Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "ef0edd55f3bc1e3f229134ec7ecac632de52eea7"
  },
  {
   "t": "2022-08-05T08:39:28Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased on master. Added a commit to use LIEF master, which reduces the number of changes in our scripts, as support for `-static-pie` ELF binaries has been added: https://github.com/lief-project/LIEF/issues/747. Will switch to a new release when one is available."
  },
  {
   "t": "2022-08-05T17:12:32Z",
   "kind": "comment",
   "who": "Frank-GER",
   "assoc": "NONE",
   "text": "[quoted text omitted]\n\nYes, that's what I used to build it.\nhttps://github.com/fanquake/bitcoin/commits/fully_static_bitcoind produces the exact same problem when building on Ubuntu 20.04"
  },
  {
   "t": "2022-08-05T17:32:10Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI have just re-tested building the changes here (ef0edd55f3bc1e3f229134ec7ecac632de52eea7), and this produces a `-static-pie` binary as expected:\n```bash\nguix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, with debug_info, not stripped\n```\n\nIt's not clear to me that you are actually running a [Guix build](https://github.com/bitcoin/bitcoin/tree/master/contrib/guix)."
  },
  {
   "t": "2022-08-05T18:22:50Z",
   "kind": "comment",
   "who": "Frank-GER",
   "assoc": "NONE",
   "text": "the build I was testing:\n~/bitcoin/guix-build-caa066465973/distsrc-caa066465973-x86_64-linux-gnu/src$ file bitcoind\nbitcoind: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, with debug_info, not stripped\n\njust building again, fresh cloned with commit ef0edd5\nexport HOSTS='x86_64-linux-gnu'\n./contrib/guix/guix-build\n\n$ file guix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind\nguix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, with debug_info, not stripped\n\n$ ldd ./guix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind\n\tstatically linked\n\n$ ./bitcoind\n...\n2022-08-05T19:10:46Z init message: Starting network threads\u2026\n2022-08-05T19:10:46Z net thread start\n2022-08-05T19:10:46Z dnsseed thread start\n2022-08-05T19:10:46Z Loading addresses from DNS seed seed.bitcoinstats.com.\n2022-08-05T19:10:46Z opencon thread start\n2022-08-05T19:10:46Z msghand thread start\n2022-08-05T19:10:46Z addcon thread start\n2022-08-05T19:10:46Z init message: Done loading\nbitcoind: dl-call-libc-early-init.c:37: _dl_call_libc_early_init: Assertion `sym != NULL' failed.\nAborted (core dumped)\n\nbuild and run on Ubuntu 20.04\nthere is no other bitcoind on that OS"
  },
  {
   "t": "2022-08-08T14:27:20Z",
   "kind": "comment",
   "who": "Frank-GER",
   "assoc": "NONE",
   "text": "building the same on Ubuntu 22.04:\nfile guix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind\nguix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, with debug_info, not stripped\n\nldd guix-build-ef0edd55f3bc/distsrc-ef0edd55f3bc-x86_64-linux-gnu/src/bitcoind\n\tstatically linked\n\nRunning it on Ubuntu22 it works.\n\nTaking this bitcoind to Ubuntu 20 it shows:\nfile ./bitcoind\n./bitcoind: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, with debug_info, not stripped\n\nand crashes with the above mentioned message:\nbitcoind: dl-call-libc-early-init.c:37: _dl_call_libc_early_init: Assertion `sym != NULL' failed.\nAborted (core dumped)\n\nChecksums are the same for both builds (on Ubuntu 20 and 22)\nUbuntu 20 sees it as dynamic linked, Ubuntu 22 as static-pie linked.\nOn Ubuntu 20 it crashes, on Ubuntu 22 it works.\n\nSame bitcoind on Debian 10:\nfile ./bitcoind\n./bitcoind: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, with debug_info, not stripped\nldd ./bitcoind\n        statically linked\nGets past that point where it crashes on Ubuntu 20 and starts syncing"
  },
  {
   "t": "2022-08-24T15:33:33Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6e63e75a243881dcff4334bc39129f18c582b159"
  },
  {
   "t": "2022-08-24T15:34:56Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Pushed a number of changes, and rebased on master.\nSwitched from glibc 2.35 to 2.36.\nAdded infra for aarch64 -static-pie builds.\nMore fine-grained / logical commits.\nUpdated to the latest version of LIEF (master)."
  },
  {
   "t": "2022-09-05T16:54:17Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "b49c0bae9f5a759672e31ec108386aae80d69d8f"
  },
  {
   "t": "2022-09-07T13:07:45Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "0acb0b0ae474b4237b2ea1fc0d3aa7ca9521ea15"
  },
  {
   "t": "2022-09-13T11:21:38Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "07fd1470295c4e1e6ce7ffeaa7b49e8de74adbc0"
  },
  {
   "t": "2023-01-13T10:44:23Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "361177ff0f19728325e15664eb2ec1c5d22b3cd7"
  },
  {
   "t": "2023-01-25T09:41:30Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "dd558c82c8c742866d10d5995ebf8977a1ccc342"
  },
  {
   "t": "2023-02-17T11:15:45Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "a4ac3aa5cc0a261f3367f76519f91063e4ca4fbf"
  },
  {
   "t": "2023-02-17T11:18:56Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "f3faa76e95ed76e5e0e89c7f3adc6f5d4ddb6486"
  },
  {
   "t": "2023-02-17T11:22:39Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased past #27029."
  },
  {
   "t": "2023-03-27T16:44:30Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "eb6823aa2b910d013b7239b379b7ea6ba1777b65"
  },
  {
   "t": "2023-05-22T10:00:41Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "14324e2b1676245505072426f181c9c6b8a9b119"
  },
  {
   "t": "2023-06-30T08:52:19Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "cb6d757ab52ec57446ea2337706ad2dfb376ce74"
  },
  {
   "t": "2023-08-23T13:38:51Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "efd1041ee07c7bfa2da6af2cabe7ea4495c4e291"
  },
  {
   "t": "2023-08-24T10:37:55Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "61c8e7249b19ded77db4835f91e51f2266105f67"
  },
  {
   "t": "2023-08-26T08:06:22Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "90a1d4f8594738616403526455f5aed56fac0ce5"
  },
  {
   "t": "2023-08-27T14:16:44Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "3434d14820701977d1028098ed6967b164f1cd61"
  },
  {
   "t": "2023-09-08T11:16:20Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "a50f29fdd29b1aa0d6843a1d0b8fc026640d2bdc"
  },
  {
   "t": "2023-11-13T10:16:18Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "3051d37cc0fd6444517e0539d9132ffb490090b8"
  },
  {
   "t": "2023-11-27T15:37:40Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "GCC now has `-static-pie` for RISC-V: https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632219.html. Looks like support in glibc will also be available soon: https://sourceware.org/pipermail/libc-alpha/2023-October/152132.html."
  },
  {
   "t": "2024-01-15T09:57:39Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThis has now landed: https://sourceware.org/git/?p=glibc.git;a=commit;h=e0590f41fe1e7a54169e8f8828efe62b5064139e."
  },
  {
   "t": "2024-01-16T11:40:22Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "86e6eb474a711aaf1ca6322f9103a992774ad616"
  },
  {
   "t": "2024-02-16T14:54:41Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "0cf3c2bcbf1e2a933d5190fe10aab77fe293435d"
  },
  {
   "t": "2024-03-15T17:16:45Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "054894f89493f6e21e57ec5c21efc02b24dea1f9"
  },
  {
   "t": "2024-03-15T17:17:04Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased. Simplified somewhat. Switched to GCC 13.2.0 and glibc 2.39."
  },
  {
   "t": "2024-03-26T13:54:35Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "a4c5193db8e3d1b914ce7e4a5b014190ed166d15"
  },
  {
   "t": "2024-04-15T13:32:20Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "d73587b725c2c8556333b7da0a847a0f6531078d"
  },
  {
   "t": "2024-05-02T03:41:39Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "c9541a62261d7d3f75fc98582ff26c7f9692e35b"
  },
  {
   "t": "2024-07-01T17:00:25Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "c31bc451f8ffec8b1ef6cee9477bdb7fbd6c8808"
  },
  {
   "t": "2024-07-01T17:05:28Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "daa40e30d2994fd3b35554ef1128e77e649a9de9"
  },
  {
   "t": "2024-07-25T11:44:31Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "0bef12524c3bfc56604e9b68a71985ca9ce2c2d5"
  },
  {
   "t": "2024-08-28T16:00:48Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "f65aa9b2f0f7feb9ad7c726d9d4e00f56eefd296"
  },
  {
   "t": "2024-09-19T11:31:59Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "60289cd0b7e70e56535daab955c15e1f4d63221a"
  },
  {
   "t": "2025-01-20T17:00:52Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "182a49fd29194296ce8d71b0aafa445f11aabbc2"
  },
  {
   "t": "2025-02-05T11:34:25Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "62de794f1328b6d1de0db724052f9b644aa2051a"
  },
  {
   "t": "2025-02-12T09:51:03Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "0d34d133a46e986de3e9bf07cc00969aefe0ea9a"
  },
  {
   "t": "2025-02-19T20:40:47Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "80a9ee00450c072a1ca505a99ba7024a3a318dfd"
  },
  {
   "t": "2025-02-27T14:40:12Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "41720e2e263b92b2ca3377a671c1cc8d07befe85"
  },
  {
   "t": "2025-03-12T03:36:13Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "550bb0d8ff52123c67edc5c434cc57fb8d1d8416"
  },
  {
   "t": "2025-03-20T06:21:44Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "d657be0adf1af184f3dac8c11ead3003fe6b7cd0"
  },
  {
   "t": "2025-04-11T13:53:52Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "e881c8c7090b956aac5d88e740875e7535af2c8b"
  },
  {
   "t": "2025-05-12T18:52:23Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "9c7154ab236f29e28ede9415e5f5ee5280b7b81d"
  },
  {
   "t": "2025-05-14T16:06:48Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "74e927fbdbf134a7dda59c37101018a98ec2bf7b"
  },
  {
   "t": "2025-05-14T16:08:31Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "5959093d519db517e03ac73432e75fa9c28dbb0d"
  },
  {
   "t": "2025-05-28T10:03:00Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "e7bdb2b2db2b90e227b97676057a6721eaf3bc48"
  },
  {
   "t": "2025-06-11T14:03:35Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "fa0d534df6740d8e160285282a9a46acc9f30f49"
  },
  {
   "t": "2025-10-22T15:08:53Z",
   "kind": "comment",
   "who": "dergoegge",
   "assoc": "MEMBER",
   "text": "Concept ACK"
  },
  {
   "t": "2025-10-28T12:33:05Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "eaf0751a4cf68b02c635bd04d222a24da053bfdb"
  },
  {
   "t": "2025-10-28T13:09:26Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "4f04b8645aaa3bf0f741fe02583e15106e35b4b8"
  },
  {
   "t": "2025-10-29T15:31:36Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "9fa45c3851a1bf5b00d3cd34bbb543232e1b05fd"
  },
  {
   "t": "2025-10-29T16:55:22Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "d7a7b785f6e02be0a8aaf8688a6739c40f204b4b"
  },
  {
   "t": "2025-11-04T16:10:52Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "23d30e9d16e94203cf23718b3cd5dbf30098f948"
  },
  {
   "t": "2025-11-05T11:30:16Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "59722602ce7bdc9582fdd25ed25f974b6987a818"
  },
  {
   "t": "2025-11-05T14:48:14Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "d7bab7601145d6b5fb2793ddb689e08a61fe3f19"
  },
  {
   "t": "2025-11-06T16:07:07Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "cad086763ee762f69e3ffab2fa798e9382ecc083"
  },
  {
   "t": "2025-11-07T16:38:51Z",
   "kind": "comment",
   "who": "m3dwards",
   "assoc": "MEMBER",
   "text": "This is very cool.\n\nHave I got the potential trade-offs correct here?\n\nPositives:\n\n- More portable - especially running a modern binary on an older linux\n- Enable very small docker images\n\nDownsides:\n\n- Static glibc can struggle with resolvers and locale (although I don't think locale is an issue here) potentially undermining the portability benefit. I don't know if `--enable-static-nss` solves this? But as referenced in this [line](https://github.com/bitcoin/bitcoin/pull/25573/files#diff-42e88f6b2dc3f513ccde184c74d1853a01b2bfc3ee64debf98c52efe316b04c1R508) it's been broken for a long time.\n- Binary would be bigger"
  },
  {
   "t": "2025-11-11T11:28:16Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "597b5296d3adc693001ce39626fe32b9545eb604"
  },
  {
   "t": "2025-11-11T12:20:48Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nYes ~2mb. I've added a comparison of bitcoind size for master vs this change, to the PR description."
  },
  {
   "t": "2025-11-12T16:32:04Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "2dda3bdd02ae6f5b024f34b82ea898c9f415e83c"
  },
  {
   "t": "2025-11-14T13:30:37Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "b374abcd4624fba40994f483c888fa95669781c6"
  },
  {
   "t": "2025-11-17T11:13:22Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "84d3c4d14e70578c3b364e1a462234e3bd1ee958"
  },
  {
   "t": "2025-11-17T12:35:22Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nWhat are the exact implications of this? I guix-built this branch and loaded  it into a scratch docker container and the dns seeds were connected to and loaded fine. Is this coming from my host system perhaps, even inside a scratch container?\n\nI also tested the binary on alpine and it appeared to \"fallback\" to using libnss without issue..."
  },
  {
   "t": "2025-11-18T11:48:53Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nSome additional context. When run in an alpine container with `strace` I see:\n\nLog\n\n```bash\nx86_64-linux-gnu/bitcoin-84d3c4d14e70/bin on \ue0a0 pr-25573 [$] via \u2744\ufe0f  impure (nix-shell-env) took 2s\n\u276f docker run --rm -it \\\n        -v \"$PWD/bitcoind:/bitcoind:ro\" \\\n        --entrypoint=sh \\\n        alpine \\\n        -lc 'apk add --no-cache strace >/dev/null && strace -f -e trace=%file /bitcoind'\n\n<snip>\n\n2025-11-18T11:40:10Z dnsseed thread start\nstrace: Process 52 attached\n2025-11-18T11:40:10Z Loading addresses from DNS seed dnsseed.bluematt.me.\nstrace: Process 53 attached\n2025-11-18T11:40:10Z init message: Done loading\n2025-11-18T11:40:10Z opencon thread start\n2025-11-18T11:40:10Z addcon thread start\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/host.conf\", O_RDONLY|O_CLOEXEC2025-11-18T11:40:10Z msghand thread start\n) = -1 ENOENT (No such file or directory)\n[pid    50] openat(AT_FDCWD, \"/etc/resolv.conf\", O_RDONLY|O_CLOEXEC) = 27\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/\", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/nsswitch.conf\", O_RDONLY|O_CLOEXEC) = 27\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n[pid    50] openat(AT_FDCWD, \"/etc/gai.conf\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n2025-11-18T11:40:10Z Loading addresses from DNS seed dnsseed.emzy.de.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.bitcoin.sipa.be.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.bitcoin.jonasschnelli.ch.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.mainnet.achownodes.xyz.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.bitcoin.sprovoost.nl.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed dnsseed.bitcoin.dashjr-list-of-p2p-nodes.us.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.bitcoin.wiz.biz.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z Loading addresses from DNS seed seed.btc.petertodd.net.\n[pid    50] newfstatat(AT_FDCWD, \"/etc/resolv.conf\", {st_mode=S_IFREG|0644, st_size=252, ...}, 0) = 0\n[pid    50] newfstatat(AT_FDCWD, \"/etc/nsswitch.conf\", {st_mode=S_IFREG|0644, st_size=205, ...}, 0) = 0\n[pid    50] openat(AT_FDCWD, \"/etc/hosts\", O_RDONLY|O_CLOEXEC) = 27\n2025-11-18T11:40:10Z 203 addresses found from DNS seeds\n2025-11-18T11:40:10Z dnsseed thread exit\n```\n\nWhen run on my NixOS host I see:\n\nLog\n\n```bash\nx86_64-linux-gnu/bitcoin-84d3c4d14e70/bin on \ue0a0 pr-25573 [$] via \u2744\ufe0f  impure (nix-shell-env) took 11s\n\u276f strace -f \\\n        -e trace=open,openat,stat,statx,access,readlink \\\n        ./bitcoind -datadir=/tmp/b1 -daemon=0 2>&1 | grep -i 'libnss'\n[pid 930543] openat(AT_FDCWD, \"/nix/store/khwsqzc1s0b92y3l695g95f4773lb2h1-capnproto-1.2.0/lib/libnss_mymachines.so.2\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n[pid 930543] openat(AT_FDCWD, \"/gnu/store/hhrsk659w4k3zs0bin6i4q1lnbr4zxx0-glibc-cross-x86_64-linux-gnu-2.42/lib/libnss_mymachines.so.2\", O_RDONLY|O_CLOEXECstrace: Process 930545 attached\n[pid 930543] openat(AT_FDCWD, \"/nix/store/khwsqzc1s0b92y3l695g95f4773lb2h1-capnproto-1.2.0/lib/libnss_mdns4_minimal.so.2\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n[pid 930543] openat(AT_FDCWD, \"/gnu/store/hhrsk659w4k3zs0bin6i4q1lnbr4zxx0-glibc-cross-x86_64-linux-gnu-2.42/lib/libnss_mdns4_minimal.so.2\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n[pid 930543] openat(AT_FDCWD, \"/nix/store/khwsqzc1s0b92y3l695g95f4773lb2h1-capnproto-1.2.0/lib/libnss_myhostname.so.2\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n[pid 930543] openat(AT_FDCWD, \"/gnu/store/hhrsk659w4k3zs0bin6i4q1lnbr4zxx0-glibc-cross-x86_64-linux-gnu-2.42/lib/libnss_myhostname.so.2\", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)\n^C\u23ce\n```\n\nBoth succeed in retrieving DNS seed addresses."
  },
  {
   "t": "2025-11-18T14:48:48Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "Ah OK I think I might understand better now. Both systems I tested on include `files` and `dns` backends as part of `nsswitch.conf` (line starting with `hosts: `):\n\n```bash\n# alpine Container\n\nx86_64-linux-gnu/bitcoin-84d3c4d14e70/bin on \ue0a0 pr-25573 [$] via \u2744\ufe0f  impure (nix-shell-env)\n\u276f cat /etc/nsswitch.conf\npasswd:    files systemd\ngroup:     files [success=merge] systemd\nshadow:    files systemd\nsudoers:   files\n\nhosts:     mymachines mdns4_minimal [NOTFOUND=return] files myhostname dns mdns4\nnetworks:  files\n\nethers:    files\nservices:  files\nprotocols: files\nrpc:       files\n\n# NixOS host\n\nx86_64-linux-gnu/bitcoin-84d3c4d14e70/bin on \ue0a0 pr-25573 [$] via \u2744\ufe0f  impure (nix-shell-env)\n\u276f docker run --rm -it --entrypoint=sh alpine -lc 'cat /etc/nsswitch.conf'\n# musl itself does not support NSS, however some third-party DNS\n# implementations use the nsswitch.conf file to determine what\n# policy to follow.\n# Editing this file is not recommended.\nhosts: files dns\n```\n\n...and these backends are actually baked into a static `glibc`, which allows it to succeed in lookups.\n\nThe (failed) `dlopen` calls on my Nix host are because my system `nsswitch.conf` includes extra backends which we try to open the lib for, but fail.\n\nSo it seems to be that `--enable-static-nss` must be for \"statically linking **extra** lookup backends in\" in addition to the baked in defaults.\n\nIf my understanding here is correct, then it seems totally fine to proceed without static nss enabled (while it is broken), as it doesn't break our basic DNS lookup functionality at all, and at worst results in some failing dlopen trys."
  },
  {
   "t": "2025-11-26T17:00:25Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "fb73b54670ceb532b028534644821467272ab4e0"
  },
  {
   "t": "2025-11-28T16:50:28Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "fa4bc9b9ef54a7df474fa57e5c414a886bd0894c"
  },
  {
   "t": "2025-12-03T10:58:48Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6b2e397d5d2861cf7bec867a110e09eb15895bf9"
  },
  {
   "t": "2026-01-09T13:31:34Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "da33b9dcddd7679f330fdde104d8a4ebfc8e2c1e"
  },
  {
   "t": "2026-01-14T16:34:48Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "8f61933f103adebfe22924ccb681d0c66f884402"
  },
  {
   "t": "2026-02-09T10:29:57Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "357892ab35cd565b30f4ea077d734e1879a2469e"
  },
  {
   "t": "2026-02-09T11:11:05Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "3051d5bcdbe9fe20e4c34f93ff0b0ef56638b950"
  },
  {
   "t": "2026-02-25T17:07:31Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "7d10e2b7ff5766d53bfc5942a131e97e97941a5d"
  },
  {
   "t": "2026-03-20T02:53:05Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "96eb889c2cec192f5e1ab0cb8022e45955247bab"
  },
  {
   "t": "2026-04-01T10:58:42Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "86ac3fdb4bcd71022c441561d34fa3e967166d7f"
  },
  {
   "t": "2026-04-08T03:38:12Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "e2ce4db0c8e8772484ede2e83191740a257ac6dc"
  },
  {
   "t": "2026-04-08T03:41:37Z",
   "kind": "comment",
   "who": "sipa",
   "assoc": "MEMBER",
   "text": "me want pie! https://www.youtube.com/watch?v=sb8rWCvnNbk"
  },
  {
   "t": "2026-04-08T08:49:33Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "307825cfa6b0569630d9697f23d94dd04644e417"
  },
  {
   "t": "2026-04-08T08:50:12Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Added a few more changes here. Tested the bins back to glibc `2.15` (Ubuntu 12.04)."
  },
  {
   "t": "2026-04-08T17:32:32Z",
   "kind": "comment",
   "who": "w0xlt",
   "assoc": "CONTRIBUTOR",
   "text": "Concept ACK"
  },
  {
   "t": "2026-04-09T08:33:27Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "a2680ef6e874efb3fe199215b5d35d111aafb9d7"
  },
  {
   "t": "2026-04-13T07:37:43Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "2e5a8065faa51754131b8173ec104e4606e4e0e3"
  },
  {
   "t": "2026-04-16T15:36:05Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "8221f64044ba0ca0ab6f9858240415c69630b6ad"
  },
  {
   "t": "2026-04-16T16:21:11Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "0a9e8dfff7b128f20f87969fce222cf2761011d3"
  },
  {
   "t": "2026-04-17T21:00:55Z",
   "kind": "comment",
   "who": "nkatha23",
   "assoc": "NONE",
   "text": "Tested the x86_64 binary from the `static_bitcoind_307825c` release on **Fedora 43** (glibc `2.42-11.fc43.x86_64`).\n\n```\n$ file bitcoind\nbitcoind: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\n\n$ ldd bitcoind\n\tstatically linked\n\n$ ./bitcoind --version\nBitcoin Core daemon version v31.99.0-g307825cfa6b0569630d9697f23d94dd04644e417\n```\n\nSHA256 verified against the published hash.\n\n**DNS / NSS test:**\n\nStarted `bitcoind` with an isolated datadir and checked `getnetworkinfo` after 30 seconds:\n\n```\n\"connections\": 6,\n\"connections_out\": 6,\n```\n\nIPv4 and IPv6 both reachable, 6 outbound connections established, DNS seeding works correctly with no issues.\n\nFedora's `nsswitch.conf` hosts line for reference:\n```\nhosts: files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns\n```\n\nThis is a more complex NSS configuration than the alpine/NixOS cases discussed above, and the static binary handled it without any `dlopen` failures or connection issues."
  },
  {
   "t": "2026-04-27T19:46:22Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "e0dbacb159d400d9fa55b856b6703bf1f5664709"
  },
  {
   "t": "2026-04-27T19:49:53Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6b9495d2689550c1be7679260ab50782176ef55a"
  },
  {
   "t": "2026-05-06T12:21:52Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "`-static-pie` support for arm32 should land in glibc (https://sourceware.org/bugzilla/show_bug.cgi?id=34098) and gcc (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106356) shortly."
  },
  {
   "t": "2026-05-15T15:29:12Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "I have a WIP branch here: https://github.com/fanquake/bitcoin/tree/split_build_expr, that implements the Guix build splitting, and builds `bitcoind` + utils -static-pie, while `bitcoin-qt` and `bitcoin-gui` remain as they are today:\n```bash\nfile bin/* libexec/*\nbin/bitcoin:          ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-cli:      ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoind:         ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-qt:       ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-tx:       ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-util:     ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-wallet:   ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nlibexec/bitcoin-gui:  ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped\nlibexec/bitcoin-node: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nlibexec/test_bitcoin: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\n```\n\nWill clean it up, and will integrate it here."
  },
  {
   "t": "2026-05-20T08:55:44Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6472ac76aff10417a44fe614f30076681a3bd007"
  },
  {
   "t": "2026-05-20T08:59:27Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "This branch now produces:\n```bash\nbin/bitcoin:          ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-cli:      ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoind:         ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-qt:       ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-tx:       ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-util:     ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nbin/bitcoin-wallet:   ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nlibexec/bitcoin-gui:  ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped\nlibexec/bitcoin-node: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\nlibexec/test_bitcoin: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.2.0, stripped\n```\n```bash\nbin/bitcoin:          ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nbin/bitcoin-cli:      ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nbin/bitcoind:         ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nbin/bitcoin-qt:       ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, stripped\nbin/bitcoin-tx:       ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nbin/bitcoin-util:     ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nbin/bitcoin-wallet:   ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nlibexec/bitcoin-gui:  ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, stripped\nlibexec/bitcoin-node: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\nlibexec/test_bitcoin: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 3.7.0, stripped\n```\n```bash\nbin/bitcoin:          ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nbin/bitcoin-cli:      ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nbin/bitcoind:         ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nbin/bitcoin-qt:       ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, stripped\nbin/bitcoin-tx:       ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nbin/bitcoin-util:     ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nbin/bitcoin-wallet:   ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nlibexec/bitcoin-gui:  ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, stripped\nlibexec/bitcoin-node: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\nlibexec/test_bitcoin: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), static-pie linked, for GNU/Linux 4.15.0, stripped\n```\nLooking for approach ACKs on the Guix build splitting. If there are some, I will cleanup/split out some changes."
  },
  {
   "t": "2026-05-21T14:15:51Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "A commit here with the gcc/glibc patching for 32-bit arm: https://github.com/fanquake/bitcoin/commit/3429ff7145e3657c7223afa83e509dacb720d2a2. Haven't pushed this here, as there's a IPC related build issue. The glibc change will land in glibc `2.44`: https://sourceware.org/git/?p=glibc.git;a=commit;h=c2d6afb4a010a46e0fc73bb4619db9c3796a3077."
  },
  {
   "t": "2026-05-22T09:30:13Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "Approach ACK\n\nI think this is a worthwhile goal for a number of reasons.\n\nAs I understand it the approach options are roughly:\n\n- don't split and have a hellish build script and guix manifest, with all the different toolchains etc. in one place (spaghetti ++)\n- split as you have done into seperate manifests and build scripts (and necessarily \"duplicate\" a few lines)\n\nOf these, the latter seems vastly preferable, and seems to align with the direction of the project better."
  },
  {
   "t": "2026-05-22T13:09:09Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Concept ACK."
  },
  {
   "t": "2026-05-22T15:20:47Z",
   "kind": "review",
   "who": "hebasto",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "6472ac76aff10417a44fe614f30076681a3bd007",
   "text": "Briefly tested `bitcoind` from `bitcoin-6472ac76aff1.tar.gz` in the `scratch` Docker container. Looks good."
  },
  {
   "t": "2026-05-22T15:28:11Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "What should we do about the following warnings:\n```\n[ 80%] Linking CXX executable ../bin/bitcoind\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ipc_listener.cpp.o): in function `zmq::ipc_listener_t::filter(int)':ipc_listener.cpp:(.text+0x211): warning: Using 'getgrgid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ip_resolver.cpp.o): in function `zmq::ip_resolver_t::resolve_getaddrinfo(zmq::ip_addr_t*, char const*)':ip_resolver.cpp:(.text+0x31c): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libevent_core.a(evutil.c.o): in function `evutil_getaddrinfo_common_':evutil.c:(.text+0x1d2c): warning: Using 'getprotobynumber' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ipc_listener.cpp.o): in function `zmq::ipc_listener_t::filter(int)':ipc_listener.cpp:(.text+0x1ec): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libevent_core.a(evutil.c.o): in function `evutil_getaddrinfo_common_':evutil.c:(.text+0x1ead): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ipc_listener.cpp.o): in function `zmq::ipc_listener_t::filter(int)':ipc_listener.cpp:(.text+0x211): warning: Using 'getgrgid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ip_resolver.cpp.o): in function `zmq::ip_resolver_t::resolve_getaddrinfo(zmq::ip_addr_t*, char const*)':ip_resolver.cpp:(.text+0x31c): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libevent_core.a(evutil.c.o): in function `evutil_getaddrinfo_common_':evutil.c:(.text+0x1d2c): warning: Using 'getprotobynumber' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libzmq.a(ipc_listener.cpp.o): in function `zmq::ipc_listener_t::filter(int)':ipc_listener.cpp:(.text+0x1ec): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n/gnu/store/y3l77wfcqmghgc3f9mf7s93jfiyq6vnb-binutils-cross-x86_64-linux-gnu-2.46.0/bin/x86_64-linux-gnu-ld: /bitcoin/depends/x86_64-linux-gnu/lib/libevent_core.a(evutil.c.o): in function `evutil_getaddrinfo_common_':evutil.c:(.text+0x1ead): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking\n```\n?"
  },
  {
   "t": "2026-05-24T14:17:22Z",
   "kind": "review",
   "who": "hebasto",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "6472ac76aff10417a44fe614f30076681a3bd007",
   "text": "338fd2d71b975d16f9a047eb4cd848640c02a385\n\nInstead of dropping `-Werror=dev`, we can use the approach suggested [here](https://gitlab.kitware.com/cmake/cmake/-/work_items/26757#note_1635795)::\n```cmake\nset(CMAKE_CXX_LINK_OPTIONS_PIE -fPIE -static-pie)\n```\n\ncc @purpleKarrot"
  },
  {
   "t": "2026-05-26T08:49:49Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI'm not sure; we don't want to hardcode `-static-pie` anywhere, nor do we want to extract, and then patch the tarball."
  },
  {
   "t": "2026-05-27T11:32:03Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "cd9cf1aa4e10702d2a4b1e2386d08a41464c6212"
  },
  {
   "t": "2026-05-27T11:34:54Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Reworked/re-ordered some commits, and put this on top of #34948."
  },
  {
   "t": "2026-05-28T09:01:41Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "4512e344d8d1b5969d516343f113ae2b04fc5971"
  },
  {
   "t": "2026-05-30T09:32:43Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "05f24361c0c85081e33a83a92f5f802c751c4fa9"
  },
  {
   "t": "2026-06-04T09:08:32Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "42229ffa62b9a58a0fe123b2435bcc1eaf0d2a30"
  },
  {
   "t": "2026-06-04T09:16:23Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Split off the first change here into #35459."
  },
  {
   "t": "2026-06-09T20:53:38Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "976c52c62a99e0ddf4264925cb95497583aae039"
  },
  {
   "t": "2026-06-10T15:03:10Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Split the next change off into #35499."
  },
  {
   "t": "2026-06-11T14:08:21Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI've been looking at the related code in glibc, and I think these warnings might actually no-longer be correct. Will try and upstream some changes, starting here: https://sourceware.org/pipermail/libc-alpha/2026-June/177956.html."
  },
  {
   "t": "2026-06-15T13:46:54Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "cd007a2c20c90d5d2b9cd4415515948b427c93db"
  },
  {
   "t": "2026-06-15T13:49:07Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "33488a979784401fb1cf224ada826707c6898bef"
  },
  {
   "t": "2026-06-15T13:54:29Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "4cd36860467eba8ecffa6c01846759528b75624e"
  },
  {
   "t": "2026-06-15T15:05:17Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "b9607d9d05ad12158303cf708b33caab0d9a482e"
  },
  {
   "t": "2026-06-16T09:50:52Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "As we progress toward the changes in this PR slowly (2 or 3 sub-changes are now merged), I wanted to make sure we had carefully considered the higher-level pros and cons of releasing static binaries on Linux.\n\nMy own view is that static PIE binaries are an overall win, but I think we have to be mindful of the security, compatibility, and maintenance differences that come with them.\n\n#### Benefits\n\nFor me the biggest win is improved portability. We will no longer rely on the host's linux-vdso, libpthread, libm, libc.\n\nThis lets the binaries run in scratch/distroless containers, old distributions, unusual host environments, and similar setups. It also eliminates host library mismatch issues, where a host might have older, newer, patched, or otherwise oddly configured libraries.\n\nAnother effect is that the release binary is less beholden to a particular distro's update cadence, loader path, ABI quirks, or package layout. Currently we use quite an old glibc to remain compatible with older distros, which also requires custom toolchain work inside Guix.\n\nBeing able to reason about the entire set of shipped code also seems like a win, instead of \"our binary plus whatever shared libraries happen to be available on a user's machine\". A knock-on effect is reduced exposure to broken or malicious host library injection/configuration.\n\n#### Risks\n\nUsers will no longer be able to patch a bundled library issue by updating their system package. If there is a vulnerability in a statically shipped library, we must be aware of it and ship a patch release if necessary, because \"update your OS\" will not fix the guix-built (and shipped) binary. IMO this is the big one here: it shifts some responsibility from distro package updates to the Bitcoin Core release process for the binaries we ship.\n\nI think this is acceptable, and could even be a net win, so long as we are aware of it and \"monitor the situation\" properly. It might make sense to have some process which tracks CVEs and important bugfixes for the libraries that we are using. At minimum, we should know that someone is actually doing this; if everybody leaves it to everybody else then we risk ending up with nobody doing it.\n\nNSS has already come up for me in review here, and I wonder whether we have fully considered the effects. Dynamic glibc can load NSS modules such as LDAP, SSSD, mDNS, etc. as needed, but a static binary cannot rely on arbitrary host NSS modules being available. AFAIK we mostly care about this through `getaddrinfo()`, but users with unusual setups like `-addnode=my-node.corp.example` or `-connect=bitcoin-node.local`, where those names resolve only through custom NSS-backed hostname lookup, may see behavior changes with this PR.\n\nI think we are all aware this will increase binary size a little and change debugging somewhat, so I will not go into those here.\n\nIt is also possible that users may prefer to use their own distro's hardened or otherwise changed libraries. I do not think this is a major issue though; those users can still use distro packages or compile the code themselves.\n\n#### Comments\n\nOverall I think most of this is known implicitly by the contributors involved, but I wanted to flag the items I felt were important. In particular, the change in ownership/management of library vulnerabilities seems worth highlighting so that we, as a group, are clear about what is different here."
  },
  {
   "t": "2026-06-16T10:14:37Z",
   "kind": "comment",
   "who": "tobtoht",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\nAll of these libraries are already statically linked. Glibc (and adjacent libraries `libm` and `libpthread`) are the only dynamically linked libraries. Updating the e.g. the libzmq system package does not affect behavior of Bitcoin release binaries.\n\n[quoted text omitted]\nThis was already the case."
  },
  {
   "t": "2026-06-16T11:18:22Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nright sorry, wrote out the wrong group of libraries here! Edited my comment."
  },
  {
   "t": "2026-06-17T15:10:50Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "284d9e9d358385e6e41533a027134ad9b3a63226"
  },
  {
   "t": "2026-06-19T20:07:28Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Two minor changes landed in glibc https://sourceware.org/git/?p=glibc.git;a=commit;h=82b710c1900944ea122a3880f542215948fc023d / https://sourceware.org/git/?p=glibc.git;a=commit;h=21694014388ad278aa03241800d1f0c0a7127ad1 (next step here might be to remove `--enable-static-nss` outright, as the build no-longer differs if that flag is passed), and `llvm-bolt` has been fixed to work with -static-pie binaries: https://github.com/llvm/llvm-project/issues/201371 / https://github.com/llvm/llvm-project/pull/204475."
  },
  {
   "t": "2026-06-19T20:52:11Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "bbbdc959d74dd5e28bfe8acef3bba91d86b99867"
  },
  {
   "t": "2026-06-22T16:02:20Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "08e434af2f7dded131a0ddbeb0057ae5117ba09d"
  },
  {
   "t": "2026-06-26T12:52:43Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "fcc37031fe752c9047baa57ac180aef8ab4084dd"
  },
  {
   "t": "2026-06-26T12:54:13Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nDone in https://sourceware.org/git/?p=glibc.git;a=commit;h=ead80441e694fa52ac2fc36b11f21e35abe393ea."
  },
  {
   "t": "2026-07-02T09:10:07Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "62692c6575defdbbe27c952b92a1a96551c9baba"
  },
  {
   "t": "2026-07-02T10:19:32Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "2cd5ab8a01a54933358cbbfe60c49e96715b72fd"
  },
  {
   "t": "2026-07-02T14:38:18Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "bc55954edd13435cebfd40a3e1aee1da8962e33f"
  },
  {
   "t": "2026-07-02T14:50:30Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "d436e20cabacd72c1b4a2164ea9685b616cbb0a4"
  },
  {
   "t": "2026-07-18T06:44:35Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "8e977c8aa44fd380debd7b15e53c90586951b135"
  },
  {
   "t": "2026-07-21T14:41:23Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "88a03c6f3ca23fabff23f596df54b1ea31b24ec8"
  },
  {
   "t": "2026-07-21T14:49:07Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased after #35537. I've dropped the commits for the other hosts (they are available here: https://github.com/fanquake/bitcoin/tree/fully_static_bitcoind_extra_hosts), and just left `x86_64` for now, to simplify review and testing. It is straight-forward to add more hosts later."
  },
  {
   "t": "2026-07-22T08:18:36Z",
   "kind": "review_comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "path": "contrib/guix/security-check.py",
   "commit": "955b54623b8459ce61f451bfa3fc54f90dd4dbc6",
   "in_reply_to": null,
   "text": "In ffb539f6d45ded6492a22c4fed1e0ebe1e48b7af\n\nHmmm, I don't think switching from `binary.imported_symbols` to `binary.symbols` provides a valid FORTIFY check for static binaries any more.\n\nWe have two thigns going on here:\n\n1. glibc is built with FORTIFY, as requested through `--enable-fortify-source`.\n2. Bitcoin Core is compiled with `_FORTIFY_SOURCE=3`, allowing all (eligible) calls in Bitcoin Core translation units to be fortified.\n\nAfter static linking though, `binary.symbols` contains the `_chk` implementations pulled in from `libc.a`, including symbols originating from glibc's own fortification. Their presence doesn't demonstrate that Bitcoin Core was compiled with FORTIFY or emitted any fortified calls, as is thought is being checked here.\n\nFor example, a program compiled with:\n\n```sh\ngcc -static-pie -O2 -U_FORTIFY_SOURCE test.c -o test\n```\n\nstill contains definitions such as `__memcpy_chk`, `__fprintf_chk`, and `__asprintf_chk`. The revised check_ELF_FORTIFY()` therefore returns `True` for an application compiled with FORTIFY disabled.\n\nThe glibc guix package configuration can enforce fortification for glibc OK IMO, but the Bitcoin Core fortify check on a static build seems much more tricky...\n\nWe could inspect Bitcoin Core object files before static linking, or use a compiled-time assertion (yuck), or perhaps somethign else I didn't think about yet, but scanning all symbols in the final static executable cannot I think distinguish them from libc."
  },
  {
   "t": "2026-07-22T08:33:19Z",
   "kind": "review",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "88a03c6f3ca23fabff23f596df54b1ea31b24ec8",
   "text": "[quoted text omitted]\n\nI think the removal of external NSS modules on the x64 linux binary might warrant a release note as it can change stuff for the user and might require setup modification.\n\nAlso doc/INSTALL_linux.md can probably be updated slightly too with a new distinction:\n\n[quoted text omitted]"
  },
  {
   "t": "2026-07-23T13:36:37Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "b3c0d224da1367e36b36042dc0772c844b4784b6"
  },
  {
   "t": "2026-07-24T08:26:01Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6b399cbd3f394d464cd9ff3a0eb5913a30c0c454"
  },
  {
   "t": "2026-07-25T10:37:40Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "c0214cf4c13f35a1c3286de61515f53f14fc1f0c"
  },
  {
   "t": "2026-07-25T10:45:15Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "cbe062ffb9416a86b9a8a336fd99f8047cf374d9"
  },
  {
   "t": "2026-07-25T10:48:55Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "glibc `2.44` has been branched off, so the glibc added here now points to that branch: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.44/master."
  },
  {
   "t": "2026-07-27T08:09:21Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "6adfebc9bcbcea3472f8209a0eb38b9443eda914"
  },
  {
   "t": "2026-07-27T12:26:35Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "955b54623b8459ce61f451bfa3fc54f90dd4dbc6"
  },
  {
   "t": "2026-07-29T15:15:15Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "4dda4003026c04a6d6d80fa4583a06ca557036a3"
  },
  {
   "t": "2026-07-29T15:26:35Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "contrib/guix/security-check.py",
   "commit": "955b54623b8459ce61f451bfa3fc54f90dd4dbc6",
   "in_reply_to": 3628650155,
   "text": "Yea. We needed some change here, because static bins wont have imported symbols, and would otherwise always fail the check as-is. For now I've opted to just return True for any static bin; I'm not sure if a more involved approach is worthwhile, will think about it some more. I do think that some of these checks are loosing their significance given the point we are reaching with our toolchain construction."
  },
  {
   "t": "2026-07-29T15:41:26Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "f6db51826719663d3240e910dd8c965c072fe84d"
  },
  {
   "t": "2026-07-30T10:25:14Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "f2e1a8f3e16e50de469e62d8aa015c1a2e98fd08"
  },
  {
   "t": "2026-08-02T16:22:45Z",
   "kind": "comment",
   "who": "151henry151",
   "assoc": "CONTRIBUTOR",
   "text": "I Guix-built tip `f2e1a8f3e16e50de469e62d8aa015c1a2e98fd08` to check reproducibility, static-pie shape, and the NSS fail-closed behavior under the nodlopen patch (Debian 13, guix 1.5.0; unmodified `./contrib/guix/guix-build`, `HOSTS=x86_64-linux-gnu` and `HOSTS=aarch64-linux-gnu` as separate runs):\n\n```\n3c9d5a452e88095e55d56333370d9bb8985c4d1e83daec204ef0b5d2a5c66e69  bitcoin-f2e1a8f3e16e-x86_64-linux-gnu.tar.gz\n6f2825f1ac2188f1dae003e478c1f15989d4f37d405b71f8ea8dc78615f781a5  bitcoin-f2e1a8f3e16e-aarch64-linux-gnu.tar.gz\n```\n\nFor both `HOSTS`, `bitcoind` and the other CLI tools are static-pie (`DYN`/`PIE`/`BIND_NOW`, no `PT_INTERP`); `bitcoin-qt` stays dynamic on the glibc-2.31 path. Runtime below is x86_64 only (aarch64 is hash + ELF). Guix-shipped x86_64 `test_bitcoin` passes.\n\nOn NSS: with `hosts: files resolve` (no `dns`) and `nameserver 127.0.0.53`, DNS seeding fails closed \u2014 `0 addresses found from DNS seeds`, dnsseed thread exits, no abort, no `libnss_*` opens. After the usual ~60s empty-addrman delay, fixed seeds still load (`Added 1024 fixed seeds\u2026`) and the node forms outbound peers. Control with `hosts: files dns` gets DNS seed addresses normally. Fedora\u2019s default nsswitch (`\u2026 resolve \u2026 dns`) likewise never opens `libnss_*`. Wallet create and `zmqpubhashtx` smoke OK. The same static-pie binary also peers on Alpine / distroless / centos:7 Docker userlands (portability of the artifact, not a kernel-floor claim).\n\nLimits: no IBD, no bare-metal old kernel, no aarch64 runtime, no GUI.\n\nThe `getaddrinfo` / `getgrgid` / `getpwuid` \u201crequires shared libraries\u201d warnings are still emitted at Guix link time (the latter two from `ipc_listener.cpp`); under nodlopen they do not match runtime for hosts lookup (no host NSS module loads). Worth deciding whether those warnings should be annotated or suppressed so future builders do not rediscover them.\n\nThis supports the intended NSS fail-closed behavior and that bootstrap via fixed seeds still works when DNS seeding cannot. It doesn\u2019t speak to docs/release notes for the NSS change, or to the intended kernel floor."
  },
  {
   "t": "2026-08-03T11:07:49Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "cfb9f5f7701378353f2a6d60a09afee35c5a6ddd is now also part of #35870."
  },
  {
   "t": "2026-08-04T09:27:28Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "bbe6c00a30abf6c1de20130b4456ed48e52b4ffb"
  },
  {
   "t": "2026-08-04T09:30:37Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "1389db25a918add8adf33f81cdfca91885116707"
  },
  {
   "t": "2026-08-04T15:29:38Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "5ac3db9560404c463fe18d96adb145969812d982"
  },
  {
   "t": "2026-08-05T09:25:36Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "522ed336d03a9864bbc42da3d4e621c7bc4ba4b5"
  },
  {
   "t": "2026-08-06T09:36:40Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "8ed465e123b5831bc3285b294ca907b5ee7bb6cb"
  },
  {
   "t": "2026-08-06T11:06:38Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Guix Build (x86_64 and aarch64):\n```bash\n1888fa5d48bb53b438e3ac7973a8914e82a51893c50479e28dc84ece4f54a943  guix-build-ff01e5af948d/output/aarch64-linux-gnu/SHA256SUMS.part\n22b757235729757bf4a225de4b34eca4d20704ad7e1fd6b48ab6902ef6fad407  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu-debug.tar.gz\n1f3461c39b1776cbbaa6d216847beb6670df931121d1d4da9fbaaf6a3aad7398  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu.tar.gz\n190e5a140d4aa719072a7052343338e9942ecbd16d6e4fc871250296c9a4312c  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/SHA256SUMS.part\n5d95d6f452b5a58eeef74af8513b4c718934f3bafa5c439347c188651b3802d6  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf-debug.tar.gz\n05045c92d9ee12d1ba327eb319597aa1247cc46d55b480decf4b25e05f8825fd  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf.tar.gz\nfd089395212778703a42d2624179c7ee7bdc859ac1b45911305c2f5a3a5c6c1e  guix-build-ff01e5af948d/output/arm64-apple-darwin/SHA256SUMS.part\nd63b5bfc70bf41a431a7a6d4b50a3ebe29377732dc2a0ff34a81579674b6cc75  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-codesigning.tar.gz\n0c603699da0c4193724b0303bc17e5f1cd5c742a6f6b423b58e93d2d45c7ce57  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.tar.gz\n57ab8c7c258c901a2fd908d7e12e2657820f90a9724c50e9a7f9adc95093bc0f  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.zip\n00cc2357b102dd4e1c41bf9fc0c28cc4d43ec1074b7035defc09e4c81f910322  guix-build-ff01e5af948d/output/dist-archive/bitcoin-ff01e5af948d.tar.gz\nbd9c1279ee3f14d30c6a8faade8333e120d35252acc146e09851f8c6d478af67  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/SHA256SUMS.part\nafc9338f53ad94d18e70a18342eebb7ec0a794332082baa6ee96cd182b5c020d  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu-debug.tar.gz\nebd0811a011ba39d02784dddcc1dcca01041460365d8c363f8980e0a9262ea81  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu.tar.gz\na86ab388c5b215cee68b0dc94d26ea2937d929b9e795a5106299c0223485cf78  guix-build-ff01e5af948d/output/riscv64-linux-gnu/SHA256SUMS.part\nfb4a63775a48f24e3ff3ae47899042062d48bed9e04f326757955f350c7ee8bf  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu-debug.tar.gz\n0fbb0dcd8c10ff4262506a26cd21929f710efce6a43b76c175e967ea32c7888e  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu.tar.gz\n41ef0e621c8b81222a0b2ccf1ffc8e6a76b6d71a089c3eab19e95bce69b2385c  guix-build-ff01e5af948d/output/x86_64-apple-darwin/SHA256SUMS.part\nf198e20602692c3981882df2dc704c09482c06f6f9620bdf80bdc4802bc8a757  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-codesigning.tar.gz\n5b94a6cd915caae58a60498d0347d50170f0c697f3816cc2b405998f134a2035  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.tar.gz\n5418fa47e6796d484e4d0bcc411cf155e300fa040af42b44077fa4d7efc1d386  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.zip\nee40b9f39d5e56b35b8c0e1a5c5bd65b151e34598052e3cedc2abb4da4ee9dd9  guix-build-ff01e5af948d/output/x86_64-linux-gnu/SHA256SUMS.part\n9d886b556d04658019f9882b7e10b3be26a91c5dbcdeedd4813fcaf769a7a750  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu-debug.tar.gz\n5abdd153b2fc41f56c341b51c9175196f503d310dde64e109c781e8f05f019de  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu.tar.gz\nf324cc0d4187f0f575247fe7585b7e14779f0f3a13de42b8b1766d1de31b2f45  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/SHA256SUMS.part\naba0f3798c6dd780e9c015bc42955dc188e2ee34ec98f7d5593bc328ba99ba8d  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-codesigning.tar.gz\na7efb4381a0beff3c4d03cc2ebffbc477647799d278952dbf2abad47eef62c14  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-debug.zip\n5c71637a17bf4c2fdee6a4c4798716880a669fd2bd4ad6ce590f7242a3eab53c  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-setup-unsigned.exe\n10f70f17a08c1d5100e77c6c65279115cf0f694bd7f6251ef5264be78bcf7195  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-unsigned.zip\n```"
  },
  {
   "t": "2026-08-06T11:12:13Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "For other builders, the needed repo is on sourceware who are blocking many requests (a la #35853) so it may take a few retries to build the new glibc as this involves cloning a sourceware repo."
  },
  {
   "t": "2026-08-06T14:19:28Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "matching\n\n```\nx86_64\n1888fa5d48bb53b438e3ac7973a8914e82a51893c50479e28dc84ece4f54a943  guix-build-ff01e5af948d/output/aarch64-linux-gnu/SHA256SUMS.part\n22b757235729757bf4a225de4b34eca4d20704ad7e1fd6b48ab6902ef6fad407  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu-debug.tar.gz\n1f3461c39b1776cbbaa6d216847beb6670df931121d1d4da9fbaaf6a3aad7398  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu.tar.gz\n190e5a140d4aa719072a7052343338e9942ecbd16d6e4fc871250296c9a4312c  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/SHA256SUMS.part\n5d95d6f452b5a58eeef74af8513b4c718934f3bafa5c439347c188651b3802d6  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf-debug.tar.gz\n05045c92d9ee12d1ba327eb319597aa1247cc46d55b480decf4b25e05f8825fd  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf.tar.gz\nfd089395212778703a42d2624179c7ee7bdc859ac1b45911305c2f5a3a5c6c1e  guix-build-ff01e5af948d/output/arm64-apple-darwin/SHA256SUMS.part\nd63b5bfc70bf41a431a7a6d4b50a3ebe29377732dc2a0ff34a81579674b6cc75  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-codesigning.tar.gz\n0c603699da0c4193724b0303bc17e5f1cd5c742a6f6b423b58e93d2d45c7ce57  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.tar.gz\n57ab8c7c258c901a2fd908d7e12e2657820f90a9724c50e9a7f9adc95093bc0f  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.zip\n00cc2357b102dd4e1c41bf9fc0c28cc4d43ec1074b7035defc09e4c81f910322  guix-build-ff01e5af948d/output/dist-archive/bitcoin-ff01e5af948d.tar.gz\nbd9c1279ee3f14d30c6a8faade8333e120d35252acc146e09851f8c6d478af67  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/SHA256SUMS.part\nafc9338f53ad94d18e70a18342eebb7ec0a794332082baa6ee96cd182b5c020d  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu-debug.tar.gz\nebd0811a011ba39d02784dddcc1dcca01041460365d8c363f8980e0a9262ea81  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu.tar.gz\na86ab388c5b215cee68b0dc94d26ea2937d929b9e795a5106299c0223485cf78  guix-build-ff01e5af948d/output/riscv64-linux-gnu/SHA256SUMS.part\nfb4a63775a48f24e3ff3ae47899042062d48bed9e04f326757955f350c7ee8bf  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu-debug.tar.gz\n0fbb0dcd8c10ff4262506a26cd21929f710efce6a43b76c175e967ea32c7888e  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu.tar.gz\n41ef0e621c8b81222a0b2ccf1ffc8e6a76b6d71a089c3eab19e95bce69b2385c  guix-build-ff01e5af948d/output/x86_64-apple-darwin/SHA256SUMS.part\nf198e20602692c3981882df2dc704c09482c06f6f9620bdf80bdc4802bc8a757  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-codesigning.tar.gz\n5b94a6cd915caae58a60498d0347d50170f0c697f3816cc2b405998f134a2035  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.tar.gz\n5418fa47e6796d484e4d0bcc411cf155e300fa040af42b44077fa4d7efc1d386  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.zip\nee40b9f39d5e56b35b8c0e1a5c5bd65b151e34598052e3cedc2abb4da4ee9dd9  guix-build-ff01e5af948d/output/x86_64-linux-gnu/SHA256SUMS.part\n9d886b556d04658019f9882b7e10b3be26a91c5dbcdeedd4813fcaf769a7a750  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu-debug.tar.gz\n5abdd153b2fc41f56c341b51c9175196f503d310dde64e109c781e8f05f019de  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu.tar.gz\nf324cc0d4187f0f575247fe7585b7e14779f0f3a13de42b8b1766d1de31b2f45  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/SHA256SUMS.part\naba0f3798c6dd780e9c015bc42955dc188e2ee34ec98f7d5593bc328ba99ba8d  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-codesigning.tar.gz\na7efb4381a0beff3c4d03cc2ebffbc477647799d278952dbf2abad47eef62c14  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-debug.zip\n5c71637a17bf4c2fdee6a4c4798716880a669fd2bd4ad6ce590f7242a3eab53c  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-setup-unsigned.exe\n10f70f17a08c1d5100e77c6c65279115cf0f694bd7f6251ef5264be78bcf7195  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-unsigned.zip\n```"
  },
  {
   "t": "2026-08-07T14:47:43Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "What's the minimum supported Linux kernel version for the resulting fully-static `bitcoind`?"
  },
  {
   "t": "2026-08-08T21:31:48Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "Guix build:\n```\n1888fa5d48bb53b438e3ac7973a8914e82a51893c50479e28dc84ece4f54a943  guix-build-ff01e5af948d/output/aarch64-linux-gnu/SHA256SUMS.part\n22b757235729757bf4a225de4b34eca4d20704ad7e1fd6b48ab6902ef6fad407  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu-debug.tar.gz\n1f3461c39b1776cbbaa6d216847beb6670df931121d1d4da9fbaaf6a3aad7398  guix-build-ff01e5af948d/output/aarch64-linux-gnu/bitcoin-ff01e5af948d-aarch64-linux-gnu.tar.gz\n190e5a140d4aa719072a7052343338e9942ecbd16d6e4fc871250296c9a4312c  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/SHA256SUMS.part\n5d95d6f452b5a58eeef74af8513b4c718934f3bafa5c439347c188651b3802d6  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf-debug.tar.gz\n05045c92d9ee12d1ba327eb319597aa1247cc46d55b480decf4b25e05f8825fd  guix-build-ff01e5af948d/output/arm-linux-gnueabihf/bitcoin-ff01e5af948d-arm-linux-gnueabihf.tar.gz\nfd089395212778703a42d2624179c7ee7bdc859ac1b45911305c2f5a3a5c6c1e  guix-build-ff01e5af948d/output/arm64-apple-darwin/SHA256SUMS.part\nd63b5bfc70bf41a431a7a6d4b50a3ebe29377732dc2a0ff34a81579674b6cc75  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-codesigning.tar.gz\n0c603699da0c4193724b0303bc17e5f1cd5c742a6f6b423b58e93d2d45c7ce57  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.tar.gz\n57ab8c7c258c901a2fd908d7e12e2657820f90a9724c50e9a7f9adc95093bc0f  guix-build-ff01e5af948d/output/arm64-apple-darwin/bitcoin-ff01e5af948d-arm64-apple-darwin-unsigned.zip\n00cc2357b102dd4e1c41bf9fc0c28cc4d43ec1074b7035defc09e4c81f910322  guix-build-ff01e5af948d/output/dist-archive/bitcoin-ff01e5af948d.tar.gz\nbd9c1279ee3f14d30c6a8faade8333e120d35252acc146e09851f8c6d478af67  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/SHA256SUMS.part\nafc9338f53ad94d18e70a18342eebb7ec0a794332082baa6ee96cd182b5c020d  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu-debug.tar.gz\nebd0811a011ba39d02784dddcc1dcca01041460365d8c363f8980e0a9262ea81  guix-build-ff01e5af948d/output/powerpc64-linux-gnu/bitcoin-ff01e5af948d-powerpc64-linux-gnu.tar.gz\na86ab388c5b215cee68b0dc94d26ea2937d929b9e795a5106299c0223485cf78  guix-build-ff01e5af948d/output/riscv64-linux-gnu/SHA256SUMS.part\nfb4a63775a48f24e3ff3ae47899042062d48bed9e04f326757955f350c7ee8bf  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu-debug.tar.gz\n0fbb0dcd8c10ff4262506a26cd21929f710efce6a43b76c175e967ea32c7888e  guix-build-ff01e5af948d/output/riscv64-linux-gnu/bitcoin-ff01e5af948d-riscv64-linux-gnu.tar.gz\n41ef0e621c8b81222a0b2ccf1ffc8e6a76b6d71a089c3eab19e95bce69b2385c  guix-build-ff01e5af948d/output/x86_64-apple-darwin/SHA256SUMS.part\nf198e20602692c3981882df2dc704c09482c06f6f9620bdf80bdc4802bc8a757  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-codesigning.tar.gz\n5b94a6cd915caae58a60498d0347d50170f0c697f3816cc2b405998f134a2035  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.tar.gz\n5418fa47e6796d484e4d0bcc411cf155e300fa040af42b44077fa4d7efc1d386  guix-build-ff01e5af948d/output/x86_64-apple-darwin/bitcoin-ff01e5af948d-x86_64-apple-darwin-unsigned.zip\nee40b9f39d5e56b35b8c0e1a5c5bd65b151e34598052e3cedc2abb4da4ee9dd9  guix-build-ff01e5af948d/output/x86_64-linux-gnu/SHA256SUMS.part\n9d886b556d04658019f9882b7e10b3be26a91c5dbcdeedd4813fcaf769a7a750  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu-debug.tar.gz\n5abdd153b2fc41f56c341b51c9175196f503d310dde64e109c781e8f05f019de  guix-build-ff01e5af948d/output/x86_64-linux-gnu/bitcoin-ff01e5af948d-x86_64-linux-gnu.tar.gz\nf324cc0d4187f0f575247fe7585b7e14779f0f3a13de42b8b1766d1de31b2f45  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/SHA256SUMS.part\naba0f3798c6dd780e9c015bc42955dc188e2ee34ec98f7d5593bc328ba99ba8d  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-codesigning.tar.gz\na7efb4381a0beff3c4d03cc2ebffbc477647799d278952dbf2abad47eef62c14  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-debug.zip\n5c71637a17bf4c2fdee6a4c4798716880a669fd2bd4ad6ce590f7242a3eab53c  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-setup-unsigned.exe\n10f70f17a08c1d5100e77c6c65279115cf0f694bd7f6251ef5264be78bcf7195  guix-build-ff01e5af948d/output/x86_64-w64-mingw32/bitcoin-ff01e5af948d-win64-unsigned.zip\n```"
  },
  {
   "t": "2026-08-08T21:50:23Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "Also ran bitcoin_test and bitcoind on arm ubuntu 26.04 and armbian v25.11.2 for RockPro 64 running Armbian Linux 6.12.58-current-rockchip64."
  },
  {
   "t": "2026-08-10T12:51:40Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThis shouldn't be changed here, and remain as `3.2.0` for x86_64 and `3.7.0` for aarc64."
  },
  {
   "t": "2026-08-11T11:05:40Z",
   "kind": "comment",
   "who": "dergoegge",
   "assoc": "MEMBER",
   "text": "Not sure if helpful, but I synced signet and ran `test_bitcoin` on my NixOS 26.05 x86 machine without problem."
  },
  {
   "t": "2026-08-11T11:22:49Z",
   "kind": "review_comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "path": "doc/release-notes-25573.md",
   "commit": "ff01e5af948d11f2c44aac032591fd621ee6997b",
   "in_reply_to": null,
   "text": "Looked at the local dns resolution a bit more, and agree with @willcl-ark that it should get a release note. From what I can tell there isn't a scenario where users can't work around dynamic nss loading not being available. It is complicated to explain though, since just saying \".local is busted\" is wrong too: The router might still be able to resolve them. How about something like: This means that name resolution through dynamic nss modules is not possible. Users using mdns (.local), LDAP, or SSSD to resolve names for local connections should verify that connections are still resolved correctly.\"\n\nLuckily enough for my own local setup, I use .home, which works just fine."
  },
  {
   "t": "2026-08-11T11:34:42Z",
   "kind": "review",
   "who": "sedited",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "ff01e5af948d11f2c44aac032591fd621ee6997b",
   "text": "I diffed a strace between this static binary and a current dynamic binary and found the following:\n\n```diff\ndiff dynamic_sys_trace static_sys_trace\n< /etc/ld.so.cache\n23a23,29\n[quoted text omitted]\n26,31c32\n< /usr/lib/locale/locale-archive\n< /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache\n< /usr/lib/x86_64-linux-gnu/libc.so.6\n< /usr/lib/x86_64-linux-gnu/libm.so.6\n< /usr/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2\n< /usr/lib/x86_64-linux-gnu/libpthread.so.0\n---\n[quoted text omitted]\n\n```\nLooks good, but I'm a bit confused that this is apparently trying to open some locales from the guix build environment and apparently so from the inherited glibc version? This doesn't matter for bitcoind, where we just fallback to the default locale anyway, but given the work in commit 5ce3b51b155d1b309f1550df8443acbf5db8873e it feels a bit incomplete. Or is the intention that it uses this as a fallback?"
  },
  {
   "t": "2026-08-12T11:17:54Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "doc/release-notes-25573.md",
   "commit": "ff01e5af948d11f2c44aac032591fd621ee6997b",
   "in_reply_to": 3757484260,
   "text": "Thanks, taken your release note additions in the next push."
  },
  {
   "t": "2026-08-12T14:14:07Z",
   "kind": "force_push",
   "who": "fanquake",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695"
  },
  {
   "t": "2026-08-12T14:19:29Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThis is due to Guix appending `(string-append \"libc_cv_complocaledir=/run/current-system/locale/\",(version-major+minor version))` onto it's glibc configure flags. I've filtered this out, and updated https://github.com/bitcoin/bitcoin/commit/5ce3b51b155d1b309f1550df8443acbf5db8873e."
  },
  {
   "t": "2026-08-14T12:20:30Z",
   "kind": "comment",
   "who": "jsarenik",
   "assoc": "NONE",
   "text": "Approach ACK\n\nJust a note that the current Alt Signet Faucet is running on a `prune=550` node on ff01e5af948d11f2c44aac032591fd621ee6997b build. On Alpine (uname -smnr: `Linux singer 6.18.2-0-lts x86_64`).\n\nI used to do a custom local `LD_PRELOAD` script using glibc dependency libraries from Debian when running bitcoincore.org release builds before. Liking this static-pie approach a lot.\n\nUPDATE: the latest static build now"
  },
  {
   "t": "2026-08-14T15:59:27Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "Just wanted to note a random thought I had here, mainly so that I remember it later.\n\nIt could be good to check/confirm if we have devs who would be regularly building with `-static-pie` enabled in their everyday development activities. I'm unsure if specific custom-built toolchains are always required for this (as we build here in Guix), @fanquake says static-pie is supported today on stock Fedora for example, but it would be good to know that the binary type we put out for releases is getting \"everyday\" testing/usage.\n\nAnother possibility might be to follow up with a CI job that builds with this flag.\n\nedit: my clanker reckons a few more distros support this out of the box:\n\nDetails\n\nFedora can do it with the normal toolchain plus:\n\n```sh\nsudo dnf install gcc-c++ glibc-devel glibc-static\n```\n\n`glibc-static` is the important package; it contains the static libc archives. [Fedora packages it separately](https://packages.fedoraproject.org/pkgs/glibc/glibc-static/).\n\nOther viable Linux distributions include:\n\n- Debian/Ubuntu: `build-essential libc6-dev`; the native `libc.a` and `rcrt1.o` are included in `libc6-dev`. For AArch64, add `gcc-aarch64-linux-gnu libc6-dev-arm64-cross`. ([Ubuntu file list](https://packages.ubuntu.com/noble/all/libc6-dev/filelist), [Debian cross compiler](https://packages.debian.org/bookworm/gcc-aarch64-linux-gnu))\n- Arch: its normal glibc development setup supports this, and `aarch64-linux-gnu-gcc` plus `aarch64-linux-gnu-glibc` are packaged for cross-building. ([Arch cross GCC](https://archlinux.org/packages/extra/x86_64/aarch64-linux-gnu-gcc/))\n- openSUSE and Gentoo should also be capable, but the static libc package/configuration is less uniform."
  },
  {
   "t": "2026-08-17T08:44:00Z",
   "kind": "comment",
   "who": "xrviv",
   "assoc": "NONE",
   "text": "Hi Danny Here on behalf of @walletscrutiny,\n\nHere are our findings:\n\nRuntime data point on the external-NSS behaviour already noted by @willcl-ark and\n@sedited \u2014 a concrete reproduction plus one diagnostics observation.\n\n**Host:** Ubuntu 24.04.4, glibc 2.39, avahi active,\n`hosts: files mdns4_minimal [NOTFOUND=return] dns`. `MS-7978.local` is resolvable\nonly via `mdns4_minimal`.\n\nBoth artifacts are from the `ff01e5af948d` release and report\n`v31.99.0-gff01e5af948d11f2c44aac032591fd621ee6997b`. Run back-to-back in one\nsession, each with a **freshly created empty datadir**, checking the baseline\nbefore, between and after \u2014 all with\n`-connect=MS-7978.local -dnsseed=0 -debug=net`:\n\n```\n$ getent hosts MS-7978.local\n172.17.0.1      MS-7978.local\n\n06:46:41Z  static bitcoind\n06:46:41Z  [net] trying v2 connection (manual) to MS-7978.local, lastseen=0.0hrs\n   \u2026 11 attempts, 06:46:41Z \u2192 06:47:09Z, no address ever obtained, no error \u2026\n\n$ getent hosts MS-7978.local\n172.17.0.1      MS-7978.local\n\n06:50:37Z  bitcoin-qt (dynamically linked)\n06:50:37Z  [net] trying v2 connection (manual) to MS-7978.local, lastseen=0.0hrs\n06:50:37Z  connect() to 172.17.0.1:38333 failed after wait: Connection refused (111)\n   \u2026 11 such pairs, every one resolving \u2026\n\n$ getent hosts MS-7978.local\n172.17.0.1      MS-7978.local\n```\n\nRefused is expected \u2014 nothing listens there. It shows an address was obtained.\nThe `getent` checks bracket both runs, which makes a transient resolver outage\nduring the static run unlikely.\n\nConsistent with `glibc-nss-nodlopen.patch`, which replaces\n`handle = __libc_dlopen(shlib_name)` with `handle = NULL`, so external backends\naren't loadable. `files`/`dns` are builtin since glibc 2.34, and ordinary DNS\nseeding worked here \u2014 the same static binary synced signet headers to 100% and\nvalidated 168k blocks without issue.\n\nPractical shape: `-connect` / `-addnode` to a LAN peer by `.local` name.\n\n**The part I think is worth acting on: the failure has no diagnostic.**\n`ConnectNode` logs \"trying \u2026\" before `Lookup()` (net.cpp:398-413); on failure the\nunresolved placeholder fails `IsValid()` so no `connect()` line follows\n(:433-446); and `WrappedGetAddrInfo` returns `{}` on both `getaddrinfo` attempts\nwithout logging (netbase.cpp:45-74). So at `-debug=net` an operator sees only\nrepeated connection attempts, with nothing indicating resolution is the problem.\nA log line when `Lookup()` returns empty for a manual target would make this\nself-diagnosing.\n\n**Caveats.** These are the two different Linux artifacts of this PR, built from\nseparate Guix manifests (`linux_static.scm` vs `manifest_gui.scm`, different\nglibc), so this is an artifact comparison, not an isolation of linkage. One host,\none module, one hostname; I haven't tested `nss_systemd`, `nss_sss`, LDAP or a\nsystemd-resolved stub. The class-wide implication is read from the patch, not\nmeasured."
  },
  {
   "t": "2026-08-17T09:36:56Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nIt seems [`getrandom()`](https://www.man7.org/linux/man-pages/man2/getrandom.2.html) in [`GetOSRand()`](https://github.com/bitcoin/bitcoin/blob/4800cb7aea0192fcda6e4642db7f19fcf335d0fc/src/random.cpp#L304) raises it to Linux 3.17. I believe this is worth documenting somewhere.\n\nUPDATE: See https://github.com/bitcoin/bitcoin/pull/27699."
  },
  {
   "t": "2026-08-17T11:36:09Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nThanks, I've opened #35993. We can pass a value to `--enable-kernel` when building glibc, to make these values line up in the symbol checks, and the existing documentation."
  },
  {
   "t": "2026-08-17T11:40:14Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "contrib/guix/toolchains.scm",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "in_reply_to": null,
   "text": "nit:\n```suggestion\n            ;; https://sourceware.org/glibc/manual/latest/html_node/Configuring-and-compiling.html\n```"
  },
  {
   "t": "2026-08-17T12:21:50Z",
   "kind": "review",
   "who": "hebasto",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "text": "Tested 06b842f50872e38a6ac4956c9305edf543bca695 on Fedora 21 with Linux kernel 3.17.4:\n```console\n$ cat /etc/os-release\nNAME=Fedora\nVERSION=\"21 (Twenty One)\"\nID=fedora\nVERSION_ID=21\nPRETTY_NAME=\"Fedora 21 (Twenty One)\"\nANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:21\"\nHOME_URL=\"https://fedoraproject.org/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\nREDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=21\nREDHAT_SUPPORT_PRODUCT=\"Fedora\"\nREDHAT_SUPPORT_PRODUCT_VERSION=21\n$ uname -a\nLinux localhost.localdomain.localdomain 3.17.4-301.fc21.x86_64 #1 SMP Thu Nov 27 19:09:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux"
  },
  {
   "t": "2026-08-17T13:00:11Z",
   "kind": "review",
   "who": "hebasto",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "text": "Approach ACK 06b842f50872e38a6ac4956c9305edf543bca695.\n\nre https://github.com/bitcoin/bitcoin/pull/25573#issuecomment-5295421835:\n[quoted text omitted]\n\nA Guix option that allows skipping the GUI builds would be very helpful for such a CI job."
  },
  {
   "t": "2026-08-17T16:47:21Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "doc/release-notes-25573.md",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "in_reply_to": null,
   "text": "nit: The wording \"run on musl-libc based systems\" might imply a dependency on musl libc. However, independence from any libc is the feature now."
  },
  {
   "t": "2026-08-18T01:05:53Z",
   "kind": "comment",
   "who": "xrviv",
   "assoc": "NONE",
   "text": "Built this on my own machine, using Guix and checked out to ff01e5af948d, and compared against the hashes published by @fanquake\n\n| Artifact                                             | SHA256                                                             | Result |\n| ---------------------------------------------------- | ------------------------------------------------------------------ | ------ |\n| `bitcoin-ff01e5af948d-x86_64-linux-gnu.tar.gz`       | `5abdd153b2fc41f56c341b51c9175196f503d310dde64e109c781e8f05f019de` | match  |\n| `bitcoin-ff01e5af948d-x86_64-linux-gnu-debug.tar.gz` | `9d886b556d04658019f9882b7e10b3be26a91c5dbcdeedd4813fcaf769a7a750` | match  |\n| `bitcoin-ff01e5af948d.tar.gz` (source archive)       | `00cc2357b102dd4e1c41bf9fc0c28cc4d43ec1074b7035defc09e4c81f910322` | match  |\n\n- Note: I built and hashed the debug tar, but was not able to compare it to @fanquake's actual debug tar - only to its hash.\n\nBuilt this to corroborate @willcl-ark's and @sedited's builds.\n\n**Build parameters**, for anyone comparing:\n\n```\nHOSTS=x86_64-linux-gnu\nJOBS=4\nSOURCES_PATH=<persistent path>\nBASE_CACHE=<persistent path>\nSOURCE_DATE_EPOCH=1786009719   (as reported by guix-build)\ncommit ff01e5af948d11f2c44aac032591fd621ee6997b\n```"
  },
  {
   "t": "2026-08-18T09:45:01Z",
   "kind": "comment",
   "who": "0xB10C",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nTested the ff01e5af948d x86 **and aarch64** binaries on NixOS 26.05 by running signet (but not a full sync), and ran `test_bitcoin`. Cool to see that these bins can now be run on NixOS without e.g. https://github.com/nix-community/nix-ld."
  },
  {
   "t": "2026-08-18T11:09:27Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "contrib/guix/toolchains.scm",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "in_reply_to": 3796006880,
   "text": "Changed in the next push."
  },
  {
   "t": "2026-08-18T11:10:04Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "doc/release-notes-25573.md",
   "commit": "06b842f50872e38a6ac4956c9305edf543bca695",
   "in_reply_to": 3797306788,
   "text": "I'll change this to `\"They can now be run on non-glibc based systems...\"`."
  },
  {
   "t": "2026-08-18T12:14:59Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI'm not sure the extra code complexity (in the release build) / and paths to test would be worth it. Looking at #36006, it seems like that job can run more than fast enough, including the GUI?"
  },
  {
   "t": "2026-08-18T14:56:21Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "contrib/guix/linux_static.scm",
   "commit": "db73d162395789ca3a74d50a831f4ac30c0da4f4",
   "in_reply_to": null,
   "text": "Are these four modules really needed? Build succeeds without them for me."
  },
  {
   "t": "2026-08-18T15:04:11Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "Rebased on master (including #35993).\nUpdated the glibc `2.44` branch to point to the latest commit (you may need to retry building a couple times, until you manage to pull the source).\nAddressed some of the review comments.\n\nThanks for all the testing / other comments so far. I've uploaded a new set of test binaries to: https://github.com/fanquake/bitcoin/releases/tag/static_bitcoind_db73d1623957.\nGuix hashes:\n```bash\n31732e817019f219471e71cda1b1986a660130cc5e1ebed7020aae3478ce3150  guix-build-db73d1623957/output/aarch64-linux-gnu/bitcoin-db73d1623957-aarch64-linux-gnu-debug.tar.gz\n27d13309bfc4ec03e8d0fd585b61f4deb00733b833e67a3cc432ffe3c2affccd  guix-build-db73d1623957/output/aarch64-linux-gnu/bitcoin-db73d1623957-aarch64-linux-gnu.tar.gz\n2d89bed5b00526dd015042f32416bf1085b5bab0e0c36c42d8f6177a3bb7980f  guix-build-db73d1623957/output/dist-archive/bitcoin-db73d1623957.tar.gz\neafdc26130f7f059af2ae2185eeae50943b166bad8778c1980b52497d6a14e02  guix-build-db73d1623957/output/x86_64-linux-gnu/bitcoin-db73d1623957-x86_64-linux-gnu-debug.tar.gz\n71aef249424b98b2ceb137cc4f86894941c2449e83e58e0ff6620343ee17a789  guix-build-db73d1623957/output/x86_64-linux-gnu/bitcoin-db73d1623957-x86_64-linux-gnu.tar.gz\n```"
  },
  {
   "t": "2026-08-18T15:46:41Z",
   "kind": "review_comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "path": "contrib/guix/symbol-check.py",
   "commit": "804b126f093c5f3aad35e2a20ec2f6d77c291eeb",
   "in_reply_to": null,
   "text": "nit: This change could be moved from 477feeefedbe643038415303792fdfaa5336b6e4 to 145288bddc16332b2df0ecb17a4add657846af30 for the following reasons:\n1. It is not necessary in 477feeefedbe643038415303792fdfaa5336b6e4.\n2. It will make the following commits \"guix: build x86_64-linux bitcoind & utils statically\" and \"guix: build aarch64-linux bitcoind fully statically\" consistent."
  },
  {
   "t": "2026-08-18T17:46:26Z",
   "kind": "comment",
   "who": "ottosch",
   "assoc": "NONE",
   "text": "Looking ok on Arch Linux 7.1.8-zen1-3-zen\n\n```\n$ ./test_bitcoin\nRunning 814 test cases...\n\n*** No errors detected\n$ bitcoind --version\nBitcoin Core daemon version v31.99.0-gdb73d162395789ca3a74d50a831f4ac30c0da4f4 bitcoind\n```"
  },
  {
   "t": "2026-08-18T18:20:21Z",
   "kind": "comment",
   "who": "theStack",
   "assoc": "MEMBER",
   "text": "Tested the most recent aarch64 bitcoind binary (db73d1623957) on a notebook running Ubuntu 25.04 with kernel `6.17.0-8-qcom-x1e` (OS image obtained from https://people.canonical.com/~platform/images/ubuntu-concept/ a while ago). Ran the unit test binary and did a fresh signet sync successfully, will let it run on mainnet for the next few days."
  },
  {
   "t": "2026-08-18T18:43:04Z",
   "kind": "comment",
   "who": "janb84",
   "assoc": "MEMBER",
   "text": "Tested with the new [apple container machines](https://github.com/apple/container) initial impressions are good:\n\nafter basic apple container setup:\n\n```shell\ncontainer system start\ncontainer machine create alpine:latest --name dev\ncontainer machine run -n dev ./Downloads/bitcoin/bin/bitcoind --regtest\n```\n\nfrom another shell:\n```shell\ncontainer machine run -n dev ./Downloads/bitcoin/bin/bitcoin-cli --regtest stop\n```\n\nstops bitcoind"
  },
  {
   "t": "2026-08-27T14:15:41Z",
   "kind": "comment",
   "who": "ketominer",
   "assoc": "NONE",
   "text": "Hi, very excited about the static builds! We need them for nodl as older devices are based on Ubuntu 18 and won't be upgraded."
  },
  {
   "t": "2026-08-27T17:37:55Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "Glad to hear ketominer!\n\nWe\u2019d love to hear any test feedback you get on the nodls in here."
  },
  {
   "t": "2026-08-28T12:19:58Z",
   "kind": "comment",
   "who": "willcl-ark",
   "assoc": "MEMBER",
   "text": "Referencing a comment from #35929 here : https://github.com/bitcoin/bitcoin/pull/35929#issuecomment-5451743557\n\nNot sure it belongs in the PR per-se, but good ot have in mind over here too IMO, perhaps for a followup."
  },
  {
   "t": "2026-08-30T07:56:14Z",
   "kind": "comment",
   "who": "ketominer",
   "assoc": "NONE",
   "text": "Stable so far on an Ubuntu 18.04 aarch64"
  },
  {
   "t": "2026-09-01T09:12:45Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "contrib/guix/symbol-check.py",
   "commit": "804b126f093c5f3aad35e2a20ec2f6d77c291eeb",
   "in_reply_to": 3805671112,
   "text": "This has been shifted in the next push."
  },
  {
   "t": "2026-09-08T15:47:15Z",
   "kind": "review_comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "path": "contrib/guix/linux_static.scm",
   "commit": "db73d162395789ca3a74d50a831f4ac30c0da4f4",
   "in_reply_to": 3805248870,
   "text": "Dropped."
  },
  {
   "t": "2026-09-08T15:56:49Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "This is now based on #36193 (which includes 1 commit from this PR). The additional commits in that PR, to remove `wchar_t` usage, prune roughly half a megabyte from `bitcoind`."
  }
 ],
 "labels_log": [
  {
   "t": "2022-07-08T16:49:48Z",
   "action": "labeled",
   "label": "Build system",
   "who": "fanquake"
  },
  {
   "t": "2022-07-19T08:37:17Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2022-07-19T17:03:13Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2022-07-30T16:57:01Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2022-08-05T09:44:03Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2022-09-13T10:04:16Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2022-09-13T11:22:26Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "fanquake"
  },
  {
   "t": "2023-02-17T10:47:02Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-02-17T12:53:43Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-03-27T15:59:21Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-03-27T18:22:06Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-05-30T15:34:24Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2023-05-31T19:14:00Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2023-06-28T11:50:28Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-06-30T09:07:53Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-22T15:33:06Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-23T14:51:50Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-23T21:12:30Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-24T10:05:10Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-24T12:14:22Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-08-24T16:37:17Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2023-11-13T10:00:22Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2023-11-13T12:18:06Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-01-14T03:07:47Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-01-16T11:19:38Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-01-16T13:24:18Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-01-16T15:40:16Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-02-28T13:44:32Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-04T16:13:45Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-14T10:36:45Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-15T18:00:36Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-26T13:53:05Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-03-26T16:09:21Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-04-17T08:15:19Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-05-02T04:10:32Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-05-02T05:22:40Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-06-08T09:43:24Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-01T18:34:56Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-01T21:10:57Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-15T15:34:14Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-07-20T07:28:05Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2024-08-28T10:05:27Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-08-28T18:53:01Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2024-12-20T16:43:04Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-01-20T17:29:33Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-05T13:16:08Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-05T13:38:43Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-12T11:10:08Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-19T07:07:16Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-19T22:10:32Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-02-19T22:29:36Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-05-12T18:51:18Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-05-12T21:09:17Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-05-27T19:23:24Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-05-28T10:34:03Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-06-11T13:23:51Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-06-11T15:46:57Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-11-05T12:35:45Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-11-05T15:53:32Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2025-11-17T11:05:22Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2025-11-17T13:32:30Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-09T11:11:41Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-09T12:37:42Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-24T22:15:39Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-02-25T18:30:11Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-16T16:22:27Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-16T17:39:07Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-04-27T19:50:41Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-09T20:35:47Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-09T22:43:08Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-15T17:05:59Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-20T02:52:41Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-22T17:20:04Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-02T10:15:00Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-02T11:20:32Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-02T14:51:18Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-02T15:59:39Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-21T12:42:02Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-21T14:55:08Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-25T10:45:44Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-25T11:45:25Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-26T20:48:56Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-27T09:34:18Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-27T12:02:29Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-27T14:10:54Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-29T15:42:03Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-07-29T16:43:20Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-04T09:31:06Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-04T10:52:38Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-06T09:49:35Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-06T11:13:05Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2022-07-08T16:49:58Z",
   "kind": "convert_to_draft",
   "who": "fanquake"
  },
  {
   "t": "2023-07-27T13:26:19Z",
   "kind": "renamed",
   "who": "fanquake",
   "from": "[POC] guix: produce a fully -static-pie x86_64 bitcoind using GCC and glibc",
   "to": "[POC] guix: produce a fully `-static-pie` bitcoind"
  },
  {
   "t": "2025-11-06T17:04:27Z",
   "kind": "renamed",
   "who": "fanquake",
   "from": "[POC] guix: produce a fully `-static-pie` bitcoind",
   "to": "guix: produce a fully `-static-pie` bitcoind"
  },
  {
   "t": "2025-11-06T17:04:32Z",
   "kind": "renamed",
   "who": "fanquake",
   "from": "guix: produce a fully `-static-pie` bitcoind",
   "to": "guix: produce a `-static-pie` bitcoind"
  },
  {
   "t": "2026-07-21T14:50:50Z",
   "kind": "ready_for_review",
   "who": "fanquake"
  }
 ],
 "text_chars": 69433,
 "text_tokens_estimate": 17358,
 "changed_paths": [
  "contrib/guix/guix-build",
  "contrib/guix/libexec/build_linux.sh",
  "contrib/guix/linux_static.scm",
  "contrib/guix/manifest_build.scm",
  "contrib/guix/manifest_gui.scm",
  "contrib/guix/patches/glibc-guix-store-paths.patch",
  "contrib/guix/patches/glibc-nss-nodlopen.patch",
  "contrib/guix/security-check.py",
  "contrib/guix/symbol-check.py",
  "contrib/guix/toolchains.scm",
  "depends/packages/boost.mk",
  "depends/patches/boost/drop_wcrtomb_wchar_t.patch",
  "doc/release-notes-25573.md"
 ],
 "files": [
  {
   "path": "contrib/guix/guix-build",
   "add": 9,
   "del": 1
  },
  {
   "path": "contrib/guix/libexec/build_linux.sh",
   "add": 8,
   "del": 1
  },
  {
   "path": "contrib/guix/linux_static.scm",
   "add": 12,
   "del": 0
  },
  {
   "path": "contrib/guix/manifest_build.scm",
   "add": 2,
   "del": 273
  },
  {
   "path": "contrib/guix/manifest_gui.scm",
   "add": 5,
   "del": 1
  },
  {
   "path": "contrib/guix/patches/glibc-guix-store-paths.patch",
   "add": 94,
   "del": 0
  },
  {
   "path": "contrib/guix/patches/glibc-nss-nodlopen.patch",
   "add": 32,
   "del": 0
  },
  {
   "path": "contrib/guix/security-check.py",
   "add": 4,
   "del": 0
  },
  {
   "path": "contrib/guix/symbol-check.py",
   "add": 32,
   "del": 5
  },
  {
   "path": "contrib/guix/toolchains.scm",
   "add": 357,
   "del": 0
  },
  {
   "path": "depends/packages/boost.mk",
   "add": 5,
   "del": 0
  },
  {
   "path": "depends/patches/boost/drop_wcrtomb_wchar_t.patch",
   "add": 17,
   "del": 0
  },
  {
   "path": "doc/release-notes-25573.md",
   "add": 13,
   "del": 0
  }
 ],
 "test_lines": 836,
 "git": {
  "head": "804b126f093c5f3aad35e2a20ec2f6d77c291eeb",
  "head_matches_backup": true,
  "base": "b8215855437288cac95c7fd5d41104c73c0f3495",
  "commits": [
   {
    "sha": "c49d45d913",
    "subject": "guix: split linux toolchain for static builds",
    "files": 5,
    "add": 306,
    "del": 275
   },
   {
    "sha": "50b0c2b700",
    "subject": "depends: patch around Boost Test std::wcrtomb usage",
    "files": 2,
    "add": 22,
    "del": 0
   },
   {
    "sha": "d588d6344d",
    "subject": "guix: gcc --disable-wchar_t",
    "files": 2,
    "add": 9,
    "del": 2
   },
   {
    "sha": "5793485ec6",
    "subject": "guix: add helper to generate /gnu/store mappings",
    "files": 1,
    "add": 10,
    "del": 0
   },
   {
    "sha": "45435e6bf5",
    "subject": "guix: add glibc 2.44",
    "files": 3,
    "add": 184,
    "del": 0
   },
   {
    "sha": "8d34a695e1",
    "subject": "guix: adapt symbol and security checks for static ELF",
    "files": 2,
    "add": 34,
    "del": 3
   },
   {
    "sha": "5f63279caf",
    "subject": "guix: build x86_64-linux bitcoind & utils statically",
    "files": 3,
    "add": 13,
    "del": 3
   },
   {
    "sha": "fb64215a53",
    "subject": "guix: build aarch64-linux bitcoind fully statically",
    "files": 3,
    "add": 4,
    "del": 3
   },
   {
    "sha": "804b126f09",
    "subject": "doc: add release note for #25573",
    "files": 1,
    "add": 13,
    "del": 0
   }
  ],
  "patch_truncated": true
 },
 "input_hash": "89d5feb383c570d2",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}