diff --git a/srcpkgs/electron24/files/musl-patches/chromium-musl-sandbox.patch b/srcpkgs/electron24/files/musl-patches/chromium-musl-sandbox.patch deleted file mode 100644 index 22d865aa42f..00000000000 --- a/srcpkgs/electron24/files/musl-patches/chromium-musl-sandbox.patch +++ /dev/null @@ -1,125 +0,0 @@ -Source: https://git.alpinelinux.org/aports/tree/community/chromium/musl-sandbox.patch -musl uses different syscalls from glibc for some functions, so the sandbox has -to account for that --- -diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -index ff5a1c0..da56b9b 100644 ---- a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -+++ ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -@@ -139,21 +139,11 @@ namespace sandbox { - // present (as in newer versions of posix_spawn). - ResultExpr RestrictCloneToThreadsAndEPERMFork() { - const Arg flags(0); -- -- // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2. -- const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES | -- CLONE_SIGHAND | CLONE_THREAD | -- CLONE_SYSVSEM; -- const uint64_t kObsoleteAndroidCloneMask = kAndroidCloneMask | CLONE_DETACHED; -- -- const uint64_t kGlibcPthreadFlags = -- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | -- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID; -- const BoolExpr glibc_test = flags == kGlibcPthreadFlags; -- -- const BoolExpr android_test = -- AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask, -- flags == kGlibcPthreadFlags); -+ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | -+ CLONE_THREAD | CLONE_SYSVSEM; -+ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | -+ CLONE_DETACHED; -+ const BoolExpr thread_clone_ok = (flags&~safe)==required; - - // The following two flags are the two important flags in any vfork-emulating - // clone call. EPERM any clone call that contains both of them. -@@ -163,7 +153,7 @@ ResultExpr RestrictCloneToThreadsAndEPERMFork() { - AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0, - (flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags); - -- return If(IsAndroid() ? android_test : glibc_test, Allow()) -+ return If(thread_clone_ok, Allow()) - .ElseIf(is_fork_or_clone_vfork, Error(EPERM)) - .Else(CrashSIGSYSClone()); - } -diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -index d9d1882..0567557 100644 ---- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { - #if defined(__i386__) - case __NR_waitpid: - #endif -+ case __NR_set_tid_address: - return true; - case __NR_clone: // Should be parameter-restricted. - case __NR_setns: // Privileged. -@@ -404,7 +405,6 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) - case __NR_set_thread_area: - #endif -- case __NR_set_tid_address: - case __NR_unshare: - #if !defined(__mips__) && !defined(__aarch64__) - case __NR_vfork: -@@ -514,6 +514,8 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { - case __NR_mlock: - case __NR_munlock: - case __NR_munmap: -+ case __NR_mremap: -+ case __NR_membarrier: - return true; - case __NR_madvise: - case __NR_mincore: -@@ -531,7 +533,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { - case __NR_modify_ldt: - #endif - case __NR_mprotect: -- case __NR_mremap: - case __NR_msync: - case __NR_munlockall: - case __NR_readahead: -diff --git a/sandbox/linux/system_headers/linux_syscalls.h ./sandbox/linux/system_headers/linux_syscalls.h -index 2b78a0c..b6fedb5 100644 ---- a/sandbox/linux/system_headers/linux_syscalls.h -+++ b/sandbox/linux/system_headers/linux_syscalls.h -@@ -10,6 +10,7 @@ - #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ - - #include "build/build_config.h" -+#include - - #if defined(__x86_64__) - #include "sandbox/linux/system_headers/x86_64_linux_syscalls.h" ---- a/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ b/sandbox/policy/linux/bpf_renderer_policy_linux.cc -@@ -94,6 +94,9 @@ - case __NR_pwrite64: - case __NR_sched_get_priority_max: - case __NR_sched_get_priority_min: -+ case __NR_sched_getparam: -+ case __NR_sched_getscheduler: -+ case __NR_sched_setscheduler: - case __NR_sysinfo: - case __NR_times: - case __NR_uname: ---- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -@@ -225,10 +225,15 @@ - if (sysno == __NR_getpriority || sysno ==__NR_setpriority) - return RestrictGetSetpriority(current_pid); - -+ // XXX: hacks for musl sandbox, calls needed? -+ if (sysno == __NR_sched_getparam || sysno == __NR_sched_getscheduler || -+ sysno == __NR_sched_setscheduler) { -+ return Allow(); -+ } -+ - // The scheduling syscalls are used in threading libraries and also heavily in - // abseil. See for example https://crbug.com/1370394. -- if (sysno == __NR_sched_getaffinity || sysno == __NR_sched_getparam || -- sysno == __NR_sched_getscheduler || sysno == __NR_sched_setscheduler) { -+ if (sysno == __NR_sched_getaffinity) { - return RestrictSchedTarget(current_pid, sysno); - } - diff --git a/srcpkgs/electron24/files/musl-patches/chromium-musl-tid-caching.patch b/srcpkgs/electron24/files/musl-patches/chromium-musl-tid-caching.patch deleted file mode 100644 index 52bbe775ad2..00000000000 --- a/srcpkgs/electron24/files/musl-patches/chromium-musl-tid-caching.patch +++ /dev/null @@ -1,86 +0,0 @@ -Source: https://git.alpinelinux.org/aports/plain/community/chromium/musl-tid-caching.patch -the sandbox caching of thread id's only works with glibc -see: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/32356 -see: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13579 --- ---- a/sandbox/linux/services/namespace_sandbox.cc -+++ b/sandbox/linux/services/namespace_sandbox.cc -@@ -209,6 +209,70 @@ - return base::LaunchProcess(argv, launch_options_copy); - } - -+#if defined(__aarch64__) || defined(__arm__) || defined(__powerpc__) -+#define TLS_ABOVE_TP -+#endif -+ -+struct musl_pthread -+{ -+ /* Part 1 -- these fields may be external or -+ * internal (accessed via asm) ABI. Do not change. */ -+ struct pthread *self; -+#ifndef TLS_ABOVE_TP -+ uintptr_t *dtv; -+#endif -+ struct pthread *prev, *next; /* non-ABI */ -+ uintptr_t sysinfo; -+#ifndef TLS_ABOVE_TP -+#ifdef CANARY_PAD -+ uintptr_t canary_pad; -+#endif -+ uintptr_t canary; -+#endif -+ -+/* Part 2 -- implementation details, non-ABI. */ -+ int tid; -+ int errno_val; -+ volatile int detach_state; -+ volatile int cancel; -+ volatile unsigned char canceldisable, cancelasync; -+ unsigned char tsd_used:1; -+ unsigned char dlerror_flag:1; -+ unsigned char *map_base; -+ size_t map_size; -+ void *stack; -+ size_t stack_size; -+ size_t guard_size; -+ void *result; -+ struct __ptcb *cancelbuf; -+ void **tsd; -+ struct { -+ volatile void *volatile head; -+ long off; -+ volatile void *volatile pending; -+ } robust_list; -+ int h_errno_val; -+ volatile int timer_id; -+ locale_t locale; -+ volatile int killlock[1]; -+ char *dlerror_buf; -+ void *stdio_locks; -+ -+ /* Part 3 -- the positions of these fields relative to -+ * the end of the structure is external and internal ABI. */ -+#ifdef TLS_ABOVE_TP -+ uintptr_t canary; -+ uintptr_t *dtv; -+#endif -+}; -+ -+void MaybeUpdateMuslTidCache() -+{ -+ pid_t real_tid = sys_gettid(); -+ pid_t* cached_tid_location = &reinterpret_cast(pthread_self())->tid; -+ *cached_tid_location = real_tid; -+} -+ - // static - pid_t NamespaceSandbox::ForkInNewPidNamespace(bool drop_capabilities_in_child) { - const pid_t pid = -@@ -226,6 +290,7 @@ - #if defined(LIBC_GLIBC) - MaybeUpdateGlibcTidCache(); - #endif -+ MaybeUpdateMuslTidCache(); - return 0; - } - diff --git a/srcpkgs/electron24/files/musl-patches/chromium-no-res-ninit-nclose.patch b/srcpkgs/electron24/files/musl-patches/chromium-no-res-ninit-nclose.patch deleted file mode 100644 index 6884039efb8..00000000000 --- a/srcpkgs/electron24/files/musl-patches/chromium-no-res-ninit-nclose.patch +++ /dev/null @@ -1,33 +0,0 @@ -Source: https://git.alpinelinux.org/aports/plain/community/chromium/no-res-ninit-nclose.patch -similar to dns-resolver.patch, musl doesn't have res_ninit and so on --- ---- a/net/dns/public/scoped_res_state.cc -+++ b/net/dns/public/scoped_res_state.cc -@@ -13,7 +13,7 @@ - namespace net { - - ScopedResState::ScopedResState() { --#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) -+#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) || defined(_GNU_SOURCE) - // Note: res_ninit in glibc always returns 0 and sets RES_INIT. - // res_init behaves the same way. - memset(&_res, 0, sizeof(_res)); -@@ -25,16 +25,8 @@ - } - - ScopedResState::~ScopedResState() { --#if !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) -- -- // Prefer res_ndestroy where available. --#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) -- res_ndestroy(&res_); --#else -- res_nclose(&res_); --#endif // BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) -- --#endif // !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) -+ // musl res_init() doesn't actually do anything -+ // no destruction is necessary as no memory has been allocated - } - - bool ScopedResState::IsValid() const { diff --git a/srcpkgs/electron24/files/musl-patches/chromium-quiche-arena-size.patch b/srcpkgs/electron24/files/musl-patches/chromium-quiche-arena-size.patch deleted file mode 100644 index 4d17c41b56d..00000000000 --- a/srcpkgs/electron24/files/musl-patches/chromium-quiche-arena-size.patch +++ /dev/null @@ -1,15 +0,0 @@ -Source: https://git.alpinelinux.org/aports/plain/community/chromium/quiche-arena-size.patch -back in the day when net_unittests were ran, the block arena size was not big -enough for some reason. should look at this again --- ---- a/net/third_party/quiche/src/quiche/quic/core/quic_one_block_arena.h -+++ b/net/third_party/quiche/src/quiche/quic/core/quic_one_block_arena.h -@@ -69,7 +69,7 @@ - - // QuicConnections currently use around 1KB of polymorphic types which would - // ordinarily be on the heap. Instead, store them inline in an arena. --using QuicConnectionArena = QuicOneBlockArena<1280>; -+using QuicConnectionArena = QuicOneBlockArena<1504>; - - } // namespace quic - diff --git a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch b/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch deleted file mode 100644 index e739b40a273..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch +++ /dev/null @@ -1,333 +0,0 @@ -From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001 -From: Dale Curtis -Date: Sat, 2 Apr 2022 05:13:53 +0000 -Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125 - commits) - -https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526 - -Created with: - roll-dep src/third_party/ffmpeg - -Fixed: 1293918 -Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng -Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647 -Auto-Submit: Dale Curtis -Reviewed-by: Dan Sanders -Commit-Queue: Dale Curtis -Cr-Commit-Position: refs/heads/main@{#988253} ---- - .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++--------- - media/ffmpeg/ffmpeg_common.cc | 11 +++---- - media/filters/audio_file_reader.cc | 9 +++--- - media/filters/audio_file_reader_unittest.cc | 6 ++-- - .../filters/audio_video_metadata_extractor.cc | 11 +++++-- - .../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++-- - ...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +- - media/filters/ffmpeg_audio_decoder.cc | 13 +++++---- - 8 files changed, 51 insertions(+), 37 deletions(-) - -diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -index e4fc3f460e2..9b1ad9f7675 100644 ---- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext( - codec_context->sample_fmt = AV_SAMPLE_FMT_NONE; - } - -- codec_context->channels = config.channel_count; -+ codec_context->ch_layout.nb_channels = config.channel_count; - codec_context->sample_rate = config.samples_per_second; - - if (config.extra_data) { -@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format, - case cdm::kAudioFormatPlanarS16: - case cdm::kAudioFormatPlanarF32: { - const int decoded_size_per_channel = -- decoded_audio_size / av_frame.channels; -- for (int i = 0; i < av_frame.channels; ++i) { -+ decoded_audio_size / av_frame.ch_layout.nb_channels; -+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) { - memcpy(output_buffer, av_frame.extended_data[i], - decoded_size_per_channel); - output_buffer += decoded_size_per_channel; -@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize( - // Success! - decoding_loop_ = std::make_unique(codec_context_.get()); - samples_per_second_ = config.samples_per_second; -- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8; -+ bytes_per_frame_ = -+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8; - output_timestamp_helper_ = - std::make_unique(config.samples_per_second); - is_initialized_ = true; - - // Store initial values to guard against midstream configuration changes. -- channels_ = codec_context_->channels; -+ channels_ = codec_context_->ch_layout.nb_channels; - av_sample_format_ = codec_context_->sample_fmt; - - return true; -@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( - for (auto& frame : audio_frames) { - int decoded_audio_size = 0; - if (frame->sample_rate != samples_per_second_ || -- frame->channels != channels_ || frame->format != av_sample_format_) { -+ frame->ch_layout.nb_channels != channels_ || -+ frame->format != av_sample_format_) { - DLOG(ERROR) << "Unsupported midstream configuration change!" - << " Sample Rate: " << frame->sample_rate << " vs " -- << samples_per_second_ << ", Channels: " << frame->channels -- << " vs " << channels_ << ", Sample Format: " << frame->format -- << " vs " << av_sample_format_; -+ << samples_per_second_ -+ << ", Channels: " << frame->ch_layout.nb_channels << " vs " -+ << channels_ << ", Sample Format: " << frame->format << " vs " -+ << av_sample_format_; - return cdm::kDecodeError; - } - - decoded_audio_size = av_samples_get_buffer_size( -- nullptr, codec_context_->channels, frame->nb_samples, -+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, - codec_context_->sample_fmt, 1); - if (!decoded_audio_size) - continue; -@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( - size_t* total_size, - std::vector>* audio_frames, - AVFrame* frame) { -- *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels, -- frame->nb_samples, -- codec_context_->sample_fmt, 1); -+ *total_size += av_samples_get_buffer_size( -+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, -+ codec_context_->sample_fmt, 1); - audio_frames->emplace_back(av_frame_clone(frame)); - return true; - } -diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc -index 87ca8969626..76f03d6608e 100644 ---- a/media/ffmpeg/ffmpeg_common.cc -+++ b/media/ffmpeg/ffmpeg_common.cc -@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - codec_context->sample_fmt, codec_context->codec_id); - - ChannelLayout channel_layout = -- codec_context->channels > 8 -+ codec_context->ch_layout.nb_channels > 8 - ? CHANNEL_LAYOUT_DISCRETE -- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, -- codec_context->channels); -+ : ChannelLayoutToChromeChannelLayout( -+ codec_context->ch_layout.u.mask, -+ codec_context->ch_layout.nb_channels); - - int sample_rate = codec_context->sample_rate; - switch (codec) { -@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - extra_data, encryption_scheme, seek_preroll, - codec_context->delay); - if (channel_layout == CHANNEL_LAYOUT_DISCRETE) -- config->SetChannelsForDiscrete(codec_context->channels); -+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels); - - #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) - // These are bitstream formats unknown to ffmpeg, so they don't have -@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, - - // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses - // said information to decode. -- codec_context->channels = config.channels(); -+ codec_context->ch_layout.nb_channels = config.channels(); - codec_context->sample_rate = config.samples_per_second(); - - if (config.extra_data().empty()) { -diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc -index 5f257bdfaa6..e1be5aa9a5b 100644 ---- a/media/filters/audio_file_reader.cc -+++ b/media/filters/audio_file_reader.cc -@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() { - - // Verify the channel layout is supported by Chrome. Acts as a sanity check - // against invalid files. See http://crbug.com/171962 -- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout, -- codec_context_->channels) == -+ if (ChannelLayoutToChromeChannelLayout( -+ codec_context_->ch_layout.u.mask, -+ codec_context_->ch_layout.nb_channels) == - CHANNEL_LAYOUT_UNSUPPORTED) { - return false; - } - - // Store initial values to guard against midstream configuration changes. -- channels_ = codec_context_->channels; -+ channels_ = codec_context_->ch_layout.nb_channels; - audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id); - sample_rate_ = codec_context_->sample_rate; - av_sample_format_ = codec_context_->sample_fmt; -@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame( - if (frames_read < 0) - return false; - -- const int channels = frame->channels; -+ const int channels = frame->ch_layout.nb_channels; - if (frame->sample_rate != sample_rate_ || channels != channels_ || - frame->format != av_sample_format_) { - DLOG(ERROR) << "Unsupported midstream configuration change!" -diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc -index 2aba7927a31..1f45a50cace 100644 ---- a/media/filters/audio_file_reader_unittest.cc -+++ b/media/filters/audio_file_reader_unittest.cc -@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test { - EXPECT_FALSE(reader_->Open()); - } - -- void RunTestFailingDecode(const char* fn) { -+ void RunTestFailingDecode(const char* fn, int expect_read = 0) { - Initialize(fn); - EXPECT_TRUE(reader_->Open()); - std::vector> decoded_audio_packets; -- EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0); -+ EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read); - } - - void RunTestPartialDecode(const char* fn) { -@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) { - } - - TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) { -- RunTestFailingDecode("midstream_config_change.mp3"); -+ RunTestFailingDecode("midstream_config_change.mp3", 42624); - } - #endif - -diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc -index 185819eb936..69ff508c221 100644 ---- a/media/filters/audio_video_metadata_extractor.cc -+++ b/media/filters/audio_video_metadata_extractor.cc -@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source, - if (!stream) - continue; - -+ void* display_matrix = -+ av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr); -+ if (display_matrix) { -+ rotation_ = VideoTransformation::FromFFmpegDisplayMatrix( -+ static_cast(display_matrix)) -+ .rotation; -+ info.tags["rotate"] = base::NumberToString(rotation_); -+ } -+ - // Extract dictionary from streams also. Needed for containers that attach - // metadata to contained streams instead the container itself, like OGG. - ExtractDictionary(stream->metadata, &info.tags); -@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata, - if (raw_tags->find(tag->key) == raw_tags->end()) - (*raw_tags)[tag->key] = tag->value; - -- if (ExtractInt(tag, "rotate", &rotation_)) -- continue; - if (ExtractString(tag, "album", &album_)) - continue; - if (ExtractString(tag, "artist", &artist_)) -diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc -index 6f231c85729..ca5e5fb927d 100644 ---- a/media/filters/ffmpeg_aac_bitstream_converter.cc -+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc -@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { - if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id || - audio_profile_ != stream_codec_parameters_->profile || - sample_rate_index_ != sample_rate_index || -- channel_configuration_ != stream_codec_parameters_->channels || -+ channel_configuration_ != -+ stream_codec_parameters_->ch_layout.nb_channels || - frame_length_ != header_plus_packet_size) { - header_generated_ = - GenerateAdtsHeader(stream_codec_parameters_->codec_id, - 0, // layer - stream_codec_parameters_->profile, sample_rate_index, - 0, // private stream -- stream_codec_parameters_->channels, -+ stream_codec_parameters_->ch_layout.nb_channels, - 0, // originality - 0, // home - 0, // copyrighted_stream -@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { - codec_ = stream_codec_parameters_->codec_id; - audio_profile_ = stream_codec_parameters_->profile; - sample_rate_index_ = sample_rate_index; -- channel_configuration_ = stream_codec_parameters_->channels; -+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels; - frame_length_ = header_plus_packet_size; - } - -diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -index 1fd4c5ccd7d..f59bcd8fdaf 100644 ---- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test { - memset(&test_parameters_, 0, sizeof(AVCodecParameters)); - test_parameters_.codec_id = AV_CODEC_ID_AAC; - test_parameters_.profile = FF_PROFILE_AAC_MAIN; -- test_parameters_.channels = 2; -+ test_parameters_.ch_layout.nb_channels = 2; - test_parameters_.extradata = extradata_header_; - test_parameters_.extradata_size = sizeof(extradata_header_); - } -diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc -index 6a56c675f7d..4615fdeb3fb 100644 ---- a/media/filters/ffmpeg_audio_decoder.cc -+++ b/media/filters/ffmpeg_audio_decoder.cc -@@ -28,7 +28,7 @@ namespace media { - - // Return the number of channels from the data in |frame|. - static inline int DetermineChannels(AVFrame* frame) { -- return frame->channels; -+ return frame->ch_layout.nb_channels; - } - - // Called by FFmpeg's allocation routine to allocate a buffer. Uses -@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, - // Translate unsupported into discrete layouts for discrete configurations; - // ffmpeg does not have a labeled discrete configuration internally. - ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout( -- codec_context_->channel_layout, codec_context_->channels); -+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels); - if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED && - config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) { - channel_layout = CHANNEL_LAYOUT_DISCRETE; -@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { - // Success! - av_sample_format_ = codec_context_->sample_fmt; - -- if (codec_context_->channels != config.channels()) { -+ if (codec_context_->ch_layout.nb_channels != config.channels()) { - MEDIA_LOG(ERROR, media_log_) - << "Audio configuration specified " << config.channels() - << " channels, but FFmpeg thinks the file contains " -- << codec_context_->channels << " channels"; -+ << codec_context_->ch_layout.nb_channels << " channels"; - ReleaseFFmpegResources(); - state_ = DecoderState::kUninitialized; - return false; -@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, - if (frame->nb_samples <= 0) - return AVERROR(EINVAL); - -- if (s->channels != channels) { -+ if (s->ch_layout.nb_channels != channels) { - DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count."; - return AVERROR(EINVAL); - } -@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, - ChannelLayout channel_layout = - config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE - ? CHANNEL_LAYOUT_DISCRETE -- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels); -+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask, -+ s->ch_layout.nb_channels); - - if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) { - DLOG(ERROR) << "Unsupported channel layout."; diff --git a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch.args b/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch.args deleted file mode 100644 index 8bbbbe94836..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m102.patch.args +++ /dev/null @@ -1 +0,0 @@ --RNp1 diff --git a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch b/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch deleted file mode 100644 index b2a11379173..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch +++ /dev/null @@ -1,55 +0,0 @@ -From ded379824f5de39357b6b1894578101aba5cdf05 Mon Sep 17 00:00:00 2001 -From: Eugene Zemtsov -Date: Fri, 29 Jul 2022 04:41:04 +0000 -Subject: [PATCH] Roll src/third_party/ffmpeg/ 880df5ede..b71ecd02b (279 - commits) - -https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/880df5ede50a..b71ecd02b479 - -$ git log 880df5ede..b71ecd02b --date=short --no-merges --format='%ad %ae %s' -2022-07-27 eugene Roll for M106 -2022-07-25 andreas.rheinhardt avcodec/x86/pngdsp: Remove obsolete ff_add_bytes_l2_mmx() -2022-07-22 andreas.rheinhardt avcodec/hevcdec: Output MD5-message in one piece -2022-07-24 epirat07 configure: properly require libx264 if enabled -2022-07-24 zane avformat/argo_cvg: expose loop/reverb/checksum via metadata -(...) -2022-05-03 leo.izen avcodec/libjxldec: properly tag output colorspace -2022-06-25 ffmpeg avfilter/Makefile: always make colorspace.o -2022-03-02 brad avutil/ppc/cpu: Use proper header for OpenBSD PPC CPU detection -2022-06-24 jamrial avformat/http: include version.h -2022-05-16 mbonda-at-nvidia.com AV1 VDPAU hwaccel Decode support - -Created with: - roll-dep src/third_party/ffmpeg - -ffmpeg usage fix: - Switch from AVFrame::pkt_duration to AVFrame::duration, - AVFrame::pkt_duration is deprecated - -Bug: 1344646 -Change-Id: Iaa3abf48ef81dae6d282bca8f0fa2a8dffeeba25 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788638 -Reviewed-by: Will Cassella -Commit-Queue: Eugene Zemtsov -Cr-Commit-Position: refs/heads/main@{#1029623} ---- - media/filters/audio_file_reader.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc -index e1be5aa9a5b..951c003956f 100644 ---- a/media/filters/audio_file_reader.cc -+++ b/media/filters/audio_file_reader.cc -@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame( - // silence from being output. In the case where we are also discarding some - // portion of the packet (as indicated by a negative pts), we further want to - // adjust the duration downward by however much exists before zero. -- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { -+ if (audio_codec_ == AudioCodec::kAAC && frame->duration) { - const base::TimeDelta pkt_duration = ConvertFromTimeBase( - glue_->format_context()->streams[stream_index_]->time_base, -- frame->pkt_duration + std::min(static_cast(0), frame->pts)); -+ frame->duration + std::min(static_cast(0), frame->pts)); - const base::TimeDelta frame_duration = - base::Seconds(frames_read / static_cast(sample_rate_)); - diff --git a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch.args b/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch.args deleted file mode 100644 index 8bbbbe94836..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-REVERT-roll-src-third_party-ffmpeg-m106.patch.args +++ /dev/null @@ -1 +0,0 @@ --RNp1 diff --git a/srcpkgs/electron24/files/patches/chromium-angle-wayland-include.patch b/srcpkgs/electron24/files/patches/chromium-angle-wayland-include.patch deleted file mode 100644 index 65770b9439c..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-angle-wayland-include.patch +++ /dev/null @@ -1,39 +0,0 @@ -Patch-Source: https://github.com/archlinux/svntogit-packages/blob/a353833a5a731abfaa465b658f61894a516aa49b/trunk/angle-wayland-include-protocol.patch -diff -upr third_party/angle.orig/BUILD.gn third_party/angle/BUILD.gn ---- a/third_party/angle.orig/BUILD.gn 2022-08-17 19:38:11.000000000 +0000 -+++ b/third_party/angle/BUILD.gn 2022-08-18 11:04:09.061751111 +0000 -@@ -489,6 +489,12 @@ config("angle_vulkan_wayland_config") { - if (angle_enable_vulkan && angle_use_wayland && - defined(vulkan_wayland_include_dirs)) { - include_dirs = vulkan_wayland_include_dirs -+ } else if (angle_enable_vulkan && angle_use_wayland) { -+ include_dirs = [ -+ "$wayland_gn_dir/src/src", -+ "$wayland_gn_dir/include/src", -+ "$wayland_gn_dir/include/protocol", -+ ] - } - } - -@@ -1073,6 +1079,7 @@ if (angle_use_wayland) { - include_dirs = [ - "$wayland_dir/egl", - "$wayland_dir/src", -+ "$wayland_gn_dir/include/protocol", - ] - } - -diff -upr third_party/angle.orig/src/third_party/volk/BUILD.gn third_party/angle/src/third_party/volk/BUILD.gn ---- a/third_party/angle.orig/src/third_party/volk/BUILD.gn 2022-08-17 19:38:12.000000000 +0000 -+++ b/third_party/angle/src/third_party/volk/BUILD.gn 2022-08-18 11:04:36.499828006 +0000 -@@ -21,6 +21,9 @@ source_set("volk") { - configs += [ "$angle_root:angle_no_cfi_icall" ] - public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ] - if (angle_use_wayland) { -- include_dirs = [ "$wayland_dir/src" ] -+ include_dirs = [ -+ "$wayland_dir/src", -+ "$wayland_gn_dir/include/protocol", -+ ] - } - } diff --git a/srcpkgs/electron24/files/patches/chromium-browser-size_t.patch b/srcpkgs/electron24/files/patches/chromium-browser-size_t.patch deleted file mode 100644 index 36af0ec6c4a..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-browser-size_t.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/chrome/browser/search/background/ntp_backgrounds.h 2020-08-10 20:39:20.000000000 +0200 -+++ b/chrome/browser/search/background/ntp_backgrounds.h 2020-09-04 13:48:22.640023256 +0200 -@@ -6,6 +6,7 @@ - #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_ - - #include -+#include - - class GURL; - diff --git a/srcpkgs/electron24/files/patches/chromium-chromium-93-ffmpeg-4.4.patch b/srcpkgs/electron24/files/patches/chromium-chromium-93-ffmpeg-4.4.patch deleted file mode 100644 index f0ec736f98b..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-chromium-93-ffmpeg-4.4.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc -index ac4713b07268..492a9a37d096 100644 ---- a/media/filters/ffmpeg_demuxer.cc -+++ b/media/filters/ffmpeg_demuxer.cc -@@ -427,11 +427,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - scoped_refptr buffer; - - if (type() == DemuxerStream::TEXT) { -- size_t id_size = 0; -+ int id_size = 0; - uint8_t* id_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size); - -- size_t settings_size = 0; -+ int settings_size = 0; - uint8_t* settings_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size); - -@@ -443,7 +443,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - buffer = DecoderBuffer::CopyFrom(packet->data, packet->size, - side_data.data(), side_data.size()); - } else { -- size_t side_data_size = 0; -+ int side_data_size = 0; - uint8_t* side_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); - -@@ -504,7 +504,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - packet->size - data_offset); - } - -- size_t skip_samples_size = 0; -+ int skip_samples_size = 0; - const uint32_t* skip_samples_ptr = - reinterpret_cast(av_packet_get_side_data( - packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); diff --git a/srcpkgs/electron24/files/patches/chromium-chromium-i686-vaapi-fpermissive.patch b/srcpkgs/electron24/files/patches/chromium-chromium-i686-vaapi-fpermissive.patch deleted file mode 100644 index 77c0b58c94e..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-chromium-i686-vaapi-fpermissive.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/media/gpu/vaapi/BUILD.gn.orig -+++ b/media/gpu/vaapi/BUILD.gn -@@ -14,6 +14,12 @@ - assert(is_linux || is_chromeos) - assert(use_vaapi) - -+config("vaapi_permissive") { -+ if (target_cpu == "x86") { -+ cflags = [ "-fpermissive" ] -+ } -+} -+ - generate_stubs("libva_stubs") { - extra_header = "va_stub_header.fragment" - sigs = [ "va.sigs" ] -@@ -90,6 +96,7 @@ - configs += [ - "//build/config/linux/libva", - "//third_party/libvpx:libvpx_config", -+ ":vaapi_permissive", - ] - - deps = [ diff --git a/srcpkgs/electron24/files/patches/chromium-chromium-revert-drop-of-system-java.patch b/srcpkgs/electron24/files/patches/chromium-chromium-revert-drop-of-system-java.patch deleted file mode 100644 index 117a50f8e4f..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-chromium-revert-drop-of-system-java.patch +++ /dev/null @@ -1,15 +0,0 @@ -This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef ---- a/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200 -+++ b/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200 -@@ -13,8 +13,9 @@ - - - _CURRENT_DIR = os.path.join(os.path.dirname(__file__)) --_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") --assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds" -+_JAVA_BIN = "java" -+_JDK_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") -+_JAVA_PATH = _JDK_PATH if os.path.isfile(_JDK_PATH) else _JAVA_BIN - - class Compiler(object): - """Runs the Closure compiler on given source files to typecheck them diff --git a/srcpkgs/electron24/files/patches/chromium-chromium-system-nodejs.patch b/srcpkgs/electron24/files/patches/chromium-chromium-system-nodejs.patch deleted file mode 100644 index 83e8b93b9fc..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-chromium-system-nodejs.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/third_party/node/node.py -+++ b/third_party/node/node.py -@@ -13,11 +13,12 @@ - def GetBinaryPath(): - darwin_name = ('node-darwin-arm64' if platform.machine() == 'arm64' else - 'node-darwin-x64') -- return os_path.join(os_path.dirname(__file__), *{ -- 'Darwin': ('mac', darwin_name, 'bin', 'node'), -- 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'), -- 'Windows': ('win', 'node.exe'), -- }[platform.system()]) -+ #return os_path.join(os_path.dirname(__file__), *{ -+ # 'Darwin': ('mac', darwin_name, 'bin', 'node'), -+ # 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'), -+ # 'Windows': ('win', 'node.exe'), -+ #}[platform.system()]) -+ return "/usr/bin/node" - - - def RunNode(cmd_parts, stdout=None): diff --git a/srcpkgs/electron24/files/patches/chromium-cross-build.patch b/srcpkgs/electron24/files/patches/chromium-cross-build.patch deleted file mode 100644 index 53df490bac9..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-cross-build.patch +++ /dev/null @@ -1,65 +0,0 @@ ---- a/build/config/compiler/BUILD.gn.orig -+++ b/build/config/compiler/BUILD.gn -@@ -55,6 +55,10 @@ - } - - declare_args() { -+ is_musl = false -+} -+ -+declare_args() { - # Normally, Android builds are lightly optimized, even for debug builds, to - # keep binary size down. Setting this flag to true disables such optimization - android_full_debug = false -@@ -917,8 +917,13 @@ - } else if (current_cpu == "arm64") { - if (is_clang && !is_android && !is_nacl && !is_fuchsia && - !(is_chromeos_lacros && is_chromeos_device)) { -- cflags += [ "--target=aarch64-linux-gnu" ] -- ldflags += [ "--target=aarch64-linux-gnu" ] -+ if (is_musl) { -+ cflags += [ "--target=aarch64-linux-musl" ] -+ ldflags += [ "--target=aarch64-linux-musl" ] -+ } else { -+ cflags += [ "--target=aarch64-linux-gnu" ] -+ ldflags += [ "--target=aarch64-linux-gnu" ] -+ } - } - if (is_android) { - # Outline atomics crash on Exynos 9810. http://crbug.com/1272795 ---- a/build/toolchain/linux/unbundle/BUILD.gn.orig -+++ b/build/toolchain/linux/unbundle/BUILD.gn -@@ -39,3 +39,22 @@ - current_os = host_os - } - } -+ -+gcc_toolchain("v8_snapshot_cross") { -+ cc = getenv("BUILD_CC") -+ cxx = getenv("BUILD_CXX") -+ ar = getenv("BUILD_AR") -+ nm = getenv("BUILD_NM") -+ ld = cxx -+ -+ extra_cflags = getenv("BUILD_CFLAGS") -+ extra_cppflags = getenv("BUILD_CPPFLAGS") -+ extra_cxxflags = getenv("BUILD_CXXFLAGS") -+ extra_ldflags = getenv("BUILD_LDFLAGS") -+ -+ toolchain_args = { -+ current_cpu = host_cpu -+ current_os = host_os -+ v8_current_cpu = target_cpu -+ } -+} ---- a/build/config/linux/pkg_config.gni.orig -+++ b/build/config/linux/pkg_config.gni -@@ -91,7 +91,7 @@ - assert(defined(invoker.packages), - "Variable |packages| must be defined to be a list in pkg_config.") - config(target_name) { -- if (host_toolchain == current_toolchain) { -+ if (current_cpu != target_cpu) { - args = common_pkg_config_args + host_pkg_config_args + invoker.packages - } else { - args = common_pkg_config_args + pkg_config_args + invoker.packages diff --git a/srcpkgs/electron24/files/patches/chromium-cursed^Uscoped_file.patch b/srcpkgs/electron24/files/patches/chromium-cursed^Uscoped_file.patch deleted file mode 100644 index 2e5433f7abc..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-cursed^Uscoped_file.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/base/files/scoped_file_linux.cc.orig -+++ b/base/files/scoped_file_linux.cc -@@ -77,15 +77,3 @@ - } - - } // namespace base -- --extern "C" { -- --int __close(int); -- --__attribute__((visibility("default"), noinline)) int close(int fd) { -- if (base::IsFDOwned(fd) && g_is_ownership_enforced) -- CrashOnFdOwnershipViolation(); -- return __close(fd); --} -- --} // extern "C" diff --git a/srcpkgs/electron24/files/patches/chromium-fc-cache-version.patch b/srcpkgs/electron24/files/patches/chromium-fc-cache-version.patch deleted file mode 100644 index 3b768978a43..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fc-cache-version.patch +++ /dev/null @@ -1,13 +0,0 @@ -instead of hardcoding the version, use the defined macro. --- ---- a/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc -+++ b/third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc -@@ -56,7 +56,7 @@ - FcFini(); - - // Check existence of intended fontconfig cache file. -- auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-9"; -+ auto cache = fontconfig_caches + "/" + kCacheKey + "-le64.cache-" + FC_CACHE_VERSION; - bool cache_exists = access(cache.c_str(), F_OK) == 0; - return !cache_exists; - } diff --git a/srcpkgs/electron24/files/patches/chromium-fix-aarch64-musl-memory-tagging-macros.patch b/srcpkgs/electron24/files/patches/chromium-fix-aarch64-musl-memory-tagging-macros.patch deleted file mode 100644 index afcdae17985..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-aarch64-musl-memory-tagging-macros.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/base/allocator/partition_allocator/tagging.cc -+++ b/base/allocator/partition_allocator/tagging.cc -@@ -28,13 +28,25 @@ - #endif - #endif - --#ifndef HAS_PR_MTE_MACROS -+#ifndef PR_MTE_TCF_SHIFT - #define PR_MTE_TCF_SHIFT 1 -+#endif -+#ifndef PR_MTE_TCF_NONE - #define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT) -+#endif -+#ifndef PR_MTE_TCF_SYNC - #define PR_MTE_TCF_SYNC (1UL << PR_MTE_TCF_SHIFT) -+#endif -+#ifndef PR_MTE_TCF_ASYNC - #define PR_MTE_TCF_ASYNC (2UL << PR_MTE_TCF_SHIFT) -+#endif -+#ifndef PR_MTE_TCF_MASK - #define PR_MTE_TCF_MASK (3UL << PR_MTE_TCF_SHIFT) -+#endif -+#ifndef PR_MTE_TAG_SHIFT - #define PR_MTE_TAG_SHIFT 3 -+#endif -+#ifndef PR_MTE_TAG_MASK - #define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT) - #endif - #endif diff --git a/srcpkgs/electron24/files/patches/chromium-fix-argument_spec-isnan-isinf.patch b/srcpkgs/electron24/files/patches/chromium-fix-argument_spec-isnan-isinf.patch deleted file mode 100644 index 837a0312dcb..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-argument_spec-isnan-isinf.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/extensions/renderer/bindings/argument_spec.cc -+++ b/extensions/renderer/bindings/argument_spec.cc -@@ -2,6 +2,8 @@ - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - -+#include -+ - #include "extensions/renderer/bindings/argument_spec.h" - - #include "base/check.h" diff --git a/srcpkgs/electron24/files/patches/chromium-fix-constexpr-narrowing.patch b/srcpkgs/electron24/files/patches/chromium-fix-constexpr-narrowing.patch deleted file mode 100644 index 570ca6e69a8..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-constexpr-narrowing.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc.orig -+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -3881,15 +3881,15 @@ - const T&... values) { - std::string strkey = std::string(key); - -- if constexpr (Flags & kEncrypted) { -+ if constexpr (Flags & kEncrypted != 0) { - if (is_encrypted_) - UmaFunction(strkey + ".EME", values...); - } - -- if constexpr (Flags & kTotal) -+ if constexpr (Flags & kTotal != 0) - UmaFunction(strkey + ".All", values...); - -- if constexpr (Flags & kPlaybackType) { -+ if constexpr (Flags & kPlaybackType != 0) { - auto demuxer_type = GetDemuxerType(); - if (!demuxer_type.has_value()) - return; diff --git a/srcpkgs/electron24/files/patches/chromium-fix-dawn-platform.patch b/srcpkgs/electron24/files/patches/chromium-fix-dawn-platform.patch deleted file mode 100644 index 93631294fc7..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-dawn-platform.patch +++ /dev/null @@ -1,62 +0,0 @@ -From f815e833c946a59620a2ca9df37a1da746f61460 Mon Sep 17 00:00:00 2001 -From: q66 -Date: Sat, 1 Oct 2022 00:21:09 +0000 -Subject: [PATCH] fix dawn build for ppc64 - ---- - third_party/dawn/src/dawn/common/Assert.cpp | 4 ++-- - third_party/dawn/src/dawn/common/Platform.h | 10 +++++----- - 2 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/third_party/dawn/src/dawn/common/Assert.cpp b/third_party/dawn/src/dawn/common/Assert.cpp -index ecc92dfc..8ee91a90 100644 ---- a/third_party/dawn/src/dawn/common/Assert.cpp -+++ b/third_party/dawn/src/dawn/common/Assert.cpp -@@ -31,9 +31,9 @@ void BreakPoint() { - __asm__ __volatile__("ebreak"); - #elif DAWN_PLATFORM_IS(MIPS) - __asm__ __volatile__("break"); --#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS_(S390X) -+#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS(S390X) - __asm__ __volatile__(".word 0x0001"); --#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS_(PPC64) -+#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS(PPC64) - __asm__ __volatile__("twge 2,2"); - #else - #error "Unsupported platform" -diff --git a/third_party/dawn/src/dawn/common/Platform.h b/third_party/dawn/src/dawn/common/Platform.h -index 39d5eb41..2011367d 100644 ---- a/third_party/dawn/src/dawn/common/Platform.h -+++ b/third_party/dawn/src/dawn/common/Platform.h -@@ -124,15 +124,15 @@ - #define DAWN_PLATFORM_IS_MIPS64 1 - #endif - --#elif defiend(__s390__) -+#elif defined(__s390__) - #define DAWN_PLATFORM_IS_S390 1 --#elif defiend(__s390x__) -+#elif defined(__s390x__) - #define DAWN_PLATFORM_IS_S390X 1 - --#elif defined(__PPC__) --#define DAWN_PLATFORM_IS_PPC 1 - #elif defined(__PPC64__) - #define DAWN_PLATFORM_IS_PPC64 1 -+#elif defined(__PPC__) -+#define DAWN_PLATFORM_IS_PPC 1 - - #else - #error "Unsupported platform." -@@ -149,7 +149,7 @@ - static_assert(sizeof(sizeof(char)) == 8, "Expect sizeof(size_t) == 8"); - #elif defined(DAWN_PLATFORM_IS_I386) || defined(DAWN_PLATFORM_IS_ARM32) || \ - defined(DAWN_PLATFORM_IS_RISCV32) || defined(DAWN_PLATFORM_IS_MIPS32) || \ -- defined(DAWN_PLATFORM_IS_S390) || defined(DAWN_PLATFORM_IS_PPC32) || \ -+ defined(DAWN_PLATFORM_IS_S390) || defined(DAWN_PLATFORM_IS_PPC) || \ - defined(DAWN_PLATFORM_IS_EMSCRIPTEN) || defined(DAWN_PLATFORM_IS_LOONGARCH32) - #define DAWN_PLATFORM_IS_32_BIT 1 - static_assert(sizeof(sizeof(char)) == 4, "Expect sizeof(size_t) == 4"); --- -2.34.1 - diff --git a/srcpkgs/electron24/files/patches/chromium-fix-libc-version-include.patch b/srcpkgs/electron24/files/patches/chromium-fix-libc-version-include.patch deleted file mode 100644 index d94dcf6deac..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-libc-version-include.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc -+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc -@@ -61,8 +61,11 @@ - - // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch - // of lacros-chrome is complete. --#if defined(__GLIBC__) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) -+ -+#if defined(__GLIBC__) - #include -+#endif - - #include "base/linux_util.h" - #include "base/strings/string_split.h" diff --git a/srcpkgs/electron24/files/patches/chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch b/srcpkgs/electron24/files/patches/chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch deleted file mode 100644 index b56717b9ce3..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch +++ /dev/null @@ -1,21 +0,0 @@ -This macro is defined in glibc, but not musl. - ---- a/sandbox/linux/suid/process_util.h.orig -+++ b/sandbox/linux/suid/process_util.h -@@ -11,6 +11,16 @@ - #include - #include - -+// Some additional functions -+#if !defined(TEMP_FAILURE_RETRY) -+# define TEMP_FAILURE_RETRY(expression) \ -+ (__extension__ \ -+ ({ long int __result; \ -+ do __result = (long int) (expression); \ -+ while (__result == -1L && errno == EINTR); \ -+ __result; })) -+#endif -+ - // This adjusts /proc/process/oom_score_adj so the Linux OOM killer - // will prefer certain process types over others. The range for the - // adjustment is [-1000, 1000], with [0, 1000] being user accessible. diff --git a/srcpkgs/electron24/files/patches/chromium-fix-missing-cstdint-include-musl.patch b/srcpkgs/electron24/files/patches/chromium-fix-missing-cstdint-include-musl.patch deleted file mode 100644 index 6ca2897f3dd..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-missing-cstdint-include-musl.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h -+++ b/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h -@@ -3,6 +3,7 @@ - - #include - -+#include - #include - - #include "quiche/common/platform/api/quiche_export.h" diff --git a/srcpkgs/electron24/files/patches/chromium-fix-musl-missing-unistd_h-include.patch b/srcpkgs/electron24/files/patches/chromium-fix-musl-missing-unistd_h-include.patch deleted file mode 100644 index e14d009a9e0..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-musl-missing-unistd_h-include.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/sandbox/linux/services/credentials.h -+++ b/sandbox/linux/services/credentials.h -@@ -13,6 +13,7 @@ - - #include - #include -+#include - - #include "sandbox/linux/system_headers/capability.h" - #include "sandbox/sandbox_export.h" diff --git a/srcpkgs/electron24/files/patches/chromium-fix-perfetto-GetThreadName-musl.patch b/srcpkgs/electron24/files/patches/chromium-fix-perfetto-GetThreadName-musl.patch deleted file mode 100644 index 4014d1ee5e6..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-fix-perfetto-GetThreadName-musl.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/third_party/perfetto/include/perfetto/ext/base/thread_utils.h -+++ b/third_party/perfetto/include/perfetto/ext/base/thread_utils.h -@@ -30,7 +30,8 @@ - #include - #endif - --#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) -+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ -+ (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !defined(__GLIBC__)) - #include - #endif - -@@ -58,7 +59,8 @@ - - inline bool GetThreadName(std::string& out_result) { - char buf[16] = {}; --#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) -+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ -+ (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !defined(__GLIBC__)) - if (prctl(PR_GET_NAME, buf) != 0) - return false; - #else diff --git a/srcpkgs/electron24/files/patches/chromium-fix-swiftshader-llvm-musl-config.patch b/srcpkgs/electron24/files/patches/chromium-fix-swiftshader-llvm-musl-config.patch deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/srcpkgs/electron24/files/patches/chromium-libc_malloc.patch b/srcpkgs/electron24/files/patches/chromium-libc_malloc.patch deleted file mode 100644 index 414f28765d6..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-libc_malloc.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/base/process/memory_linux.cc -+++ b/base/process/memory_linux.cc -@@ -18,6 +18,13 @@ - #include "base/threading/thread_restrictions.h" - #include "build/build_config.h" - -+#if defined(LIBC_GLIBC) -+extern "C" { -+extern void *__libc_malloc(size_t size); -+extern void *__libc_free(void *ptr); -+} -+#endif -+ - namespace base { - - namespace { -@@ -111,7 +118,7 @@ - #elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC) - *result = malloc(size); - #elif defined(LIBC_GLIBC) -- *result = __libc_malloc(size); -+ *result = ::__libc_malloc(size); - #endif - return *result != nullptr; - } -@@ -122,7 +129,7 @@ - #elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC) - free(ptr); - #elif defined(LIBC_GLIBC) -- __libc_free(ptr); -+ ::__libc_free(ptr); - #endif - } - diff --git a/srcpkgs/electron24/files/patches/chromium-musl-no-execinfo.patch b/srcpkgs/electron24/files/patches/chromium-musl-no-execinfo.patch deleted file mode 100644 index fac2b6d190e..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-musl-no-execinfo.patch +++ /dev/null @@ -1,94 +0,0 @@ -Source: https://git.alpinelinux.org/aports/plain/community/chromium/no-execinfo.patch -musl does not have execinfo.h, and hence no implementation of -. backtrace() -. backtrace_symbols() -for discussion about this, see https://www.openwall.com/lists/musl/2021/07/16/1 --- ---- a/v8/src/codegen/external-reference-table.cc -+++ b/v8/src/codegen/external-reference-table.cc -@@ -11,7 +11,9 @@ - - #if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) - #define SYMBOLIZE_FUNCTION -+#if defined(__GLIBC__) - #include -+#endif - - #include - -@@ -96,7 +98,7 @@ - } - - const char* ExternalReferenceTable::ResolveSymbol(void* address) { --#ifdef SYMBOLIZE_FUNCTION -+#if defined(SYMBOLIZE_FUNCTION) && defined(__GLIBC__) - char** names = backtrace_symbols(&address, 1); - const char* name = names[0]; - // The array of names is malloc'ed. However, each name string is static ---- a/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h -+++ b/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h -@@ -17,7 +17,11 @@ - #define ENABLE_CRASH_OVERRIDES 0 - - /* Define to 1 if you have the `backtrace' function. */ -+#ifdef __GLIBC__ - #define HAVE_BACKTRACE 1 -+#else -+#define HAVE_BACKTRACE 0 -+#endif - - /* Define to 1 if you have the header file. */ - /* #undef HAVE_CRASHREPORTERCLIENT_H */ -@@ -58,7 +62,11 @@ - #define HAVE_ERRNO_H 1 - - /* Define to 1 if you have the header file. */ -+#ifdef __GLIBC__ - #define HAVE_EXECINFO_H 1 -+#else -+#define HAVE_EXECINFO_H 0 -+#endif - - /* Define to 1 if you have the header file. */ - #define HAVE_FCNTL_H 1 ---- a/base/debug/stack_trace.cc -+++ b/base/debug/stack_trace.cc -@@ -251,7 +253,9 @@ - } - - void StackTrace::OutputToStream(std::ostream* os) const { -+#if defined(__GLIBC__) && !defined(_AIX) - OutputToStreamWithPrefix(os, nullptr); -+#endif - } - - std::string StackTrace::ToString() const { -@@ -281,7 +281,7 @@ - } - std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const { - std::stringstream stream; --#if !defined(__UCLIBC__) && !defined(_AIX) -+#if defined(__GLIBC__) && !defined(_AIX) - OutputToStreamWithPrefix(&stream, prefix_string); - #endif - return stream.str(); ---- a/base/debug/stack_trace_unittest.cc -+++ b/base/debug/stack_trace_unittest.cc -@@ -33,7 +33,7 @@ - typedef testing::Test StackTraceTest; - #endif - --#if !defined(__UCLIBC__) && !defined(_AIX) -+#if !defined(__UCLIBC__) && !defined(_AIX) && defined(__GLIBC__) - // StackTrace::OutputToStream() is not implemented under uclibc, nor AIX. - // See https://crbug.com/706728 - -@@ -156,7 +156,7 @@ - - #endif // !defined(__UCLIBC__) && !defined(_AIX) - --#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) -+#if (BUILDFLAG(IS_POSIX) && defined(__GLIBC__)) && !BUILDFLAG(IS_ANDROID) - #if !BUILDFLAG(IS_IOS) - static char* newArray() { - // Clang warns about the mismatched new[]/delete if they occur in the same diff --git a/srcpkgs/electron24/files/patches/chromium-musl-no-mallinfo.patch b/srcpkgs/electron24/files/patches/chromium-musl-no-mallinfo.patch deleted file mode 100644 index cd728ecfb11..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-musl-no-mallinfo.patch +++ /dev/null @@ -1,125 +0,0 @@ -Source: https://git.alpinelinux.org/aports/plain/community/chromium/no-mallinfo.patch -musl does not implement mallinfo()/mallinfo2() -(or rather, malloc-ng, musl's allocator, doesn't) --- ---- a/base/trace_event/malloc_dump_provider.cc -+++ b/base/trace_event/malloc_dump_provider.cc -@@ -185,7 +185,6 @@ - #define MALLINFO2_FOUND_IN_LIBC - struct mallinfo2 info = mallinfo2(); - #endif --#endif // defined(__GLIBC__) && defined(__GLIBC_PREREQ) - #if !defined(MALLINFO2_FOUND_IN_LIBC) - struct mallinfo info = mallinfo(); - #endif -@@ -205,6 +204,7 @@ - sys_alloc_dump->AddScalar(MemoryAllocatorDump::kNameSize, - MemoryAllocatorDump::kUnitsBytes, info.uordblks); - } -+#endif // defined(__GLIBC__) && defined(__GLIBC_PREREQ) - } - #endif - -@@ -339,7 +340,7 @@ - &allocated_objects_count); - #elif BUILDFLAG(IS_FUCHSIA) - // TODO(fuchsia): Port, see https://crbug.com/706592. --#else -+#elif defined(__GLIBC__) - ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size, - &allocated_objects_size, &allocated_objects_count); - #endif ---- a/base/process/process_metrics_posix.cc -+++ b/base/process/process_metrics_posix.cc -@@ -105,7 +105,7 @@ - - #endif // !BUILDFLAG(IS_FUCHSIA) - --#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) -+#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) - namespace { - - size_t GetMallocUsageMallinfo() { -@@ -123,7 +123,7 @@ - } - - } // namespace --#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || -+#endif // (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || - // BUILDFLAG(IS_ANDROID) - - size_t ProcessMetrics::GetMallocUsage() { -@@ -131,9 +131,9 @@ - malloc_statistics_t stats = {0}; - malloc_zone_statistics(nullptr, &stats); - return stats.size_in_use; --#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) -+#elif (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) - return GetMallocUsageMallinfo(); --#elif BUILDFLAG(IS_FUCHSIA) -+#else - // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. - return 0; - #endif ---- ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc.orig -+++ ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc -@@ -35,7 +35,7 @@ - - MemoryUsage GetMemoryUsage() { - MemoryUsage result; --#ifdef __linux__ -+#if defined(__linux__) && defined(__GLIBC__) - rusage res; - if (getrusage(RUSAGE_SELF, &res) == 0) { - result.max_rss_kb = res.ru_maxrss; ---- ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc -+++ ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig -@@ -86,11 +86,11 @@ - } - - size_t Process::GetMallocUsage() { --#if defined(HAVE_MALLINFO2) -+#if defined(HAVE_MALLINFO2) && defined(__GLIBC__) - struct mallinfo2 mi; - mi = ::mallinfo2(); - return mi.uordblks; --#elif defined(HAVE_MALLINFO) -+#elif defined(HAVE_MALLINFO) && defined(__GLIBC__) - struct mallinfo mi; - mi = ::mallinfo(); - return mi.uordblks; - ---- ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h.orig 2019-09-30 13:03:42.556880537 -0400 -+++ ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h 2019-09-30 13:07:27.989821227 -0400 -@@ -122,7 +122,9 @@ - /* #undef HAVE_MALLCTL */ - - /* Define to 1 if you have the `mallinfo' function. */ -+#if defined(__GLIBC__) - #define HAVE_MALLINFO 1 -+#endif - - /* Define to 1 if you have the header file. */ - #define HAVE_MALLOC_H 1 ---- a/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc -+++ b/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc -@@ -717,7 +717,7 @@ - - #endif // !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_ANDROID) - --#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -+#if 0 - SHIM_ALWAYS_EXPORT struct mallinfo mallinfo(void) __THROW { - base::SimplePartitionStatsDumper allocator_dumper; - Allocator()->DumpStats("malloc", true, &allocator_dumper); ---- a/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc -+++ b/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc -@@ -24,7 +24,7 @@ - #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) - - // Platforms on which we override weak libc symbols. --#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -+#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) - - NOINLINE void FreeForTest(void* data) { - free(data); diff --git a/srcpkgs/electron24/files/patches/chromium-musl-partition-atfork.patch b/srcpkgs/electron24/files/patches/chromium-musl-partition-atfork.patch deleted file mode 100644 index 2910aa2bbf9..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-musl-partition-atfork.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/base/allocator/partition_allocator/partition_root.cc -+++ b/base/allocator/partition_allocator/partition_root.cc -@@ -239,7 +239,7 @@ - if (!g_global_init_called.compare_exchange_strong(expected, true)) - return; - --#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -+#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) - // When fork() is called, only the current thread continues to execute in the - // child process. If the lock is held, but *not* by this thread when fork() is - // called, we have a deadlock. diff --git a/srcpkgs/electron24/files/patches/chromium-musl-v8-monotonic-pthread-cont_timedwait.patch b/srcpkgs/electron24/files/patches/chromium-musl-v8-monotonic-pthread-cont_timedwait.patch deleted file mode 100644 index 56a4ad1c807..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-musl-v8-monotonic-pthread-cont_timedwait.patch +++ /dev/null @@ -1,24 +0,0 @@ -Use monotonic clock for pthread_cond_timedwait with musl too. - -diff --git a/v8/src/base/platform/condition-variable.cc b/v8/src/base/platform/condition-variable.cc -index 5ea7083..c13027e 100644 ---- a/v8/src/base/platform/condition-variable.cc -+++ b/v8/src/base/platform/condition-variable.cc -@@ -16,7 +16,7 @@ namespace base { - - ConditionVariable::ConditionVariable() { - #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ -- (V8_OS_LINUX && V8_LIBC_GLIBC)) -+ V8_OS_LINUX) - // On Free/Net/OpenBSD and Linux with glibc we can change the time - // source for pthread_cond_timedwait() to use the monotonic clock. - pthread_condattr_t attr; -@@ -92,7 +92,7 @@ bool ConditionVariable::WaitFor(Mutex* mutex, const TimeDelta& rel_time) { - &native_handle_, &mutex->native_handle(), &ts); - #else - #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ -- (V8_OS_LINUX && V8_LIBC_GLIBC)) -+ V8_OS_LINUX) - // On Free/Net/OpenBSD and Linux with glibc we can change the time - // source for pthread_cond_timedwait() to use the monotonic clock. - result = clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/srcpkgs/electron24/files/patches/chromium-no-getcontext.patch b/srcpkgs/electron24/files/patches/chromium-no-getcontext.patch deleted file mode 100644 index f9bc2e02d24..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-no-getcontext.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2015-12-06 09:59:55.554536646 +0100 -+++ b/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2015-12-06 10:01:16.818238035 +0100 -@@ -477,7 +477,9 @@ bool ExceptionHandler::SimulateSignalDel - siginfo.si_code = SI_USER; - siginfo.si_pid = getpid(); - ucontext_t context; -+#if defined(__GLIBC__) - getcontext(&context); -+#endif - return HandleSignal(sig, &siginfo, &context); - } - -@@ -647,9 +649,14 @@ bool ExceptionHandler::WriteMinidump() { - sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0); - - CrashContext context; -+ -+#if defined(__GLIBC__) - int getcontext_result = getcontext(&context.context); - if (getcontext_result) - return false; -+#else -+ return false; -+#endif - - #if defined(__i386__) - // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved diff --git a/srcpkgs/electron24/files/patches/chromium-old-clang.patch b/srcpkgs/electron24/files/patches/chromium-old-clang.patch deleted file mode 100644 index b773d09fbd7..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-old-clang.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/build/config/compiler/BUILD.gn -+++ b/build/config/compiler/BUILD.gn -@@ -1288,7 +1288,7 @@ - } else { - # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir= - # and -fcoverage-compilation-dir=. -- cflags += [ "-ffile-compilation-dir=." ] -+ cflags += [ "-fdebug-compilation-dir=." ] - swiftflags += [ "-file-compilation-dir=." ] - } - if (!is_win) { diff --git a/srcpkgs/electron24/files/patches/chromium-reenable-linux-i686-builds.patch b/srcpkgs/electron24/files/patches/chromium-reenable-linux-i686-builds.patch deleted file mode 100644 index b18718e4364..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-reenable-linux-i686-builds.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/BUILD.gn.orig -+++ b/BUILD.gn -@@ -1616,16 +1616,6 @@ - } - } - --# TODO(cassew): Add more OS's that don't support x86. --is_valid_x86_target = -- target_os != "ios" && target_os != "mac" && -- (target_os != "linux" || use_libfuzzer || !build_with_chromium) -- --# Note: v8_target_cpu == arm allows using the V8 arm simulator on x86 for fuzzing. --assert( -- is_valid_x86_target || target_cpu != "x86" || v8_target_cpu == "arm", -- "'target_cpu=x86' is not supported for 'target_os=$target_os'. Consider omitting 'target_cpu' (default) or using 'target_cpu=x64' instead.") -- - group("chromium_builder_perf") { - testonly = true - diff --git a/srcpkgs/electron24/files/patches/chromium-remove-sys-cdefs-includes.patch b/srcpkgs/electron24/files/patches/chromium-remove-sys-cdefs-includes.patch deleted file mode 100644 index 00344073f46..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-remove-sys-cdefs-includes.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h -+++ b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h -@@ -17,8 +17,6 @@ - - #include_next - --#include -- - // https://sourceware.org/bugzilla/show_bug.cgi?id=22433 - #if !defined(PTRACE_GET_THREAD_AREA) && !defined(PT_GET_THREAD_AREA) && \ - defined(__GLIBC__) ---- a/third_party/libsync/src/include/sync/sync.h -+++ b/third_party/libsync/src/include/sync/sync.h -@@ -19,12 +19,13 @@ - #ifndef __SYS_CORE_SYNC_H - #define __SYS_CORE_SYNC_H - --#include - #include - - #include - --__BEGIN_DECLS -+#ifdef __cplusplus -+extern "C" { -+#endif - - struct sync_legacy_merge_data { - int32_t fd2; -@@ -158,6 +159,8 @@ - struct sync_pt_info *itr); - void sync_fence_info_free(struct sync_fence_info_data *info); - --__END_DECLS -+#ifdef __cplusplus -+} -+#endif - - #endif /* __SYS_CORE_SYNC_H */ diff --git a/srcpkgs/electron24/files/patches/chromium-riscv-angle.patch b/srcpkgs/electron24/files/patches/chromium-riscv-angle.patch deleted file mode 100644 index a25bf0d3f32..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-riscv-angle.patch +++ /dev/null @@ -1,27 +0,0 @@ -Index: chromium-103.0.5060.53/third_party/angle/gni/angle.gni -=================================================================== ---- chromium-103.0.5060.53.orig/third_party/angle/gni/angle.gni -+++ chromium-103.0.5060.53/third_party/angle/gni/angle.gni -@@ -77,7 +77,8 @@ declare_args() { - - if (current_cpu == "arm64" || current_cpu == "x64" || - current_cpu == "mips64el" || current_cpu == "s390x" || -- current_cpu == "ppc64" || current_cpu == "loong64") { -+ current_cpu == "ppc64" || current_cpu == "loong64" || -+ current_cpu == "riscv64") { - angle_64bit_current_cpu = true - } else if (current_cpu == "arm" || current_cpu == "x86" || - current_cpu == "mipsel" || current_cpu == "s390" || -Index: chromium-103.0.5060.53/third_party/angle/src/common/platform.h -=================================================================== ---- chromium-103.0.5060.53.orig/third_party/angle/src/common/platform.h -+++ chromium-103.0.5060.53/third_party/angle/src/common/platform.h -@@ -102,7 +102,7 @@ - #endif - - // Mips and arm devices need to include stddef for size_t. --#if defined(__mips__) || defined(__arm__) || defined(__aarch64__) -+#if defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(__riscv) - # include - #endif - diff --git a/srcpkgs/electron24/files/patches/chromium-riscv-crashpad.patch b/srcpkgs/electron24/files/patches/chromium-riscv-crashpad.patch deleted file mode 100644 index cc2c37791ac..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-riscv-crashpad.patch +++ /dev/null @@ -1,777 +0,0 @@ -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/minidump/minidump_context.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context.h -@@ -592,6 +592,41 @@ struct MinidumpContextMIPS64 { - uint64_t fir; - }; - -+//! \brief 64bit RISC-V-specifc flags for MinidumpContextRISCV64::context_flags. -+//! Based on minidump_cpu_riscv64.h from breakpad -+enum MinidumpContextRISCV64Flags : uint32_t { -+ //! \brief Identifies the context structure as RISCV64. -+ kMinidumpContextRISCV64 = 0x00080000, -+ -+ //! \brief Indicates the validity of integer registers. -+ //! -+ //! Registers `x1`-`x31` and pc are valid. -+ kMinidumpContextRISCV64Integer = kMinidumpContextRISCV64 | 0x00000002, -+ -+ //! \brief Indicates the validity of floating point registers. -+ //! -+ //! Floating point registers `f0`-`f31`, and `fcsr` are valid -+ kMinidumpContextRISCV64FloatingPoint = kMinidumpContextRISCV64 | 0x00000004, -+ -+ //! \brief Indicates the validity of all registers. -+ kMinidumpContextRISCV64All = kMinidumpContextRISCV64Integer | -+ kMinidumpContextRISCV64FloatingPoint, -+}; -+ -+//! \brief A 64bit RISCV CPU context (register state) carried in a minidump file. -+struct MinidumpContextRISCV64 { -+ uint64_t context_flags; -+ -+ //! \brief General purpose registers. -+ uint64_t regs[32]; -+ -+ //! \brief FPU registers. -+ uint64_t fpregs[32]; -+ -+ //! \brief FPU status register. -+ uint64_t fcsr; -+}; -+ - } // namespace crashpad - - #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -@@ -102,6 +102,13 @@ MinidumpContextWriter::CreateFromSnapsho - break; - } - -+ case kCPUArchitectureRISCV64: { -+ context = std::make_unique(); -+ reinterpret_cast(context.get()) -+ ->InitializeFromSnapshot(context_snapshot->riscv64); -+ break; -+ } -+ - default: { - LOG(ERROR) << "unknown context architecture " - << context_snapshot->architecture; -@@ -453,5 +460,42 @@ size_t MinidumpContextMIPS64Writer::Cont - DCHECK_GE(state(), kStateFrozen); - return sizeof(context_); - } -+ -+MinidumpContextRISCV64Writer::MinidumpContextRISCV64Writer() -+ : MinidumpContextWriter(), context_() { -+ context_.context_flags = kMinidumpContextRISCV64; -+} -+ -+MinidumpContextRISCV64Writer::~MinidumpContextRISCV64Writer() = default; -+ -+void MinidumpContextRISCV64Writer::InitializeFromSnapshot( -+ const CPUContextRISCV64* context_snapshot) { -+ DCHECK_EQ(state(), kStateMutable); -+ DCHECK_EQ(context_.context_flags, kMinidumpContextRISCV64); -+ -+ context_.context_flags = kMinidumpContextRISCV64All; -+ -+ static_assert(sizeof(context_.regs) == sizeof(context_snapshot->regs), -+ "GPRs size mismatch"); -+ memcpy(context_.regs, context_snapshot->regs, sizeof(context_.regs)); -+ -+ static_assert(sizeof(context_.fpregs) == sizeof(context_snapshot->fpregs), -+ "FPRs size mismatch"); -+ memcpy(context_.fpregs, -+ context_snapshot->fpregs, -+ sizeof(context_.fpregs)); -+ context_.fcsr = context_snapshot->fcsr; -+} -+ -+bool MinidumpContextRISCV64Writer::WriteObject( -+ FileWriterInterface* file_writer) { -+ DCHECK_EQ(state(), kStateWritable); -+ return file_writer->Write(&context_, sizeof(context_)); -+} -+ -+size_t MinidumpContextRISCV64Writer::ContextSize() const { -+ DCHECK_GE(state(), kStateFrozen); -+ return sizeof(context_); -+} - - } // namespace crashpad -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -@@ -330,6 +330,49 @@ class MinidumpContextMIPS64Writer final - MinidumpContextMIPS64 context_; - }; - -+//! \brief The writer for a MinidumpContextRISCV64 structure in a minidump file. -+class MinidumpContextRISCV64Writer final : public MinidumpContextWriter { -+ public: -+ MinidumpContextRISCV64Writer(); -+ -+ MinidumpContextRISCV64Writer(const MinidumpContextRISCV64Writer&) = delete; -+ MinidumpContextRISCV64Writer& operator=(const MinidumpContextRISCV64Writer&) = -+ delete; -+ -+ ~MinidumpContextRISCV64Writer() override; -+ -+ //! \brief Initializes the MinidumpContextRISCV based on \a context_snapshot. -+ //! -+ //! \param[in] context_snapshot The context snapshot to use as source data. -+ //! -+ //! \note Valid in #kStateMutable. No mutation of context() may be done before -+ //! calling this method, and it is not normally necessary to alter -+ //! context() after calling this method. -+ void InitializeFromSnapshot(const CPUContextRISCV64* context_snapshot); -+ -+ //! \brief Returns a pointer to the context structure that this object will -+ //! write. -+ //! -+ //! \attention This returns a non-`const` pointer to this object’s private -+ //! data so that a caller can populate the context structure directly. -+ //! This is done because providing setter interfaces to each field in the -+ //! context structure would be unwieldy and cumbersome. Care must be taken -+ //! to populate the context structure correctly. The context structure -+ //! must only be modified while this object is in the #kStateMutable -+ //! state. -+ MinidumpContextRISCV64* context() { return &context_; } -+ -+ protected: -+ // MinidumpWritable: -+ bool WriteObject(FileWriterInterface* file_writer) override; -+ -+ // MinidumpContextWriter: -+ size_t ContextSize() const override; -+ -+ private: -+ MinidumpContextRISCV64 context_; -+}; -+ - } // namespace crashpad - - #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -@@ -135,6 +135,10 @@ std::string MinidumpMiscInfoDebugBuildSt - static constexpr char kCPU[] = "mips"; - #elif defined(ARCH_CPU_MIPS64EL) - static constexpr char kCPU[] = "mips64"; -+#elif defined(ARCH_CPU_RISCV32) -+ static constexpr char kCPU[] = "riscv32"; -+#elif defined(ARCH_CPU_RISCV64) -+ static constexpr char kCPU[] = "riscv64"; - #else - #error define kCPU for this CPU - #endif -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/capture_memory.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/capture_memory.cc -@@ -112,6 +112,16 @@ void CaptureMemory::PointedToByContext(c - for (size_t i = 0; i < std::size(context.mipsel->regs); ++i) { - MaybeCaptureMemoryAround(delegate, context.mipsel->regs[i]); - } -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ if (context.architecture == kCPUArchitectureRISCV64) { -+ for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { -+ MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); -+ } -+ } else { -+ for (size_t i = 0; i < std::size(context.riscv32->regs); ++i) { -+ MaybeCaptureMemoryAround(delegate, context.riscv32->regs[i]); -+ } -+ } - #else - #error Port. - #endif -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -@@ -43,7 +43,13 @@ enum CPUArchitecture { - kCPUArchitectureMIPSEL, - - //! \brief 64-bit MIPSEL. -- kCPUArchitectureMIPS64EL -+ kCPUArchitectureMIPS64EL, -+ -+ //! \brief 32-bit RISCV. -+ kCPUArchitectureRISCV32, -+ -+ //! \brief 64-bit RISCV. -+ kCPUArchitectureRISCV64 - }; - - } // namespace crashpad -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_context.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_context.cc -@@ -197,10 +197,12 @@ bool CPUContext::Is64Bit() const { - case kCPUArchitectureX86_64: - case kCPUArchitectureARM64: - case kCPUArchitectureMIPS64EL: -+ case kCPUArchitectureRISCV64: - return true; - case kCPUArchitectureX86: - case kCPUArchitectureARM: - case kCPUArchitectureMIPSEL: -+ case kCPUArchitectureRISCV32: - return false; - default: - NOTREACHED(); -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_context.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/cpu_context.h -@@ -352,6 +352,20 @@ struct CPUContextMIPS64 { - uint64_t fir; - }; - -+//! \brief A context structure carrying RISCV32 CPU state. -+struct CPUContextRISCV32 { -+ uint32_t regs[32]; -+ uint64_t fpregs[32]; -+ uint32_t fcsr; -+}; -+ -+//! \brief A context structure carrying RISCV64 CPU state. -+struct CPUContextRISCV64 { -+ uint64_t regs[32]; -+ uint64_t fpregs[32]; -+ uint32_t fcsr; -+}; -+ - //! \brief A context structure capable of carrying the context of any supported - //! CPU architecture. - struct CPUContext { -@@ -382,6 +396,8 @@ struct CPUContext { - CPUContextARM64* arm64; - CPUContextMIPS* mipsel; - CPUContextMIPS64* mips64; -+ CPUContextRISCV32* riscv32; -+ CPUContextRISCV64* riscv64; - }; - }; - -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc -@@ -266,6 +266,30 @@ void InitializeCPUContextARM64_OnlyFPSIM - context->fpcr = float_context.fpcr; - } - -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ -+template -+void InitializeCPUContextRISCV( -+ const typename Traits::SignalThreadContext& thread_context, -+ const typename Traits::SignalFloatContext& float_context, -+ typename Traits::CPUContext* context) { -+ static_assert(sizeof(context->regs) == sizeof(thread_context), -+ "registers size mismatch"); -+ static_assert(sizeof(context->fpregs) == sizeof(float_context.f), -+ "fp registers size mismatch"); -+ memcpy(&context->regs, &thread_context, sizeof(context->regs)); -+ memcpy(&context->fpregs, &float_context.f, sizeof(context->fpregs)); -+ context->fcsr = float_context.fcsr; -+} -+template void InitializeCPUContextRISCV( -+ const ContextTraits32::SignalThreadContext& thread_context, -+ const ContextTraits32::SignalFloatContext& float_context, -+ ContextTraits32::CPUContext* context); -+template void InitializeCPUContextRISCV( -+ const ContextTraits64::SignalThreadContext& thread_context, -+ const ContextTraits64::SignalFloatContext& float_context, -+ ContextTraits64::CPUContext* context); -+ - #endif // ARCH_CPU_X86_FAMILY - - } // namespace internal -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -@@ -174,6 +174,22 @@ void InitializeCPUContextMIPS( - - #endif // ARCH_CPU_MIPS_FAMILY || DOXYGEN - -+#if defined(ARCH_CPU_RISCV_FAMILY) || DOXYGEN -+ -+//! \brief Initializes a CPUContextRISCV structure from native context -+//! structures on Linux. -+//! -+//! \param[in] thread_context The native thread context. -+//! \param[in] float_context The native float context. -+//! \param[out] context The CPUContextRISCV structure to initialize. -+template -+void InitializeCPUContextRISCV( -+ const typename Traits::SignalThreadContext& thread_context, -+ const typename Traits::SignalFloatContext& float_context, -+ typename Traits::CPUContext* context); -+ -+#endif // ARCH_CPU_RISCV_FAMILY || DOXYGEN -+ - } // namespace internal - } // namespace crashpad - -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -@@ -325,6 +325,61 @@ bool ExceptionSnapshotLinux::ReadContext - reader, context_address, context_.mips64); - } - -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ -+template -+static bool ReadContext(ProcessReaderLinux* reader, -+ LinuxVMAddress context_address, -+ typename Traits::CPUContext* dest_context) { -+ const ProcessMemory* memory = reader->Memory(); -+ -+ LinuxVMAddress gregs_address = context_address + -+ offsetof(UContext, mcontext) + -+ offsetof(typename Traits::MContext, gregs); -+ -+ typename Traits::SignalThreadContext thread_context; -+ if (!memory->Read(gregs_address, sizeof(thread_context), &thread_context)) { -+ LOG(ERROR) << "Couldn't read gregs"; -+ return false; -+ } -+ -+ LinuxVMAddress fpregs_address = context_address + -+ offsetof(UContext, mcontext) + -+ offsetof(typename Traits::MContext, fpregs); -+ -+ typename Traits::SignalFloatContext fp_context; -+ if (!memory->Read(fpregs_address, sizeof(fp_context), &fp_context)) { -+ LOG(ERROR) << "Couldn't read fpregs"; -+ return false; -+ } -+ -+ InitializeCPUContextRISCV(thread_context, fp_context, dest_context); -+ -+ return true; -+} -+ -+template <> -+bool ExceptionSnapshotLinux::ReadContext( -+ ProcessReaderLinux* reader, -+ LinuxVMAddress context_address) { -+ context_.architecture = kCPUArchitectureRISCV32; -+ context_.riscv32 = &context_union_.riscv32; -+ -+ return internal::ReadContext( -+ reader, context_address, context_.riscv32); -+} -+ -+template <> -+bool ExceptionSnapshotLinux::ReadContext( -+ ProcessReaderLinux* reader, -+ LinuxVMAddress context_address) { -+ context_.architecture = kCPUArchitectureRISCV64; -+ context_.riscv64 = &context_union_.riscv64; -+ -+ return internal::ReadContext( -+ reader, context_address, context_.riscv64); -+} -+ - #endif // ARCH_CPU_X86_FAMILY - - bool ExceptionSnapshotLinux::Initialize( -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -@@ -89,6 +89,9 @@ class ExceptionSnapshotLinux final : pub - #elif defined(ARCH_CPU_MIPS_FAMILY) - CPUContextMIPS mipsel; - CPUContextMIPS64 mips64; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ CPUContextRISCV32 riscv32; -+ CPUContextRISCV64 riscv64; - #endif - } context_union_; - CPUContext context_; -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -@@ -108,6 +108,9 @@ void ProcessReaderLinux::Thread::Initial - #elif defined(ARCH_CPU_MIPS_FAMILY) - stack_pointer = reader->Is64Bit() ? thread_info.thread_context.t64.regs[29] - : thread_info.thread_context.t32.regs[29]; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ stack_pointer = reader->Is64Bit() ? thread_info.thread_context.t64.sp -+ : thread_info.thread_context.t32.sp; - #else - #error Port. - #endif -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -@@ -422,6 +422,67 @@ static_assert(offsetof(UContext -+struct UContext { -+ typename Traits::ULong flags; -+ typename Traits::Address link; -+ SignalStack stack; -+ Sigset sigmask; -+ char padding[128 - sizeof(sigmask)]; -+ typename Traits::Char_64Only padding2[8]; -+ typename Traits::MContext mcontext; -+}; -+ -+#if defined(ARCH_CPU_RISCV32) -+static_assert(offsetof(UContext, mcontext) == -+ offsetof(ucontext_t, uc_mcontext), -+ "context offset mismatch"); -+static_assert(offsetof(UContext, mcontext.gregs) == -+ offsetof(ucontext_t, uc_mcontext.__gregs), -+ "context offset mismatch"); -+static_assert(offsetof(UContext, mcontext.fpregs) == -+ offsetof(ucontext_t, uc_mcontext.__fpregs), -+ "context offset mismatch"); -+#elif defined(ARCH_CPU_RISCV64) -+static_assert(offsetof(UContext, mcontext) == -+ offsetof(ucontext_t, uc_mcontext), -+ "context offset mismatch"); -+static_assert(offsetof(UContext, mcontext.gregs) == -+ offsetof(ucontext_t, uc_mcontext.__gregs), -+ "context offset mismatch"); -+static_assert(offsetof(UContext, mcontext.fpregs) == -+ offsetof(ucontext_t, uc_mcontext.__fpregs), -+ "context offset mismatch"); -+#endif -+ - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -@@ -205,6 +205,9 @@ CPUArchitecture SystemSnapshotLinux::Get - #elif defined(ARCH_CPU_MIPS_FAMILY) - return process_reader_->Is64Bit() ? kCPUArchitectureMIPS64EL - : kCPUArchitectureMIPSEL; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ return process_reader_->Is64Bit() ? kCPUArchitectureRISCV64 -+ : kCPUArchitectureRISCV32; - #else - #error port to your architecture - #endif -@@ -220,6 +223,9 @@ uint32_t SystemSnapshotLinux::CPURevisio - #elif defined(ARCH_CPU_MIPS_FAMILY) - // Not implementable on MIPS - return 0; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ // Not implementable on RISCV -+ return 0; - #else - #error port to your architecture - #endif -@@ -240,6 +246,9 @@ std::string SystemSnapshotLinux::CPUVend - #elif defined(ARCH_CPU_MIPS_FAMILY) - // Not implementable on MIPS - return std::string(); -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ // Not implementable on RISCV -+ return std::string(); - #else - #error port to your architecture - #endif -@@ -373,6 +382,9 @@ bool SystemSnapshotLinux::NXEnabled() co - #elif defined(ARCH_CPU_MIPS_FAMILY) - // Not implementable on MIPS - return false; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ // Not implementable on RISCV -+ return false; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -@@ -189,6 +189,22 @@ bool ThreadSnapshotLinux::Initialize( - thread.thread_info.float_context.f32, - context_.mipsel); - } -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ if (process_reader->Is64Bit()) { -+ context_.architecture = kCPUArchitectureRISCV64; -+ context_.riscv64 = &context_union_.riscv64; -+ InitializeCPUContextRISCV( -+ thread.thread_info.thread_context.t64, -+ thread.thread_info.float_context.f64, -+ context_.riscv64); -+ } else { -+ context_.architecture = kCPUArchitectureRISCV32; -+ context_.riscv32 = &context_union_.riscv32; -+ InitializeCPUContextRISCV( -+ thread.thread_info.thread_context.t32, -+ thread.thread_info.float_context.f32, -+ context_.riscv32); -+ } - #else - #error Port. - #endif -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -@@ -73,6 +73,9 @@ class ThreadSnapshotLinux final : public - #elif defined(ARCH_CPU_MIPS_FAMILY) - CPUContextMIPS mipsel; - CPUContextMIPS64 mips64; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ CPUContextRISCV32 riscv32; -+ CPUContextRISCV64 riscv64; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/util/linux/ptracer.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/util/linux/ptracer.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/util/linux/ptracer.cc -@@ -398,6 +398,51 @@ bool GetThreadArea64(pid_t tid, - return true; - } - -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ -+template -+bool GetRegisterSet(pid_t tid, int set, Destination* dest, bool can_log) { -+ iovec iov; -+ iov.iov_base = dest; -+ iov.iov_len = sizeof(*dest); -+ if (ptrace(PTRACE_GETREGSET, tid, reinterpret_cast(set), &iov) != 0) { -+ PLOG_IF(ERROR, can_log) << "ptrace"; -+ return false; -+ } -+ if (iov.iov_len != sizeof(*dest)) { -+ LOG_IF(ERROR, can_log) << "Unexpected registers size"; -+ return false; -+ } -+ return true; -+} -+ -+bool GetFloatingPointRegisters32(pid_t tid, -+ FloatContext* context, -+ bool can_log) { -+ return false; -+} -+ -+bool GetFloatingPointRegisters64(pid_t tid, -+ FloatContext* context, -+ bool can_log) { -+ return GetRegisterSet(tid, NT_PRFPREG, &context->f64.f, can_log); -+} -+ -+bool GetThreadArea32(pid_t tid, -+ const ThreadContext& context, -+ LinuxVMAddress* address, -+ bool can_log) { -+ return false; -+} -+ -+bool GetThreadArea64(pid_t tid, -+ const ThreadContext& context, -+ LinuxVMAddress* address, -+ bool can_log) { -+ *address = context.t64.tp; -+ return true; -+} -+ - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/util/linux/thread_info.h -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/util/linux/thread_info.h -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/util/linux/thread_info.h -@@ -79,6 +79,40 @@ union ThreadContext { - uint32_t cp0_status; - uint32_t cp0_cause; - uint32_t padding1_; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ // Reflects user_regs_struct in asm/ptrace.h. -+ uint32_t pc; -+ uint32_t ra; -+ uint32_t sp; -+ uint32_t gp; -+ uint32_t tp; -+ uint32_t t0; -+ uint32_t t1; -+ uint32_t t2; -+ uint32_t s0; -+ uint32_t s1; -+ uint32_t a0; -+ uint32_t a1; -+ uint32_t a2; -+ uint32_t a3; -+ uint32_t a4; -+ uint32_t a5; -+ uint32_t a6; -+ uint32_t a7; -+ uint32_t s2; -+ uint32_t s3; -+ uint32_t s4; -+ uint32_t s5; -+ uint32_t s6; -+ uint32_t s7; -+ uint32_t s8; -+ uint32_t s9; -+ uint32_t s10; -+ uint32_t s11; -+ uint32_t t3; -+ uint32_t t4; -+ uint32_t t5; -+ uint32_t t6; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -132,6 +166,40 @@ union ThreadContext { - uint64_t cp0_badvaddr; - uint64_t cp0_status; - uint64_t cp0_cause; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ // Reflects user_regs_struct in asm/ptrace.h. -+ uint64_t pc; -+ uint64_t ra; -+ uint64_t sp; -+ uint64_t gp; -+ uint64_t tp; -+ uint64_t t0; -+ uint64_t t1; -+ uint64_t t2; -+ uint64_t s0; -+ uint64_t s1; -+ uint64_t a0; -+ uint64_t a1; -+ uint64_t a2; -+ uint64_t a3; -+ uint64_t a4; -+ uint64_t a5; -+ uint64_t a6; -+ uint64_t a7; -+ uint64_t s2; -+ uint64_t s3; -+ uint64_t s4; -+ uint64_t s5; -+ uint64_t s6; -+ uint64_t s7; -+ uint64_t s8; -+ uint64_t s9; -+ uint64_t s10; -+ uint64_t s11; -+ uint64_t t3; -+ uint64_t t4; -+ uint64_t t5; -+ uint64_t t6; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -143,11 +211,12 @@ union ThreadContext { - using NativeThreadContext = user_regs; - #elif defined(ARCH_CPU_MIPS_FAMILY) - // No appropriate NativeThreadsContext type available for MIPS -+#elif defined(ARCH_CPU_RISCV_FAMILY) - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY || ARCH_CPU_ARM64 - --#if !defined(ARCH_CPU_MIPS_FAMILY) -+#if !defined(ARCH_CPU_MIPS_FAMILY) && !defined(ARCH_CPU_RISCV_FAMILY) - #if defined(ARCH_CPU_32_BITS) - static_assert(sizeof(t32_t) == sizeof(NativeThreadContext), "Size mismatch"); - #else // ARCH_CPU_64_BITS -@@ -218,6 +287,9 @@ union FloatContext { - } fpregs[32]; - uint32_t fpcsr; - uint32_t fpu_id; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ uint64_t f[32]; -+ uint32_t fcsr; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -252,6 +324,9 @@ union FloatContext { - double fpregs[32]; - uint32_t fpcsr; - uint32_t fpu_id; -+#elif defined(ARCH_CPU_RISCV_FAMILY) -+ uint64_t f[32]; -+ uint32_t fcsr; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -281,6 +356,7 @@ union FloatContext { - static_assert(sizeof(f64) == sizeof(user_fpsimd_struct), "Size mismatch"); - #elif defined(ARCH_CPU_MIPS_FAMILY) - // No appropriate floating point context native type for available MIPS. -+#elif defined(ARCH_CPU_RISCV_FAMILY) - #else - #error Port. - #endif // ARCH_CPU_X86 -Index: chromium-102.0.5005.61/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc -=================================================================== ---- chromium-102.0.5005.61.orig/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc -+++ chromium-102.0.5005.61/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc -@@ -237,6 +237,8 @@ std::string UserAgent() { - #elif defined(ARCH_CPU_BIG_ENDIAN) - static constexpr char arch[] = "aarch64_be"; - #endif -+#elif defined(ARCH_CPU_RISCV64) -+ static constexpr char arch[] = "riscv64"; - #else - #error Port - #endif diff --git a/srcpkgs/electron24/files/patches/chromium-riscv-dav1d.patch b/srcpkgs/electron24/files/patches/chromium-riscv-dav1d.patch deleted file mode 100644 index d5c8058b41e..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-riscv-dav1d.patch +++ /dev/null @@ -1,43 +0,0 @@ -Index: chromium-102.0.5005.61/third_party/dav1d/config/linux/riscv64/config.h -=================================================================== ---- /dev/null -+++ chromium-102.0.5005.61/third_party/dav1d/config/linux/riscv64/config.h -@@ -0,0 +1,38 @@ -+/* -+ * Autogenerated by the Meson build system. -+ * Do not edit, your changes will be lost. -+ */ -+ -+#pragma once -+ -+#define ARCH_AARCH64 0 -+ -+#define ARCH_ARM 0 -+ -+#define ARCH_PPC64LE 0 -+ -+#define ARCH_X86 0 -+ -+#define ARCH_X86_32 0 -+ -+#define ARCH_X86_64 0 -+ -+#define CONFIG_16BPC 1 -+ -+#define CONFIG_8BPC 1 -+ -+// #define CONFIG_LOG 1 -- Logging is controlled by Chromium -+ -+#define ENDIANNESS_BIG 0 -+ -+#define HAVE_ASM 0 -+ -+#define HAVE_AS_FUNC 0 -+ -+#define HAVE_CLOCK_GETTIME 1 -+ -+#define HAVE_GETAUXVAL 1 -+ -+#define HAVE_POSIX_MEMALIGN 1 -+ -+#define HAVE_UNISTD_H 1 diff --git a/srcpkgs/electron24/files/patches/chromium-sandbox-membarrier.patch b/srcpkgs/electron24/files/patches/chromium-sandbox-membarrier.patch deleted file mode 100644 index 55ef2516194..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-sandbox-membarrier.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ b/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -@@ -370,6 +370,7 @@ - switch (sysno) { - case __NR_exit: - case __NR_exit_group: -+ case __NR_membarrier: - case __NR_wait4: - case __NR_waitid: - #if defined(__i386__) diff --git a/srcpkgs/electron24/files/patches/chromium-sndio.patch b/srcpkgs/electron24/files/patches/chromium-sndio.patch deleted file mode 100644 index 077ceaa8acb..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-sndio.patch +++ /dev/null @@ -1,877 +0,0 @@ -diff -Naur chromium-83.0.4103.97.orig/media/BUILD.gn chromium-83.0.4103.97/media/BUILD.gn ---- a/media/BUILD.gn 2020-06-03 20:40:26.000000000 +0200 -+++ b/media/BUILD.gn 2021-06-13 17:32:28.510395975 +0200 -@@ -65,6 +65,9 @@ - defines += [ "DLOPEN_PULSEAUDIO" ] - } - } -+ if (use_sndio) { -+ defines += [ "USE_SNDIO" ] -+ } - if (use_cras) { - defines += [ "USE_CRAS" ] - } -diff -Naur chromium-83.0.4103.97.orig/media/audio/BUILD.gn chromium-83.0.4103.97/media/audio/BUILD.gn ---- a/media/audio/BUILD.gn 2020-06-03 20:39:37.000000000 +0200 -+++ b/media/audio/BUILD.gn 2020-06-13 17:32:28.511395969 +0200 -@@ -236,6 +236,17 @@ - sources += [ "linux/audio_manager_linux.cc" ] - } - -+ if (use_sndio) { -+ libs += [ "sndio" ] -+ sources += [ -+ "sndio/audio_manager_sndio.cc", -+ "sndio/sndio_input.cc", -+ "sndio/sndio_input.h", -+ "sndio/sndio_output.cc", -+ "sndio/sndio_output.h" -+ ] -+ } -+ - if (use_alsa) { - libs += [ "asound" ] - sources += [ -diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc chromium-83.0.4103.97/media/audio/linux/audio_manager_linux.cc ---- a/media/audio/linux/audio_manager_linux.cc 2020-06-03 20:39:37.000000000 +0200 -+++ b/media/audio/linux/audio_manager_linux.cc 2020-06-13 18:09:43.623333167 +0200 -@@ -19,6 +19,11 @@ - #include "media/audio/pulse/audio_manager_pulse.h" - #include "media/audio/pulse/pulse_util.h" - #endif -+#if defined(USE_SNDIO) -+#include "media/audio/sndio/audio_manager_sndio.h" -+#include "media/audio/sndio/sndio_input.h" -+#include "media/audio/sndio/sndio_output.h" -+#endif - - namespace media { - - std::unique_ptr CreateAudioManager( -@@ -39,6 +45,16 @@ - audio_log_factory); - } - -+#if defined(USE_SNDIO) -+ struct sio_hdl *hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0); -+ if (hdl != NULL) { -+ sio_close(hdl); -+ UMA_HISTOGRAM_ENUMERATION("Media.LinuxAudioIO", kSndio, kAudioIOMax + 1); -+ return std::make_unique(std::move(audio_thread), -+ audio_log_factory); -+ } -+#endif -+ - #if defined(USE_CRAS) - if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseCras)) { - UMA_HISTOGRAM_ENUMERATION("Media.LinuxAudioIO", kCras, kAudioIOMax + 1); -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/audio_manager_sndio.cc chromium-83.0.4103.97/media/audio/sndio/audio_manager_sndio.cc ---- a/media/audio/sndio/audio_manager_sndio.cc 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/audio_manager_sndio.cc 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,148 @@ -+// Copyright (c) 2012 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#include "media/audio/sndio/audio_manager_sndio.h" -+ -+#include "base/metrics/histogram_macros.h" -+#include "base/memory/ptr_util.h" -+#include "media/audio/audio_device_description.h" -+#include "media/audio/audio_output_dispatcher.h" -+#include "media/audio/sndio/sndio_input.h" -+#include "media/audio/sndio/sndio_output.h" -+#include "media/base/limits.h" -+#include "media/base/media_switches.h" -+ -+namespace media { -+ -+ -+// Maximum number of output streams that can be open simultaneously. -+static const int kMaxOutputStreams = 4; -+ -+// Default sample rate for input and output streams. -+static const int kDefaultSampleRate = 48000; -+ -+void AddDefaultDevice(AudioDeviceNames* device_names) { -+ DCHECK(device_names->empty()); -+ device_names->push_front(AudioDeviceName::CreateDefault()); -+} -+ -+bool AudioManagerSndio::HasAudioOutputDevices() { -+ return true; -+} -+ -+bool AudioManagerSndio::HasAudioInputDevices() { -+ return true; -+} -+ -+void AudioManagerSndio::GetAudioInputDeviceNames( -+ AudioDeviceNames* device_names) { -+ DCHECK(device_names->empty()); -+ AddDefaultDevice(device_names); -+} -+ -+void AudioManagerSndio::GetAudioOutputDeviceNames( -+ AudioDeviceNames* device_names) { -+ AddDefaultDevice(device_names); -+} -+ -+const char* AudioManagerSndio::GetName() { -+ return "SNDIO"; -+} -+ -+AudioParameters AudioManagerSndio::GetInputStreamParameters( -+ const std::string& device_id) { -+ static const int kDefaultInputBufferSize = 1024; -+ -+ int user_buffer_size = GetUserBufferSize(); -+ int buffer_size = user_buffer_size ? -+ user_buffer_size : kDefaultInputBufferSize; -+ -+ return AudioParameters( -+ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, -+ kDefaultSampleRate, buffer_size); -+} -+ -+AudioManagerSndio::AudioManagerSndio(std::unique_ptr audio_thread, -+ AudioLogFactory* audio_log_factory) -+ : AudioManagerBase(std::move(audio_thread), -+ audio_log_factory) { -+ DLOG(WARNING) << "AudioManagerSndio"; -+ SetMaxOutputStreamsAllowed(kMaxOutputStreams); -+} -+ -+AudioManagerSndio::~AudioManagerSndio() { -+ Shutdown(); -+} -+ -+AudioOutputStream* AudioManagerSndio::MakeLinearOutputStream( -+ const AudioParameters& params, -+ const LogCallback& log_callback) { -+ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); -+ return MakeOutputStream(params); -+} -+ -+AudioOutputStream* AudioManagerSndio::MakeLowLatencyOutputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) { -+ DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!"; -+ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); -+ return MakeOutputStream(params); -+} -+ -+AudioInputStream* AudioManagerSndio::MakeLinearInputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) { -+ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); -+ return MakeInputStream(params); -+} -+ -+AudioInputStream* AudioManagerSndio::MakeLowLatencyInputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) { -+ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); -+ return MakeInputStream(params); -+} -+ -+AudioParameters AudioManagerSndio::GetPreferredOutputStreamParameters( -+ const std::string& output_device_id, -+ const AudioParameters& input_params) { -+ // TODO(tommi): Support |output_device_id|. -+ DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; -+ static const int kDefaultOutputBufferSize = 2048; -+ -+ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; -+ int sample_rate = kDefaultSampleRate; -+ int buffer_size = kDefaultOutputBufferSize; -+ if (input_params.IsValid()) { -+ sample_rate = input_params.sample_rate(); -+ channel_layout = input_params.channel_layout(); -+ buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); -+ } -+ -+ int user_buffer_size = GetUserBufferSize(); -+ if (user_buffer_size) -+ buffer_size = user_buffer_size; -+ -+ return AudioParameters( -+ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, -+ sample_rate, buffer_size); -+} -+ -+AudioInputStream* AudioManagerSndio::MakeInputStream( -+ const AudioParameters& params) { -+ DLOG(WARNING) << "MakeInputStream"; -+ return new SndioAudioInputStream(this, -+ AudioDeviceDescription::kDefaultDeviceId, params); -+} -+ -+AudioOutputStream* AudioManagerSndio::MakeOutputStream( -+ const AudioParameters& params) { -+ DLOG(WARNING) << "MakeOutputStream"; -+ return new SndioAudioOutputStream(params, this); -+} -+ -+} // namespace media -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/audio_manager_sndio.h chromium-83.0.4103.97/media/audio/sndio/audio_manager_sndio.h ---- a/media/audio/sndio/audio_manager_sndio.h 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/audio_manager_sndio.h 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,65 @@ -+// Copyright (c) 2012 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ -+#define MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ -+ -+#include -+ -+#include "base/compiler_specific.h" -+#include "base/macros.h" -+#include "base/memory/ref_counted.h" -+#include "base/threading/thread.h" -+#include "media/audio/audio_manager_base.h" -+ -+namespace media { -+ -+class MEDIA_EXPORT AudioManagerSndio : public AudioManagerBase { -+ public: -+ AudioManagerSndio(std::unique_ptr audio_thread, -+ AudioLogFactory* audio_log_factory); -+ ~AudioManagerSndio() override; -+ -+ // Implementation of AudioManager. -+ bool HasAudioOutputDevices() override; -+ bool HasAudioInputDevices() override; -+ void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override; -+ void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override; -+ AudioParameters GetInputStreamParameters( -+ const std::string& device_id) override; -+ const char* GetName() override; -+ -+ // Implementation of AudioManagerBase. -+ AudioOutputStream* MakeLinearOutputStream( -+ const AudioParameters& params, -+ const LogCallback& log_callback) override; -+ AudioOutputStream* MakeLowLatencyOutputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) override; -+ AudioInputStream* MakeLinearInputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) override; -+ AudioInputStream* MakeLowLatencyInputStream( -+ const AudioParameters& params, -+ const std::string& device_id, -+ const LogCallback& log_callback) override; -+ -+ protected: -+ AudioParameters GetPreferredOutputStreamParameters( -+ const std::string& output_device_id, -+ const AudioParameters& input_params) override; -+ -+ private: -+ // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. -+ AudioOutputStream* MakeOutputStream(const AudioParameters& params); -+ AudioInputStream* MakeInputStream(const AudioParameters& params); -+ -+ DISALLOW_COPY_AND_ASSIGN(AudioManagerSndio); -+}; -+ -+} // namespace media -+ -+#endif // MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/sndio_input.cc chromium-83.0.4103.97/media/audio/sndio/sndio_input.cc ---- a/media/audio/sndio/sndio_input.cc 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/sndio_input.cc 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,200 @@ -+// Copyright 2013 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#include "base/bind.h" -+#include "base/logging.h" -+#include "base/macros.h" -+#include "media/base/audio_timestamp_helper.h" -+#include "media/audio/sndio/audio_manager_sndio.h" -+#include "media/audio/audio_manager.h" -+#include "media/audio/sndio/sndio_input.h" -+ -+namespace media { -+ -+static const SampleFormat kSampleFormat = kSampleFormatS16; -+ -+void SndioAudioInputStream::OnMoveCallback(void *arg, int delta) -+{ -+ SndioAudioInputStream* self = static_cast(arg); -+ -+ self->hw_delay += delta; -+} -+ -+void *SndioAudioInputStream::ThreadEntry(void *arg) { -+ SndioAudioInputStream* self = static_cast(arg); -+ -+ self->ThreadLoop(); -+ return NULL; -+} -+ -+SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager, -+ const std::string& device_name, -+ const AudioParameters& params) -+ : manager(manager), -+ params(params), -+ audio_bus(AudioBus::Create(params)), -+ state(kClosed) { -+} -+ -+SndioAudioInputStream::~SndioAudioInputStream() { -+ if (state != kClosed) -+ Close(); -+} -+ -+bool SndioAudioInputStream::Open() { -+ struct sio_par par; -+ int sig; -+ -+ if (state != kClosed) -+ return false; -+ -+ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && -+ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { -+ LOG(WARNING) << "Unsupported audio format."; -+ return false; -+ } -+ -+ sio_initpar(&par); -+ par.rate = params.sample_rate(); -+ par.rchan = params.channels(); -+ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); -+ par.bps = par.bits / 8; -+ par.sig = sig = par.bits != 8 ? 1 : 0; -+ par.le = SIO_LE_NATIVE; -+ par.appbufsz = params.frames_per_buffer(); -+ -+ hdl = sio_open(SIO_DEVANY, SIO_REC, 0); -+ -+ if (hdl == NULL) { -+ LOG(ERROR) << "Couldn't open audio device."; -+ return false; -+ } -+ -+ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { -+ LOG(ERROR) << "Couldn't set audio parameters."; -+ goto bad_close; -+ } -+ -+ if (par.rate != (unsigned int)params.sample_rate() || -+ par.rchan != (unsigned int)params.channels() || -+ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || -+ par.sig != (unsigned int)sig || -+ (par.bps > 1 && par.le != SIO_LE_NATIVE) || -+ (par.bits != par.bps * 8)) { -+ LOG(ERROR) << "Unsupported audio parameters."; -+ goto bad_close; -+ } -+ state = kStopped; -+ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; -+ sio_onmove(hdl, &OnMoveCallback, this); -+ return true; -+bad_close: -+ sio_close(hdl); -+ return false; -+} -+ -+void SndioAudioInputStream::Start(AudioInputCallback* cb) { -+ -+ StartAgc(); -+ -+ state = kRunning; -+ hw_delay = 0; -+ callback = cb; -+ sio_start(hdl); -+ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { -+ LOG(ERROR) << "Failed to create real-time thread for recording."; -+ sio_stop(hdl); -+ state = kStopped; -+ } -+} -+ -+void SndioAudioInputStream::Stop() { -+ -+ if (state == kStopped) -+ return; -+ -+ state = kStopWait; -+ pthread_join(thread, NULL); -+ sio_stop(hdl); -+ state = kStopped; -+ -+ StopAgc(); -+} -+ -+void SndioAudioInputStream::Close() { -+ -+ if (state == kClosed) -+ return; -+ -+ if (state == kRunning) -+ Stop(); -+ -+ state = kClosed; -+ delete [] buffer; -+ sio_close(hdl); -+ -+ manager->ReleaseInputStream(this); -+} -+ -+double SndioAudioInputStream::GetMaxVolume() { -+ // Not supported -+ return 0.0; -+} -+ -+void SndioAudioInputStream::SetVolume(double volume) { -+ // Not supported. Do nothing. -+} -+ -+double SndioAudioInputStream::GetVolume() { -+ // Not supported. -+ return 0.0; -+} -+ -+bool SndioAudioInputStream::IsMuted() { -+ // Not supported. -+ return false; -+} -+ -+void SndioAudioInputStream::SetOutputDeviceForAec( -+ const std::string& output_device_id) { -+ // Not supported. -+} -+ -+void SndioAudioInputStream::ThreadLoop(void) { -+ size_t todo, n; -+ char *data; -+ unsigned int nframes; -+ double normalized_volume = 0.0; -+ -+ nframes = audio_bus->frames(); -+ -+ while (state == kRunning && !sio_eof(hdl)) { -+ -+ GetAgcVolume(&normalized_volume); -+ -+ // read one block -+ todo = nframes * params.GetBytesPerFrame(kSampleFormat); -+ data = buffer; -+ while (todo > 0) { -+ n = sio_read(hdl, data, todo); -+ if (n == 0) -+ return; // unrecoverable I/O error -+ todo -= n; -+ data += n; -+ } -+ hw_delay -= nframes; -+ -+ // convert frames count to TimeDelta -+ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, -+ params.sample_rate()); -+ -+ // push into bus -+ audio_bus->FromInterleaved(reinterpret_cast(buffer), nframes); -+ -+ // invoke callback -+ callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.); -+ } -+} -+ -+} // namespace media -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/sndio_input.h chromium-83.0.4103.97/media/audio/sndio/sndio_input.h ---- a/media/audio/sndio/sndio_input.h 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/sndio_input.h 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,91 @@ -+// Copyright 2013 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ -+#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ -+ -+#include -+#include -+#include -+ -+#include "base/compiler_specific.h" -+#include "base/macros.h" -+#include "base/memory/weak_ptr.h" -+#include "base/time/time.h" -+#include "media/audio/agc_audio_stream.h" -+#include "media/audio/audio_io.h" -+#include "media/audio/audio_device_description.h" -+#include "media/base/audio_parameters.h" -+ -+namespace media { -+ -+class AudioManagerBase; -+ -+// Implementation of AudioOutputStream using sndio(7) -+class SndioAudioInputStream : public AgcAudioStream { -+ public: -+ // Pass this to the constructor if you want to attempt auto-selection -+ // of the audio recording device. -+ static const char kAutoSelectDevice[]; -+ -+ // Create a PCM Output stream for the SNDIO device identified by -+ // |device_name|. If unsure of what to use for |device_name|, use -+ // |kAutoSelectDevice|. -+ SndioAudioInputStream(AudioManagerBase* audio_manager, -+ const std::string& device_name, -+ const AudioParameters& params); -+ -+ ~SndioAudioInputStream() override; -+ -+ // Implementation of AudioInputStream. -+ bool Open() override; -+ void Start(AudioInputCallback* callback) override; -+ void Stop() override; -+ void Close() override; -+ double GetMaxVolume() override; -+ void SetVolume(double volume) override; -+ double GetVolume() override; -+ bool IsMuted() override; -+ void SetOutputDeviceForAec(const std::string& output_device_id) override; -+ -+ private: -+ -+ enum StreamState { -+ kClosed, // Not opened yet -+ kStopped, // Device opened, but not started yet -+ kRunning, // Started, device playing -+ kStopWait // Stopping, waiting for the real-time thread to exit -+ }; -+ -+ // C-style call-backs -+ static void OnMoveCallback(void *arg, int delta); -+ static void* ThreadEntry(void *arg); -+ -+ // Continuously moves data from the device to the consumer -+ void ThreadLoop(); -+ // Our creator, the audio manager needs to be notified when we close. -+ AudioManagerBase* manager; -+ // Parameters of the source -+ AudioParameters params; -+ // We store data here for consumer -+ std::unique_ptr audio_bus; -+ // Call-back that consumes recorded data -+ AudioInputCallback* callback; // Valid during a recording session. -+ // Handle of the audio device -+ struct sio_hdl* hdl; -+ // Current state of the stream -+ enum StreamState state; -+ // High priority thread running ThreadLoop() -+ pthread_t thread; -+ // Number of frames buffered in the hardware -+ int hw_delay; -+ // Temporary buffer where data is stored sndio-compatible format -+ char* buffer; -+ -+ DISALLOW_COPY_AND_ASSIGN(SndioAudioInputStream); -+}; -+ -+} // namespace media -+ -+#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/sndio_output.cc chromium-83.0.4103.97/media/audio/sndio/sndio_output.cc ---- a/media/audio/sndio/sndio_output.cc 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/sndio_output.cc 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,183 @@ -+// Copyright (c) 2012 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#include "base/logging.h" -+#include "base/time/time.h" -+#include "base/time/default_tick_clock.h" -+#include "media/audio/audio_manager_base.h" -+#include "media/base/audio_timestamp_helper.h" -+#include "media/audio/sndio/sndio_output.h" -+ -+namespace media { -+ -+static const SampleFormat kSampleFormat = kSampleFormatS16; -+ -+void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) { -+ SndioAudioOutputStream* self = static_cast(arg); -+ -+ self->hw_delay -= delta; -+} -+ -+void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) { -+ SndioAudioOutputStream* self = static_cast(arg); -+ -+ self->vol = vol; -+} -+ -+void *SndioAudioOutputStream::ThreadEntry(void *arg) { -+ SndioAudioOutputStream* self = static_cast(arg); -+ -+ self->ThreadLoop(); -+ return NULL; -+} -+ -+SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params, -+ AudioManagerBase* manager) -+ : manager(manager), -+ params(params), -+ audio_bus(AudioBus::Create(params)), -+ state(kClosed), -+ mutex(PTHREAD_MUTEX_INITIALIZER) { -+} -+ -+SndioAudioOutputStream::~SndioAudioOutputStream() { -+ if (state != kClosed) -+ Close(); -+} -+ -+bool SndioAudioOutputStream::Open() { -+ struct sio_par par; -+ int sig; -+ -+ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && -+ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { -+ LOG(WARNING) << "Unsupported audio format."; -+ return false; -+ } -+ sio_initpar(&par); -+ par.rate = params.sample_rate(); -+ par.pchan = params.channels(); -+ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); -+ par.bps = par.bits / 8; -+ par.sig = sig = par.bits != 8 ? 1 : 0; -+ par.le = SIO_LE_NATIVE; -+ par.appbufsz = params.frames_per_buffer(); -+ -+ hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0); -+ if (hdl == NULL) { -+ LOG(ERROR) << "Couldn't open audio device."; -+ return false; -+ } -+ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { -+ LOG(ERROR) << "Couldn't set audio parameters."; -+ goto bad_close; -+ } -+ if (par.rate != (unsigned int)params.sample_rate() || -+ par.pchan != (unsigned int)params.channels() || -+ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || -+ par.sig != (unsigned int)sig || -+ (par.bps > 1 && par.le != SIO_LE_NATIVE) || -+ (par.bits != par.bps * 8)) { -+ LOG(ERROR) << "Unsupported audio parameters."; -+ goto bad_close; -+ } -+ state = kStopped; -+ volpending = 0; -+ vol = 0; -+ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; -+ sio_onmove(hdl, &OnMoveCallback, this); -+ sio_onvol(hdl, &OnVolCallback, this); -+ return true; -+ bad_close: -+ sio_close(hdl); -+ return false; -+} -+ -+void SndioAudioOutputStream::Close() { -+ if (state == kClosed) -+ return; -+ if (state == kRunning) -+ Stop(); -+ state = kClosed; -+ delete [] buffer; -+ sio_close(hdl); -+ manager->ReleaseOutputStream(this); // Calls the destructor -+} -+ -+void SndioAudioOutputStream::Start(AudioSourceCallback* callback) { -+ state = kRunning; -+ hw_delay = 0; -+ source = callback; -+ sio_start(hdl); -+ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { -+ LOG(ERROR) << "Failed to create real-time thread."; -+ sio_stop(hdl); -+ state = kStopped; -+ } -+} -+ -+void SndioAudioOutputStream::Stop() { -+ if (state == kStopped) -+ return; -+ state = kStopWait; -+ pthread_join(thread, NULL); -+ sio_stop(hdl); -+ state = kStopped; -+} -+ -+void SndioAudioOutputStream::SetVolume(double v) { -+ pthread_mutex_lock(&mutex); -+ vol = v * SIO_MAXVOL; -+ volpending = 1; -+ pthread_mutex_unlock(&mutex); -+} -+ -+void SndioAudioOutputStream::GetVolume(double* v) { -+ pthread_mutex_lock(&mutex); -+ *v = vol * (1. / SIO_MAXVOL); -+ pthread_mutex_unlock(&mutex); -+} -+ -+// This stream is always used with sub second buffer sizes, where it's -+// sufficient to simply always flush upon Start(). -+void SndioAudioOutputStream::Flush() {} -+ -+void SndioAudioOutputStream::ThreadLoop(void) { -+ int avail, count, result; -+ -+ while (state == kRunning) { -+ // Update volume if needed -+ pthread_mutex_lock(&mutex); -+ if (volpending) { -+ volpending = 0; -+ sio_setvol(hdl, vol); -+ } -+ pthread_mutex_unlock(&mutex); -+ -+ // Get data to play -+ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, -+ params.sample_rate()); -+ count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get()); -+ audio_bus->ToInterleaved(count, reinterpret_cast(buffer)); -+ if (count == 0) { -+ // We have to submit something to the device -+ count = audio_bus->frames(); -+ memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat)); -+ LOG(WARNING) << "No data to play, running empty cycle."; -+ } -+ -+ // Submit data to the device -+ avail = count * params.GetBytesPerFrame(kSampleFormat); -+ result = sio_write(hdl, buffer, avail); -+ if (result == 0) { -+ LOG(WARNING) << "Audio device disconnected."; -+ break; -+ } -+ -+ // Update hardware pointer -+ hw_delay += count; -+ } -+} -+ -+} // namespace media -diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/sndio_output.h chromium-83.0.4103.97/media/audio/sndio/sndio_output.h ---- a/media/audio/sndio/sndio_output.h 1970-01-01 01:00:00.000000000 +0100 -+++ b/media/audio/sndio/sndio_output.h 2020-06-13 17:32:28.511395969 +0200 -@@ -0,0 +1,86 @@ -+// Copyright (c) 2012 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ -+#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ -+ -+#include -+#include -+ -+#include "base/time/tick_clock.h" -+#include "base/time/time.h" -+#include "media/audio/audio_io.h" -+ -+namespace media { -+ -+class AudioManagerBase; -+ -+// Implementation of AudioOutputStream using sndio(7) -+class SndioAudioOutputStream : public AudioOutputStream { -+ public: -+ // The manager is creating this object -+ SndioAudioOutputStream(const AudioParameters& params, -+ AudioManagerBase* manager); -+ virtual ~SndioAudioOutputStream(); -+ -+ // Implementation of AudioOutputStream. -+ bool Open() override; -+ void Close() override; -+ void Start(AudioSourceCallback* callback) override; -+ void Stop() override; -+ void SetVolume(double volume) override; -+ void GetVolume(double* volume) override; -+ void Flush() override; -+ -+ friend void sndio_onmove(void *arg, int delta); -+ friend void sndio_onvol(void *arg, unsigned int vol); -+ friend void *sndio_threadstart(void *arg); -+ -+ private: -+ enum StreamState { -+ kClosed, // Not opened yet -+ kStopped, // Device opened, but not started yet -+ kRunning, // Started, device playing -+ kStopWait // Stopping, waiting for the real-time thread to exit -+ }; -+ -+ // C-style call-backs -+ static void OnMoveCallback(void *arg, int delta); -+ static void OnVolCallback(void *arg, unsigned int vol); -+ static void* ThreadEntry(void *arg); -+ -+ // Continuously moves data from the producer to the device -+ void ThreadLoop(void); -+ -+ // Our creator, the audio manager needs to be notified when we close. -+ AudioManagerBase* manager; -+ // Parameters of the source -+ AudioParameters params; -+ // Source stores data here -+ std::unique_ptr audio_bus; -+ // Call-back that produces data to play -+ AudioSourceCallback* source; -+ // Handle of the audio device -+ struct sio_hdl* hdl; -+ // Current state of the stream -+ enum StreamState state; -+ // High priority thread running ThreadLoop() -+ pthread_t thread; -+ // Protects vol, volpending and hw_delay -+ pthread_mutex_t mutex; -+ // Current volume in the 0..SIO_MAXVOL range -+ int vol; -+ // Set to 1 if volumes must be refreshed in the realtime thread -+ int volpending; -+ // Number of frames buffered in the hardware -+ int hw_delay; -+ // Temporary buffer where data is stored sndio-compatible format -+ char* buffer; -+ -+ DISALLOW_COPY_AND_ASSIGN(SndioAudioOutputStream); -+}; -+ -+} // namespace media -+ -+#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ -diff -Naur chromium-83.0.4103.97.orig/media/media_options.gni chromium-83.0.4103.97/media/media_options.gni ---- a/media/media_options.gni -+++ b/media/media_options.gni -@@ -158,6 +158,9 @@ - # Enables runtime selection of ALSA library for audio. - use_alsa = false - -+ # Enable runtime selection of sndio(7) -+ use_sndio = false -+ - # Alsa should be used on all non-Android, non-Mac POSIX systems - with the - # exception of CastOS desktop builds. - # diff --git a/srcpkgs/electron24/files/patches/chromium-sql-relax-constraints-on-VirtualCursor-layout.patch b/srcpkgs/electron24/files/patches/chromium-sql-relax-constraints-on-VirtualCursor-layout.patch deleted file mode 100644 index d1e65ee1561..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-sql-relax-constraints-on-VirtualCursor-layout.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 7d1394bd639e3bcf68082ac3fc33eeed6a00d2e6 Mon Sep 17 00:00:00 2001 -From: Elly Fong-Jones -Date: Thu, 2 Mar 2023 00:15:11 +0000 -Subject: [PATCH] sql: relax constraints on VirtualCursor layout - -VirtualCursor::FromSqliteCursor required that VirtualCursor had a -standard layout, but in fact VirtualCursor shouldn't have a standard -layout, and the fact that it does with libc++ is a deviation from the -C++ standard. This change: - -1. Relaxes the requirement that VirtualCursor has a standard layout, and -2. Relaxes the requirement that the sqlite_cursor_ field has to be at - offset 0 - -by use of offsetof() and pointer subtraction. This change both improves -standards compliance and makes this code build with libstdc++. - -Bug: 1380656 -Change-Id: I9c47abd9197b187da0360ca5619ccf7dadab4f33 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4292313 -Reviewed-by: Austin Sullivan -Commit-Queue: Elly Fong-Jones -Cr-Commit-Position: refs/heads/main@{#1111925} ---- - sql/recover_module/cursor.h | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h -index 1970bdca8c6..4cb06557009 100644 ---- a/sql/recover_module/cursor.h -+++ b/sql/recover_module/cursor.h -@@ -63,12 +63,10 @@ class VirtualCursor { - // |sqlite_cursor| must have been returned by VirtualTable::SqliteCursor(). - static inline VirtualCursor* FromSqliteCursor( - sqlite3_vtab_cursor* sqlite_cursor) { -- static_assert(std::is_standard_layout::value, -- "needed for the reinterpret_cast below"); -- static_assert(offsetof(VirtualCursor, sqlite_cursor_) == 0, -- "sqlite_cursor_ must be the first member of the class"); -- VirtualCursor* result = reinterpret_cast(sqlite_cursor); -- DCHECK_EQ(sqlite_cursor, &result->sqlite_cursor_); -+ VirtualCursor* result = reinterpret_cast( -+ (reinterpret_cast(sqlite_cursor) - -+ offsetof(VirtualCursor, sqlite_cursor_))); -+ CHECK_EQ(sqlite_cursor, &result->sqlite_cursor_); - return result; - } - diff --git a/srcpkgs/electron24/files/patches/chromium-systypes.patch b/srcpkgs/electron24/files/patches/chromium-systypes.patch deleted file mode 100644 index 1ccebbd2f2b..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-systypes.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/base/third_party/symbolize/symbolize.h -+++ b/base/third_party/symbolize/symbolize.h -@@ -58,6 +58,8 @@ - #include "config.h" - #include "glog/logging.h" - -+#include -+ - #ifdef HAVE_SYMBOLIZE - - #if defined(__ELF__) // defined by gcc diff --git a/srcpkgs/electron24/files/patches/chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch b/srcpkgs/electron24/files/patches/chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch deleted file mode 100644 index dae1adde0bc..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn -index 16e20744706..6a079b32221 100644 ---- a/build/linux/unbundle/ffmpeg.gn -+++ b/build/linux/unbundle/ffmpeg.gn -@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") { - "libavformat", - "libavutil", - ] -+ defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ] - } - - buildflag_header("ffmpeg_features") { diff --git a/srcpkgs/electron24/files/patches/chromium-unbundled-cross-toolchain.patch b/srcpkgs/electron24/files/patches/chromium-unbundled-cross-toolchain.patch deleted file mode 100644 index c3f2294ac4b..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-unbundled-cross-toolchain.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/build/toolchain/linux/unbundle/BUILD.gn.orig -+++ b/build/toolchain/linux/unbundle/BUILD.gn -@@ -35,7 +35,7 @@ - extra_ldflags = getenv("BUILD_LDFLAGS") - - toolchain_args = { -- current_cpu = current_cpu -- current_os = current_os -+ current_cpu = host_cpu -+ current_os = host_os - } - } diff --git a/srcpkgs/electron24/files/patches/chromium-webrtc-size_t.patch b/srcpkgs/electron24/files/patches/chromium-webrtc-size_t.patch deleted file mode 100644 index dd46fe14cd2..00000000000 --- a/srcpkgs/electron24/files/patches/chromium-webrtc-size_t.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-08-10 20:42:29.000000000 +0200 -+++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-09-04 12:47:07.014833633 +0200 -@@ -12,6 +12,7 @@ - #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_ - - #include -+#include - - namespace webrtc { - diff --git a/srcpkgs/electron24/files/patches/electron-Add-a-script-to-list-patch-targets.patch.patch b/srcpkgs/electron24/files/patches/electron-Add-a-script-to-list-patch-targets.patch.patch deleted file mode 100644 index 4258b65ecc3..00000000000 --- a/srcpkgs/electron24/files/patches/electron-Add-a-script-to-list-patch-targets.patch.patch +++ /dev/null @@ -1,42 +0,0 @@ -From ff4122f236b70c272c746d0c336cdbd588d78cd1 Mon Sep 17 00:00:00 2001 -From: Elvis Pranskevichus -Date: Thu, 12 Dec 2019 16:12:18 -0500 -Subject: [PATCH] Add a script to list patch targets - ---- - script/list_patch_targets.py | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - create mode 100755 script/list_patch_targets.py - -diff --git a/script/list_patch_targets.py b/script/list_patch_targets.py -new file mode 100755 -index 000000000..55173bac9 ---- /dev/null -+++ b/script/list_patch_targets.py -@@ -0,0 +1,23 @@ -+#!/usr/bin/env python -+ -+import argparse -+import json -+ -+ -+def parse_args(): -+ parser = argparse.ArgumentParser(description='Apply Electron patches') -+ parser.add_argument('config', nargs='+', -+ type=argparse.FileType('r'), -+ help='patches\' config(s) in the JSON format') -+ return parser.parse_args() -+ -+ -+def main(): -+ configs = parse_args().config -+ for config_json in configs: -+ for patch_dir, repo in json.load(config_json).items(): -+ print(repo) -+ -+ -+if __name__ == '__main__': -+ main() --- -2.23.0 - diff --git a/srcpkgs/electron24/files/patches/electron-Build-fixes.patch.patch b/srcpkgs/electron24/files/patches/electron-Build-fixes.patch.patch deleted file mode 100644 index a98ee020d34..00000000000 --- a/srcpkgs/electron24/files/patches/electron-Build-fixes.patch.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/build/npm.gni b/build/npm.gni -index a1987d095..fb33a14c3 100644 ---- a/build/npm.gni -+++ b/build/npm.gni -@@ -35,7 +35,6 @@ template("npm_action") { - if (!defined(deps)) { - deps = [] - } -- deps += [ ":npm_pre_flight_" + target_name ] - - script = "//electron/build/npm-run.py" - args = [ diff --git a/srcpkgs/electron24/files/patches/electron-exclude-content-test-patches.patch b/srcpkgs/electron24/files/patches/electron-exclude-content-test-patches.patch deleted file mode 100644 index 049ff4bdd04..00000000000 --- a/srcpkgs/electron24/files/patches/electron-exclude-content-test-patches.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/script/apply_all_patches.py 2023-05-03 15:27:52.000000000 +0200 -+++ - 2023-05-04 23:12:01.430619050 +0200 -@@ -14,6 +14,7 @@ - if os.path.exists(repo): - git.import_patches(repo=repo, patch_data=patch_from_dir(patch_dir), - threeway=threeway is not None, -+ exclude=['third_party/blink/tools/**', 'test/mjsunit/**', 'content/test/**', 'test/cctest/**', 'test/unittests/**', 'third_party/blink/web_tests/**', '.gitignore'], - committer_name="Electron Scripts", committer_email="scripts@electron") - - diff --git a/srcpkgs/electron24/files/patches/electron-git-stuff.patch b/srcpkgs/electron24/files/patches/electron-git-stuff.patch deleted file mode 100644 index c4d7f9aed99..00000000000 --- a/srcpkgs/electron24/files/patches/electron-git-stuff.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/BUILD.gn 2023-05-03 15:27:52.000000000 +0200 -+++ - 2023-05-05 00:24:25.483471021 +0200 -@@ -111,8 +111,6 @@ - [], - "trim string", - [ -- ".git/packed-refs", -- ".git/HEAD", - "script/lib/get-version.js", - ]) - diff --git a/srcpkgs/electron24/files/patches/electron-no-need-for-husky.patch b/srcpkgs/electron24/files/patches/electron-no-need-for-husky.patch deleted file mode 100644 index 0b074254c43..00000000000 --- a/srcpkgs/electron24/files/patches/electron-no-need-for-husky.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/package.json 2022-07-06 17:31:50.000000000 +0200 -+++ - 2022-07-08 23:04:43.654812957 +0200 -@@ -98,7 +98,6 @@ - "precommit": "lint-staged", - "preinstall": "node -e 'process.exit(0)'", - "prepack": "check-for-leaks", -- "prepare": "husky install", - "repl": "node ./script/start.js --interactive", - "start": "node ./script/start.js", - "test": "node ./script/spec-runner.js", diff --git a/srcpkgs/electron24/files/patches/electron-std-vector-non-const.patch b/srcpkgs/electron24/files/patches/electron-std-vector-non-const.patch deleted file mode 100644 index 89de8a1afff..00000000000 --- a/srcpkgs/electron24/files/patches/electron-std-vector-non-const.patch +++ /dev/null @@ -1,109 +0,0 @@ ---- a/patches/chromium/feat_add_data_parameter_to_processsingleton.patch -+++ b/patches/chromium/feat_add_data_parameter_to_processsingleton.patch -@@ -32,7 +32,7 @@ index 5a64220aaf1309832dc0ad543e353de67fe0a779..e75c4f0d7cf1cac2e5862eb858800359 - - const base::FilePath& current_directory)>; - + base::RepeatingCallback additional_data)>; -++ const std::vector additional_data)>; - - #if BUILDFLAG(IS_WIN) - ProcessSingleton(const std::string& program_name, -@@ -73,7 +73,7 @@ index 7d3a441bdb64268ed5fbfa7bf589fb35a2fd1b75..a3e45e9baa09bfc87be5b7ff589ac768 - // |reader| is for sending back ACK message. - void HandleMessage(const std::string& current_dir, - const std::vector& argv, --+ const std::vector additional_data, -++ const std::vector additional_data, - SocketReader* reader); - - private: -@@ -84,7 +84,7 @@ index 7d3a441bdb64268ed5fbfa7bf589fb35a2fd1b75..a3e45e9baa09bfc87be5b7ff589ac768 - - const std::string& current_dir, const std::vector& argv, - + const std::string& current_dir, - + const std::vector& argv, --+ const std::vector additional_data, -++ const std::vector additional_data, - SocketReader* reader) { - DCHECK(ui_task_runner_->BelongsToCurrentThread()); - DCHECK(reader); -@@ -114,7 +114,7 @@ index 7d3a441bdb64268ed5fbfa7bf589fb35a2fd1b75..a3e45e9baa09bfc87be5b7ff589ac768 - + base::StringToSizeT(tokens[0], &num_args); - + std::vector command_line(tokens.begin() + 1, tokens.begin() + 1 + num_args); - + --+ std::vector additional_data; -++ std::vector additional_data; - + if (tokens.size() >= 3 + num_args) { - + size_t additional_data_size; - + base::StringToSizeT(tokens[1 + num_args], &additional_data_size); -@@ -123,7 +123,7 @@ index 7d3a441bdb64268ed5fbfa7bf589fb35a2fd1b75..a3e45e9baa09bfc87be5b7ff589ac768 - + std::string(1, kTokenDelimiter)); - + const uint8_t* additional_data_bits = - + reinterpret_cast(remaining_args.c_str()); --+ additional_data = std::vector( -++ additional_data = std::vector( - + additional_data_bits, additional_data_bits + additional_data_size); - + } - + -@@ -189,7 +189,7 @@ index 0ea5eb3e3cf055d981ab73486115bac53287f2d7..fe68beb4b2522d27e07dbbb3341f100f - base::CommandLine* parsed_command_line, - - base::FilePath* current_directory) { - + base::FilePath* current_directory, --+ std::vector* parsed_additional_data) { -++ std::vector* parsed_additional_data) { - // We should have enough room for the shortest command (min_message_size) - // and also be a multiple of wchar_t bytes. The shortest command - - // possible is L"START\0\0" (empty current directory and command line). -@@ -230,7 +230,7 @@ index 0ea5eb3e3cf055d981ab73486115bac53287f2d7..fe68beb4b2522d27e07dbbb3341f100f - + msg.substr(fourth_null + 1, fifth_null - fourth_null); - + const uint8_t* additional_data_bytes = - + reinterpret_cast(additional_data.c_str()); --+ *parsed_additional_data = std::vector(additional_data_bytes, -++ *parsed_additional_data = std::vector(additional_data_bytes, - + additional_data_bytes + additional_data_length); - + - return true; -@@ -241,7 +241,7 @@ index 0ea5eb3e3cf055d981ab73486115bac53287f2d7..fe68beb4b2522d27e07dbbb3341f100f - base::CommandLine parsed_command_line(base::CommandLine::NO_PROGRAM); - base::FilePath current_directory; - - if (!ParseCommandLine(cds, &parsed_command_line, ¤t_directory)) { --+ std::vector additional_data; -++ std::vector additional_data; - + if (!ParseCommandLine(cds, &parsed_command_line, ¤t_directory, &additional_data)) { - *result = TRUE; - return true; ---- a/shell/browser/api/electron_api_app.cc -+++ b/shell/browser/api/electron_api_app.cc -@@ -519,10 +519,10 @@ bool NotificationCallbackWrapper( - const base::RepeatingCallback< - void(const base::CommandLine& command_line, - const base::FilePath& current_directory, -- const std::vector additional_data)>& callback, -+ const std::vector additional_data)>& callback, - const base::CommandLine& cmd, - const base::FilePath& cwd, -- const std::vector additional_data) { -+ const std::vector additional_data) { - // Make sure the callback is called after app gets ready. - if (Browser::Get()->is_ready()) { - callback.Run(cmd, cwd, std::move(additional_data)); -@@ -1083,7 +1083,7 @@ std::string App::GetLocaleCountryCode() { - - void App::OnSecondInstance(const base::CommandLine& cmd, - const base::FilePath& cwd, -- const std::vector additional_data) { -+ const std::vector additional_data) { - v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); - v8::Locker locker(isolate); - v8::HandleScope handle_scope(isolate); ---- a/shell/browser/api/electron_api_app.h -+++ b/shell/browser/api/electron_api_app.h -@@ -195,7 +195,7 @@ class App : public ElectronBrowserClient::Delegate, - std::string GetLocaleCountryCode(); - void OnSecondInstance(const base::CommandLine& cmd, - const base::FilePath& cwd, -- const std::vector additional_data); -+ const std::vector additional_data); - bool HasSingleInstanceLock() const; - bool RequestSingleInstanceLock(gin::Arguments* args); - void ReleaseSingleInstanceLock(); diff --git a/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.cc b/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.cc deleted file mode 100644 index 2c7aa8efa66..00000000000 --- a/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.cc +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/metrics/histogram_macros.h" -#include "base/memory/ptr_util.h" - -#include "media/audio/openbsd/audio_manager_openbsd.h" - -#include "media/audio/audio_device_description.h" -#include "media/audio/audio_output_dispatcher.h" -#include "media/audio/sndio/sndio_input.h" -#include "media/audio/sndio/sndio_output.h" -#include "media/base/limits.h" -#include "media/base/media_switches.h" - -namespace media { - -// Maximum number of output streams that can be open simultaneously. -static const int kMaxOutputStreams = 4; - -// Default sample rate for input and output streams. -static const int kDefaultSampleRate = 48000; - -void AddDefaultDevice(AudioDeviceNames* device_names) { - DCHECK(device_names->empty()); - device_names->push_front(AudioDeviceName::CreateDefault()); -} - -bool AudioManagerOpenBSD::HasAudioOutputDevices() { - return true; -} - -bool AudioManagerOpenBSD::HasAudioInputDevices() { - return true; -} - -void AudioManagerOpenBSD::GetAudioInputDeviceNames( - AudioDeviceNames* device_names) { - DCHECK(device_names->empty()); - AddDefaultDevice(device_names); -} - -void AudioManagerOpenBSD::GetAudioOutputDeviceNames( - AudioDeviceNames* device_names) { - AddDefaultDevice(device_names); -} - -const char* AudioManagerOpenBSD::GetName() { - return "SNDIO"; -} - -AudioParameters AudioManagerOpenBSD::GetInputStreamParameters( - const std::string& device_id) { - static const int kDefaultInputBufferSize = 1024; - - int user_buffer_size = GetUserBufferSize(); - int buffer_size = user_buffer_size ? - user_buffer_size : kDefaultInputBufferSize; - - return AudioParameters( - AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, - kDefaultSampleRate, buffer_size); -} - -AudioManagerOpenBSD::AudioManagerOpenBSD(std::unique_ptr audio_thread, - AudioLogFactory* audio_log_factory) - : AudioManagerBase(std::move(audio_thread), - audio_log_factory) { - DLOG(WARNING) << "AudioManagerOpenBSD"; - SetMaxOutputStreamsAllowed(kMaxOutputStreams); -} - -AudioManagerOpenBSD::~AudioManagerOpenBSD() { - Shutdown(); -} - -AudioOutputStream* AudioManagerOpenBSD::MakeLinearOutputStream( - const AudioParameters& params, - const LogCallback& log_callback) { - DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); - return MakeOutputStream(params); -} - -AudioOutputStream* AudioManagerOpenBSD::MakeLowLatencyOutputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) { - DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!"; - DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); - return MakeOutputStream(params); -} - -AudioInputStream* AudioManagerOpenBSD::MakeLinearInputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) { - DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); - return MakeInputStream(params); -} - -AudioInputStream* AudioManagerOpenBSD::MakeLowLatencyInputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) { - DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); - return MakeInputStream(params); -} - -AudioParameters AudioManagerOpenBSD::GetPreferredOutputStreamParameters( - const std::string& output_device_id, - const AudioParameters& input_params) { - // TODO(tommi): Support |output_device_id|. - DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; - static const int kDefaultOutputBufferSize = 2048; - - ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; - int sample_rate = kDefaultSampleRate; - int buffer_size = kDefaultOutputBufferSize; - if (input_params.IsValid()) { - sample_rate = input_params.sample_rate(); - channel_layout = input_params.channel_layout(); - buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); - } - - int user_buffer_size = GetUserBufferSize(); - if (user_buffer_size) - buffer_size = user_buffer_size; - - return AudioParameters( - AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, - sample_rate, buffer_size); -} - -AudioInputStream* AudioManagerOpenBSD::MakeInputStream( - const AudioParameters& params) { - DLOG(WARNING) << "MakeInputStream"; - return new SndioAudioInputStream(this, - AudioDeviceDescription::kDefaultDeviceId, params); -} - -AudioOutputStream* AudioManagerOpenBSD::MakeOutputStream( - const AudioParameters& params) { - DLOG(WARNING) << "MakeOutputStream"; - return new SndioAudioOutputStream(params, this); -} - -} // namespace media diff --git a/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.h b/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.h deleted file mode 100644 index 8c99db966d6..00000000000 --- a/srcpkgs/electron24/files/sndio-files/audio_manager_openbsd.h +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MEDIA_AUDIO_OPENBSD_AUDIO_MANAGER_OPENBSD_H_ -#define MEDIA_AUDIO_OPENBSD_AUDIO_MANAGER_OPENBSD_H_ - -#include - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/threading/thread.h" -#include "media/audio/audio_manager_base.h" - -namespace media { - -class MEDIA_EXPORT AudioManagerOpenBSD : public AudioManagerBase { - public: - AudioManagerOpenBSD(std::unique_ptr audio_thread, - AudioLogFactory* audio_log_factory); - ~AudioManagerOpenBSD() override; - - // Implementation of AudioManager. - bool HasAudioOutputDevices() override; - bool HasAudioInputDevices() override; - void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override; - void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override; - AudioParameters GetInputStreamParameters( - const std::string& device_id) override; - const char* GetName() override; - - // Implementation of AudioManagerBase. - AudioOutputStream* MakeLinearOutputStream( - const AudioParameters& params, - const LogCallback& log_callback) override; - AudioOutputStream* MakeLowLatencyOutputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) override; - AudioInputStream* MakeLinearInputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) override; - AudioInputStream* MakeLowLatencyInputStream( - const AudioParameters& params, - const std::string& device_id, - const LogCallback& log_callback) override; - - protected: - AudioParameters GetPreferredOutputStreamParameters( - const std::string& output_device_id, - const AudioParameters& input_params) override; - - private: - // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. - AudioOutputStream* MakeOutputStream(const AudioParameters& params); - AudioInputStream* MakeInputStream(const AudioParameters& params); - - DISALLOW_COPY_AND_ASSIGN(AudioManagerOpenBSD); -}; - -} // namespace media - -#endif // MEDIA_AUDIO_OPENBSD_AUDIO_MANAGER_OPENBSD_H_ diff --git a/srcpkgs/electron24/files/sndio-files/sndio_input.cc b/srcpkgs/electron24/files/sndio-files/sndio_input.cc deleted file mode 100644 index ef5439b49a0..00000000000 --- a/srcpkgs/electron24/files/sndio-files/sndio_input.cc +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/bind.h" -#include "base/logging.h" -#include "base/macros.h" -#include "media/base/audio_timestamp_helper.h" -#include "media/audio/openbsd/audio_manager_openbsd.h" -#include "media/audio/audio_manager.h" -#include "media/audio/sndio/sndio_input.h" - -namespace media { - -static const SampleFormat kSampleFormat = kSampleFormatS16; - -void SndioAudioInputStream::OnMoveCallback(void *arg, int delta) -{ - SndioAudioInputStream* self = static_cast(arg); - - self->hw_delay += delta; -} - -void *SndioAudioInputStream::ThreadEntry(void *arg) { - SndioAudioInputStream* self = static_cast(arg); - - self->ThreadLoop(); - return NULL; -} - -SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager, - const std::string& device_name, - const AudioParameters& params) - : manager(manager), - params(params), - audio_bus(AudioBus::Create(params)), - state(kClosed) { -} - -SndioAudioInputStream::~SndioAudioInputStream() { - if (state != kClosed) - Close(); -} - -bool SndioAudioInputStream::Open() { - struct sio_par par; - int sig; - - if (state != kClosed) - return false; - - if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && - params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { - LOG(WARNING) << "Unsupported audio format."; - return false; - } - - sio_initpar(&par); - par.rate = params.sample_rate(); - par.rchan = params.channels(); - par.bits = SampleFormatToBitsPerChannel(kSampleFormat); - par.bps = par.bits / 8; - par.sig = sig = par.bits != 8 ? 1 : 0; - par.le = SIO_LE_NATIVE; - par.appbufsz = params.frames_per_buffer(); - - hdl = sio_open(SIO_DEVANY, SIO_REC, 0); - - if (hdl == NULL) { - LOG(ERROR) << "Couldn't open audio device."; - return false; - } - - if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { - LOG(ERROR) << "Couldn't set audio parameters."; - goto bad_close; - } - - if (par.rate != (unsigned int)params.sample_rate() || - par.rchan != (unsigned int)params.channels() || - par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || - par.sig != (unsigned int)sig || - (par.bps > 1 && par.le != SIO_LE_NATIVE) || - (par.bits != par.bps * 8)) { - LOG(ERROR) << "Unsupported audio parameters."; - goto bad_close; - } - state = kStopped; - buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; - sio_onmove(hdl, &OnMoveCallback, this); - return true; -bad_close: - sio_close(hdl); - return false; -} - -void SndioAudioInputStream::Start(AudioInputCallback* cb) { - - StartAgc(); - - state = kRunning; - hw_delay = 0; - callback = cb; - sio_start(hdl); - if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { - LOG(ERROR) << "Failed to create real-time thread for recording."; - sio_stop(hdl); - state = kStopped; - } -} - -void SndioAudioInputStream::Stop() { - - if (state == kStopped) - return; - - state = kStopWait; - pthread_join(thread, NULL); - sio_stop(hdl); - state = kStopped; - - StopAgc(); -} - -void SndioAudioInputStream::Close() { - - if (state == kClosed) - return; - - if (state == kRunning) - Stop(); - - state = kClosed; - delete [] buffer; - sio_close(hdl); - - manager->ReleaseInputStream(this); -} - -double SndioAudioInputStream::GetMaxVolume() { - // Not supported - return 0.0; -} - -void SndioAudioInputStream::SetVolume(double volume) { - // Not supported. Do nothing. -} - -double SndioAudioInputStream::GetVolume() { - // Not supported. - return 0.0; -} - -bool SndioAudioInputStream::IsMuted() { - // Not supported. - return false; -} - -void SndioAudioInputStream::SetOutputDeviceForAec( - const std::string& output_device_id) { - // Not supported. -} - -void SndioAudioInputStream::ThreadLoop(void) { - size_t todo, n; - char *data; - unsigned int nframes; - double normalized_volume = 0.0; - - nframes = audio_bus->frames(); - - while (state == kRunning && !sio_eof(hdl)) { - - GetAgcVolume(&normalized_volume); - - // read one block - todo = nframes * params.GetBytesPerFrame(kSampleFormat); - data = buffer; - while (todo > 0) { - n = sio_read(hdl, data, todo); - if (n == 0) - return; // unrecoverable I/O error - todo -= n; - data += n; - } - hw_delay -= nframes; - - // convert frames count to TimeDelta - const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, - params.sample_rate()); - - // push into bus - audio_bus->FromInterleaved(buffer, nframes, SampleFormatToBytesPerChannel(kSampleFormat)); - - // invoke callback - callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.); - } -} - -} // namespace media diff --git a/srcpkgs/electron24/files/sndio-files/sndio_input.h b/srcpkgs/electron24/files/sndio-files/sndio_input.h deleted file mode 100644 index d868e0469db..00000000000 --- a/srcpkgs/electron24/files/sndio-files/sndio_input.h +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ -#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ - -#include -#include -#include - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "base/time/time.h" -#include "media/audio/agc_audio_stream.h" -#include "media/audio/audio_io.h" -#include "media/audio/audio_device_description.h" -#include "media/base/audio_parameters.h" - -namespace media { - -class AudioManagerBase; - -// Implementation of AudioOutputStream using sndio(7) -class SndioAudioInputStream : public AgcAudioStream { - public: - // Pass this to the constructor if you want to attempt auto-selection - // of the audio recording device. - static const char kAutoSelectDevice[]; - - // Create a PCM Output stream for the SNDIO device identified by - // |device_name|. If unsure of what to use for |device_name|, use - // |kAutoSelectDevice|. - SndioAudioInputStream(AudioManagerBase* audio_manager, - const std::string& device_name, - const AudioParameters& params); - - ~SndioAudioInputStream() override; - - // Implementation of AudioInputStream. - bool Open() override; - void Start(AudioInputCallback* callback) override; - void Stop() override; - void Close() override; - double GetMaxVolume() override; - void SetVolume(double volume) override; - double GetVolume() override; - bool IsMuted() override; - void SetOutputDeviceForAec(const std::string& output_device_id) override; - - private: - - enum StreamState { - kClosed, // Not opened yet - kStopped, // Device opened, but not started yet - kRunning, // Started, device playing - kStopWait // Stopping, waiting for the real-time thread to exit - }; - - // C-style call-backs - static void OnMoveCallback(void *arg, int delta); - static void* ThreadEntry(void *arg); - - // Continuously moves data from the device to the consumer - void ThreadLoop(); - // Our creator, the audio manager needs to be notified when we close. - AudioManagerBase* manager; - // Parameters of the source - AudioParameters params; - // We store data here for consumer - std::unique_ptr audio_bus; - // Call-back that consumes recorded data - AudioInputCallback* callback; // Valid during a recording session. - // Handle of the audio device - struct sio_hdl* hdl; - // Current state of the stream - enum StreamState state; - // High priority thread running ThreadLoop() - pthread_t thread; - // Number of frames buffered in the hardware - int hw_delay; - // Temporary buffer where data is stored sndio-compatible format - char* buffer; - - DISALLOW_COPY_AND_ASSIGN(SndioAudioInputStream); -}; - -} // namespace media - -#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ diff --git a/srcpkgs/electron24/files/sndio-files/sndio_output.cc b/srcpkgs/electron24/files/sndio-files/sndio_output.cc deleted file mode 100644 index a6719f9aac8..00000000000 --- a/srcpkgs/electron24/files/sndio-files/sndio_output.cc +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/logging.h" -#include "base/time/time.h" -#include "base/time/default_tick_clock.h" -#include "media/audio/audio_manager_base.h" -#include "media/base/audio_timestamp_helper.h" -#include "media/audio/sndio/sndio_output.h" - -namespace media { - -static const SampleFormat kSampleFormat = kSampleFormatS16; - -void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) { - SndioAudioOutputStream* self = static_cast(arg); - - self->hw_delay -= delta; -} - -void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) { - SndioAudioOutputStream* self = static_cast(arg); - - self->vol = vol; -} - -void *SndioAudioOutputStream::ThreadEntry(void *arg) { - SndioAudioOutputStream* self = static_cast(arg); - - self->ThreadLoop(); - return NULL; -} - -SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params, - AudioManagerBase* manager) - : manager(manager), - params(params), - audio_bus(AudioBus::Create(params)), - state(kClosed), - mutex(PTHREAD_MUTEX_INITIALIZER) { -} - -SndioAudioOutputStream::~SndioAudioOutputStream() { - if (state != kClosed) - Close(); -} - -bool SndioAudioOutputStream::Open() { - struct sio_par par; - int sig; - - if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && - params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { - LOG(WARNING) << "Unsupported audio format."; - return false; - } - sio_initpar(&par); - par.rate = params.sample_rate(); - par.pchan = params.channels(); - par.bits = SampleFormatToBitsPerChannel(kSampleFormat); - par.bps = par.bits / 8; - par.sig = sig = par.bits != 8 ? 1 : 0; - par.le = SIO_LE_NATIVE; - par.appbufsz = params.frames_per_buffer(); - - hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0); - if (hdl == NULL) { - LOG(ERROR) << "Couldn't open audio device."; - return false; - } - if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { - LOG(ERROR) << "Couldn't set audio parameters."; - goto bad_close; - } - if (par.rate != (unsigned int)params.sample_rate() || - par.pchan != (unsigned int)params.channels() || - par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || - par.sig != (unsigned int)sig || - (par.bps > 1 && par.le != SIO_LE_NATIVE) || - (par.bits != par.bps * 8)) { - LOG(ERROR) << "Unsupported audio parameters."; - goto bad_close; - } - state = kStopped; - volpending = 0; - vol = 0; - buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; - sio_onmove(hdl, &OnMoveCallback, this); - sio_onvol(hdl, &OnVolCallback, this); - return true; - bad_close: - sio_close(hdl); - return false; -} - -void SndioAudioOutputStream::Close() { - if (state == kClosed) - return; - if (state == kRunning) - Stop(); - state = kClosed; - delete [] buffer; - sio_close(hdl); - manager->ReleaseOutputStream(this); // Calls the destructor -} - -void SndioAudioOutputStream::Start(AudioSourceCallback* callback) { - state = kRunning; - hw_delay = 0; - source = callback; - sio_start(hdl); - if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { - LOG(ERROR) << "Failed to create real-time thread."; - sio_stop(hdl); - state = kStopped; - } -} - -void SndioAudioOutputStream::Stop() { - if (state == kStopped) - return; - state = kStopWait; - pthread_join(thread, NULL); - sio_stop(hdl); - state = kStopped; -} - -void SndioAudioOutputStream::SetVolume(double v) { - pthread_mutex_lock(&mutex); - vol = v * SIO_MAXVOL; - volpending = 1; - pthread_mutex_unlock(&mutex); -} - -void SndioAudioOutputStream::GetVolume(double* v) { - pthread_mutex_lock(&mutex); - *v = vol * (1. / SIO_MAXVOL); - pthread_mutex_unlock(&mutex); -} - -// This stream is always used with sub second buffer sizes, where it's -// sufficient to simply always flush upon Start(). -void SndioAudioOutputStream::Flush() {} - -void SndioAudioOutputStream::ThreadLoop(void) { - int avail, count, result; - - while (state == kRunning) { - // Update volume if needed - pthread_mutex_lock(&mutex); - if (volpending) { - volpending = 0; - sio_setvol(hdl, vol); - } - pthread_mutex_unlock(&mutex); - - // Get data to play - const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, - params.sample_rate()); - count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get()); - audio_bus->ToInterleaved(count, SampleFormatToBytesPerChannel(kSampleFormat), buffer); - if (count == 0) { - // We have to submit something to the device - count = audio_bus->frames(); - memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat)); - LOG(WARNING) << "No data to play, running empty cycle."; - } - - // Submit data to the device - avail = count * params.GetBytesPerFrame(kSampleFormat); - result = sio_write(hdl, buffer, avail); - if (result == 0) { - LOG(WARNING) << "Audio device disconnected."; - break; - } - - // Update hardware pointer - hw_delay += count; - } -} - -} // namespace media diff --git a/srcpkgs/electron24/files/sndio-files/sndio_output.h b/srcpkgs/electron24/files/sndio-files/sndio_output.h deleted file mode 100644 index ead220ca96e..00000000000 --- a/srcpkgs/electron24/files/sndio-files/sndio_output.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ -#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ - -#include -#include - -#include "base/time/tick_clock.h" -#include "base/time/time.h" -#include "media/audio/audio_io.h" - -namespace media { - -class AudioManagerBase; - -// Implementation of AudioOutputStream using sndio(7) -class SndioAudioOutputStream : public AudioOutputStream { - public: - // The manager is creating this object - SndioAudioOutputStream(const AudioParameters& params, - AudioManagerBase* manager); - virtual ~SndioAudioOutputStream(); - - // Implementation of AudioOutputStream. - bool Open() override; - void Close() override; - void Start(AudioSourceCallback* callback) override; - void Stop() override; - void SetVolume(double volume) override; - void GetVolume(double* volume) override; - void Flush() override; - - friend void sndio_onmove(void *arg, int delta); - friend void sndio_onvol(void *arg, unsigned int vol); - friend void *sndio_threadstart(void *arg); - - private: - enum StreamState { - kClosed, // Not opened yet - kStopped, // Device opened, but not started yet - kRunning, // Started, device playing - kStopWait // Stopping, waiting for the real-time thread to exit - }; - - // C-style call-backs - static void OnMoveCallback(void *arg, int delta); - static void OnVolCallback(void *arg, unsigned int vol); - static void* ThreadEntry(void *arg); - - // Continuously moves data from the producer to the device - void ThreadLoop(void); - - // Our creator, the audio manager needs to be notified when we close. - AudioManagerBase* manager; - // Parameters of the source - AudioParameters params; - // Source stores data here - std::unique_ptr audio_bus; - // Call-back that produces data to play - AudioSourceCallback* source; - // Handle of the audio device - struct sio_hdl* hdl; - // Current state of the stream - enum StreamState state; - // High priority thread running ThreadLoop() - pthread_t thread; - // Protects vol, volpending and hw_delay - pthread_mutex_t mutex; - // Current volume in the 0..SIO_MAXVOL range - int vol; - // Set to 1 if volumes must be refreshed in the realtime thread - int volpending; - // Number of frames buffered in the hardware - int hw_delay; - // Temporary buffer where data is stored sndio-compatible format - char* buffer; - - DISALLOW_COPY_AND_ASSIGN(SndioAudioOutputStream); -}; - -} // namespace media - -#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ diff --git a/srcpkgs/electron24/files/sndio-patches/media_audio_linux_audio_manager_linux.cc.patch b/srcpkgs/electron24/files/sndio-patches/media_audio_linux_audio_manager_linux.cc.patch deleted file mode 100644 index cf8e81b11d6..00000000000 --- a/srcpkgs/electron24/files/sndio-patches/media_audio_linux_audio_manager_linux.cc.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/chromium/media/audio/linux/audio_manager_linux.cc b/chromium/media/audio/linux/audio_manager_linux.cc -index 5d703549372..9e60b40c749 100644 ---- media/audio/linux/audio_manager_linux.cc -+++ media/audio/linux/audio_manager_linux.cc -@@ -20,6 +20,10 @@ - #include "media/audio/pulse/audio_manager_pulse.h" - #include "media/audio/pulse/pulse_util.h" - #endif -+#if defined(USE_SNDIO) -+#include -+#include "media/audio/openbsd/audio_manager_openbsd.h" -+#endif - - namespace media { - -@@ -27,7 +31,8 @@ enum LinuxAudioIO { - kPulse, - kAlsa, - kCras, -- kAudioIOMax = kCras // Must always be equal to largest logged entry. -+ kSndio, -+ kAudioIOMax = kSndio // Must always be equal to largest logged entry. - }; - - std::unique_ptr CreateAudioManager( -@@ -41,6 +46,17 @@ std::unique_ptr CreateAudioManager( - } - #endif - -+#if defined(USE_SNDIO) -+ struct sio_hdl * hdl = NULL; -+ if ((hdl=sio_open(SIO_DEVANY, SIO_PLAY, 1)) != NULL) { -+ sio_close(hdl); -+ UMA_HISTOGRAM_ENUMERATION("Media.LinuxAudioIO", kSndio, kAudioIOMax +1); -+ return std::make_unique(std::move(audio_thread), -+ audio_log_factory); -+ } -+ DVLOG(1) << "Sndio is not available on the OS"; -+#endif -+ - #if defined(USE_PULSEAUDIO) - pa_threaded_mainloop* pa_mainloop = nullptr; - pa_context* pa_context = nullptr; diff --git a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_BUILD.gn.patch b/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_BUILD.gn.patch deleted file mode 100644 index ec604002668..00000000000 --- a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_BUILD.gn.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- media/BUILD.gn 2020-03-24 10:16:30.000000000 +0100 -+++ - 2020-04-06 14:32:27.960817513 +0200 -@@ -65,6 +65,9 @@ - if (use_cras) { - defines += [ "USE_CRAS" ] - } -+ if (use_sndio) { -+ defines += [ "USE_SNDIO" ] -+ } - } - - # Internal grouping of the configs necessary to support sub-folders having their diff --git a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_audio_BUILD.gn.patch b/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_audio_BUILD.gn.patch deleted file mode 100644 index c856de0bf2e..00000000000 --- a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_audio_BUILD.gn.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- media/audio/BUILD.gn 2020-03-24 10:16:30.000000000 +0100 -+++ - 2020-04-06 14:31:28.871450217 +0200 -@@ -232,9 +232,19 @@ - deps += [ "//media/base/android:media_jni_headers" ] - } - -- if (is_linux) { -+ if (is_linux) { - sources += [ "linux/audio_manager_linux.cc" ] - } -+ if (use_sndio) { -+ libs += [ "sndio" ] -+ sources += [ -+ "openbsd/audio_manager_openbsd.cc", -+ "sndio/sndio_input.cc", -+ "sndio/sndio_input.h", -+ "sndio/sndio_output.cc", -+ "sndio/sndio_output.h" -+ ] -+ } - - if (use_alsa) { - libs += [ "asound" ] diff --git a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_media__options.gni.patch b/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_media__options.gni.patch deleted file mode 100644 index 14807d8e1d3..00000000000 --- a/srcpkgs/electron24/files/sndio-patches/src_3rdparty_chromium_media_media__options.gni.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- media/media_options.gni 2020-03-24 10:16:30.000000000 +0100 -+++ - 2020-04-06 14:29:22.958630783 +0200 -@@ -114,6 +114,9 @@ - # Enables runtime selection of ALSA library for audio. - use_alsa = false - -+ # Enables runtime selection of sndio library for audio. -+ use_sndio = false -+ - # Alsa should be used on non-Android, non-Mac POSIX systems. - # Alsa should be used on desktop Chromecast and audio-only Chromecast builds. - if (is_posix && !is_android && !is_mac && diff --git a/srcpkgs/electron24/patches/fix-include.patch b/srcpkgs/electron24/patches/fix-include.patch deleted file mode 100644 index df95325690d..00000000000 --- a/srcpkgs/electron24/patches/fix-include.patch +++ /dev/null @@ -1,403 +0,0 @@ ---- a/src/base/debug/profiler.h -+++ b/src/base/debug/profiler.h -@@ -6,7 +6,7 @@ - #define BASE_DEBUG_PROFILER_H_ - - #include -- -+#include - #include - - #include "base/base_export.h" ---- a/src/cc/trees/target_property.cc -+++ b/src/cc/trees/target_property.cc -@@ -5,6 +5,7 @@ - #include "cc/trees/target_property.h" - - #include "ui/gfx/animation/keyframe/target_property.h" -+#include - - namespace cc { - ---- a/src/components/crash/core/app/crash_reporter_client.h -+++ b/src/components/crash/core/app/crash_reporter_client.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_ - #define COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_ - -+#include - #include - #include - ---- a/src/components/feature_engagement/internal/event_storage_validator.h -+++ b/src/components/feature_engagement/internal/event_storage_validator.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ - #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ - -+#include - #include - - namespace feature_engagement { ---- a/src/components/password_manager/core/browser/generation/password_generator.h -+++ b/src/components/password_manager/core/browser/generation/password_generator.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ - #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ - -+#include - #include - - ---- a/src/components/viz/common/view_transition_element_resource_id.h -+++ b/src/components/viz/common/view_transition_element_resource_id.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_VIZ_COMMON_VIEW_TRANSITION_ELEMENT_RESOURCE_ID_H_ - #define COMPONENTS_VIZ_COMMON_VIEW_TRANSITION_ELEMENT_RESOURCE_ID_H_ - -+#include - #include - #include - ---- a/src/device/base/synchronization/one_writer_seqlock.h -+++ b/src/device/base/synchronization/one_writer_seqlock.h -@@ -6,6 +6,7 @@ - #define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_ - - #include -+#include - #include - - #include "base/atomicops.h" ---- a/src/gpu/config/gpu_feature_info.h -+++ b/src/gpu/config/gpu_feature_info.h -@@ -5,6 +5,7 @@ - #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ - #define GPU_CONFIG_GPU_FEATURE_INFO_H_ - -+#include - #include - #include - ---- a/src/net/cert/pki/string_util.h -+++ b/src/net/cert/pki/string_util.h -@@ -7,6 +7,7 @@ - - #include "net/base/net_export.h" - -+#include - #include - #include - ---- a/src/net/cookies/cookie_inclusion_status.h -+++ b/src/net/cookies/cookie_inclusion_status.h -@@ -5,6 +5,7 @@ - #ifndef NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ - #define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ - -+#include - #include - #include - #include ---- a/src/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h -+++ b/src/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h -@@ -5,6 +5,7 @@ - #ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ - #define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ - -+#include - #include - - #include "absl/strings/string_view.h" ---- a/src/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h -+++ b/src/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h -@@ -5,6 +5,7 @@ - #ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ - #define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ - -+#include - #include - #include - ---- a/src/third_party/dawn/src/dawn/native/stream/ByteVectorSink.h -+++ b/src/third_party/dawn/src/dawn/native/stream/ByteVectorSink.h -@@ -15,6 +15,7 @@ - #ifndef SRC_DAWN_NATIVE_STREAM_BYTEVECTORSINK_H_ - #define SRC_DAWN_NATIVE_STREAM_BYTEVECTORSINK_H_ - -+#include - #include - #include - ---- a/src/third_party/maldoca/src/maldoca/ole/header.h -+++ b/src/third_party/maldoca/src/maldoca/ole/header.h -@@ -43,6 +43,7 @@ - #ifndef MALDOCA_OLE_HEADER_H_ - #define MALDOCA_OLE_HEADER_H_ - -+#include - #include "absl/strings/string_view.h" - - namespace maldoca { ---- a/src/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h -+++ b/src/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h -@@ -5,6 +5,7 @@ - #ifndef DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_ - #define DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_ - -+#include - #include - #include - #include ---- a/src/third_party/openscreen/src/util/base64.h -+++ b/src/third_party/openscreen/src/util/base64.h -@@ -5,6 +5,7 @@ - #ifndef UTIL_BASE64_H_ - #define UTIL_BASE64_H_ - -+#include - #include - #include - ---- a/src/third_party/perfetto/include/perfetto/ext/base/uuid.h -+++ b/src/third_party/perfetto/include/perfetto/ext/base/uuid.h -@@ -18,6 +18,7 @@ - #define INCLUDE_PERFETTO_EXT_BASE_UUID_H_ - - #include -+#include - #include - - #include "perfetto/ext/base/optional.h" ---- a/src/third_party/ruy/src/ruy/profiler/instrumentation.h -+++ b/src/third_party/ruy/src/ruy/profiler/instrumentation.h -@@ -20,6 +20,7 @@ limitations under the License. - #include - #include - #include -+#include - #endif - - namespace ruy { ---- a/src/third_party/swiftshader/src/System/LRUCache.hpp -+++ b/src/third_party/swiftshader/src/System/LRUCache.hpp -@@ -18,6 +18,7 @@ - #include "System/Debug.hpp" - - #include -+#include - #include - #include - #include ---- a/src/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.cc -+++ b/src/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.cc -@@ -17,6 +17,7 @@ limitations under the License. - - #include - #include -+#include - - #include "third_party/fft2d/fft.h" - ---- a/src/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -+++ b/src/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -@@ -2389,6 +2389,7 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeV - #undef VMA_IMPLEMENTATION - - #include -+#include - #include - #include - #include ---- a/src/third_party/webrtc/rtc_base/third_party/base64/base64.h -+++ b/src/third_party/webrtc/rtc_base/third_party/base64/base64.h -@@ -12,6 +12,7 @@ - #ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ - #define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ - -+#include - #include - #include - ---- a/src/ui/base/prediction/kalman_filter.h -+++ b/src/ui/base/prediction/kalman_filter.h -@@ -5,6 +5,7 @@ - #ifndef UI_BASE_PREDICTION_KALMAN_FILTER_H_ - #define UI_BASE_PREDICTION_KALMAN_FILTER_H_ - -+#include - #include "base/component_export.h" - #include "ui/gfx/geometry/matrix3_f.h" - ---- a/src/ui/events/types/scroll_types.h -+++ b/src/ui/events/types/scroll_types.h -@@ -5,6 +5,8 @@ - #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ - #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ - -+#include -+ - namespace ui { - - enum class ScrollGranularity : uint8_t { ---- a/src/ui/gfx/geometry/linear_gradient.h -+++ b/src/ui/gfx/geometry/linear_gradient.h -@@ -6,6 +6,7 @@ - #define UI_GFX_LINEAR_GRADIENT_H_ - - #include -+#include - #include - - #include "ui/gfx/geometry/geometry_skia_export.h" ---- a/src/components/autofill/core/browser/autofill_ablation_study.h -+++ b/src/components/autofill/core/browser/autofill_ablation_study.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ - #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ - -+#include - #include - - class GURL; ---- a/src/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h -+++ b/src/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h -@@ -6,6 +6,7 @@ - #define THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_ - - #include -+#include - #include - - #include "third_party/blink/public/common/common_export.h" ---- a/src/gin/time_clamper.h -+++ b/src/gin/time_clamper.h -@@ -6,6 +6,7 @@ - #define GIN_TIME_CLAMPER_H_ - - #include -+#include - - #include "base/rand_util.h" - #include "base/time/time.h" ---- a/src/pdf/document_attachment_info.h -+++ b/src/pdf/document_attachment_info.h -@@ -5,6 +5,7 @@ - #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_ - #define PDF_DOCUMENT_ATTACHMENT_INFO_H_ - -+#include - #include - - ---- a/src/third_party/pdfium/constants/annotation_flags.h -+++ b/src/third_party/pdfium/constants/annotation_flags.h -@@ -5,6 +5,8 @@ - #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ - #define CONSTANTS_ANNOTATION_FLAGS_H_ - -+#include -+ - namespace pdfium { - namespace annotation_flags { - ---- a/src/third_party/openscreen/src/platform/base/error.h -+++ b/src/third_party/openscreen/src/platform/base/error.h -@@ -6,6 +6,7 @@ - #define PLATFORM_BASE_ERROR_H_ - - #include -+#include - #include - #include - #include ---- a/src/third_party/dawn/src/tint/reader/wgsl/token.h -+++ b/src/third_party/dawn/src/tint/reader/wgsl/token.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_READER_WGSL_TOKEN_H_ - #define SRC_TINT_READER_WGSL_TOKEN_H_ - -+#include - #include - #include - #include ---- a/src/third_party/webrtc/rtc_base/system/file_wrapper.h -+++ b/src/third_party/webrtc/rtc_base/system/file_wrapper.h -@@ -12,6 +12,7 @@ - #define RTC_BASE_SYSTEM_FILE_WRAPPER_H_ - - #include -+#include - #include - - #include ---- a/src/components/dom_distiller/core/url_utils.h -+++ b/src/components/dom_distiller/core/url_utils.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ - #define COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ - -+#include - #include - - #include "base/strings/string_piece_forward.h" ---- a/src/gpu/config/gpu_driver_bug_workarounds.h -+++ b/src/gpu/config/gpu_driver_bug_workarounds.h -@@ -5,6 +5,7 @@ - #ifndef GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ - #define GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ - -+#include - #include - - #include "build/build_config.h" ---- a/src/media/base/video_transformation.h -+++ b/src/media/base/video_transformation.h -@@ -5,6 +5,7 @@ - #ifndef MEDIA_BASE_VIDEO_TRANSFORMATION_H_ - #define MEDIA_BASE_VIDEO_TRANSFORMATION_H_ - -+#include - #include - - #include "base/numerics/math_constants.h" ---- a/src/third_party/blink/public/common/page_state/page_state.h -+++ b/src/third_party/blink/public/common/page_state/page_state.h -@@ -5,6 +5,7 @@ - #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ - #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ - -+#include - #include - #include - ---- a/src/components/autofill/core/browser/strike_databases/strike_database_base.h -+++ b/src/components/autofill/core/browser/strike_databases/strike_database_base.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ - #define COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ - -+#include - #include - #include - #include ---- a/src/ui/accessibility/ax_text_attributes.h -+++ b/src/ui/accessibility/ax_text_attributes.h -@@ -5,6 +5,7 @@ - #ifndef UI_ACCESSIBILITY_AX_TEXT_ATTRIBUTES_H_ - #define UI_ACCESSIBILITY_AX_TEXT_ATTRIBUTES_H_ - -+#include - #include - #include - ---- a/src/v8/src/heap/cppgc/stats-collector.h -+++ b/src/v8/src/heap/cppgc/stats-collector.h -@@ -8,6 +8,7 @@ - #include - #include - -+#include - #include - #include - diff --git a/srcpkgs/electron24/patches/libxml2.patch b/srcpkgs/electron24/patches/libxml2.patch deleted file mode 100644 index 91e0b5cd563..00000000000 --- a/srcpkgs/electron24/patches/libxml2.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/src/third_party/blink/renderer/core/xml/xslt_processor.h -+++ b/src/third_party/blink/renderer/core/xml/xslt_processor.h -@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip - - void reset(); - -- static void ParseErrorFunc(void* user_data, xmlError*); -+ static void ParseErrorFunc(void* user_data, const xmlError*); - static void GenericErrorFunc(void* user_data, const char* msg, ...); - - // Only for libXSLT callbacks ---- a/src/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc -+++ b/src/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc -@@ -65,7 +65,7 @@ void XSLTProcessor::GenericErrorFunc(voi - // It would be nice to do something with this error message. - } - --void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) { -+void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) { - FrameConsole* console = static_cast(user_data); - if (!console) - return; diff --git a/srcpkgs/electron24/template b/srcpkgs/electron24/template deleted file mode 100644 index 632348ffae2..00000000000 --- a/srcpkgs/electron24/template +++ /dev/null @@ -1,452 +0,0 @@ -# Template file for 'electron24' -pkgname=electron24 -version=24.3.0 -revision=4 -_nodever=18.14.0 -_chromiumver=112.0.5615.165 -archs="x86_64* aarch64*" -create_wrksrc=yes -build_wrksrc="src" -hostmakedepends="$(vopt_if clang "clang lld") pkgconf perl gperf bison ninja nodejs hwids - libwebp-devel freetype-devel harfbuzz-devel libpng-devel nss-devel which git libevent-devel - pciutils-devel ffmpeg-devel libxml2-devel libglib-devel yarn openjdk8 libxslt-devel - opus-devel libXcursor-devel libXcomposite-devel libXtst-devel libXrandr-devel libXScrnSaver-devel - alsa-lib-devel re2-devel snappy-devel mit-krb5-devel $(vopt_if pulseaudio pulseaudio-devel) - $(vopt_if sndio sndio-devel) jq python3.11 gn" -makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel - libXi-devel libgcrypt-devel libsecret-devel cups-devel elfutils-devel - libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel - libXScrnSaver-devel alsa-lib-devel snappy-devel libdrm-devel - libxml2-devel libxslt-devel $(vopt_if pulseaudio pulseaudio-devel) libexif-devel - libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel - libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel - minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel - re2-devel fontconfig-devel freetype-devel opus-devel libffi-devel - $(vopt_if sndio sndio-devel) ffmpeg-devel libva-devel libuv-devel c-ares-devel libnotify-devel - $(vopt_if pipewire pipewire-devel) wayland-devel libcurl-devel libxshmfence-devel" -short_desc="Cross platform application framework based on web technologies" -maintainer="John " -license="BSD-3-Clause" -homepage="https://electronjs.org" -distfiles="https://github.com/electron/electron/archive/v$version.tar.gz>electron-${version}.tar.gz - https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$_chromiumver.tar.xz - https://github.com/nodejs/node/archive/v$_nodever.tar.gz>node-$_nodever.tar.gz" -checksum="3359336061436701b6eebc589559753d240bd8fb8c92d5c944563d2cbf0f6762 - 168c62fea9f428f99fbf967f36a75ee5da160429e3a5b86bf02188c5fe7c79fd - 31bbccdff73269baebcc9f32c2ffe428f28be79841527c63e95da93e8c630829" - -case "$XBPS_TARGET_MACHINE" in - ppc64*-musl) makedepends+=" libucontext-devel" ;; -esac - -if [ "$XBPS_LIBC" = musl ]; then - hostmakedepends+=" musl-legacy-compat" -fi - -if [ "$XBPS_TARGET_LIBC" = "musl" ]; then - makedepends+=" musl-legacy-compat" -fi - -broken="components/feedback/redaction_tool/redaction_tool.cc:280:18: error: no member named 'ends_with' in 'absl::string_view'" - -no_generic_pkgconfig_link=yes -lib32disabled=yes -nopie=yes # contains tools that are not PIE, enables PIE itself - -build_options="pulseaudio sndio clang pipewire" -build_options_default="pulseaudio clang pipewire" - -#if [ "$build_option_clang" ]; then -nocross="Yes" -#elif [ "${XBPS_TARGET_MACHINE%%-musl}" = "aarch64" ]; then -# broken="Falls apart at runtime when compiled with gcc" -#fi - -_buildtype=Release -_is_debug=false - -CFLAGS="-Wno-unknown-warning-option -fPIC" -CXXFLAGS="-Wno-unknown-warning-option -fPIC" - -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - if [ -f "${2}.args" ]; then - args=$(<"${2}.args") - fi - msg_normal "$pkgver: patching: ${pname}.\n" - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_git_am() { - local pname="$(basename $1)" - - if [ ! -f ".${pname}_done" ]; then - msg_normal "$pkgver: patching: ${pname}.\n" - git -c 'user.name=Electron build' -c 'user.email=electron@ebuild' \ - am --exclude "third_party/blink/tools/**" \ - --exclude "test/mjsunit/**" --exclude "content/test/**" \ - --exclude "test/cctest/**" --exclude "test/unittests/**" \ - --exclude "third_party/blink/web_tests/**" \ - --exclude "chrome/test/**" \ - $1 - touch .${pname}_done - fi -} - - -_get_chromium_arch() { - case "$1" in - x86_64*) echo x64 ;; - i686*) echo x86 ;; - arm*) echo arm ;; - aarch64*) echo arm64 ;; - ppc64*) echo ppc64 ;; - ppc*) echo ppc ;; - mipsel*) echo mipsel ;; - mips*) echo mips ;; - *) msg_error "$pkgver: cannot be compiled for ${XBPS_TARGET_MACHINE}.\n" ;; - esac -} - -post_extract() { - mv chromium-${_chromiumver} src - mkdir -p src/third_party/ - mv node-$_nodever src/third_party/electron_node - mv electron-${version} src/electron -} - -_git_init() { - repopath="$1" - cd "$wrksrc"/"$repopath" - git init -q - git config "gc.auto" 0 - if [ "$repopath" != "src" ]; then - echo "/${repopath#src/}" >> "$wrksrc/$build_wrksrc/.gitignore" - fi - git add . - git -c 'user.name=Electron build' -c 'user.email=electron@ebuild' \ - commit -q -m "." || true - -} - -pre_patch() { - cd $wrksrc - for x in $FILESDIR/patches/*.patch; do - case "${x##*/}" in - electron*.patch) - cd src/electron - _apply_patch -p1 "$x" - cd "$wrksrc";; - esac - done - - # Sigh, electron uses git am... - if [ ! -f ".electron_patches_done" ]; then - mv src/electron/patches/config.json config.json.old - jq 'del(."src/electron/patches/Mantle", ."src/electron/patches/ReactiveObjC", - ."src/electron/patches/squirrel.mac", ."src/electron/patches/nan")' \ - config.json.old > src/electron/patches/config.json - - python3.11 src/electron/script/list_patch_targets.py src/electron/patches/config.json | while read -r repopath; do - _git_init $repopath - done - _git_init src/electron - cd $wrksrc - - for x in $FILESDIR/chromium-upstream-patches/*.patch; do - [ -f $x ] || continue - cd src - _git_am "$x" - cd "$wrksrc" - done - - python3.11 src/electron/script/apply_all_patches.py src/electron/patches/config.json - touch .electron_patches_done - fi - - for x in $FILESDIR/patches/*; do - case "${x##*/}" in - chromium*.patch) - cd src - _apply_patch -p1 "$x" - cd "$wrksrc";; - esac - done - - if [ "$XBPS_TARGET_LIBC" = "musl" ]; then - for x in $FILESDIR/musl-patches/*; do - case "${x##*/}" in - chromium*.patch) - cd src - _apply_patch -p1 "$x" - cd "$wrksrc";; - electron*.patch) - cd src/electron - _apply_patch -p1 "$x" - cd "$wrksrc";; - esac - done - fi - if [ "$build_option_sndio" ]; then - mkdir -p ${wrksrc}/${build_wrksrc}/media/audio/{sndio,openbsd} - cp ${FILESDIR}/sndio-files/sndio_*put.* \ - ${wrksrc}/${build_wrksrc}/media/audio/sndio - cp ${FILESDIR}/sndio-files/audio_manager_openbsd.* \ - ${wrksrc}/${build_wrksrc}/media/audio/openbsd - for f in "${FILESDIR}"/sndio-patches/*.patch; do - cd src - _apply_patch -p0 "$f" - cd "$wrksrc" - done - fi - vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ - src/tools/generate_shim_headers/generate_shim_headers.py -} - -pre_configure() { - ln -sf "/usr/bin/python3.11" "${XBPS_WRAPPERDIR}/python3" - - cd "$wrksrc/$build_wrksrc" - - # https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion - touch chrome/test/data/webui/i18n_process_css_test.html - # Use the file at run time instead of effectively compiling it in - sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \ - -i services/device/public/cpp/usb/BUILD.gn - - vsed -e 's|python3.10|python3.11|g' -i third_party/electron_node/configure - vsed -e "s|(3, 10)|(3, 11)|" -i third_party/electron_node/configure - - mkdir -p third_party/node/linux/node-linux-x64/bin - ln -sf /usr/bin/node third_party/node/linux/node-linux-x64/bin/ - rm -f third_party/devtools-frontend/src/third_party/esbuild/esbuild - - # compile gn early, so it can be used to generate gni stuff - if false; then - msg_normal "Bootstrapping GN\n" - CC="${CC_FOR_BUILD:-$CC}" CXX="${CXX_FOR_BUILD:-$CXX}" LD="${LD_FOR_BUILD:-$LD}" \ - CFLAGS="${CFLAGS_FOR_BUILD:-$CFLAGS}" \ - CXXFLAGS="${CXXFLAGS_FOR_BUILD:-$CXXFLAGS} -Wno-error=redundant-move" \ - LDFLAGS="${XBPS_LDFLAGS}" \ - python3.11 tools/gn/bootstrap/bootstrap.py -s -v --skip-generate-buildfiles - fi - - # we need to generate ppc64 stuff for libvpx as it's not shipped - # this has to be done before unbundling, but after gn is built - # comment out if we switch back to system libvpx again later - case "$XBPS_TARGET_MACHINE" in - ppc64*) - pushd third_party/libvpx - mkdir -p source/config/linux/ppc64 - # need PATH to find gn - PATH="${wrksrc}/${build_wrksrc}/out/Release:$PATH" \ - ./generate_gni.sh || \ - msg_error "failed to generate libvpx gni" - popd - ;; - esac - - # reusable system library settings - local use_system=" - ffmpeg - flac - fontconfig - freetype - harfbuzz-ng - libdrm - libevent - libjpeg - libpng - libwebp - libxml - libxslt - opus - re2 - snappy - " - for _lib in $use_system libjpeg_turbo; do - msg_normal "Removing buildscripts for system provided $_lib\n" - find -type f -path "*third_party/$_lib/*" \ - \! -path "*third_party/$_lib/chromium/*" \ - \! -path "*third_party/$_lib/google/*" \ - \! -path './base/third_party/icu/*' \ - \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \ - \! -path './third_party/harfbuzz-ng/utils/hb_scoped.h' \ - \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ - -delete - done - - - msg_normal "Replacing gn files\n" - python3.11 build/linux/unbundle/replace_gn_files.py \ - --system-libraries $use_system - third_party/libaddressinput/chromium/tools/update-strings.py - - # Satisfy some scripts that use git describe to figure out the electron version - cd ${wrksrc}/src/electron - git tag -f "v${version}" -} - -do_configure() { - local target_arch="$(_get_chromium_arch ${XBPS_TARGET_MACHINE})" - local host_arch="$(_get_chromium_arch ${XBPS_MACHINE})" - # the build system will set march for use, adding it to cflags will break builds - export CXXFLAGS=$( shopt -s extglob; echo ${CXXFLAGS/-march=*([^ ])} ) - export CFLAGS=$( shopt -s extglob; echo ${CFLAGS/-march=*([^ ])} ) - export CFLAGS=${CFLAGS/-g/} - export CXXFLAGS=${CXXFLAGS/-g/} - local conf=() - cd third_party/electron_node - if [ "$CROSS_BUILD" ]; then - conf_args=" --dest-cpu=${target_arch} --cross-compiling" - fi - ./configure --prefix=/usr \ - --shared-zlib \ - --shared-libuv \ - --shared-openssl \ - --shared-cares \ - --openssl-use-def-ca-store \ - --without-npm \ - --without-dtrace \ - --without-bundled-v8 \ - ${conf_args} - - cd "$wrksrc/$build_wrksrc"/electron - yarn install --frozen-lockfile - cd "$wrksrc/$build_wrksrc" - - if [ "$build_option_clang" ]; then - export CC=clang - export CXX=clang++ - export HOST_CC=clang - export HOST_CXX=clang++ - else - export CXXFLAGS="$CXXFLAGS -fpermissive" - export BUILD_CXXFLAGS="$BUILD_CXXFLAGS -fpermissive" - export BUILD_AR="$AR_host" - export BUILD_NM="$NM_host" - fi - - conf+=( - 'import("//electron/build/args/release.gn")' - 'blink_symbol_level=0' - 'clang_use_chrome_plugins=false' - 'custom_toolchain="//build/toolchain/linux/unbundle:default"' - ) - if [ "$CROSS_BUILD" ]; then - conf+=( - 'host_toolchain="//build/toolchain/linux/unbundle:host"' - 'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:host"' - "host_pkg_config=\"$PKG_CONFIG_FOR_BUILD\"" - "pkg_config=\"$PKG_CONFIG\"" - ) - else - conf+=( - 'host_toolchain="//build/toolchain/linux/unbundle:default"' - 'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:default"' - ) - fi - if [ "$build_option_sndio" ]; then - conf+=( - 'use_sndio=true' - ) - fi - if [ -n "$XBPS_DEBUG_PKGS" ]; then - conf+=('symbol_level=1') - else - conf+=('symbol_level=0') - fi - - # this does not work on ppc64 yet - case "$XBPS_TARGET_MACHINE" in - ppc64*) conf+=( "enable_jxl_decoder=false" );; - esac - - conf+=( - 'devtools_skip_typecheck=false' - 'enable_hangout_services_extension=true' - 'enable_nacl=false' - 'enable_precompiled_headers=false' - 'fatal_linker_warnings=false' - 'ffmpeg_branding="Chrome"' - 'gold_path="/usr/bin/ld.gold"' - 'icu_use_data_file=true' - "is_clang=$(vopt_if clang true false)" - 'clang_base_path="/usr"' - - 'is_component_build=false' - "is_debug=$_is_debug" - 'proprietary_codecs=true' - 'treat_warnings_as_errors=false' - 'use_cups=true' - 'use_custom_libcxx=false' - 'use_gnome_keyring=false' - 'use_gold=false' - "use_lld=$(vopt_if clang true false)" - - 'is_cfi=false' - 'use_thin_lto=false' - 'use_cfi_icall=false' - 'chrome_pgo_phase=0' - - "use_pulseaudio=$(vopt_if pulseaudio 'true' 'false')" - "rtc_use_pipewire=$(vopt_if pipewire true false)" - 'use_sysroot=false' - 'use_system_harfbuzz=true' - 'use_system_libffi=true' - 'is_component_ffmpeg=false' - "target_cpu=\"$target_arch\"" - "host_cpu=\"$host_arch\"" - ) - - msg_normal "Configuring build\n" - if false; then - out/Release/gn gen out/$_buildtype --args="${conf[*]}" - else - gn gen out/$_buildtype --args="${conf[*]}" - fi -} - -do_build() { - export CXXFLAGS=$( shopt -s extglob; echo ${CXXFLAGS/-march=*([^ ])} ) - export CFLAGS=$( shopt -s extglob; echo ${CFLAGS/-march=*([^ ])} ) - export CFLAGS=${CFLAGS/-g/} - export CXXFLAGS=${CXXFLAGS/-g/} - if [ "$build_option_clang" ]; then - export CC=clang - export CXX=clang++ - export HOST_CC=clang - export HOST_CXX=clang++ - else - export BUILD_CXXFLAGS="$BUILD_CXXFLAGS -fpermissive" - export CXXFLAGS="$CXXFLAGS -fpermissive" - export BUILD_AR="$AR_host" - export BUILD_NM="$NM_host" - fi - msg_normal "Ninja turtles GO!\n" - ninja ${makejobs} -C out/$_buildtype electron third_party/electron_node:headers - # finish rest of the build - strip -s out/$_buildtype/electron - ninja ${makejobs} -C out/$_buildtype electron_dist_zip -} - -do_install() { - vmkdir /usr/lib/$pkgname - vmkdir /usr/include/$pkgname - bsdtar -xf out/$_buildtype/dist.zip -C "$DESTDIR/usr/lib/$pkgname" - - chmod u+s "$DESTDIR/usr/lib/$pkgname/chrome-sandbox" - - cp out/$_buildtype/gen/node_headers.tar.gz "$DESTDIR"/usr/include/$pkgname - - vlicense ${wrksrc}/src/LICENSE chromium.LICENSE - vlicense ${wrksrc}/src/electron/LICENSE electron.LICENSE - vlicense ${wrksrc}/src/third_party/electron_node/LICENSE node.LICENSE - - vmkdir /usr/bin - ln -s ../lib/$pkgname/electron "$DESTDIR"/usr/bin/$pkgname -} diff --git a/srcpkgs/electron24/update b/srcpkgs/electron24/update deleted file mode 100644 index 3af8e58b535..00000000000 --- a/srcpkgs/electron24/update +++ /dev/null @@ -1,2 +0,0 @@ -site=https://www.electronjs.org/releases/stable?version=${version%%.*} -pattern='tag/v\K[\d\.]+(?=")'