{
 "number": 35356,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35356",
 "title": "ci: Test build dir with spaces",
 "author": "maflcko",
 "author_association": "MEMBER",
 "created_at": "2026-05-22T12:04:14Z",
 "updated_at": "2026-08-17T13:00:44Z",
 "age_days": 118,
 "draft": true,
 "labels": [
  "Tests",
  "CI failed"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "474afb85098056239fca984cd885ecaedaa84af2",
 "head_ref": "2605-ci-bld-space",
 "head_repo": "maflcko/bitcoin-core",
 "head_history": [],
 "additions": 13,
 "deletions": 4,
 "changed_files": 1,
 "commit_count": 2,
 "size_bucket": "S",
 "mergeable_state": "blocked",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "hebasto",
      "url": "https://github.com/bitcoin/bitcoin/pull/35356#issuecomment-4518667535"
     }
    ]
   },
   "conflicts": [
    {
     "number": 31507,
     "title": "build: Use clang-cl to build on Windows natively",
     "author": "hebasto"
    }
   ]
  }
 },
 "acks_parsed": {
  "hebasto": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2026-05-22T12:32:19Z",
   "stale": false
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 1,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "fanquake",
   "hebasto"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": true,
  "mergeable_state": "blocked",
  "last_author_activity": "2026-08-17T13:00:37Z",
  "last_reviewer_activity": "2026-05-22T13:26:42Z",
  "last_reviewer": "fanquake",
  "author_silent_days": 31,
  "waiting_on_author_days": 0,
  "days_since_update": 31
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": [
   31507
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [],
 "body": "In theory this is already tested by setting the scratch dir to `scratch_ \u20bf\ud83e\uddea_` in the CI:\n\n https://github.com/bitcoin/bitcoin/blob/b9f0040caf45355c4621e792df09fffabf23495e/ci/test/00_setup_env.sh#L26\n\nHowever, this doesn't cover everything, because on Linux, the build dir will contain symlinks to the Python functional tests, which will drop the space when they are resolved. So the `subprocess.h` may not see spaces in the command.\n\nIn theory, this can be fixed by moving the CI root dir to something with spaces, but this breaks other stuff (like depends).\n\nSo, only test `subprocess.h` handling of paths with spaces on Windows, which creates copies instead of symlinks to Python scripts.",
 "commits": [
  {
   "sha": "cbedcbe3861d52ccffcd2abe7afbc272327a3f44",
   "date": "2026-05-22T11:55:48Z",
   "message": "ci: Use path with spaces on windows as well"
  },
  {
   "sha": "474afb85098056239fca984cd885ecaedaa84af2",
   "date": "2026-05-22T11:56:26Z",
   "message": "ci: Set safe `VCPKG_INSTALLED_DIR`"
  }
 ],
 "timeline": [
  {
   "t": "2026-05-22T12:32:19Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Concept ACK."
  },
  {
   "t": "2026-05-22T13:26:42Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "```bash\n[420](https://github.com/bitcoin/bitcoin/actions/runs/26286704505/job/77376033170#step:14:3421)\n test  2026-05-22T12:47:14.418896Z TestFramework (ERROR): Unexpected exception:\n                                   Traceback (most recent call last):\n                                     File \"D:\\a\\bitcoin\\bitcoin\\build_ _\\test\\functional\\test_framework\\test_framework.py\", line 143, in main\n                                       self.run_test()\n                                       ~~~~~~~~~~~~~^^\n                                     File \"D:\\a\\bitcoin\\bitcoin\\build_ _\\test\\functional\\wallet_signer.py\", line 58, in run_test\n                                       self.test_valid_signer()\n                                       ~~~~~~~~~~~~~~~~~~~~~~^^\n                                     File \"D:\\a\\bitcoin\\bitcoin\\build_ _\\test\\functional\\wallet_signer.py\", line 71, in test_valid_signer\n                                       self.nodes[1].createwallet(wallet_name='hww', disable_private_keys=True, external_signer=True)\n                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n                                     File \"D:\\a\\bitcoin\\bitcoin\\build_ _\\test\\functional\\test_framework\\coverage.py\", line 50, in __call__\n                                       return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)\n                                     File \"D:\\a\\bitcoin\\bitcoin\\build_ _\\test\\functional\\test_framework\\authproxy.py\", line 153, in __call__\n                                       raise JSONRPCException(response['error'], status)\n                                   test_framework.authproxy.JSONRPCException: {'code': -1, 'message': \"RunCommandParseJSON error: process(C:\\\\hostedtoolcache\\\\windows\\\\Python\\\\3.14.5\\\\x64\\\\python.exe D:\\\\a\\\\bitcoin\\\\bitcoin\\\\build_ _\\\\test\\\\functional\\\\mocks\\\\signer.py enumerate) returned 2: C:\\\\hostedtoolcache\\\\windows\\\\Python\\\\3.14.5\\\\x64\\\\python.exe: can't open file 'D:\\\\\\\\a\\\\\\\\bitcoin\\\\\\\\bitcoin\\\\\\\\build_': [Errno 2] No such file or directory\\r\\n\"} [http_status=200]\n test  2026-05-22T12:47:14.424669Z TestFramework (DEBUG): Closing down network thread\n```"
  },
  {
   "t": "2026-05-22T13:28:49Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "The Windows CI fails, as expected. To reproduce on Linux:\n\n```\n# ./bld-cmake/test/functional/wallet_signer.py\n2026-05-22T13:25:49.297591Z TestFramework (INFO): PRNG seed is: 1399337446465493161\n2026-05-22T13:25:49.349357Z TestFramework (INFO): Initializing test directory /tmp/bitcoin_func_test_txcy4g9y\n2026-05-22T13:25:50.900451Z TestFramework (ERROR): Unexpected exception:\nTraceback (most recent call last):\n  File \"/root/ \u20bf\ud83e\uddea_/test/functional/test_framework/test_framework.py\", line 143, in main\n    self.run_test()\n    ~~~~~~~~~~~~~^^\n  File \"/root/ \u20bf\ud83e\uddea_/./bld-cmake/test/functional/wallet_signer.py\", line 58, in run_test\n    self.test_valid_signer()\n    ~~~~~~~~~~~~~~~~~~~~~~^^\n  File \"/root/ \u20bf\ud83e\uddea_/./bld-cmake/test/functional/wallet_signer.py\", line 71, in test_valid_signer\n    self.nodes[1].createwallet(wallet_name='hww', disable_private_keys=True, external_signer=True)\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/root/ \u20bf\ud83e\uddea_/test/functional/test_framework/coverage.py\", line 50, in __call__\n    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)\n  File \"/root/ \u20bf\ud83e\uddea_/test/functional/test_framework/authproxy.py\", line 153, in __call__\n    raise JSONRPCException(response['error'], status)\ntest_framework.authproxy.JSONRPCException: {'code': -1, 'message': \"RunCommandParseJSON error: process(/usr/bin/python3 /root/ \u20bf\ud83e\uddea_/test/functional/mocks/signer.py enumerate) returned 1: /usr/bin/python3: can't find '__main__' module in '/root/'\\n\"} [http_status=200]\n2026-05-22T13:25:50.955938Z TestFramework (INFO): Not stopping nodes as test failed. The dangling processes will be cleaned up later.\n2026-05-22T13:25:50.956328Z TestFramework (WARNING): Not cleaning up dir /tmp/bitcoin_func_test_txcy4g9y\n2026-05-22T13:25:50.956531Z TestFramework (ERROR): Test failed. Test logging available at /tmp/bitcoin_func_test_txcy4g9y/test_framework.log\n2026-05-22T13:25:50.956800Z TestFramework (ERROR):\n2026-05-22T13:25:50.957103Z TestFramework (ERROR): Hint: Call /root/ \u20bf\ud83e\uddea_/test/functional/combine_logs.py '/tmp/bitcoin_func_test_txcy4g9y' to consolidate all logs\n2026-05-22T13:25:50.957270Z TestFramework (ERROR):\n2026-05-22T13:25:50.957401Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.\n2026-05-22T13:25:50.957595Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues\n2026-05-22T13:25:50.957724Z TestFramework (ERROR):\n[node 1] Cleaning up leftover process\n[node 0] Cleaning up leftover process\n\n# history\n    4  git clone https://github.com/bitcoin/bitcoin.git  --depth=1 \"./ \u20bf\ud83e\uddea_\" && cd \"./ \u20bf\ud83e\uddea_\"\n    5  cmake -B ./bld-cmake    -DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' --preset=dev-mode\n    9  cmake --build ./bld-cmake --parallel  $(nproc)\n   10  ./bld-cmake/test/functional/wallet_signer.py\n\n```\n\n(failure happens on Linux, before and after 2706758dc38c7a4e271d9df5ea3104b7135974f3)"
  },
  {
   "t": "2026-08-17T13:00:37Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "fresh CI"
  }
 ],
 "labels_log": [
  {
   "t": "2026-05-22T12:04:19Z",
   "action": "labeled",
   "label": "Tests",
   "who": "DrahtBot"
  },
  {
   "t": "2026-05-22T12:58:53Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2026-08-17T13:00:37Z",
   "kind": "closed",
   "who": "maflcko"
  },
  {
   "t": "2026-08-17T13:00:44Z",
   "kind": "reopened",
   "who": "maflcko"
  }
 ],
 "text_chars": 6032,
 "text_tokens_estimate": 1508,
 "changed_paths": [
  ".github/ci-windows.py"
 ],
 "files": [
  {
   "path": ".github/ci-windows.py",
   "add": 13,
   "del": 4
  }
 ],
 "test_lines": 0,
 "git": {
  "head": "474afb85098056239fca984cd885ecaedaa84af2",
  "head_matches_backup": true,
  "base": "b9f0040caf45355c4621e792df09fffabf23495e",
  "commits": [
   {
    "sha": "cbedcbe386",
    "subject": "ci: Use path with spaces on windows as well",
    "files": 1,
    "add": 8,
    "del": 4
   },
   {
    "sha": "474afb8509",
    "subject": "ci: Set safe `VCPKG_INSTALLED_DIR`",
    "files": 1,
    "add": 5,
    "del": 0
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "747f0f77cdd6c7a0",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}