nodejs / help

:sparkles: Need help with Node.js? File an Issue here. :rocket:
1.44k stars 276 forks source link

Failed to Build 22.3.0 on raspberry pi bookworm #4430

Open junkfix opened 4 days ago

junkfix commented 4 days ago

Node.js Version

v22.3.0

NPM Version

v0.0.0

Operating System

Linux nas 6.6.28+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.28-1+rpt1 (2024-04-22) aarch64 GNU/Linux

Subsystem

v8

Description

The last known version built sucess was 20.7.0 on the same system.

Minimal Reproduction

./configure --prefix=/home/pi/nodejs
make -j 1 CFLAGS="-Wall -Os -s" CXXFLAGS="-Os -s"

Output

 g++ -o /mnt/usb2/out/Release/obj.target/v8_turboshaft/deps/v8/src/compiler/turboshaft/csa-optimize-phase.o ../deps/v8/src/compiler/turboshaft/csa-optimize-phase.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.13"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DNDEBUG' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_SPARKPLUG' '-DV8_ENABLE_MAGLEV' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I/mnt/usb2/out/Release/obj/gen/generate-bytecode-output-root -I/mnt/usb2/out/Release/obj/gen -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -I../deps/v8/third_party/abseil-cpp  -pthread -Wno-unused-parameter -Wno-strict-overflow -Wno-return-type -Wno-int-in-bool-context -Wno-deprecated -Wno-stringop-overflow -Wno-stringop-overread -Wno-restrict -Wno-array-bounds -Wno-nonnull -Wno-dangling-pointer -flax-vector-conversions -fno-strict-aliasing -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++20 -Wno-invalid-offsetof -MMD -MF /mnt/usb2/out/Release/.deps//mnt/usb2/out/Release/obj.target/v8_turboshaft/deps/v8/src/compiler/turboshaft/csa-optimize-phase.o.d.raw   -c
In file included from ../deps/v8/src/base/contextual.h:11,
                 from ../deps/v8/src/compiler/turboshaft/phase.h:10,
                 from ../deps/v8/src/compiler/turboshaft/csa-optimize-phase.h:8,
                 from ../deps/v8/src/compiler/turboshaft/csa-optimize-phase.cc:5:
../deps/v8/src/base/small-vector.h: In instantiation of ‘class v8::base::SmallVector<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex>, 16>’:
../deps/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:444:11:   required from here
../deps/v8/src/base/macros.h:206:55: error: static assertion failed: T should be trivially copyable
  206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \
      |                                                       ^~~~~
../deps/v8/src/base/small-vector.h:25:3: note: in expansion of macro ‘ASSERT_TRIVIALLY_COPYABLE’
   25 |   ASSERT_TRIVIALLY_COPYABLE(T);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../deps/v8/src/base/macros.h:206:55: note: ‘v8::base::is_trivially_copyable<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex> >::value’ evaluates to false
  206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \
      |                                                       ^~~~~
../deps/v8/src/base/small-vector.h:25:3: note: in expansion of macro ‘ASSERT_TRIVIALLY_COPYABLE’
   25 |   ASSERT_TRIVIALLY_COPYABLE(T);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
make[1]: *** [tools/v8_gypfiles/v8_turboshaft.target.mk:234: /mnt/usb2/out/Release/obj.target/v8_turboshaft/deps/v8/src/compiler/turboshaft/csa-optimize-phase.o] Error 1
rm 27c55866b032b31bdede6e24320e650f73577b55.intermediate 273caa085166b5c4841a121fab9c5368b1d9fc7a.intermediate 3b23b11eb322d65e870bad041146a486acd463d6.intermediate
make: *** [Makefile:137: node] Error 2
install failed

Before You Submit

RedYetiDev commented 3 days ago

Can you build on this system without additional flag?

./configure
make

Additionally, have you tried building after cleaning with make distclean?

junkfix commented 3 days ago

I was building using just 1 core and took ~40 hours to build when the error came so not have not tried without additional flags but seems like same issue as https://github.com/nodejs/help/issues/4406 and https://github.com/nodejs/node/issues/53633

the build was freshly downloaded in a new directory so it did not need cleaning.

RedYetiDev commented 3 days ago

FWIW using ccache and ninja can speed up the process (40 hours is a bit long, my node builds in ~5minutes with ninja and ccache, 4 jobs)