git: 76cb9bc437fd - main - devel/electron25: fix build with clang 18

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Thu, 22 Feb 2024 18:42:05 UTC
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=76cb9bc437fd1e15ff71068d6eeea8c212d844d4

commit 76cb9bc437fd1e15ff71068d6eeea8c212d844d4
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-02-18 12:59:18 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-02-22 18:41:31 +0000

    devel/electron25: fix build with clang 18
    
    Clang 18 has become more stringent about narrowing in initializer lists,
      resulting in errors when building devel/electron25:
    
      ../../third_party/webrtc/pc/legacy_stats_collector.cc:191:54: error: non-constant-expression cannot be narrowed from type 'double' to 'float' in initializer list [-Wc++11-narrowing-const-reference]
        191 |       {StatsReport::kStatsValueNameTotalAudioEnergy, info.total_output_energy},
            |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~
      ../../third_party/webrtc/pc/legacy_stats_collector.cc:193:8: error: non-constant-expression cannot be narrowed from type 'double' to 'float' in initializer list [-Wc++11-narrowing-const-reference]
        193 |        info.total_output_duration}};
            |        ^~~~~~~~~~~~~~~~~~~~~~~~~~
    
    and later:
    
      In file included from ../../cc/layers/mirror_layer_impl.cc:5:
      ../../cc/layers/mirror_layer_impl.h:59:40: error: non-constant-expression cannot be narrowed from type 'int' to 'unsigned long' in initializer list [-Wc++11-narrowing-const-reference]
         59 |     return viz::CompositorRenderPassId{mirrored_layer_id()};
            |                                        ^~~~~~~~~~~~~~~~~~~
    
    The first batch of errors can be fixed similarly to bug 276997, by
    cherry-picking <https://webrtc.googlesource.com/src/+/267f9bdd53> into the
    thirdparty directory.
    
    The second batch of errors can be fixed by cherry-picking
    <https://chromium.googlesource.com/chromium/src/+/5e9fb4130a537>.
    
    PR:             277129
    Approved by:    tagattie (maintainer)
    MFH:            2024Q1
---
 devel/electron25/Makefile                          |   2 +-
 .../files/patch-cc_layers_mirror__layer__impl.h    |  20 ++++
 ...er__metrics_energy__metrics__provider__linux.cc |  14 +++
 ...rd__party_webrtc_pc_legacy__stats__collector.cc | 114 +++++++++++++++++++++
 4 files changed, 149 insertions(+), 1 deletion(-)

diff --git a/devel/electron25/Makefile b/devel/electron25/Makefile
index 4477124c9e91..507a89a53689 100644
--- a/devel/electron25/Makefile
+++ b/devel/electron25/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	electron
 DISTVERSIONPREFIX=	v
 DISTVERSION=	${ELECTRON_VER:S/-beta./.b/}
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	devel
 MASTER_SITES=	https://github.com/tagattie/FreeBSD-Electron/releases/download/v25.5.0/:chromium \
 		https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
