import UBI nodejs-24.14.1-2.module+el9.7.0+24166+51c9666b
This commit is contained in:
parent
fb3836d062
commit
3d90012cc4
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
SOURCES/icu4c-77_1-data-bin-b.zip
|
||||
SOURCES/icu4c-77_1-data-bin-l.zip
|
||||
SOURCES/node-v24.13.0-stripped.tar.gz
|
||||
SOURCES/icu4c-78.2-data-bin-b.zip
|
||||
SOURCES/icu4c-78.2-data-bin-l.zip
|
||||
SOURCES/node-v24.14.1-stripped.tar.gz
|
||||
SOURCES/packaging-scripts.tar.gz
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
c459faa36dedc60af6a0c6d5b9b84b6198389bf0 SOURCES/icu4c-77_1-data-bin-b.zip
|
||||
c602459f93a43dfe7440686b46430e93a85dfc06 SOURCES/icu4c-77_1-data-bin-l.zip
|
||||
94f8cd412f29b9554891a242ee466c2ac5a6a269 SOURCES/node-v24.13.0-stripped.tar.gz
|
||||
4dc40674c8b9a94ba977ea7b018f9a92c84b9b53 SOURCES/packaging-scripts.tar.gz
|
||||
7a91e81c4f2c8368d80285a5bbdfe278d68e4a84 SOURCES/icu4c-78.2-data-bin-b.zip
|
||||
b9f5918e2118ef8531b0ffc04b3d50e951e3a166 SOURCES/icu4c-78.2-data-bin-l.zip
|
||||
4b8d577fed40b7065f78da8d4257775cb9a56a35 SOURCES/node-v24.14.1-stripped.tar.gz
|
||||
2399006236317582f75d9525d5aa3b75fcd8a00d SOURCES/packaging-scripts.tar.gz
|
||||
|
||||
530
SOURCES/0003-downstream-update-nghttp2-to-1.68.1.patch
Normal file
530
SOURCES/0003-downstream-update-nghttp2-to-1.68.1.patch
Normal file
@ -0,0 +1,530 @@
|
||||
From 205baae16ff43539500a6f168d0d27e226bfc4f2 Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <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 <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
|
||||
|
||||
@ -1,265 +0,0 @@
|
||||
From 4208b7849eeee5c2aa76d692e2624bd80422057d Mon Sep 17 00:00:00 2001
|
||||
From: John Platts <john_platts@hotmail.com>
|
||||
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 <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 <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<int64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspsxds(VF32 vf32) {
|
||||
+ using VI64 = VFromD<Repartition<int64_t, DFromV<VF32>>>;
|
||||
+#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 <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<uint64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspuxds(VF32 vf32) {
|
||||
+ using VU64 = VFromD<Repartition<uint64_t, DFromV<VF32>>>;
|
||||
+#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 <class D, HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> 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<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(di64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteTo(df64, v));
|
||||
@@ -3719,12 +3776,11 @@ HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> v) {
|
||||
|
||||
template <class D, HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D du64, VFromD<Rebind<float, D>> 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<decltype(du64)>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(raw_v))};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(du64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspuxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteTo(df64, v));
|
||||
@@ -3829,12 +3885,10 @@ HWY_API VFromD<D> PromoteUpperTo(D df64, Vec128<uint32_t> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> 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<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ (void)di64;
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteUpperTo(df64, v));
|
||||
@@ -3843,13 +3897,10 @@ HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D du64, Vec128<float> 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<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(du64)>{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<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteUpperTo(df64, v));
|
||||
@@ -3937,20 +3988,18 @@ HWY_INLINE VFromD<D> 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<D>{
|
||||
- __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<D>{__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<decltype(d_to)> df64;
|
||||
@@ -3965,22 +4014,18 @@ HWY_INLINE VFromD<D> 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<D>{
|
||||
- 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<D>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(normalized_v.raw))};
|
||||
+ return VsxXvcvspuxds(normalized_v);
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4022,20 +4067,18 @@ HWY_INLINE VFromD<D> 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<D>{__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<D>{
|
||||
- __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<decltype(d_to)> df64;
|
||||
@@ -4050,22 +4093,18 @@ HWY_INLINE VFromD<D> 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<D>{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<D>{
|
||||
- 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<decltype(d_to)> df64;
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@ -1272,7 +1272,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
|
||||
@ -1301,7 +1302,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
|
||||
@ -1490,7 +1492,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
|
||||
@ -1521,7 +1524,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
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
## (rpmautospec version 0.6.5)
|
||||
## 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}}
|
||||
@ -13,50 +13,50 @@
|
||||
%{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 1:24.14.1-%{autorelease} -p
|
||||
|
||||
# The following ones are generated via script;
|
||||
# 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
|
||||
# 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
|
||||
# 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 -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!
|
||||
|
||||
@ -119,10 +119,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
|
||||
@ -144,8 +144,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
|
||||
@ -162,8 +162,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
|
||||
@ -256,7 +256,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}
|
||||
@ -311,9 +311,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
|
||||
@ -461,8 +461,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}"'
|
||||
|
||||
@ -512,7 +516,7 @@ bash '%{SOURCE10}' "${RPM_BUILD_ROOT}%{_bindir}/node" test/ '%{SOURCE11}'
|
||||
%{_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/
|
||||
@ -537,6 +541,12 @@ bash '%{SOURCE10}' "${RPM_BUILD_ROOT}%{_bindir}/node" test/ '%{SOURCE11}'
|
||||
|
||||
%changelog
|
||||
## START: Generated by rpmautospec
|
||||
* Thu Apr 02 2026 Jan Staněk <jstanek@redhat.com> - 1:24.14.1-2
|
||||
- Update bundled nghttp2 to 1.68.1
|
||||
|
||||
* Thu Apr 02 2026 Jan Staněk <jstanek@redhat.com> - 1:24.14.1-1
|
||||
- Update to version 24.14.1
|
||||
|
||||
* Fri Jan 16 2026 tjuhasz <tjuhasz@redhat.com> - 1:24.13.0-1
|
||||
- Update to version 24.13.0
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user