Build from source on Windows - Cargo error without Rust toolchain
まだ誰も着手していません。
- 主要言語
- JavaScript
- スター
- 122k
- フォーク
- 37.3k
- 平均マージ
- 4日 2時間
- マージ済み PR(30日)
- 283
説明
Follows on from https://github.com/nodejs/node/issues/63213
Version
v27.0.0-pre 0e8fb913d857b0d4123995e401293a0c9ee5efd8
Platform
Microsoft Windows NT 10.0.26200.0 x64
Subsystem
build
What steps will reproduce the bug?
On Windows 11 25H2, follow prerequisite Manual install instructions using:
- Python 3.14.5
- Visual Basic 2026 Build Tools 18.6.0 (May 2026)
- C++ Clang Compiler for Windows (Microsoft.VisualStudio.Component.VC.Llvm.Clang)
- MSBuild support for LLVM (clang-cl) toolset (Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset)
- NASM 3.01
- Do not install a Rust toolchain (and otherwise ensure that there is no
rustcorcargoinstalled).
In PowerShell 7 terminal, execute:
git clone https://github.com/nodejs/node
cd node
git switch main
git clean -xfd # if repeating
.\vcbuild.bat
Release\node -e "console.log('Hello from Node.js', process.version)"
How often does it reproduce? Is there a required condition?
Always if there is no Rust toolchain installed. Test with the following, which should both return errors:
rustc --version
cargo --version
What is the expected behavior? Why is that the expected behavior?
If a Rust toolchain is not installed, vcbuild.bat should warn (check for rustc & cargo) that Temporal support is disabled and continue to build without error.
This is implied by the documentation section Building Node.js with Temporal support and the fact that on Linux, builds succeed if there is no Rust toolchain installed.
If
--v8-enable-temporal-supportand--v8-disable-temporal-supportare both omitted,configure.pyprobes forcargoandrustc. If either is missing, a warning is printed and Temporal support is disabled.
It should also be possible to disable temporal support actively when building under Windows.
What do you see instead?
Build emits error message and continues:
C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v180\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for 'Cargo.toml' exited with code 1
. [C:\Users\mikem\github\NODEJS\node\deps\crates\node_crates.vcxproj]
Directory Release is not created. (out\Release also contains no node.exe)
Additional information
Logs
.\vcbuild.bat
Looking for Python
Python found in C:\Users\mikem\AppData\Local\Microsoft\WindowsApps\\python.exe
Python 3.14.5
Looking for NASM
ClangCL is required because the Node.js version being compiled is >= 24.
Looking for Visual Studio 2026
calling: "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2026 Developer Command Prompt v18.6.0
** Copyright (c) 2026 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
Found MSVS version 18.0
Found Clang version 20.1.8
configure --dest-cpu=x64 --clang-cl=20.1.8
[WARNING] A shebang '/bin/sh' was found but does not match any supported template (e.g. '/usr/bin/python'), so it will be treated as an arbitrary command.
[WARNING] To prevent execution of programs that are not Python runtimes, set 'shebang_can_run_anything' to 'false' in your configuration file.
Node.js configure: Found Python 3.14.5...
Warning: Missing input files:
C:\Users\mikem\github\NODEJS\node\deps\uv\src\win\atomicops-inl.h
C:\Users\mikem\github\NODEJS\node\deps\inspector_protocol\crdtp\maybe.h
C:\Users\mikem\github\NODEJS\node\tools\v8_gypfiles\..\..\deps\v8\third_party\abseil-cpp\absl\base\internal\nullability_impl.h
C:\Users\mikem\github\NODEJS\node\tools\v8_gypfiles\..\..\deps\v8\third_party\abseil-cpp\absl\base\internal\fast_type_id.h
C:\Users\mikem\github\NODEJS\node\tools\v8_gypfiles\..\..\deps\v8\third_party\abseil-cpp\absl\base\internal\identity.h
INFO: configure completed successfully
Project files generated.
src\hdr_histogram.c(149,23): warning : incompatible pointer types passing 'uint32_t *' (aka 'unsigned int *') to parameter of type 'unsigned long *' [-Wincompatible-pointer-types] [C:\Us
ers\mikem\github\NODEJS\node\deps\histogram\histogram.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\Llvm\x64\lib\clang\20\include\intrin0.h(71,48): message : passing argument to parameter '_Index' here [C:\Users\mike
m\github\NODEJS\node\deps\histogram\histogram.vcxproj]
In file included from src\hdr_histogram.c:18:
src\hdr_atomic.h(23,13): warning : unused function 'hdr_atomic_store_pointer' [-Wunused-function] [C:\Users\mikem\github\NODEJS\node\deps\histogram\histogram.vcxproj]
histogram.vcxproj -> ..\..\out\Release\lib\histogram.lib
cargo_build
Traceback (most recent call last):
File "C:\Users\mikem\github\NODEJS\node\deps\crates\cargo_build.py", line 60, in <module>
main()
~~~~^^
File "C:\Users\mikem\github\NODEJS\node\deps\crates\cargo_build.py", line 47, in main
ret = subprocess.call(cmd)
File "C:\Users\mikem\AppData\Local\Python\pythoncore-3.14-64\Lib\subprocess.py", line 396, in call
with Popen(*popenargs, **kwargs) as p:
~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\mikem\AppData\Local\Python\pythoncore-3.14-64\Lib\subprocess.py", line 1039, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pass_fds, cwd, env,
^^^^^^^^^^^^^^^^^^^
...<5 lines>...
gid, gids, uid, umask,
^^^^^^^^^^^^^^^^^^^^^^
start_new_session, process_group)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\mikem\AppData\Local\Python\pythoncore-3.14-64\Lib\subprocess.py", line 1553, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
# no special security
^^^^^^^^^^^^^^^^^^^^^
...<4 lines>...
cwd,
^^^^
startupinfo)
^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified
C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v180\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for 'Cargo.toml' exited with code 1
. [C:\Users\mikem\github\NODEJS\node\deps\crates\node_crates.vcxproj]
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
deps/crates/cargo_build.py と vcbuild.bat から呼び出される Windows ビルドパスから始め、configure.py の cargo/rustc プローブを BUILDING.md の Temporal サポートに関するガイダンスおよび報告されている Linux の動作と比較します。rustc と cargo が利用できない状態で再現し、その後、Cargo プロジェクトの失敗なしに Windows ビルドが完了すること、および Temporal サポートを無効にする文書化された方法が機能することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, python, rust
- 領域
- build-system, operating-systems
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100