diff --git a/devel/electron25/files/patch-cc_layers_mirror__layer__impl.h b/devel/electron25/files/patch-cc_layers_mirror__layer__impl.h
new file mode 100644
index 000000000000..ae2d3d694a8c
--- /dev/null
+++ b/devel/electron25/files/patch-cc_layers_mirror__layer__impl.h
@@ -0,0 +1,20 @@
+--- cc/layers/mirror_layer_impl.h.orig	2023-08-12 07:07:10 UTC
++++ cc/layers/mirror_layer_impl.h
+@@ -5,6 +5,7 @@
+ #ifndef CC_LAYERS_MIRROR_LAYER_IMPL_H_
+ #define CC_LAYERS_MIRROR_LAYER_IMPL_H_
+ 
++#include <cstdint>
+ #include <memory>
+ 
+ #include "base/memory/ptr_util.h"
+@@ -56,7 +57,8 @@ class CC_EXPORT MirrorLayerImpl : public LayerImpl {
+  private:
+   const char* LayerTypeAsString() const override;
+   viz::CompositorRenderPassId mirrored_layer_render_pass_id() const {
+-    return viz::CompositorRenderPassId{mirrored_layer_id()};
++    return viz::CompositorRenderPassId{
++        static_cast<uint64_t>(mirrored_layer_id())};
+   }
+ 
+   int mirrored_layer_id_ = 0;
diff --git a/devel/electron25/files/patch-components_power__metrics_energy__metrics__provider__linux.cc b/devel/electron25/files/patch-components_power__metrics_energy__metrics__provider__linux.cc
new file mode 100644
index 000000000000..1643b08769fe
--- /dev/null
+++ b/devel/electron25/files/patch-components_power__metrics_energy__metrics__provider__linux.cc
@@ -0,0 +1,14 @@
+--- components/power_metrics/energy_metrics_provider_linux.cc.orig	2023-08-12 07:07:15 UTC
++++ components/power_metrics/energy_metrics_provider_linux.cc
+@@ -58,9 +58,9 @@ base::ScopedFD OpenPerfEvent(perf_event_attr* perf_att
+ // value of less than 1. Here, we only consider cpu0. See details in
+ // https://man7.org/linux/man-pages/man2/perf_event_open.2.html.
+ base::ScopedFD OpenPerfEvent(perf_event_attr* perf_attr) {
+-  base::ScopedFD perf_fd{syscall(__NR_perf_event_open, perf_attr, /*pid=*/-1,
++  base::ScopedFD perf_fd(syscall(__NR_perf_event_open, perf_attr, /*pid=*/-1,
+                                  /*cpu=*/0, /*group_fd=*/-1,
+-                                 PERF_FLAG_FD_CLOEXEC)};
++                                 static_cast<int>(PERF_FLAG_FD_CLOEXEC)));
+   return perf_fd;
+ }
+ 
diff --git a/devel/electron25/files/patch-third__party_webrtc_pc_legacy__stats__collector.cc b/devel/electron25/files/patch-third__party_webrtc_pc_legacy__stats__collector.cc
new file mode 100644
index 000000000000..56f072059231
--- /dev/null
+++ b/devel/electron25/files/patch-third__party_webrtc_pc_legacy__stats__collector.cc
@@ -0,0 +1,114 @@
+commit 267f9bdd53a37d1cbee760d5af07880198e1beef
+Author: Tommi <tommi@webrtc.org>
+Date:   2023-12-21T14:08:26+01:00
+
+    Update LegacyStatsCollector to conform with Wc++11-narrowing
+    
+    Bug: none
+    Change-Id: Ida6a1af5c324473a55ea4f3b143862ea016ff50a
+    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/332240
+    Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
+    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
+    Auto-Submit: Tomas Gunnarsson <tommi@webrtc.org>
+    Reviewed-by: Alexander Kornienko <alexfh@google.com>
+    Reviewed-by: Henrik Boström <hbos@webrtc.org>
+    Cr-Commit-Position: refs/heads/main@{#41432}
+
+--- third_party/webrtc/pc/legacy_stats_collector.cc.orig	2023-08-12 07:13:59 UTC
++++ third_party/webrtc/pc/legacy_stats_collector.cc
+@@ -188,9 +188,10 @@ void ExtractStats(const cricket::VoiceReceiverInfo& in
+       {StatsReport::kStatsValueNameAccelerateRate, info.accelerate_rate},
+       {StatsReport::kStatsValueNamePreemptiveExpandRate,
+        info.preemptive_expand_rate},
+-      {StatsReport::kStatsValueNameTotalAudioEnergy, info.total_output_energy},
++      {StatsReport::kStatsValueNameTotalAudioEnergy,
++       static_cast<float>(info.total_output_energy)},
+       {StatsReport::kStatsValueNameTotalSamplesDuration,
+-       info.total_output_duration}};
++       static_cast<float>(info.total_output_duration)}};
+ 
+   const IntForAdd ints[] = {
+       {StatsReport::kStatsValueNameCurrentDelayMs, info.delay_estimate_ms},
+@@ -244,9 +245,10 @@ void ExtractStats(const cricket::VoiceSenderInfo& info
+   SetAudioProcessingStats(report, info.apm_statistics);
+ 
+   const FloatForAdd floats[] = {
+-      {StatsReport::kStatsValueNameTotalAudioEnergy, info.total_input_energy},
++      {StatsReport::kStatsValueNameTotalAudioEnergy,
++       static_cast<float>(info.total_input_energy)},
+       {StatsReport::kStatsValueNameTotalSamplesDuration,
+-       info.total_input_duration}};
++       static_cast<float>(info.total_input_duration)}};
+ 
+   RTC_DCHECK_GE(info.audio_level, 0);
+   const IntForAdd ints[] = {
+@@ -340,7 +342,8 @@ void ExtractStats(const cricket::VideoReceiverInfo& in
+       {StatsReport::kStatsValueNamePlisSent, info.plis_sent},
+       {StatsReport::kStatsValueNameRenderDelayMs, info.render_delay_ms},
+       {StatsReport::kStatsValueNameTargetDelayMs, info.target_delay_ms},
+-      {StatsReport::kStatsValueNameFramesDecoded, info.frames_decoded},
++      {StatsReport::kStatsValueNameFramesDecoded,
++       static_cast<int>(info.frames_decoded)},
+   };
+ 
+   for (const auto& i : ints)
+@@ -384,15 +387,19 @@ void ExtractStats(const cricket::VideoSenderInfo& info
+        info.encode_usage_percent},
+       {StatsReport::kStatsValueNameFirsReceived, info.firs_received},
+       {StatsReport::kStatsValueNameFrameHeightSent, info.send_frame_height},
+-      {StatsReport::kStatsValueNameFrameRateInput, round(info.framerate_input)},
++      {StatsReport::kStatsValueNameFrameRateInput,
++       static_cast<int>(round(info.framerate_input))},
+       {StatsReport::kStatsValueNameFrameRateSent, info.framerate_sent},
+       {StatsReport::kStatsValueNameFrameWidthSent, info.send_frame_width},
+-      {StatsReport::kStatsValueNameNacksReceived, info.nacks_received},
++      {StatsReport::kStatsValueNameNacksReceived,
++       static_cast<int>(info.nacks_received)},
+       {StatsReport::kStatsValueNamePacketsLost, info.packets_lost},
+       {StatsReport::kStatsValueNamePacketsSent, info.packets_sent},
+       {StatsReport::kStatsValueNamePlisReceived, info.plis_received},
+-      {StatsReport::kStatsValueNameFramesEncoded, info.frames_encoded},
+-      {StatsReport::kStatsValueNameHugeFramesSent, info.huge_frames_sent},
++      {StatsReport::kStatsValueNameFramesEncoded,
++       static_cast<int>(info.frames_encoded)},
++      {StatsReport::kStatsValueNameHugeFramesSent,
++       static_cast<int>(info.huge_frames_sent)},
+   };
+ 
+   for (const auto& i : ints)
+@@ -780,19 +787,25 @@ StatsReport* LegacyStatsCollector::AddConnectionInfoRe
+                 AddCandidateReport(remote_candidate_stats, false)->id());
+ 
+   const Int64ForAdd int64s[] = {
+-      {StatsReport::kStatsValueNameBytesReceived, info.recv_total_bytes},
+-      {StatsReport::kStatsValueNameBytesSent, info.sent_total_bytes},
+-      {StatsReport::kStatsValueNamePacketsSent, info.sent_total_packets},
+-      {StatsReport::kStatsValueNameRtt, info.rtt},
++      {StatsReport::kStatsValueNameBytesReceived,
++       static_cast<int64_t>(info.recv_total_bytes)},
++      {StatsReport::kStatsValueNameBytesSent,
++       static_cast<int64_t>(info.sent_total_bytes)},
++      {StatsReport::kStatsValueNamePacketsSent,
++       static_cast<int64_t>(info.sent_total_packets)},
++      {StatsReport::kStatsValueNameRtt, static_cast<int64_t>(info.rtt)},
+       {StatsReport::kStatsValueNameSendPacketsDiscarded,
+-       info.sent_discarded_packets},
++       static_cast<int64_t>(info.sent_discarded_packets)},
+       {StatsReport::kStatsValueNameSentPingRequestsTotal,
+-       info.sent_ping_requests_total},
++       static_cast<int64_t>(info.sent_ping_requests_total)},
+       {StatsReport::kStatsValueNameSentPingRequestsBeforeFirstResponse,
+-       info.sent_ping_requests_before_first_response},
+-      {StatsReport::kStatsValueNameSentPingResponses, info.sent_ping_responses},
+-      {StatsReport::kStatsValueNameRecvPingRequests, info.recv_ping_requests},
+-      {StatsReport::kStatsValueNameRecvPingResponses, info.recv_ping_responses},
++       static_cast<int64_t>(info.sent_ping_requests_before_first_response)},
++      {StatsReport::kStatsValueNameSentPingResponses,
++       static_cast<int64_t>(info.sent_ping_responses)},
++      {StatsReport::kStatsValueNameRecvPingRequests,
++       static_cast<int64_t>(info.recv_ping_requests)},
++      {StatsReport::kStatsValueNameRecvPingResponses,
++       static_cast<int64_t>(info.recv_ping_responses)},
+   };
+   for (const auto& i : int64s)
+     report->AddInt64(i.name, i.value);