node-js: patch for %gcc@12.[1-2] when @22.2:22.5 (#47979)

* node-js: patch for %gcc@12.[1-2] when @22.2:22
* node-js: avoid url patch (serial in common.gypi)
This commit is contained in:
Wouter Deconinck 2024-12-09 14:19:09 -06:00 committed by GitHub
parent b2a86fcaba
commit 4d6347c99c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,25 @@
diff --git a/deps/v8/src/base/macros.h b/deps/v8/src/base/macros.h
index 210885af3c3c0a35111d9fcbbcce95e1570c7a23..d404b6120ab86ff598def668442b444afeb88ebd 100644
--- a/deps/v8/src/base/macros.h
+++ b/deps/v8/src/base/macros.h
@@ -173,7 +173,7 @@ namespace base {
// base::is_trivially_copyable will differ for these cases.
template <typename T>
struct is_trivially_copyable {
-#if V8_CC_MSVC
+#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2)
// Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
// be false even though it should be true according to the standard.
// (status at 2018-02-26, observed on the msvc waterfall bot).
@@ -181,6 +181,11 @@ struct is_trivially_copyable {
// intended, so we reimplement this according to the standard.
// See also https://developercommunity.visualstudio.com/content/problem/
// 170883/msvc-type-traits-stdis-trivial-is-bugged.html.
+ //
+ // GCC 12.1 and 12.2 are broken too, they are shipped by some stable Linux
+ // distributions, so the same polyfill is also used.
+ // See
+ // https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=aeba3e009b0abfccaf01797556445dbf891cc8dc
static constexpr bool value =
// Copy constructor is trivial or deleted.
(std::is_trivially_copy_constructible<T>::value ||

View File

@ -103,6 +103,11 @@ class NodeJs(Package):
# See https://github.com/nodejs/node/issues/52223
patch("fix-old-glibc-random-headers.patch", when="^glibc@:2.24")
# Work around gcc-12.[1-2] compiler bug
# See https://github.com/nodejs/node/pull/53728
# and https://github.com/nodejs/node/issues/53633
patch("fix-broken-gcc12-pr53728.patch", when="@22.2:22.5")
def setup_build_environment(self, env):
# Force use of experimental Python 3 support
env.set("PYTHON", self.spec["python"].command.path)