From a92419ffe481f12878f5aa3f33b5533e412c7aee Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 23 Feb 2025 18:13:56 -0700 Subject: [PATCH] Partial bug fix + conflict for compiling node-js@21: with gcc@11.2 (#48494) * Bug fix for compiling node-js@21: with gcc@11.2 (var/spack/repos/builtin/packages/node-js/package.py var/spack/repos/builtin/packages/node-js/wasm-compiler-gcc11p2.patch) Since this bug fix is not sufficient, add a conflict for node-js@21: with gcc@11.2 * In var/spack/repos/builtin/packages/node-js/package.py, restrict patch wasm-compiler-gcc11p2.patch to versions 21:22 for gcc@11.2 --- .../repos/builtin/packages/node-js/package.py | 7 ++++ .../node-js/wasm-compiler-gcc11p2.patch | 40 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/node-js/wasm-compiler-gcc11p2.patch diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 6946f0722d3..a5ce2599d4d 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -138,6 +138,13 @@ class NodeJs(Package): # and https://github.com/nodejs/node/issues/53633 patch("fix-broken-gcc12-pr53728.patch", when="@22.2:22.5") + # https://github.com/nodejs/node/issues/55596 + # This patch is not sufficient, however, therefore + # add a conflict with this particular version of gcc + # until https://github.com/spack/spack/issues/48492 is resolved + patch("wasm-compiler-gcc11p2.patch", when="@21:22 %gcc@11.2") + conflicts("%gcc@11.2", when="@21:") + executables = ["^node$"] @classmethod diff --git a/var/spack/repos/builtin/packages/node-js/wasm-compiler-gcc11p2.patch b/var/spack/repos/builtin/packages/node-js/wasm-compiler-gcc11p2.patch new file mode 100644 index 00000000000..7670c935132 --- /dev/null +++ b/var/spack/repos/builtin/packages/node-js/wasm-compiler-gcc11p2.patch @@ -0,0 +1,40 @@ +diff --git a/deps/v8/src/compiler/wasm-compiler.cc b/deps/v8/src/compiler/wasm-compiler.cc +--- a/deps/v8/src/compiler/wasm-compiler.cc 2024-10-28 21:25:11.000000000 -0400 ++++ b/deps/v8/src/compiler/wasm-compiler.cc 2024-11-01 02:02:22.554537121 -0400 +@@ -8613,11 +8613,13 @@ + '-'); + + auto compile_with_turboshaft = [&]() { ++ wasm::WrapperCompilationInfo ci; ++ ci.code_kind = CodeKind::WASM_TO_JS_FUNCTION; ++ ci.import_info.import_kind = kind; ++ ci.import_info.expected_arity = expected_arity; ++ ci.import_info.suspend = suspend; + return Pipeline::GenerateCodeForWasmNativeStubFromTurboshaft( +- env->module, sig, +- wasm::WrapperCompilationInfo{ +- .code_kind = CodeKind::WASM_TO_JS_FUNCTION, +- .import_info = {kind, expected_arity, suspend}}, ++ env->module, sig, ci, + func_name, WasmStubAssemblerOptions(), nullptr); + }; + auto compile_with_turbofan = [&]() { +@@ -8774,12 +8776,14 @@ + base::VectorOf(name_buffer.get(), kMaxNameLen) + kNamePrefixLen, sig); + + auto compile_with_turboshaft = [&]() { ++ wasm::WrapperCompilationInfo ci; ++ ci.code_kind = CodeKind::WASM_TO_JS_FUNCTION; ++ ci.import_info.import_kind = kind; ++ ci.import_info.expected_arity = expected_arity; ++ ci.import_info.suspend = suspend; + std::unique_ptr job = + Pipeline::NewWasmTurboshaftWrapperCompilationJob( +- isolate, sig, +- wasm::WrapperCompilationInfo{ +- .code_kind = CodeKind::WASM_TO_JS_FUNCTION, +- .import_info = {kind, expected_arity, suspend}}, ++ isolate, sig, ci, + nullptr, std::move(name_buffer), WasmAssemblerOptions()); + + // Compile the wrapper