From fbeab2fae96fd7f02d8e00f6958abebef63133cb Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Mon, 13 Apr 2026 00:09:26 -0400 Subject: [PATCH] import UBI nodejs24-24.14.1-2.el10_1 --- .gitignore | 6 +- ...-downstream-update-nghttp2-to-1.68.1.patch | 530 ++++++++++++++++++ ...or-GCC-15-compiler-error-on-PPC8-PPC.patch | 265 --------- nodejs24.spec | 131 +++-- sources | 8 +- test-should-pass.txt | 12 +- 6 files changed, 617 insertions(+), 335 deletions(-) create mode 100644 0003-downstream-update-nghttp2-to-1.68.1.patch delete mode 100644 0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch diff --git a/.gitignore b/.gitignore index a0e834f..c6316cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -icu4c-77_1-data-bin-b.zip -icu4c-77_1-data-bin-l.zip -node-v24.13.0-stripped.tar.gz +icu4c-78.2-data-bin-b.zip +icu4c-78.2-data-bin-l.zip +node-v24.14.1-stripped.tar.gz packaging-scripts.tar.gz diff --git a/0003-downstream-update-nghttp2-to-1.68.1.patch b/0003-downstream-update-nghttp2-to-1.68.1.patch new file mode 100644 index 0000000..e445f8f --- /dev/null +++ b/0003-downstream-update-nghttp2-to-1.68.1.patch @@ -0,0 +1,530 @@ +From 205baae16ff43539500a6f168d0d27e226bfc4f2 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Wed, 25 Mar 2026 15:36:44 +0100 +Subject: [PATCH] downstream: update nghttp2 to 1.68.1 + +This is done out of sync with upstream node, +in order to address CVE-2026-27135 in a timely manner. + +Should be dropped once upstream addresses the CVE in their own way. + +Signed-off-by: rpm-build +--- + .../nghttp2/lib/includes/nghttp2/nghttp2ver.h | 4 +- + deps/nghttp2/lib/nghttp2_frame.c | 10 + + deps/nghttp2/lib/nghttp2_int.h | 6 +- + deps/nghttp2/lib/nghttp2_session.c | 206 ++++++++++-------- + 4 files changed, 135 insertions(+), 91 deletions(-) + +diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h +index 8dfe536..95acef2 100644 +--- a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h ++++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h +@@ -29,7 +29,7 @@ + * @macro + * Version number of the nghttp2 library release + */ +-#define NGHTTP2_VERSION "1.68.0" ++#define NGHTTP2_VERSION "1.68.1" + + /** + * @macro +@@ -37,6 +37,6 @@ + * release. This is a 24 bit number with 8 bits for major number, 8 bits + * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. + */ +-#define NGHTTP2_VERSION_NUM 0x014400 ++#define NGHTTP2_VERSION_NUM 0x014401 + + #endif /* NGHTTP2VER_H */ +diff --git a/deps/nghttp2/lib/nghttp2_frame.c b/deps/nghttp2/lib/nghttp2_frame.c +index edc2aaa..264ae9d 100644 +--- a/deps/nghttp2/lib/nghttp2_frame.c ++++ b/deps/nghttp2/lib/nghttp2_frame.c +@@ -750,6 +750,16 @@ void nghttp2_frame_unpack_altsvc_payload(nghttp2_extension *frame, + uint8_t *p; + + altsvc = frame->payload; ++ ++ if (payloadlen == 0) { ++ altsvc->origin = NULL; ++ altsvc->origin_len = 0; ++ altsvc->field_value = NULL; ++ altsvc->field_value_len = 0; ++ ++ return; ++ } ++ + p = payload; + + altsvc->origin = p; +diff --git a/deps/nghttp2/lib/nghttp2_int.h b/deps/nghttp2/lib/nghttp2_int.h +index 4e3b268..d89cf15 100644 +--- a/deps/nghttp2/lib/nghttp2_int.h ++++ b/deps/nghttp2/lib/nghttp2_int.h +@@ -52,7 +52,11 @@ typedef enum { + * Unlike NGHTTP2_ERR_IGN_HTTP_HEADER, this does not invoke + * nghttp2_on_invalid_header_callback. + */ +- NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106 ++ NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106, ++ /* ++ * Cancel pushed stream. ++ */ ++ NGHTTP2_ERR_PUSH_CANCEL = -107, + } nghttp2_internal_error; + + #endif /* !defined(NGHTTP2_INT_H) */ +diff --git a/deps/nghttp2/lib/nghttp2_session.c b/deps/nghttp2/lib/nghttp2_session.c +index 97d7fda..0fbcc93 100644 +--- a/deps/nghttp2/lib/nghttp2_session.c ++++ b/deps/nghttp2/lib/nghttp2_session.c +@@ -3272,7 +3272,9 @@ static int session_call_on_invalid_header(nghttp2_session *session, + session, frame, nv->name->base, nv->name->len, nv->value->base, + nv->value->len, nv->flags, session->user_data); + } else { +- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; ++ /* If both callbacks are not set, the invalid field nv is ++ ignored. */ ++ return 0; + } + + if (rv == NGHTTP2_ERR_PAUSE || rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) { +@@ -3357,6 +3359,10 @@ static uint32_t get_error_code_from_lib_error_code(int lib_error_code) { + case NGHTTP2_ERR_HTTP_HEADER: + case NGHTTP2_ERR_HTTP_MESSAGING: + return NGHTTP2_PROTOCOL_ERROR; ++ case NGHTTP2_ERR_INTERNAL: ++ return NGHTTP2_INTERNAL_ERROR; ++ case NGHTTP2_ERR_PUSH_CANCEL: ++ return NGHTTP2_CANCEL; + default: + return NGHTTP2_INTERNAL_ERROR; + } +@@ -3408,7 +3414,7 @@ static int session_handle_invalid_stream2(nghttp2_session *session, + if (rv != 0) { + return rv; + } +- if (session->callbacks.on_invalid_frame_recv_callback) { ++ if (frame && session->callbacks.on_invalid_frame_recv_callback) { + if (session->callbacks.on_invalid_frame_recv_callback( + session, frame, lib_error_code, session->user_data) != 0) { + return NGHTTP2_ERR_CALLBACK_FAILURE; +@@ -3563,7 +3569,29 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame, + + rv2 = session_call_on_invalid_header(session, frame, &nv); + if (rv2 == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) { +- rv = NGHTTP2_ERR_HTTP_HEADER; ++ DEBUGF("recv: HTTP error: type=%u, id=%d, header %.*s: %.*s\n", ++ frame->hd.type, frame->hd.stream_id, (int)nv.name->len, ++ nv.name->base, (int)nv.value->len, nv.value->base); ++ ++ rv = session_call_error_callback( ++ session, NGHTTP2_ERR_HTTP_HEADER, ++ "Invalid HTTP header field was received: frame type: " ++ "%u, stream: %d, name: [%.*s], value: [%.*s]", ++ frame->hd.type, frame->hd.stream_id, (int)nv.name->len, ++ nv.name->base, (int)nv.value->len, nv.value->base); ++ ++ if (nghttp2_is_fatal(rv)) { ++ return rv; ++ } ++ ++ rv = session_handle_invalid_stream2( ++ session, subject_stream->stream_id, frame, ++ NGHTTP2_ERR_HTTP_HEADER); ++ if (nghttp2_is_fatal(rv)) { ++ return rv; ++ } ++ ++ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; + } else { + if (rv2 != 0) { + return rv2; +@@ -3603,13 +3631,8 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame, + return rv; + } + +- rv = +- session_handle_invalid_stream2(session, subject_stream->stream_id, +- frame, NGHTTP2_ERR_HTTP_HEADER); +- if (nghttp2_is_fatal(rv)) { +- return rv; +- } +- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; ++ return nghttp2_session_terminate_session(session, ++ NGHTTP2_PROTOCOL_ERROR); + } + } + if (rv == 0) { +@@ -3722,27 +3745,7 @@ static int session_after_header_block_received(nghttp2_session *session) { + } + } + if (rv != 0) { +- int32_t stream_id; +- +- if (frame->hd.type == NGHTTP2_PUSH_PROMISE) { +- stream_id = frame->push_promise.promised_stream_id; +- } else { +- stream_id = frame->hd.stream_id; +- } +- +- rv = session_handle_invalid_stream2(session, stream_id, frame, +- NGHTTP2_ERR_HTTP_MESSAGING); +- if (nghttp2_is_fatal(rv)) { +- return rv; +- } +- +- if (frame->hd.type == NGHTTP2_HEADERS && +- (frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) { +- nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD); +- /* Don't call nghttp2_session_close_stream_if_shut_rdwr +- because RST_STREAM has been submitted. */ +- } +- return 0; ++ return nghttp2_session_terminate_session(session, NGHTTP2_PROTOCOL_ERROR); + } + } + +@@ -4078,8 +4081,7 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) { + rv = nghttp2_stream_update_remote_initial_window_size( + stream, arg->new_window_size, arg->old_window_size); + if (rv != 0) { +- return nghttp2_session_add_rst_stream(arg->session, stream->stream_id, +- NGHTTP2_FLOW_CONTROL_ERROR); ++ return NGHTTP2_ERR_FLOW_CONTROL; + } + + /* If window size gets positive, push deferred DATA frame to +@@ -4105,6 +4107,8 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) { + * + * NGHTTP2_ERR_NOMEM + * Out of memory. ++ * NGHTTP2_ERR_FLOW_CONTROL ++ * Window size gets out of range. + */ + static int + session_update_remote_initial_window_size(nghttp2_session *session, +@@ -4128,8 +4132,7 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) { + rv = nghttp2_stream_update_local_initial_window_size( + stream, arg->new_window_size, arg->old_window_size); + if (rv != 0) { +- return nghttp2_session_add_rst_stream(arg->session, stream->stream_id, +- NGHTTP2_FLOW_CONTROL_ERROR); ++ return NGHTTP2_ERR_FLOW_CONTROL; + } + + if (stream->window_update_queued) { +@@ -4163,6 +4166,8 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) { + * + * NGHTTP2_ERR_NOMEM + * Out of memory. ++ * NGHTTP2_ERR_FLOW_CONTROL ++ * Window size gets out of range. + */ + static int + session_update_local_initial_window_size(nghttp2_session *session, +@@ -4549,9 +4554,9 @@ int nghttp2_session_on_push_promise_received(nghttp2_session *session, + session->max_incoming_reserved_streams) { + /* Currently, client does not retain closed stream, so we don't + check NGHTTP2_SHUT_RD condition here. */ +- +- rv = nghttp2_session_add_rst_stream( +- session, frame->push_promise.promised_stream_id, NGHTTP2_CANCEL); ++ rv = session_handle_invalid_stream2(session, ++ frame->push_promise.promised_stream_id, ++ NULL, NGHTTP2_ERR_PUSH_CANCEL); + if (rv != 0) { + return rv; + } +@@ -4708,8 +4713,9 @@ static int session_on_stream_window_update_received(nghttp2_session *session, + } + if (NGHTTP2_MAX_WINDOW_SIZE - frame->window_update.window_size_increment < + stream->remote_window_size) { +- return session_handle_invalid_stream(session, frame, +- NGHTTP2_ERR_FLOW_CONTROL); ++ return session_handle_invalid_connection( ++ session, frame, NGHTTP2_ERR_FLOW_CONTROL, ++ "WINDOW_UPDATE: window size overflow"); + } + stream->remote_window_size += frame->window_update.window_size_increment; + +@@ -4939,16 +4945,7 @@ int nghttp2_session_on_data_received(nghttp2_session *session, + if (session_enforce_http_messaging(session) && + (frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) { + if (nghttp2_http_on_remote_end_stream(stream) != 0) { +- rv = nghttp2_session_add_rst_stream(session, stream->stream_id, +- NGHTTP2_PROTOCOL_ERROR); +- if (nghttp2_is_fatal(rv)) { +- return rv; +- } +- +- nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD); +- /* Don't call nghttp2_session_close_stream_if_shut_rdwr because +- RST_STREAM has been submitted. */ +- return 0; ++ return nghttp2_session_terminate_session(session, NGHTTP2_PROTOCOL_ERROR); + } + } + +@@ -5006,8 +5003,8 @@ int nghttp2_session_update_recv_stream_window_size(nghttp2_session *session, + rv = adjust_recv_window_size(&stream->recv_window_size, delta_size, + stream->local_window_size); + if (rv != 0) { +- return nghttp2_session_add_rst_stream(session, stream->stream_id, +- NGHTTP2_FLOW_CONTROL_ERROR); ++ return nghttp2_session_terminate_session(session, ++ NGHTTP2_FLOW_CONTROL_ERROR); + } + /* We don't have to send WINDOW_UPDATE if the data received is the + last chunk in the incoming stream. */ +@@ -5469,6 +5466,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + busy = 1; + + rv = session_on_data_received_fail_fast(session); ++ if (nghttp2_is_fatal(rv)) { ++ return rv; ++ } ++ + if (iframe->state == NGHTTP2_IB_IGN_ALL) { + return (nghttp2_ssize)inlen; + } +@@ -5489,10 +5490,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + break; + } + +- if (nghttp2_is_fatal(rv)) { +- return rv; +- } +- + rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd); + if (rv < 0) { + rv = nghttp2_session_terminate_session_with_reason( +@@ -5576,6 +5573,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + on_begin_frame_called = 1; + + rv = session_process_headers_frame(session); +@@ -5590,8 +5591,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + } + + if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) { +- rv = nghttp2_session_add_rst_stream( +- session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR); ++ rv = session_handle_invalid_stream2( ++ session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL); + if (nghttp2_is_fatal(rv)) { + return rv; + } +@@ -6044,6 +6045,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + if (nghttp2_is_fatal(rv)) { + return rv; + } ++ ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } + } + } + +@@ -6107,8 +6112,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + } + + if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) { +- rv = nghttp2_session_add_rst_stream( +- session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR); ++ rv = session_handle_invalid_stream2( ++ session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL); + if (nghttp2_is_fatal(rv)) { + return rv; + } +@@ -6191,9 +6196,9 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + } + + if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) { +- rv = nghttp2_session_add_rst_stream( +- session, iframe->frame.push_promise.promised_stream_id, +- NGHTTP2_INTERNAL_ERROR); ++ rv = session_handle_invalid_stream2( ++ session, iframe->frame.push_promise.promised_stream_id, NULL, ++ NGHTTP2_ERR_INTERNAL); + if (nghttp2_is_fatal(rv)) { + return rv; + } +@@ -6296,6 +6301,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + session_inbound_frame_reset(session); + + break; +@@ -6371,12 +6380,12 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + iframe->payloadleft -= hd_proclen; + + /* Use promised stream ID for PUSH_PROMISE */ +- rv = nghttp2_session_add_rst_stream( ++ rv = session_handle_invalid_stream2( + session, + iframe->frame.hd.type == NGHTTP2_PUSH_PROMISE + ? iframe->frame.push_promise.promised_stream_id + : iframe->frame.hd.stream_id, +- NGHTTP2_INTERNAL_ERROR); ++ NULL, NGHTTP2_ERR_INTERNAL); + if (nghttp2_is_fatal(rv)) { + return rv; + } +@@ -6423,6 +6432,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + if (nghttp2_is_fatal(rv)) { + return rv; + } ++ ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } + } + session_inbound_frame_reset(session); + +@@ -6598,6 +6611,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + if (nghttp2_is_fatal(rv)) { + return rv; + } ++ ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } + } else { + iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK; + } +@@ -6648,6 +6665,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + if (nghttp2_is_fatal(rv)) { + return rv; + } ++ ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } + } + + busy = 1; +@@ -6720,6 +6741,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + data_readlen = + inbound_frame_effective_readlen(iframe, iframe->payloadleft, readlen); + +@@ -6749,41 +6774,30 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + if (data_readlen > 0) { + if (session_enforce_http_messaging(session)) { + if (nghttp2_http_on_data_chunk(stream, (size_t)data_readlen) != 0) { +- if (session->opt_flags & NGHTTP2_OPTMASK_NO_AUTO_WINDOW_UPDATE) { +- /* Consume all data for connection immediately here */ +- rv = session_update_connection_consumed_size( +- session, (size_t)data_readlen); +- +- if (nghttp2_is_fatal(rv)) { +- return rv; +- } +- +- if (iframe->state == NGHTTP2_IB_IGN_DATA) { +- return (nghttp2_ssize)inlen; +- } +- } +- +- rv = nghttp2_session_add_rst_stream( +- session, iframe->frame.hd.stream_id, NGHTTP2_PROTOCOL_ERROR); ++ rv = nghttp2_session_terminate_session(session, ++ NGHTTP2_PROTOCOL_ERROR); + if (nghttp2_is_fatal(rv)) { + return rv; + } +- busy = 1; +- iframe->state = NGHTTP2_IB_IGN_DATA; +- break; ++ ++ return (nghttp2_ssize)inlen; + } + } + if (session->callbacks.on_data_chunk_recv_callback) { + rv = session->callbacks.on_data_chunk_recv_callback( + session, iframe->frame.hd.flags, iframe->frame.hd.stream_id, + in - readlen, (size_t)data_readlen, session->user_data); +- if (rv == NGHTTP2_ERR_PAUSE) { +- return (nghttp2_ssize)(in - first); +- } +- + if (nghttp2_is_fatal(rv)) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } ++ ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ ++ if (rv == NGHTTP2_ERR_PAUSE) { ++ return (nghttp2_ssize)(in - first); ++ } + } + } + } +@@ -6797,6 +6811,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + session_inbound_frame_reset(session); + + break; +@@ -6863,6 +6881,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + if (rv != 0) { + busy = 1; + +@@ -6881,6 +6903,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + session_inbound_frame_reset(session); + + break; +@@ -6909,6 +6935,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, + return rv; + } + ++ if (iframe->state == NGHTTP2_IB_IGN_ALL) { ++ return (nghttp2_ssize)inlen; ++ } ++ + session_inbound_frame_reset(session); + + break; +-- +2.53.0 + diff --git a/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch b/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch deleted file mode 100644 index 815bbd7..0000000 --- a/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch +++ /dev/null @@ -1,265 +0,0 @@ -From 4208b7849eeee5c2aa76d692e2624bd80422057d Mon Sep 17 00:00:00 2001 -From: John Platts -Date: Fri, 17 Jan 2025 12:16:49 -0600 -Subject: [PATCH] v8(highway): Fix for GCC 15 compiler error on PPC8/PPC9/PPC10 - -Signed-off-by: rpm-build ---- - .../highway/src/hwy/ops/ppc_vsx-inl.h | 167 +++++++++++------- - 1 file changed, 103 insertions(+), 64 deletions(-) - -diff --git a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h -index d216c54..73e736e 100644 ---- a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h -+++ b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h -@@ -3701,16 +3701,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) { - #endif - } - -+template -+static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> -+VsxXvcvspsxds(VF32 vf32) { -+ using VI64 = VFromD>>; -+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ -+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds) -+ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with -+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) -+ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN -+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 -+ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VI64{vec_signedo(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN -+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 -+ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VI64{vec_signede(vf32.raw)}; -+#else -+ // Inline assembly fallback for older versions of Clang that do not have the -+ // __builtin_vsx_xvcvspsxds intrinsic -+ __vector signed long long raw_result; -+ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); -+ return VI64{raw_result}; -+#endif -+} -+ -+template -+static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> -+VsxXvcvspuxds(VF32 vf32) { -+ using VU64 = VFromD>>; -+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ -+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds) -+ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with -+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) -+ return VU64{reinterpret_cast<__vector unsigned long long>( -+ __builtin_vsx_xvcvspuxds(vf32.raw))}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN -+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 -+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VU64{vec_unsignedo(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN -+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 -+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VU64{vec_unsignede(vf32.raw)}; -+#else -+ // Inline assembly fallback for older versions of Clang that do not have the -+ // __builtin_vsx_xvcvspuxds intrinsic -+ __vector unsigned long long raw_result; -+ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); -+ return VU64{raw_result}; -+#endif -+} -+ - } // namespace detail - #endif // !HWY_S390X_HAVE_Z14 - - template - HWY_API VFromD PromoteTo(D di64, VFromD> v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; -- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; -+#if !HWY_S390X_HAVE_Z14 -+ const Repartition dt_f32; -+ const auto vt_f32 = ResizeBitCast(dt_f32, v); -+ return detail::VsxXvcvspsxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); - #else - const RebindToFloat df64; - return ConvertTo(di64, PromoteTo(df64, v)); -@@ -3719,12 +3776,11 @@ HWY_API VFromD PromoteTo(D di64, VFromD> v) { - - template - HWY_API VFromD PromoteTo(D du64, VFromD> v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(raw_v))}; -+#if !HWY_S390X_HAVE_Z14 -+ const Repartition dt_f32; -+ const auto vt_f32 = ResizeBitCast(dt_f32, v); -+ return detail::VsxXvcvspuxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); - #else - const RebindToFloat df64; - return ConvertTo(du64, PromoteTo(df64, v)); -@@ -3829,12 +3885,10 @@ HWY_API VFromD PromoteUpperTo(D df64, Vec128 v) { - - template - HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) -- .raw; -- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; -+#if !HWY_S390X_HAVE_Z14 -+ (void)di64; -+ return detail::VsxXvcvspsxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); - #else - const RebindToFloat df64; - return ConvertTo(di64, PromoteUpperTo(df64, v)); -@@ -3843,13 +3897,10 @@ HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { - - template - HWY_API VFromD PromoteUpperTo(D du64, Vec128 v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) -- .raw; -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(raw_v))}; -+#if !HWY_S390X_HAVE_Z14 -+ (void)du64; -+ return detail::VsxXvcvspuxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); - #else - const RebindToFloat df64; - return ConvertTo(du64, PromoteUpperTo(df64, v)); -@@ -3937,20 +3988,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::SignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes -- // on little-endian PPC, and the vec_sld operation below will shift the even -+ // VsxXvcvspsxds expects the source values to be in the odd lanes on -+ // little-endian PPC, and the Shuffle2103 operation below will shift the even - // lanes of normalized_v into the odd lanes. -- return VFromD{ -- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; -+ return VsxXvcvspsxds(Shuffle2103(normalized_v)); - #else -- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes -- // on big-endian PPC. -- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; -+ // VsxXvcvspsxds expects the source values to be in the even lanes on -+ // big-endian PPC. -+ return VsxXvcvspsxds(normalized_v); - #endif - #else - const RebindToFloat df64; -@@ -3965,22 +4014,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes -- // on little-endian PPC, and the vec_sld operation below will shift the even -- // lanes of normalized_v into the odd lanes. -- return VFromD{ -- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( -- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; -+ // VsxXvcvspuxds expects the source values to be in the odd lanes -+ // on little-endian PPC, and the Shuffle2103 operation below will shift the -+ // even lanes of normalized_v into the odd lanes. -+ return VsxXvcvspuxds(Shuffle2103(normalized_v)); - #else -- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes -+ // VsxXvcvspuxds expects the source values to be in the even lanes - // on big-endian PPC. -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; -+ return VsxXvcvspuxds(normalized_v); - #endif - #else - const RebindToFloat df64; -@@ -4022,20 +4067,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::SignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes -+ // VsxXvcvspsxds expects the source values to be in the odd lanes - // on little-endian PPC -- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; -+ return VsxXvcvspsxds(normalized_v); - #else -- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes -- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes -- // of normalized_v into the even lanes. -- return VFromD{ -- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; -+ // VsxXvcvspsxds expects the source values to be in the even lanes -+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd -+ // lanes of normalized_v into the even lanes. -+ return VsxXvcvspsxds(Shuffle0321(normalized_v)); - #endif - #else - const RebindToFloat df64; -@@ -4050,22 +4093,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes -+ // VsxXvcvspuxds expects the source values to be in the odd lanes - // on little-endian PPC -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; -+ return VsxXvcvspuxds(normalized_v); - #else -- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes -- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes -- // of normalized_v into the even lanes. -- return VFromD{ -- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( -- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; -+ // VsxXvcvspuxds expects the source values to be in the even lanes -+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd -+ // lanes of normalized_v into the even lanes. -+ return VsxXvcvspuxds(Shuffle0321(normalized_v)); - #endif - #else - const RebindToFloat df64; --- -2.50.0 - diff --git a/nodejs24.spec b/nodejs24.spec index 72e07e7..b3c215c 100644 --- a/nodejs24.spec +++ b/nodejs24.spec @@ -1,19 +1,28 @@ ## START: Set by rpmautospec -## (rpmautospec version 0.6.5) +## (rpmautospec version 0.8.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: - release_number = 1; + release_number = 2; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec +Name: nodejs24 +Epoch: 1 +Version: 24.14.1 +Release: %{autorelease} + +Summary: JavaScript runtime +License: Apache-2.0 AND Artistic-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BlueOak-1.0.0 AND CC-BY-3.0 AND CC0-1.0 AND ISC AND MIT +URL: https://nodejs.org + # This should be moved to rpm-redhat-config or similar as soon as feasible # NOTE: %%SOURCE macros are not yet defined, so explicit path is needed %{load:%{_sourcedir}/nodejs.srpm.macros} # === Versions of any software shipped in the main nodejs tarball -%nodejs_define_version node 1:24.13.0-%{autorelease} -p +%nodejs_define_version node %{epoch}:%{version}-%{release} -p # Special release for sub-packages with their own version string. # The complex release string ensures that the subpackage release is always increasing, @@ -25,44 +34,44 @@ # expect anything between the markers to be overwritten on any update. # BEGIN automatic-version-macros # DO NOT REMOVE THIS LINE! -# Version from node-v24.13.0/src/node_version.h +# Version from node-v24.14.1/src/node_version.h %global node_soversion 137 -# Version from node-v24.13.0/deps/ada/ada.h -%nodejs_define_version ada 3.3.0 -# Version from node-v24.13.0/deps/brotli/c/common/version.h -%nodejs_define_version brotli 1.1.0 -# Version from node-v24.13.0/deps/cares/include/ares_version.h +# Version from node-v24.14.1/deps/ada/ada.h +%nodejs_define_version ada 3.4.2 +# Version from node-v24.14.1/deps/brotli/c/common/version.h +%nodejs_define_version brotli 1.2.0 +# Version from node-v24.14.1/deps/cares/include/ares_version.h %nodejs_define_version c_ares 1.34.6 -# Version from node-v24.13.0/deps/histogram/include/hdr/hdr_histogram_version.h +# Version from node-v24.14.1/deps/histogram/include/hdr/hdr_histogram_version.h %nodejs_define_version histogram 0.11.9 -# Version from node-v24.13.0/tools/icu/current_ver.dep -%nodejs_define_version icu 77.1 -p -# Version from node-v24.13.0/deps/uv/include/uv/version.h +# Version from node-v24.14.1/tools/icu/current_ver.dep +%nodejs_define_version icu 78.2 -p +# Version from node-v24.14.1/deps/uv/include/uv/version.h %nodejs_define_version libuv 1.51.0 -# Version from node-v24.13.0/deps/llhttp/include/llhttp.h +# Version from node-v24.14.1/deps/llhttp/include/llhttp.h %nodejs_define_version llhttp 9.3.0 -# Version from node-v24.13.0/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h -%nodejs_define_version nghttp2 1.67.1 -# Version from node-v24.13.0/deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h +# Version from node-v24.14.1/deps/merve/merve.h +%nodejs_define_version merve 1.0.0 +# Version from node-v24.14.1/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h +%nodejs_define_version nghttp2 1.68.1 +# Version from node-v24.14.1/deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h %nodejs_define_version nghttp3 1.6.0 -# Version from node-v24.13.0/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h +# Version from node-v24.14.1/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h %nodejs_define_version ngtcp2 1.11.0 -# Version from node-v24.13.0/deps/cjs-module-lexer/src/package.json -%nodejs_define_version nodejs-cjs-module-lexer 2.1.0 -# Version from node-v24.13.0/lib/punycode.js +# Version from node-v24.14.1/lib/punycode.js %nodejs_define_version nodejs-punycode 2.1.0 -# Version from node-v24.13.0/deps/undici/src/package.json -%nodejs_define_version nodejs-undici 7.18.2 -# Version from node-v24.13.0/deps/npm/package.json -%nodejs_define_version npm 1:11.6.2-%{nodejs_subpackage_release} -# Version from node-v24.13.0/deps/sqlite/sqlite3.h -%nodejs_define_version sqlite 3.50.4 -# Version from node-v24.13.0/deps/uvwasi/include/uvwasi.h +# Version from node-v24.14.1/deps/undici/src/package.json +%nodejs_define_version nodejs-undici 7.24.4 +# Version from node-v24.14.1/deps/npm/package.json +%nodejs_define_version npm 1:11.11.0-%{nodejs_subpackage_release} +# Version from node-v24.14.1/deps/sqlite/sqlite3.h +%nodejs_define_version sqlite 3.51.2 +# Version from node-v24.14.1/deps/uvwasi/include/uvwasi.h %nodejs_define_version uvwasi 0.0.23 -# Version from node-v24.13.0/deps/v8/include/v8-version.h +# Version from node-v24.14.1/deps/v8/include/v8-version.h %nodejs_define_version v8 3:13.6.233.17-%{nodejs_subpackage_release} -p -# Version from node-v24.13.0/deps/zlib/zlib.h +# Version from node-v24.14.1/deps/zlib/zlib.h %nodejs_define_version zlib 1.3.1 # END automatic-version-macros # DO NOT REMOVE THIS LINE! @@ -87,15 +96,6 @@ # place for (npm) packages specific to this stream %global nodejs_private_sitelib %{_prefix}/lib/node_modules_%{node_version_major} -Name: nodejs%{node_version_major} -Epoch: %{node_epoch} -Version: %{node_version} -Release: %{node_release} - -Summary: JavaScript runtime -License: Apache-2.0 AND Artistic-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BlueOak-1.0.0 AND CC-BY-3.0 AND CC0-1.0 AND ISC AND MIT -URL: https://nodejs.org - ExclusiveArch: %{nodejs_arches} # v8 does not build on i686 any more ExcludeArch: %{ix86} @@ -118,10 +118,10 @@ BuildRequires: pkgconfig(openssl) >= 3.0.2 %nodejs_declare_bundled -a icu %nodejs_declare_bundled -a libuv %nodejs_declare_bundled -a llhttp +%nodejs_declare_bundled -a merve %nodejs_declare_bundled -a nghttp2 %nodejs_declare_bundled -a nghttp3 %nodejs_declare_bundled -a ngtcp2 -%nodejs_declare_bundled -a nodejs-cjs-module-lexer %nodejs_declare_bundled -a nodejs-punycode -npunycode %nodejs_declare_bundled -a nodejs-undici %nodejs_declare_bundled -a sqlite -psqlite3 @@ -143,8 +143,8 @@ Provides: nodejs(engine) = %{node_version} Source: node-v%{node_version}-stripped.tar.gz # Sources 001-099: reserved for additional sources to be installed # - Full ICU database data -Source001: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}-%{icu_version_minor}/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-b.zip -Source002: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}-%{icu_version_minor}/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-l.zip +Source001: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}.%{icu_version_minor}/icu4c-%{icu_version_major}.%{icu_version_minor}-data-bin-b.zip +Source002: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}.%{icu_version_minor}/icu4c-%{icu_version_major}.%{icu_version_minor}-data-bin-l.zip # - Downstream/distribution configuration files Source003: nodejs.pc.in Source004: v8.pc.in @@ -161,8 +161,8 @@ Source101: nodejs.srpm.macros %patchlist 0001-Remove-unused-OpenSSL-config.patch -0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch 0001-fips-disable-options.patch +0003-downstream-update-nghttp2-to-1.68.1.patch %description Node.js is a platform built on Chrome's JavaScript runtime @@ -261,7 +261,7 @@ readonly -a devendored_paths=( %{?!with_bundled_brotli:deps/brotli} %{?!with_bundled_c_ares:deps/cares} %{?!with_bundled_libuv:deps/uv} - %{?!with_bundled_nodejs_cjs_module_lexer:deps/cjs-module-lexer} + %{?!with_bundled_merve:deps/merve} %{?!with_bundled_nodejs_undici:deps/undici} %{?!with_bundled_sqlite:deps/sqlite} %{?!with_bundled_zlib:deps/zlib} @@ -310,9 +310,9 @@ readonly -a configure_flags=( %{?!with_bundled_libuv:--shared-libuv} %{?!with_bundled_sqlite:--shared-sqlite} %{?!with_bundled_zlib:--shared-zlib} -%if %{without bundled_nodejs_cjs_module_lexer} - --shared-builtin-cjs_module_lexer/lexer-path=%{nodejs_common_sitelib}/cjs-module-lexer/lexer.js - --shared-builtin-cjs_module_lexer/dist/lexer-path=%{nodejs_common_sitelib}/cjs-module-lexer/dist/lexer.js +%if %{without bundled_merve} + --shared-builtin-merve/lexer-path=%{nodejs_common_sitelib}/merve/lexer.js + --shared-builtin-merve/dist/lexer-path=%{nodejs_common_sitelib}/merve/dist/lexer.js %endif %if %{without bundled_nodejs_undici} --shared-builtin-undici/undici-path=%{nodejs_common_sitelib}/undici/loader.js @@ -523,8 +523,12 @@ npm() { # === Sanity check for important versions node -e 'require("assert").equal(process.versions.node, "%{node_version}")' node -e 'require("assert").equal(process.versions.v8.replace(/-node\.\d+$/, ""), "%{v8_version}")' +%if %{with bundled_c_ares} node -e 'require("assert").equal(process.versions.ares.replace(/-DEV$/, ""), "%{c_ares_version}")' +%endif +%if %{with bundled_punycode} node --no-deprecation -e 'require("assert").equal(require("punycode").version, "%{nodejs_punycode_version}")' +%endif npm version --json | jq --exit-status '.npm == "%{npm_version}"' @@ -578,7 +582,7 @@ bash '%{SOURCE10}' "${RPM_BUILD_ROOT}%{_bindir}/node-%{node_version_major}" test %{_libdir}/pkgconfig/v8-%{v8_version_major}.%{v8_version_minor}.pc %files full-i18n -%doc full-icu/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-?-README.md +%doc full-icu/icu4c-%{icu_version_major}.%{icu_version_minor}-data-bin-?-README.md %license full-icu/LICENSE %dir %{nodejs_datadir}/ %{nodejs_datadir}/icudata/ @@ -605,40 +609,49 @@ bash '%{SOURCE10}' "${RPM_BUILD_ROOT}%{_bindir}/node-%{node_version_major}" test %changelog ## START: Generated by rpmautospec -* Fri Jan 16 2026 Andrei Radchenko - 1:24.13.0-1 +* Wed Apr 01 2026 Jan Staněk - 1:24.14.1-2 +- Update bundled nghttp2 to 1.68.1 + +* Wed Apr 01 2026 Jan Staněk - 1:24.14.1-1 +- Update to version 24.14.1 + +* Thu Mar 19 2026 Jan Staněk - 1:24.13.0-15 +- Swap definition order for metadata fields + +* Fri Jan 16 2026 Andrei Radchenko - Update to 24.13.0 -* Wed Jan 14 2026 Andrei Radchenko - 1:24.11.1-2 +* Wed Jan 14 2026 Andrei Radchenko - makefile: change package manager to RH one -* Wed Nov 12 2025 tjuhasz - 1:24.11.1-1 +* Wed Nov 12 2025 tjuhasz - Update to version 24.11.1 -* Tue Oct 14 2025 tjuhasz - 1:24.6.0-5 +* Tue Oct 14 2025 tjuhasz - Correct dependency version macros -* Fri Aug 29 2025 Andrei Radchenko - 1:24.6.0-3 +* Fri Aug 29 2025 Andrei Radchenko - spec: fix node binary calls to use versioned node-24 binary -* Wed Aug 20 2025 Andrei Radchenko - 1:24.6.0-2 +* Wed Aug 20 2025 Andrei Radchenko - test-plan: adjust variables and filter -* Tue Aug 19 2025 tjuhasz - 1:24.6.0-1 +* Tue Aug 19 2025 tjuhasz - Update to version 24.6.0 -* Wed Aug 06 2025 Andrei Radchenko - 1:24.4.1-6 +* Wed Aug 06 2025 Andrei Radchenko - spec: devel packages explicitly conflicts -* Wed Jul 23 2025 Jan Staněk - 1:24.4.1-4 +* Wed Jul 23 2025 Jan Staněk - Disable internet/ tests entirely -* Tue Jul 22 2025 Jan Staněk - 1:24.4.1-2 +* Tue Jul 22 2025 Jan Staněk - Make package buildable in centos-stream - Remove tests that have issues with kojistream network - Temporarily use vendor copies of dependencies not up-to-date enough in the system -* Tue Jul 22 2025 Jan Staněk - 1:24.4.1-1 +* Tue Jul 22 2025 Jan Staněk - Import SRPM from Fedora Rawhide * Mon Jun 09 2025 Johnny Hughes diff --git a/sources b/sources index 34296ab..cc5dfc9 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (icu4c-77_1-data-bin-b.zip) = 93b4c8228a059546e7c3e337f1f837db255c0046c15f50a31a7bd20daf361174edab05b01faaac1dd4f515ca3c1f1d7fb0f61e4177eb5631833ad1450e252c4e -SHA512 (icu4c-77_1-data-bin-l.zip) = 3de15bb5925956b8e51dc6724c2114a1009ec471a2241b09ae09127f1760f44d02cc29cfbeed6cbaac6ee880553ac8395c61c6043c00ddba3277233e19e6490e -SHA512 (node-v24.13.0-stripped.tar.gz) = 9e1093ff95af37e8fe13e7ee028753994d8d5e0b4a18ed7905ebcb5e97abac11be4186505a955b0511d3f7f8cc06449e6781e177d9a47e0c03581dac3c13565c -SHA512 (packaging-scripts.tar.gz) = deedbc98d0907e4deac5b089ed0cb2d3fad8de5e45736752c6a48b940d8240312dc81d4957b684d68877c22b5d6a9f45d98b183dea92dd9659ab1a52868d51ee +SHA512 (icu4c-78.2-data-bin-b.zip) = 032a1e519bf92dfa7936ef85ebed697550dbcb4e32c6ecd28ffecb158a403eeff6c0a3545b2551eba73f288e31693be6880e202a38cd86c129dffa395e8ab625 +SHA512 (icu4c-78.2-data-bin-l.zip) = c0b46de115332940d3276763904caa6257eb516edce4382632f4b96a5b010fee4cb06a5e10ef5eee2f881515c1ee8277d9ae59015f6de6fe1d175b9d00dbb1ca +SHA512 (node-v24.14.1-stripped.tar.gz) = 630ae6ad554d56722ee23e41cbc5a5cce632f0db183cb975e67385c947137ca10c2cbbe0db99d50b4d9faa8a5bdc01ba46e0d7df02bc56e43b13f322e4fdac3d +SHA512 (packaging-scripts.tar.gz) = 2b8753300a5c30d7ed026607c99d32d3dd916f31d93d0730b00a51ba127eb693d342c50592182236cbfd4a401effa7d40b3fbc4a166a6157177cfefd5003f18e diff --git a/test-should-pass.txt b/test-should-pass.txt index 9e1d633..5be7fa8 100644 --- a/test-should-pass.txt +++ b/test-should-pass.txt @@ -1270,7 +1270,8 @@ parallel/test-crypto-lazy-transform-writable.js parallel/test-child-process-net-reuseport.js parallel/test-errors-systemerror.js parallel/test-fs-fmap.js -parallel/test-http2-reset-flood.js +# 2026-03-25: Breaking update of nghttp2 to 1.68.1 +#parallel/test-http2-reset-flood.js parallel/test-worker-mjs-workerdata.js parallel/test-net-connect-buffer2.js parallel/test-http-response-statuscode.js @@ -1299,7 +1300,8 @@ parallel/test-stream-readable-hwm-0.js parallel/test-whatwg-webstreams-adapters-streambase.js parallel/test-startup-empty-regexp-statics.js parallel/test-http2-respond-file-fd-invalid.js -parallel/test-http2-misbehaving-flow-control.js +# 2026-03-25: Breaking update of nghttp2 to 1.68.1 +#parallel/test-http2-misbehaving-flow-control.js parallel/test-cluster-rr-ref.js parallel/test-domain-no-error-handler-abort-on-uncaught-0.js parallel/test-fs-read-offset-null.js @@ -1488,7 +1490,8 @@ parallel/test-event-emitter-once.js parallel/test-stream-writable-final-async.js parallel/test-fs-open-no-close.js parallel/test-path-glob.js -parallel/test-http2-multi-content-length.js +# 2026-03-25: Breaking update of nghttp2 to 1.68.1 +#parallel/test-http2-multi-content-length.js parallel/test-timers-process-tampering.js parallel/test-url-relative.js parallel/test-messageevent-brandcheck.js @@ -1519,7 +1522,8 @@ parallel/test-punycode.js parallel/test-worker-vm-context-terminate.js parallel/test-https-agent-session-reuse.js parallel/test-stream-objectmode-undefined.js -parallel/test-http2-client-unescaped-path.js +# 2026-03-25: Breaking update of nghttp2 to 1.68.1 +#parallel/test-http2-client-unescaped-path.js parallel/test-dns-perf_hooks.js parallel/test-tls-connect-abort-controller.js parallel/test-whatwg-url-custom-searchparams-foreach.js