2024-02-27 19:01:54 +00:00
#
2021-06-29 20:42:56 +00:00
# spec file for package nodejs-electron
#
2022-01-27 22:16:50 +00:00
# Copyright (c) 2022 SUSE LLC
2022-01-29 19:59:26 +00:00
# Copyright (c) 2021-2022 Andreas Schneider <asn@cryptomilk.org>
2021-06-29 20:42:56 +00:00
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
2024-02-27 19:01:54 +00:00
#
2021-06-29 20:42:56 +00:00
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
2022-03-18 15:41:41 +00:00
# https://fedoraproject.org/wiki/Changes/SetBuildFlagsBuildCheck
%undefine _auto_set_build_flags
2022-02-17 22:40:10 +00:00
2021-06-29 20:42:56 +00:00
%define mod_name electron
2022-09-21 09:00:14 +00:00
# https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json
2024-09-16 18:02:24 +00:00
%define abi_version 125
2022-07-04 09:07:38 +00:00
# Do not provide libEGL.so, etc…
%define __provides_exclude ^lib.*\\.so.*$
2022-08-08 08:46:02 +00:00
# Double DWZ memory limits
%define _dwz_low_mem_die_limit 20000000
%define _dwz_max_die_limit 100000000
2022-07-04 09:07:38 +00:00
#x86 requires SSE2
2022-09-21 09:00:14 +00:00
#see v8/src/codegen/ia32/assembler-ia32.cc
2022-07-04 09:07:38 +00:00
%ifarch %ix86
ExclusiveArch : i586 i686
BuildArch : i686
%{expand:%%global optflags %(echo " % o p t f l a g s " ) -march=pentium4 -mtune=generic}
%endif
2021-06-29 20:42:56 +00:00
%bcond_without pipewire
2022-07-04 09:07:38 +00:00
2022-12-07 09:53:09 +00:00
%bcond_without swiftshader
2023-03-10 06:02:08 +00:00
%ifarch %ix86 x86_64 %x86_64 %arm
2022-07-04 09:07:38 +00:00
#Use subzero as swiftshader backend instead of LLVM
%bcond_without subzero
2021-06-29 20:42:56 +00:00
%else
2022-07-04 09:07:38 +00:00
%bcond_with subzero
2021-06-29 20:42:56 +00:00
%endif
2022-07-04 09:07:38 +00:00
2024-04-30 18:32:00 +00:00
#Not enabling this yet, as of electron 29 there are minor font rendering issues in menu, and the benefits are dubious
#(all the widgets use Gtk unconditionally — not sure which of the changed codepaths are used in Electron)
2022-12-07 09:53:09 +00:00
%bcond_with qt
2022-07-04 09:07:38 +00:00
2024-08-31 09:02:17 +00:00
%ifarch %ix86
2024-07-04 04:31:28 +00:00
#work around npm rebuild crashes on OBS
%global jitless NODE_OPTIONS=--jitless
%endif
2022-07-04 09:07:38 +00:00
2024-04-19 21:15:15 +00:00
%ifarch aarch64 riscv64
#Video acceleration API to support. Useful for e.g. signal messenger.
#One cannot enable both, unfortunately.
#Apparently more arm hardware supports v4l2 than vaapi,
#but that code does not build on armv{6,7}hl due to too high cpu requirements.
#bcond_without v4l2
#bcond_with vaapi
%else
#bcond_with v4l2
#bcond_without vaapi
%endif
#DISABLING THIS — cannot use video acceleration with system aom/vpx
%bcond_with v4l2
%bcond_with vaapi
2022-07-04 09:07:38 +00:00
2024-09-14 08:17:25 +00:00
%ifarch %arm aarch64 riscv64
%bcond_with gdbjit
%else
%bcond_without gdbjit
%endif
2022-08-08 08:46:02 +00:00
2024-07-20 10:06:30 +00:00
%ifnarch %ix86 %arm aarch64
2023-09-26 06:32:03 +00:00
%if (0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora})
2022-10-26 04:51:48 +00:00
%bcond_without lto
%else
2022-09-23 06:20:34 +00:00
%bcond_with lto
2022-10-26 04:51:48 +00:00
%endif
2024-07-20 10:06:30 +00:00
%endif
2022-10-26 04:51:48 +00:00
2024-07-20 10:06:30 +00:00
%ifarch %ix86 %arm
2022-10-26 04:51:48 +00:00
%bcond_with lto
2022-09-23 06:20:34 +00:00
%endif
2022-07-04 09:07:38 +00:00
2024-07-20 10:06:30 +00:00
%ifarch aarch64
%bcond_with lto
%endif
2024-09-05 05:02:09 +00:00
%ifarch aarch64
%if 0%{?suse_version}
%bcond_without mold
%else
%bcond_with mold
%endif
%else
%bcond_with mold
%endif
2022-10-04 19:13:55 +00:00
2024-01-17 22:28:47 +00:00
2024-02-24 18:35:27 +00:00
%if 0%{?suse_version} || 0%{?fedora} < 40
%bcond_without system_minizip
%else
%bcond_with system_minizip
%endif
2022-07-04 09:07:38 +00:00
2024-02-22 08:55:18 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora}
2023-09-13 05:00:47 +00:00
%bcond_without system_aom
2024-02-22 08:55:18 +00:00
%bcond_without system_spirv
%bcond_without harfbuzz_5
2024-03-21 10:21:55 +00:00
%bcond_without link_vulkan
2024-04-19 21:15:15 +00:00
%bcond_without wayland_32
2023-03-20 07:15:32 +00:00
%else
2023-09-13 05:00:47 +00:00
%bcond_with system_aom
2024-02-22 08:55:18 +00:00
%bcond_with system_spirv
%bcond_with harfbuzz_5
2024-03-21 10:21:55 +00:00
%bcond_with link_vulkan
2024-04-19 21:15:15 +00:00
%bcond_with wayland_32
2023-03-20 07:15:32 +00:00
%endif
2023-10-19 17:09:42 +00:00
2023-09-13 04:57:45 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600
2022-08-08 08:46:02 +00:00
%bcond_without system_yuv
2022-07-04 09:07:38 +00:00
%else
2022-08-08 08:46:02 +00:00
%bcond_with system_yuv
2022-07-04 09:07:38 +00:00
%endif
2024-02-22 08:55:18 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora}
%bcond_without system_vpx
2024-02-27 19:01:54 +00:00
%bcond_without bro_11
2024-04-19 21:15:15 +00:00
%bcond_without ffmpeg_6
2024-02-27 19:01:54 +00:00
%else
2024-08-14 22:08:54 +00:00
%bcond_with system_vpx
2024-02-27 19:01:54 +00:00
%bcond_with bro_11
2024-04-19 21:15:15 +00:00
%bcond_with ffmpeg_6
2024-02-27 19:01:54 +00:00
%endif
2024-02-22 08:55:18 +00:00
2024-08-31 09:02:17 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora} >= 40
%bcond_without gcc14
%else
%bcond_with gcc14
%endif
2024-02-22 08:55:18 +00:00
2022-09-21 09:00:14 +00:00
2022-07-04 09:07:38 +00:00
%if 0%{?fedora}
2022-07-07 08:02:56 +00:00
%bcond_without system_llhttp
%bcond_without system_histogram
2022-07-04 09:07:38 +00:00
%else
2022-07-07 08:02:56 +00:00
%bcond_with system_llhttp
%bcond_with system_histogram
2023-10-16 08:59:19 +00:00
%endif
2024-02-22 08:55:18 +00:00
2024-03-28 10:22:12 +00:00
%if 0%{?fedora} >= 39
2023-10-16 08:59:19 +00:00
%bcond_without system_vma
%else
%bcond_with system_vma
%endif
2023-09-13 04:57:45 +00:00
2024-07-12 10:45:39 +00:00
# requires `run_convert_utf8_to_latin1_with_errors`
%bcond_with system_simdutf
2024-04-19 21:15:15 +00:00
2024-02-27 19:01:54 +00:00
#requires `imageSequenceTrackPresent` and `enableParsingGainMapMetadata` both of which are only in post-1.0.0 nightlies
%bcond_with system_avif
2022-11-05 18:12:04 +00:00
2024-02-27 19:01:54 +00:00
# Some chromium code assumes absl::string_view is a typedef for std::string_view. This is not true on GCC7 systems such as Leap.
2023-09-26 06:32:03 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora} >= 39
2024-04-19 21:15:15 +00:00
%bcond_without system_abseil
2023-03-31 15:06:38 +00:00
%else
2024-04-19 21:15:15 +00:00
%bcond_with system_abseil
2023-03-31 15:06:38 +00:00
%endif
2023-10-19 17:09:42 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700
2024-04-19 21:15:15 +00:00
#re2-11 has abseil as a public dependency. If you use system re2 you must use system abseil.
%bcond_without system_re2
2023-10-19 17:09:42 +00:00
%else
2024-04-19 21:15:15 +00:00
%bcond_with system_re2
2022-07-04 09:07:38 +00:00
%endif
2023-11-10 18:29:28 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora}
%define PYVER 3
%else
%define PYVER 311
%endif
2023-11-15 20:58:58 +00:00
%if 0%{?fedora} >= 40
%define AVFORMAT_VER 6.0.1
%define RPMFUSION_VER 6.1-3
%endif
%if 0%{?fedora} >= 38 && 0%{?fedora} < 40
%define AVFORMAT_VER 6.0.1
%define RPMFUSION_VER 6.0.1-2
%endif
2024-02-22 08:55:18 +00:00
2023-11-15 20:58:58 +00:00
2024-05-11 22:39:59 +00:00
%if 0%{?suse_version}
%{expand:%%global NODEJS_DEFAULT_VER %(echo %{nodejs_version} |sed 's/\..*//' )}
%else
%global NODEJS_DEFAULT_VER %nil
%endif
2022-07-07 08:56:30 +00:00
# We always ship the following bundled libraries as part of Electron despite a system version being available in either openSUSE or Fedora:
2022-07-07 08:02:56 +00:00
# Name | Path in tarball | Reason
# -------------+-----------------------------------+---------------------------------------
2022-07-07 08:56:30 +00:00
# boringssl | third_party/boringssl | The openSUSE package is unmaintained.
2022-07-07 08:02:56 +00:00
# hunspell | third_party/hunspell/src | Fork.
# leveldb | third_party/leveldatabase/src | Internal api use.
# protobuf | third_party/protobuf | Fork.
# rnnoise | third_party/rnnoise | Internal api use.
# sqlite | third_party/sqlite | Fork.
2023-11-02 18:54:04 +00:00
# srtp / srtp2 | third_party/libsrtp | Needs to be built against boringssl, not openssl
2022-07-07 08:02:56 +00:00
# uv | third_party/electron_node/deps/uv | Heavily modified version which is exposed as part of Electron's public ABI.
2022-08-08 08:46:02 +00:00
2022-07-04 09:07:38 +00:00
2021-06-29 20:42:56 +00:00
Name : nodejs-electron
2024-10-29 11:55:04 +00:00
Version : 31.7.3
2024-05-09 17:36:05 +00:00
%global tag_version %version
2021-06-29 20:42:56 +00:00
Release : 0
Summary : Build cross platform desktop apps with JavaScript, HTML, and CSS
2024-04-19 21:15:15 +00:00
License : Apache-2.0 AND blessing AND BSD-2-Clause AND BSD-3-Clause AND BSD-Source-Code AND bzip2-1.0.6 AND ISC AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND MIT AND MIT-CMU AND MIT-open-group AND (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) AND MPL-2.0 AND OpenSSL AND SGI-B-2.0 AND SUSE-Public-Domain AND X11%{!?with_system_minizip: AND Zlib}
2022-09-15 04:57:08 +00:00
Group : Development/Languages/NodeJS
2021-06-29 20:42:56 +00:00
URL : https://github.com/electron/electron
2024-05-03 09:28:15 +00:00
Source0 : %{mod_name} -%{tag_version} .tar.zst
2021-06-29 20:42:56 +00:00
Source1 : create_tarball.sh
Source10 : electron-launcher.sh
2024-06-29 08:08:03 +00:00
Source11 : Electron.desktop
2022-07-04 09:36:24 +00:00
2022-09-21 09:00:14 +00:00
# Reverse upstream changes to be able to build against ffmpeg-4
2022-07-04 09:07:38 +00:00
Source400 : ffmpeg-new-channel-layout.patch
2022-10-04 19:13:55 +00:00
Source401 : audio_file_reader-ffmpeg-AVFrame-duration.patch
2024-04-19 21:15:15 +00:00
Source402 : Cr122-ffmpeg-new-channel-layout.patch
2024-09-16 18:02:24 +00:00
Source403 : ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch
2023-01-18 06:07:26 +00:00
# and against harfbuzz 4
Source415 : harfbuzz-replace-chromium-scoped-type.patch
2023-09-13 04:57:45 +00:00
Source416 : harfbuzz-replace-HbScopedPointer.patch
2024-04-19 21:15:15 +00:00
# and wayland 1.31
Source450 : wayland-proto-31-cursor-shape.patch
2024-09-16 18:02:24 +00:00
# and abseil 2401
Source460 : quiche-absl-HexStringToBytes.patch
2022-08-01 08:25:54 +00:00
2023-09-13 04:57:45 +00:00
2024-05-09 17:36:05 +00:00
# PATCHES for openSUSE-specific things (compiler flags, paths, etc.)
2022-07-04 09:07:38 +00:00
Patch0 : chromium-102-compiler.patch
2022-10-26 04:51:48 +00:00
Patch1 : fpic.patch
2024-05-11 22:39:59 +00:00
Patch2 : common.gypi-compiler.patch
2022-01-27 22:16:50 +00:00
Patch3 : gcc-enable-lto.patch
2021-06-29 20:42:56 +00:00
Patch7 : chromium-91-java-only-allowed-in-android-builds.patch
2022-01-29 19:59:26 +00:00
# Fix common.gypi to include /usr/include/electron
Patch25 : electron-16-system-node-headers.patch
2022-07-04 09:07:38 +00:00
# https://sources.debian.org/patches/chromium/102.0.5005.115-1/debianization/support-i386.patch/
Patch39 : support-i386.patch
2022-08-08 08:46:02 +00:00
Patch69 : nasm-generate-debuginfo.patch
2022-11-10 05:53:36 +00:00
Patch74 : common.gypi-remove-fno-omit-frame-pointer.patch
2022-12-03 23:54:17 +00:00
Patch75 : gcc-asmflags.patch
2023-03-20 07:15:32 +00:00
Patch77 : angle_link_glx.patch
2023-05-11 19:29:06 +00:00
Patch78 : rdynamic.patch
2023-10-12 17:11:37 +00:00
Patch80 : icon.patch
2024-03-08 05:38:22 +00:00
Patch82 : node-compiler.patch
2024-04-19 21:15:15 +00:00
Patch84 : aarch64-Xclang.patch
2024-05-09 17:36:05 +00:00
Patch85 : devtools-frontend-compress_files-oom.patch
2024-07-12 10:45:39 +00:00
Patch86 : enable_stack_trace_line_numbers-symbol_level.patch
2024-05-09 17:36:05 +00:00
# PATCHES that remove code we don't want. Most of them can be reused verbatim by other distributors,
# and some of them probably should be submitted upstream (at least to Electron, not necessarily to Chromium)
# from https://sources.debian.org/patches/chromium/103.0.5060.53-1/disable/catapult.patch/
Patch567 : disable-catapult.patch
Patch570 : disable-fuses.patch
# https://code.qt.io/cgit/qt/qtwebengine-chromium.git/commit/?h=102-based&id=d617766b236a93749ddbb50b75573dd35238ffc9
Patch573 : disable-webspeech.patch
# https://sources.debian.org/patches/chromium/108.0.5359.124-1/disable/tests.patch/
Patch576 : disable-devtools-tests.patch
Patch581 : disable-tests.patch
Patch583 : remove-rust.patch
Patch585 : remove-dawn.patch
Patch586 : aom-vpx-no-thread-wrapper.patch
Patch588 : remove-password-manager-and-policy.patch
Patch589 : remove-puffin.patch
2024-06-13 10:51:02 +00:00
Patch590 : remove-sync.patch
2024-09-16 18:02:24 +00:00
Patch591 : fix-build-without-safebrowsing.patch
Patch592 : fix-build-without-supervised-users.patch
2024-05-09 17:36:05 +00:00
2022-08-01 08:25:54 +00:00
# PATCHES to use system libs
2023-03-20 07:15:32 +00:00
Patch1000 : do-not-build-libvulkan.so.patch
2022-08-01 08:25:54 +00:00
Patch1017 : system-libdrm.patch
# http://svnweb.mageia.org/packages/updates/7/chromium-browser-stable/current/SOURCES/chromium-74-pdfium-system-libopenjpeg2.patch?view=markup
Patch1038 : pdfium-fix-system-libs.patch
2022-07-04 09:07:38 +00:00
# https://sources.debian.org/patches/chromium/102.0.5005.115-1/system/zlib.patch/
2022-08-01 08:25:54 +00:00
Patch1041 : system-zlib.patch
Patch1045 : angle-system-xxhash.patch
Patch1047 : cares_public_headers.patch
Patch1048 : chromium-remove-bundled-roboto-font.patch
Patch1053 : swiftshader-use-system-llvm.patch
Patch1063 : system-libbsd.patch
Patch1065 : base-system-nspr.patch
Patch1066 : system-gtest.patch
2022-08-08 08:46:02 +00:00
Patch1068 : system-six.patch
Patch1069 : system-usb_ids.patch
Patch1070 : skia-system-vulkan-headers.patch
Patch1071 : system-pydeps.patch
Patch1072 : node-system-icu.patch
Patch1073 : system-nasm.patch
Patch1074 : no-zlib-headers.patch
2022-10-04 19:13:55 +00:00
Patch1076 : crashpad-use-system-abseil.patch
2023-09-13 04:57:45 +00:00
Patch1077 : system-wayland.patch
2023-10-16 08:59:19 +00:00
Patch1078 : system-simdutf.patch
2023-10-27 09:24:58 +00:00
Patch1079 : system-libm.patch
2024-07-12 10:45:39 +00:00
Patch1082 : chromium-124-shims.patch
2024-09-16 18:02:24 +00:00
Patch1083 : Cr126-abseil-shims.patch
Patch1084 : absl-base-dynamic_annotations.patch
Patch1085 : webp-no-sharpyuv.patch
2022-08-01 08:25:54 +00:00
2023-10-19 17:09:42 +00:00
2022-08-01 08:25:54 +00:00
# PATCHES to fix interaction with third-party software
Patch2010 : chromium-93-ffmpeg-4.4.patch
2023-10-01 20:33:54 +00:00
#Since ffmpeg 5, there is no longer first_dts member in AVFormat. Chromium upstream (and Tumbleweed) patches ffmpeg to add a av_stream_get_first_dts function.
#Upstream ref: https://chromium-review.googlesource.com/c/chromium/src/+/3525614
#This patch is only for Leap which uses ffmpeg 4. It makes chromium use the old api and does not work with ffmpeg 5.
Patch2012 : chromium-94-ffmpeg-roll.patch
2022-08-01 08:25:54 +00:00
# Fixe builds with older clang versions that do not allow
# nomerge attributes on declaration. Otherwise, the following error
# is produced:
# 'nomerge' attribute cannot be applied to a declaration
# See https://reviews.llvm.org/D92800
Patch2022 : electron-13-fix-base-check-nomerge.patch
2022-10-07 13:16:29 +00:00
Patch2031 : partition_alloc-no-lto.patch
2022-10-26 04:51:48 +00:00
Patch2032 : seccomp_bpf-no-lto.patch
2023-01-18 06:07:26 +00:00
Patch2034 : swiftshader-LLVMJIT-AddressSanitizerPass-dead-code-remove.patch
2023-02-13 18:46:12 +00:00
Patch2035 : RenderFrameHostImpl-use-after-free.patch
2023-10-19 17:09:42 +00:00
# https://github.com/electron/electron/pull/40032
Patch2040 : build-without-extensions.patch
2024-02-27 19:01:54 +00:00
%if %{without bro_11}
2023-10-19 17:09:42 +00:00
Patch2042 : brotli-remove-shared-dictionary.patch
2024-02-27 19:01:54 +00:00
%else
Source2042 : brotli-remove-shared-dictionary.patch
%endif
2023-11-18 22:01:14 +00:00
Patch2045 : libxml-2.12-xmlCtxtGetLastError-const.patch
2024-01-25 09:23:16 +00:00
Patch2046 : chromium-118-sigtrap_system_ffmpeg.patch
2024-02-24 18:35:27 +00:00
%if %{with system_minizip}
Source2047 : bundled-minizip.patch
%else
Patch2047 : bundled-minizip.patch
%endif
2024-04-19 21:15:15 +00:00
Patch2048 : absl2023-encapsulated_web_transport-StrCat.patch
2024-07-12 10:45:39 +00:00
Patch2049 : libaom_av1_encoder-aom37-AV1E_SET_MAX_CONSEC_FRAME_DROP_CBR.patch
# bsc#1224178 deb#1067886
Patch2050 : bad-font-gc0000.patch
Patch2051 : bad-font-gc000.patch
Patch2052 : bad-font-gc00.patch
Patch2053 : bad-font-gc0.patch
Patch2054 : bad-font-gc11.patch
Patch2055 : bad-font-gc1.patch
Patch2056 : bad-font-gc2.patch
Patch2057 : bad-font-gc3.patch
2024-08-31 09:02:17 +00:00
#Work around gcc14 overly aggressive optimizer. Interestingly applying this patch produces a *different* crash on gcc13 + LTO.
%if %{with gcc14}
Patch2058 : v8-strict-aliasing.patch
%else
Source2058 : v8-strict-aliasing.patch
%endif
2022-08-01 08:25:54 +00:00
# PATCHES that should be submitted upstream verbatim or near-verbatim
# Fix blink nodestructor
Patch3023 : electron-13-blink-gcc-ambiguous-nodestructor.patch
Patch3027 : electron-16-freetype-visibility-list.patch
Patch3028 : electron-16-third_party-symbolize-missing-include.patch
# From https://git.droidware.info/wchen342/ungoogled-chromium-fedora
Patch3033 : chromium-94.0.4606.71-InkDropHost-crash.patch
2022-10-26 04:51:48 +00:00
Patch3080 : compact_enc_det_generated_tables-Wnarrowing.patch
2023-01-13 05:29:42 +00:00
Patch3096 : remove-date-reproducible-builds.patch
2024-03-28 10:22:12 +00:00
Patch3133 : swiftshader-llvm18-LLVMReactor-getInt8PtrTy.patch
Patch3134 : swiftshader-llvm18-LLVMJIT-Host.patch
Patch3135 : swiftshader-llvm18-LLVMJIT-CodeGenOptLevel.patch
2024-04-19 21:15:15 +00:00
Patch3138 : distributed_point_functions-aes_128_fixed_key_hash-missing-StrCat.patch
Patch3144 : mt21_util-flax-vector-conversions.patch
Patch3149 : boringssl-internal-addc-cxx.patch
Patch3151 : distributed_point_functions-evaluate_prg_hwy-signature.patch
2024-07-12 10:45:39 +00:00
Patch3154 : licenses.py-FileNotFoundError.patch
Patch3161 : preview_cancel_reason-missing-string.patch
Patch3163 : DesktopNativeWidgetAura-HandleActivationChanged-crash.patch
2024-09-16 18:02:24 +00:00
Patch3165 : http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
Patch3166 : angle-State-constexpr.patch
Patch3167 : color_provider-incomplete-ColorProviderInternal.patch
Patch3168 : run_segmenter-missing-optional.patch
Patch3169 : page_popup_controller-missing-optional.patch
Patch3170 : native_css_paint_definition-expected-unqualified-id.patch
Patch3171 : text_decoder-missing-optional.patch
Patch3172 : real_time_reporting_bindings-forward-declaration.patch
Patch3173 : blink-platform-INSIDE_BLINK-Wodr.patch
Patch3174 : quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
Patch3175 : ConsumeRadii-linker-error.patch
2022-08-01 08:25:54 +00:00
2024-05-09 17:36:05 +00:00
# Patches to re-enable upstream force disabled features.
# There's no sense in submitting them but they may be reused as-is by other packagers.
Patch5000 : more-locales.patch
Patch5006 : chromium-vaapi.patch
2022-07-04 09:07:38 +00:00
BuildRequires : brotli
%if %{with system_cares}
BuildRequires : c-ares-devel
%endif
BuildRequires : cmake(Crc32c)
BuildRequires : double-conversion-devel
2021-06-29 20:42:56 +00:00
BuildRequires : desktop-file-utils
2022-08-08 08:46:02 +00:00
%if 0%{?fedora}
BuildRequires : flatbuffers-compiler
%endif
BuildRequires : flatbuffers-devel
2021-06-29 20:42:56 +00:00
BuildRequires : gn >= 0.1807
BuildRequires : gperf
2022-07-07 08:02:56 +00:00
%if %{with system_histogram}
BuildRequires : HdrHistogram_c-devel
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : hicolor-icon-theme
2022-08-08 08:46:02 +00:00
BuildRequires : hwdata
2023-10-12 17:11:37 +00:00
BuildRequires : ImageMagick
2022-07-04 09:07:38 +00:00
%if 0%{?fedora}
BuildRequires : libatomic
2021-07-01 05:05:47 +00:00
%endif
2022-07-07 08:02:56 +00:00
%if %{with system_aom}
2023-09-13 04:57:45 +00:00
# requires AV1E_SET_QUANTIZER_ONE_PASS
BuildRequires : libaom-devel >= 3.7~
2022-07-07 08:02:56 +00:00
%endif
2022-07-04 09:07:38 +00:00
BuildRequires : libbsd-devel
2021-06-29 20:42:56 +00:00
BuildRequires : libpng-devel
2022-07-04 09:07:38 +00:00
BuildRequires : libXNVCtrl-devel
2022-07-07 08:02:56 +00:00
%if %{with system_llhttp}
2022-11-05 18:12:04 +00:00
BuildRequires : llhttp-devel >= 8
2022-07-07 08:02:56 +00:00
%endif
2022-12-07 09:53:09 +00:00
%if %{with swiftshader} && %{without subzero}
2023-10-01 20:33:54 +00:00
BuildRequires : llvm-devel >= 16
2022-07-04 09:07:38 +00:00
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : memory-constraints
2024-09-05 05:02:09 +00:00
%if %{with mold}
BuildRequires : mold
%endif
2023-03-10 06:02:08 +00:00
%ifarch %ix86 x86_64 %x86_64
2023-08-19 05:38:25 +00:00
%if %{without system_aom} || %{without system_vpx}
2022-08-08 08:46:02 +00:00
BuildRequires : nasm
2022-10-29 19:25:58 +00:00
%endif
2023-08-19 05:38:25 +00:00
%endif
2021-07-01 05:05:47 +00:00
%if 0%{?suse_version}
2021-06-29 20:42:56 +00:00
BuildRequires : ninja >= 1.7.2
2022-07-04 09:07:38 +00:00
%else
2021-07-01 05:05:47 +00:00
BuildRequires : ninja-build >= 1.7.2
%endif
2023-04-15 17:03:47 +00:00
%if 0%{?fedora} >= 37
BuildRequires : nodejs-npm
2022-08-01 10:51:40 +00:00
%else
2021-06-29 20:42:56 +00:00
BuildRequires : npm
2022-08-01 10:51:40 +00:00
%endif
2024-05-11 22:39:59 +00:00
%if 0%{?suse_version}
BuildRequires : nodejs-packaging
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig
2022-08-08 08:46:02 +00:00
BuildRequires : plasma-wayland-protocols
BuildRequires : python3-json5
2023-11-10 18:29:28 +00:00
BuildRequires : python%{PYVER} -jinja2 >= 3.0.2
2022-08-08 08:46:02 +00:00
BuildRequires : python3-mako
2023-12-22 14:28:07 +00:00
BuildRequires : python%{PYVER} -ply
2023-11-10 18:29:28 +00:00
BuildRequires : python%{PYVER} -PyYAML >= 6
2024-02-24 18:35:27 +00:00
%if 0%{?fedora}
BuildRequires : (python3-setuptools if python3 >= 3.12)
%endif
2023-11-10 18:29:28 +00:00
BuildRequires : python%{PYVER} -six
2023-10-16 08:59:19 +00:00
%if %{with system_simdutf}
2024-07-12 10:45:39 +00:00
BuildRequires : simdutf-devel >= 3.2.17
2023-10-16 08:59:19 +00:00
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : snappy-devel
2021-07-01 05:05:47 +00:00
%if 0%{?suse_version}
2021-06-29 20:42:56 +00:00
BuildRequires : update-desktop-files
2021-07-01 05:05:47 +00:00
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : util-linux
2022-08-08 08:46:02 +00:00
BuildRequires : vulkan-headers
2023-10-16 08:59:19 +00:00
%if %{with system_vma}
BuildRequires : VulkanMemoryAllocator-devel >= 3
%endif
2023-09-13 04:57:45 +00:00
BuildRequires : wayland-devel >= 1.20
2023-01-13 05:29:42 +00:00
BuildRequires : zstd
2022-07-04 09:07:38 +00:00
%if %{with system_abseil}
2024-04-19 21:15:15 +00:00
BuildRequires : pkgconfig(absl_absl_check)
2023-10-05 14:36:24 +00:00
BuildRequires : pkgconfig(absl_algorithm_container)
BuildRequires : pkgconfig(absl_any_invocable)
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(absl_base)
BuildRequires : pkgconfig(absl_bind_front)
BuildRequires : pkgconfig(absl_bits)
BuildRequires : pkgconfig(absl_btree)
BuildRequires : pkgconfig(absl_cleanup)
BuildRequires : pkgconfig(absl_config)
BuildRequires : pkgconfig(absl_cord)
BuildRequires : pkgconfig(absl_core_headers)
BuildRequires : pkgconfig(absl_failure_signal_handler)
BuildRequires : pkgconfig(absl_fixed_array)
BuildRequires : pkgconfig(absl_flags)
BuildRequires : pkgconfig(absl_flags_parse)
BuildRequires : pkgconfig(absl_flags_usage)
BuildRequires : pkgconfig(absl_flat_hash_map)
BuildRequires : pkgconfig(absl_flat_hash_set)
BuildRequires : pkgconfig(absl_hash)
BuildRequires : pkgconfig(absl_inlined_vector)
BuildRequires : pkgconfig(absl_int128)
BuildRequires : pkgconfig(absl_memory)
BuildRequires : pkgconfig(absl_node_hash_map)
BuildRequires : pkgconfig(absl_node_hash_set)
BuildRequires : pkgconfig(absl_optional)
BuildRequires : pkgconfig(absl_random_random)
BuildRequires : pkgconfig(absl_span)
BuildRequires : pkgconfig(absl_stacktrace)
BuildRequires : pkgconfig(absl_status)
BuildRequires : pkgconfig(absl_statusor)
BuildRequires : pkgconfig(absl_strings)
BuildRequires : pkgconfig(absl_str_format)
BuildRequires : pkgconfig(absl_symbolize)
BuildRequires : pkgconfig(absl_synchronization)
BuildRequires : pkgconfig(absl_time)
BuildRequires : pkgconfig(absl_type_traits)
2022-09-21 09:00:14 +00:00
BuildRequires : pkgconfig(absl_utility)
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(absl_variant)
2023-03-31 15:06:38 +00:00
BuildRequires : pkgconfig(absl_core_headers) >= 20230000
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(alsa)
BuildRequires : pkgconfig(cairo) >= 1.6
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(dav1d) >= 1
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(dbus-1)
BuildRequires : pkgconfig(dri)
BuildRequires : pkgconfig(expat)
2023-09-13 04:57:45 +00:00
BuildRequires : pkgconfig(flac)
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(freetype2)
BuildRequires : pkgconfig(gbm)
BuildRequires : pkgconfig(glib-2.0)
BuildRequires : pkgconfig(glproto)
2024-07-12 10:45:39 +00:00
BuildRequires : pkgconfig(gtest) >= 1.12
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(gtk+-3.0)
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(harfbuzz) >= 3
2023-01-18 06:07:26 +00:00
%if %{with harfbuzz_5}
BuildRequires : pkgconfig(harfbuzz) >= 5
2022-01-29 19:59:26 +00:00
%endif
2023-10-19 17:09:42 +00:00
BuildRequires : pkgconfig(icu-i18n) >= 73
2022-10-04 19:13:55 +00:00
BuildRequires : pkgconfig(jsoncpp)
2023-11-12 18:57:50 +00:00
%if 0%{?fedora}
2023-11-15 20:58:58 +00:00
Recommends: (ffmpeg-libs%{_isa} or libavcodec-freeworld%{_isa})
2023-11-12 18:57:50 +00:00
%endif
2024-04-19 21:15:15 +00:00
%if %{with ffmpeg_6}
BuildRequires : pkgconfig(libavcodec) >= 60
2024-08-14 22:08:54 +00:00
BuildRequires : pkgconfig(libavformat) >= 60
BuildRequires : pkgconfig(libavutil) >= 58
2023-11-18 22:01:14 +00:00
%if 0%{?fedora}
2023-11-12 18:57:50 +00:00
#requires av_stream_get_first_dts, see rhbz#2240127
2023-11-15 20:58:58 +00:00
BuildRequires : libavformat-free-devel >= %AVFORMAT_VER
Requires : (ffmpeg-libs%{_isa} >= %RPMFUSION_VER or libavformat-free%{_isa} >= %AVFORMAT_VER)
2024-02-24 18:35:27 +00:00
# have choice for libvpl.so.2()(64bit) needed by libavcodec-free: libvpl oneVPL
%ifarch x86_64 %x86_64
BuildRequires : oneVPL
%endif
2023-11-12 18:57:50 +00:00
%endif
2022-09-21 09:00:14 +00:00
%else
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libavcodec)
BuildRequires : pkgconfig(libavformat) >= 58
BuildRequires : pkgconfig(libavutil)
2022-09-21 09:00:14 +00:00
%endif
2022-07-04 09:07:38 +00:00
%if %{with system_avif}
2023-10-19 17:09:42 +00:00
# Needs avifRGBImage::maxThreads
BuildRequires : pkgconfig(libavif) >= 1
2022-07-04 09:07:38 +00:00
%endif
2024-02-27 19:01:54 +00:00
%if %{with bro_11}
BuildRequires : pkgconfig(libbrotlicommon) >= 1.1~
%endif
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(libbrotlidec)
BuildRequires : pkgconfig(libbrotlienc)
BuildRequires : pkgconfig(libcares)
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libcurl)
BuildRequires : pkgconfig(libdrm)
BuildRequires : pkgconfig(libevent)
2023-09-13 04:57:45 +00:00
BuildRequires : pkgconfig(libhwy) >= 1
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(libnghttp2)
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libnotify)
BuildRequires : pkgconfig(libpci)
BuildRequires : pkgconfig(libpulse)
2022-08-08 08:46:02 +00:00
BuildRequires : pkgconfig(libsecret-1)
2023-08-19 05:38:25 +00:00
%if %{with vaapi}
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libva)
2023-08-19 05:38:25 +00:00
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libwebp) >= 0.4.0
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(libwoff2dec)
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(libxml-2.0) >= 2.9.5
BuildRequires : pkgconfig(libxslt)
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(libxxhash)
2022-08-08 08:46:02 +00:00
%if %{with system_yuv}
2023-09-13 04:57:45 +00:00
# needs I410ToI420
BuildRequires : pkgconfig(libyuv) >= 1855
2022-08-08 08:46:02 +00:00
%endif
2024-07-12 10:45:39 +00:00
BuildRequires : pkgconfig(libzstd)
2024-02-24 18:35:27 +00:00
%if %{with system_minizip}
2022-01-29 19:59:26 +00:00
%if 0%{?fedora}
2021-07-15 22:00:36 +00:00
BuildRequires : minizip-compat-devel
%else
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(minizip)
2021-07-15 22:00:36 +00:00
%endif
2024-02-24 18:35:27 +00:00
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(nspr) >= 4.9.5
BuildRequires : pkgconfig(nss) >= 3.26
BuildRequires : pkgconfig(opus) >= 1.3.1
2022-07-04 09:07:38 +00:00
BuildRequires : pkgconfig(pangocairo)
2022-12-07 09:53:09 +00:00
%if %{with qt}
BuildRequires : pkgconfig(Qt5Core)
BuildRequires : pkgconfig(Qt5Widgets)
2024-04-30 18:32:00 +00:00
BuildRequires : pkgconfig(Qt6Core)
BuildRequires : pkgconfig(Qt6Widgets)
2022-12-07 09:53:09 +00:00
%endif
2024-04-19 21:15:15 +00:00
%if %{with system_abseil} && %{with system_re2}
#re2-11 has abseil as a public dependency. If you use system re2 you must use system abseil.
2023-10-19 17:09:42 +00:00
BuildRequires : cmake(re2) >= 11
%endif
2022-07-04 09:07:38 +00:00
%if %{with system_spirv}
%if 0%{?suse_version}
BuildRequires : spirv-headers
%else
BuildRequires : spirv-headers-devel
%endif
BuildRequires : pkgconfig(SPIRV-Tools) >= 2022.2
2024-06-13 10:51:02 +00:00
BuildRequires : vulkan-headers >= 1.3
2022-07-04 09:07:38 +00:00
%endif
2023-03-20 07:15:32 +00:00
%if %{with link_vulkan}
BuildRequires : pkgconfig(vulkan) >= 1.3
%endif
2024-01-17 22:28:47 +00:00
BuildRequires : pkgconfig(wayland-protocols)
2024-04-19 21:15:15 +00:00
%if %{with wayland_32}
BuildRequires : pkgconfig(wayland-protocols) >= 1.32
%endif
2021-06-29 20:42:56 +00:00
BuildRequires : pkgconfig(xkbcommon)
BuildRequires : pkgconfig(xshmfence)
BuildRequires : pkgconfig(zlib)
%if 0%{?suse_version}
BuildRequires : libjpeg-devel >= 8.1
%else
BuildRequires : libjpeg-turbo-devel
%endif
%if %{with system_vpx}
2023-09-13 04:57:45 +00:00
# requires VP9E_SET_QUANTIZER_ONE_PASS
BuildRequires : pkgconfig(vpx) >= 1.13~
2021-06-29 20:42:56 +00:00
%endif
2023-09-26 06:32:03 +00:00
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora}
2024-01-17 22:28:47 +00:00
BuildRequires : gcc >= 13
BuildRequires : gcc-c++ >= 13
2021-06-29 20:42:56 +00:00
%else
2024-01-17 22:28:47 +00:00
BuildRequires : gcc13-PIE
BuildRequires : gcc13-c++
2021-06-29 20:42:56 +00:00
%endif
2024-08-31 09:02:17 +00:00
%if %{with gcc14}
BuildRequires : gcc-c++ >= 14
%endif
2021-06-29 20:42:56 +00:00
%if %{with pipewire}
BuildRequires : pkgconfig(libpipewire-0.3)
BuildRequires : pkgconfig(libspa-0.2)
%endif
2022-07-04 09:07:38 +00:00
Requires : hicolor-icon-theme
Requires : google-roboto-fonts
2021-06-29 20:42:56 +00:00
2022-07-04 09:07:38 +00:00
# This required library is dlopened
2023-03-20 07:15:32 +00:00
%if %{without link_vulkan}
2022-07-04 09:07:38 +00:00
%ifarch %ix86 %arm
Requires : libvulkan.so.1
%else
Requires : libvulkan.so.1()(64bit)
%endif
2023-03-20 07:15:32 +00:00
%endif
2022-07-04 09:07:38 +00:00
2024-04-30 18:32:00 +00:00
%if %{with qt}
%if 0%{?fedora}
Requires : (nodejs-electron-qt5%{_isa} if qt5-qtbase-gui%{_isa})
Requires : (nodejs-electron-qt6%{_isa} if qt6-qtbase-gui%{_isa})
%else
Requires : (nodejs-electron-qt5%{_isa} if libQt5Gui5%{_isa})
Requires : (nodejs-electron-qt6%{_isa} if libQt6Gui6%{_isa})
%endif
%endif
2021-06-29 20:42:56 +00:00
Provides : electron
2022-09-21 09:00:14 +00:00
Provides : electron%{_isa}(abi) = %{abi_version}
2021-06-29 20:42:56 +00:00
Obsoletes : nodejs-electron-prebuilt < %{version}
Provides : nodejs-electron-prebuilt = %{version}
%description
Nodejs application: Build cross platform desktop apps with JavaScript, HTML, and CSS
2022-01-29 19:59:26 +00:00
%package devel
Summary : Electron development headers
Group : Development/Libraries/C and C++
2024-04-30 18:32:00 +00:00
Requires : nodejs-electron%{_isa} = %{version}
2022-08-08 08:46:02 +00:00
Requires : pkgconfig(zlib)
2024-05-11 22:39:59 +00:00
%if 0%{?suse_version}
Requires : npm%{NODEJS_DEFAULT_VER}
%else
Requires : nodejs-npm
%endif
2022-01-29 19:59:26 +00:00
2022-10-04 19:13:55 +00:00
2022-01-29 19:59:26 +00:00
%description devel
Development headers for Electron projects.
2022-10-04 19:13:55 +00:00
%package doc
Summary : Electron API documentation
Group : Documentation/Other
Enhances: nodejs-electron-devel = %{version}
BuildArch : noarch
%description doc
Development documentation for the Electron runtime.
2024-04-30 18:32:00 +00:00
%if %{with qt}
%package qt5
Summary : Qt5 widgets for Electron
Group : System/Libraries
Requires : nodejs-electron%{_isa} = %version
%description qt5
This is the Qt5-based UI backend for nodejs-electron,
providing better integration with desktop environments such as KDE.
%package qt6
Summary : Qt6 widgets for Electron
Group : System/Libraries
Requires : nodejs-electron%{_isa} = %version
%description qt6
This is the Qt6-based UI backend for nodejs-electron,
providing better integration with desktop environments such as KDE.
%endif
2021-06-29 20:42:56 +00:00
%prep
2022-07-04 09:07:38 +00:00
# Use stable path to source to make use of ccache
%autosetup -n src -p1
2024-04-19 21:15:15 +00:00
2022-09-21 09:00:14 +00:00
# Sanity check if macro corresponds to the actual ABI
test $(grep ^node_module_version electron/build/args/all.gn | sed 's/.* = //' ) = %abi_version
2022-10-04 19:13:55 +00:00
%if %{without system_abseil}
patch -R -p1 < %PATCH1076
%endif
2024-02-27 19:01:54 +00:00
2024-08-14 22:08:54 +00:00
%if %{with ffmpeg_6}
2023-10-01 20:33:54 +00:00
patch -R -p1 < %PATCH2012
%else
2024-09-16 18:02:24 +00:00
patch -R -p1 < %SOURCE403
2024-08-14 22:08:54 +00:00
patch -R -p1 < %SOURCE402
2022-09-21 09:00:14 +00:00
patch -R -p1 < %SOURCE400
2024-08-14 22:08:54 +00:00
patch -R -p1 < %SOURCE401
2022-09-21 09:00:14 +00:00
%endif
2023-11-18 22:01:14 +00:00
2023-10-01 20:33:54 +00:00
2023-01-18 06:07:26 +00:00
%if %{without harfbuzz_5}
patch -R -p1 < %SOURCE415
2023-09-13 04:57:45 +00:00
patch -R -p1 < %SOURCE416
2023-01-18 06:07:26 +00:00
%endif
2023-09-13 04:57:45 +00:00
2024-04-19 21:15:15 +00:00
%if %{without wayland_32}
patch -R -p1 < %SOURCE450
%endif
2023-09-13 04:57:45 +00:00
2024-08-14 22:08:54 +00:00
2022-10-04 19:13:55 +00:00
2024-09-16 18:02:24 +00:00
# This one depends on an abseil nightly, reverting unconditionally.
patch -R -p1 < %SOURCE460
2022-08-08 08:46:02 +00:00
# Link system wayland-protocols-devel into where chrome expects them
2023-01-18 06:07:26 +00:00
mkdir -p third_party/wayland/src
2022-08-08 08:46:02 +00:00
mkdir -p third_party/wayland-protocols/kde/src
2023-01-18 06:07:26 +00:00
ln -svfT %{_datadir} /wayland third_party/wayland/src/protocol
2023-01-13 05:29:42 +00:00
#mkdir -p third_party/wayland-protocols/mesa
2024-01-17 22:28:47 +00:00
ln -svfT %{_datadir} /wayland-protocols third_party/wayland-protocols/src
2023-01-13 05:29:42 +00:00
#ln -svfT %{_datadir}/wayland-eglstream third_party/wayland-protocols/mesa/wayland-drm
2022-08-08 08:46:02 +00:00
ln -svfT %{_datadir} /plasma-wayland-protocols third_party/wayland-protocols/kde/src/protocols
2021-07-01 05:05:47 +00:00
# Fix the path to nodejs binary
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -sf %{_bindir} /node third_party/node/linux/node-linux-x64/bin/node
2022-01-27 22:16:50 +00:00
# Fix eu-strip
2022-08-01 08:25:54 +00:00
mkdir -p buildtools/third_party/eu-strip/bin
ln -sf %{_bindir} /eu-strip buildtools/third_party/eu-strip/bin/eu-strip
2022-01-27 22:16:50 +00:00
2021-06-29 20:42:56 +00:00
# Fix shim header generation
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
tools/generate_shim_headers/generate_shim_headers.py
2024-07-20 10:06:30 +00:00
# Remove bundled libraries
2021-06-29 20:42:56 +00:00
gn_system_libraries=(
2022-07-04 09:07:38 +00:00
brotli
2024-04-19 21:15:15 +00:00
crc32c
dav1d
2023-01-18 06:07:26 +00:00
double-conversion
2022-07-04 09:07:38 +00:00
ffmpeg
2021-06-29 20:42:56 +00:00
flac
2022-08-08 08:46:02 +00:00
flatbuffers
2021-06-29 20:42:56 +00:00
fontconfig
2023-01-18 06:07:26 +00:00
freetype
harfbuzz-ng
2024-04-19 21:15:15 +00:00
highway
2022-09-21 09:00:14 +00:00
icu
2023-09-13 04:57:45 +00:00
jsoncpp
2021-06-29 20:42:56 +00:00
libdrm
libevent
libjpeg
libpng
2022-08-08 08:46:02 +00:00
libsecret
2021-06-29 20:42:56 +00:00
libusb
libwebp
2024-04-19 21:15:15 +00:00
libXNVCtrl
2021-06-29 20:42:56 +00:00
libxml
libxslt
opus
snappy
2023-01-18 06:07:26 +00:00
woff2
2021-06-29 20:42:56 +00:00
zlib
2024-07-12 10:45:39 +00:00
zstd
2021-06-29 20:42:56 +00:00
)
2022-07-04 09:07:38 +00:00
%if %{with system_abseil}
2022-08-08 08:46:02 +00:00
find third_party/abseil-cpp -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2022-07-04 09:07:38 +00:00
gn_system_libraries+=(
absl_algorithm
absl_base
absl_cleanup
2024-04-19 21:15:15 +00:00
absl_crc
2022-07-04 09:07:38 +00:00
absl_container
absl_debugging
absl_flags
absl_functional
absl_hash
2023-01-18 06:07:26 +00:00
absl_log
absl_log_internal
2022-07-04 09:07:38 +00:00
absl_memory
absl_meta
absl_numeric
absl_random
absl_status
absl_strings
absl_synchronization
absl_time
absl_types
2022-09-21 09:00:14 +00:00
absl_utility
2022-07-04 09:07:38 +00:00
)
%endif
%if %{with system_aom}
2022-08-08 08:46:02 +00:00
find third_party/libaom -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2022-07-04 09:07:38 +00:00
gn_system_libraries+=( libaom )
%endif
%if %{with system_avif}
2022-08-08 08:46:02 +00:00
find third_party/libavif -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2022-07-04 09:07:38 +00:00
gn_system_libraries+=( libavif )
%endif
2023-09-13 04:57:45 +00:00
2024-02-24 18:35:27 +00:00
%if %{with system_minizip}
find third_party/zlib/contrib -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
%endif
2023-09-13 04:57:45 +00:00
2024-04-19 21:15:15 +00:00
%if %{with system_re2}
find third_party/re2 -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
gn_system_libraries+=( re2 )
2022-07-04 09:07:38 +00:00
%endif
2024-04-19 21:15:15 +00:00
2022-07-04 09:07:38 +00:00
%if %{with system_spirv}
2024-04-19 21:15:15 +00:00
find third_party/swiftshader/third_party/SPIRV-Headers/ -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2022-08-08 08:46:02 +00:00
find third_party/swiftshader/third_party/SPIRV-Tools/ -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2024-06-13 10:51:02 +00:00
find third_party/vulkan-deps/ -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2022-07-04 09:07:38 +00:00
2023-09-13 04:57:45 +00:00
gn_system_libraries+=(
2022-07-04 09:07:38 +00:00
swiftshader-SPIRV-Headers
swiftshader-SPIRV-Tools
#The following can only be unbundled if you don't build DAWN (WebGPU)
vulkan-SPIRV-Headers
vulkan-SPIRV-Tools
)
%endif
2023-10-16 08:59:19 +00:00
%if %{with system_vma}
find third_party/vulkan_memory_allocator -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
gn_system_libraries+=( vulkan_memory_allocator )
%endif
2021-06-29 20:42:56 +00:00
%if %{with system_vpx}
2022-08-08 08:46:02 +00:00
find third_party/libvpx -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
2021-06-29 20:42:56 +00:00
gn_system_libraries+=( libvpx )
%endif
2022-07-04 09:07:38 +00:00
2022-08-08 08:46:02 +00:00
%if %{with system_yuv}
find third_party/libyuv -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
gn_system_libraries+=( libyuv )
%endif
2021-06-29 20:42:56 +00:00
build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries[@]}
2023-03-20 07:15:32 +00:00
%if %{with link_vulkan}
find third_party/angle/src/third_party/volk -type f ! -name " * . g n " -a ! -name " * . g n i " -delete
%endif
2022-07-04 09:07:38 +00:00
2022-07-07 08:02:56 +00:00
%if %{with system_llhttp}
2022-08-08 08:46:02 +00:00
find third_party/electron_node/deps/llhttp -type f ! -name " * . g n " -a ! -name " * . g n i " -a ! -name " * . g y p " -a ! -name " * . g y p i " -delete
2022-07-07 08:02:56 +00:00
%endif
%if %{with system_histogram}
2022-08-08 08:46:02 +00:00
find third_party/electron_node/deps/histogram -type f ! -name " * . g n " -a ! -name " * . g n i " -a ! -name " * . g y p " -a ! -name " * . g y p i " -delete
2022-07-07 08:02:56 +00:00
%endif
2023-10-16 08:59:19 +00:00
%if %{with system_simdutf}
find third_party/electron_node/deps/simdutf -type f ! -name " * . g n " -a ! -name " * . g n i " -a ! -name " * . g y p " -a ! -name " * . g y p i " -delete
%endif
2022-07-04 09:07:38 +00:00
2024-07-20 10:06:30 +00:00
%build
pushd electron/shell/browser/resources/win
[ $(identify electron.ico | wc -l) = 4 ] #Sanity check
convert electron.ico -strip extracted.png
identify extracted-0.png | grep -F 16x16
identify extracted-1.png | grep -F 32x32
identify extracted-2.png | grep -F 48x48
identify extracted-3.png | grep -F 256x256
popd
# GN sets lto on its own and we need just ldflag options, not cflags
%define _lto_cflags %{nil}
# Make sure python is python3
install -d -m 0755 python3-path
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora}
ln -sf %{_bindir} /python3 " $ ( p w d ) / p y t h o n 3 - p a t h / p y t h o n "
%else
ln -sf %{_bindir} /python3.11 " $ ( p w d ) / p y t h o n 3 - p a t h / p y t h o n "
ln -sf %{_bindir} /python3.11 " $ ( p w d ) / p y t h o n 3 - p a t h / p y t h o n 3 "
%endif
export PATH=" $ ( p w d ) / p y t h o n 3 - p a t h : $ { P A T H } "
#HACK: Those packages on Leap are available only in python3.6 versions.
%if 0%{?suse_version} && 0%{?suse_version} < 1550
install -d -m 0755 python3-site
cp -pr %{python3_sitelib} /{json5,mako} -t " $ ( p w d ) / p y t h o n 3 - s i t e "
export PYTHONPATH=" $ ( p w d ) / p y t h o n 3 - s i t e "
%endif
#some Fedora ports still try to build with LTO
ARCH_FLAGS=$(echo " % o p t f l a g s " |sed 's/-f[^ ]*lto[^ ]*//g' )
#Work around an upstream ODR issue.
#Remove this once https://bugs.chromium.org/p/chromium/issues/detail?id=1375049 gets fixed.
ARCH_FLAGS=" $ A R C H _ F L A G S - D I S _ S E R I A L _ E N A B L E D _ P L A T F O R M "
%if 0%{?fedora}
# Fix base/allocator/allocator_shim.cc:408:2: error: #error This code cannot be
# used when exceptions are turned on.
ARCH_FLAGS=" $ ( e c h o $ A R C H _ F L A G S | s e d - e ' s / - f e x c e p t i o n s / / g ' ) "
%endif
# for wayland
export CXXFLAGS=" $ { A R C H _ F L A G S } - I / u s r / i n c l u d e / w a y l a n d - I / u s r / i n c l u d e / l i b x k b c o m m o n "
export CFLAGS=" $ { C X X F L A G S } "
# Google has a bad coding style, using a macro `NOTREACHED()` that is not properly detected by GCC
# multiple times throughout the codebase (including generated code). It is not possible to redefine the macro to __builtin_unreachable,
# as it has an astonishing syntax, behaving like an ostream (in debug builds it is supposed to trap and print an error message)
export CXXFLAGS=" $ { C X X F L A G S } - W n o - e r r o r = r e t u r n - t y p e "
# A bunch of memcpy'ing of JSObject in V8 runs us into “Logfile got too big, killed job.”
export CXXFLAGS=" $ { C X X F L A G S } - W n o - c l a s s - m e m a c c e s s "
# Warning spam from generated mojom code again makes the log too big
export CXXFLAGS=" $ { C X X F L A G S } - W n o - p a c k e d - n o t - a l i g n e d - W n o - a d d r e s s "
# REDUCE DEBUG for C++ as it gets TOO large due to “heavy hemplate use in Blink”. See symbol_level below and chromium-102-compiler.patch
export CXXFLAGS=" $ ( e c h o $ { C X X F L A G S } | s e d - e ' s / - g / / g ' - e ' s / - g $ / / g ' ) "
%ifarch %ix86 %arm
export CFLAGS=" $ ( e c h o $ { C F L A G S } | s e d - e ' s / - g / - g 1 / g ' - e ' s / - g $ / - g 1 / g ' ) "
%endif
%ifarch aarch64
%if %{with lto}
export CFLAGS=" $ ( e c h o $ { C F L A G S } | s e d - e ' s / - g / - g 1 / g ' - e ' s / - g $ / - g 1 / g ' ) "
%endif
%endif
#The chromium build process passes lots of .o files directly to the linker instead of using static libraries,
#and relies on the linker eliminating unused sections.
#Re-add these parameters from build/config/compiler/BUILD.gn.
export LDFLAGS=" %{?build_ldflags} - W l , - O 2 - W l , - - g c - s e c t i o n s "
2024-09-05 05:02:09 +00:00
# mold does not respect it otherwise
export LDFLAGS=" $ L D F L A G S - W l , - - a s - n e e d e d "
2024-07-20 10:06:30 +00:00
%ifarch %ix86 %arm
#try to reduce memory
2024-09-16 18:02:24 +00:00
export LDFLAGS=" $ { L D F L A G S } - W l , - - n o - k e e p - m e m o r y - W l , - - r e d u c e - m e m o r y - o v e r h e a d s "
2024-07-20 10:06:30 +00:00
%endif #ifarch ix86 arm
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150700 || 0%{?fedora}
export CC=gcc
export CXX=g++
export AR=gcc-ar
export NM=gcc-nm
export RANLIB=gcc-ranlib
%else
export CC=gcc-13
export CXX=g++-13
export AR=gcc-ar-13
export NM=gcc-nm-13
export RANLIB=gcc-ranlib-13
%endif
# do not eat all memory
%ifarch %ix86 %arm
%limit_build -m 1200
%else
%limit_build -m 4000
%endif
%ifarch aarch64
#These settings make it use much more memory leading to OOM during linking
unset MALLOC_CHECK_
unset MALLOC_PERTURB_
%endif
%if %{with lto}
%ifarch aarch64
2024-08-31 09:02:17 +00:00
export LDFLAGS=" $ L D F L A G S - f l t o = 2 - - p a r a m g g c - m i n - e x p a n d = 2 0 - - p a r a m g g c - m i n - h e a p s i z e = 3 2 7 6 8 - - p a r a m l t o - m a x - s t r e a m i n g - p a r a l l e l i s m = 1 - W l , - - n o - k e e p - m e m o r y - W l , - - r e d u c e - m e m o r y - o v e r h e a d s "
2024-07-20 10:06:30 +00:00
%else
# x64 is fine with the the default settings (the machines have 30GB+ ram)
export LDFLAGS=" $ L D F L A G S - f l t o = a u t o "
%endif
%endif
2024-09-05 05:02:09 +00:00
%if %{with mold}
export LDFLAGS=" $ L D F L A G S - f u s e - l d = m o l d "
%endif
2024-08-14 22:08:54 +00:00
# Ccache is truncated to 5GB which is not enough for Electron, leading to slower rebuilds
export CCACHE_COMPRESS=1
ccache -o max_size=0 || true
2021-06-29 20:42:56 +00:00
# Create the configuration for GN
# Available options: out/Release/gn args --list out/Release/
myconf_gn=" "
2024-05-03 09:28:15 +00:00
myconf_gn+=' override_electron_version="%{tag_version}"'
2024-09-05 05:02:09 +00:00
# The only known consumer of process.versions.<custom string> is VSCode:
# https://github.com/microsoft/vscode/blob/main/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
myconf_gn+=' electron_vendor_version="microsoft-build:Electron for openSUSE"'
2021-06-29 20:42:56 +00:00
myconf_gn+=" c u s t o m _ t o o l c h a i n = \" / / b u i l d / t o o l c h a i n / l i n u x / u n b u n d l e : d e f a u l t \" "
myconf_gn+=" h o s t _ t o o l c h a i n = \" / / b u i l d / t o o l c h a i n / l i n u x / u n b u n d l e : d e f a u l t \" "
myconf_gn+=" u s e _ c u s t o m _ l i b c x x = f a l s e "
2022-07-04 09:07:38 +00:00
%ifarch %ix86
myconf_gn+=" h o s t _ c p u = \" x 8 6 \" "
%endif
2023-03-10 06:02:08 +00:00
%ifarch x86_64 %x86_64
2022-01-27 22:16:50 +00:00
myconf_gn+=" h o s t _ c p u = \" x 6 4 \" "
%endif
%ifarch aarch64
myconf_gn+=" h o s t _ c p u = \" a r m 6 4 \" "
2022-10-04 19:13:55 +00:00
#default is "standard" which does not work with gcc
#This does not raise the cpu requirements according to https://developer.arm.com/documentation/101754/0616/armclang-Reference/armclang-Command-line-Options/-mbranch-protection
myconf_gn+=" a r m _ c o n t r o l _ f l o w _ i n t e g r i t y = \" p a c \" "
2022-01-27 22:16:50 +00:00
%endif
2022-07-04 09:07:38 +00:00
%ifarch %arm
myconf_gn+=" h o s t _ c p u = \" a r m \" "
2022-09-21 09:00:14 +00:00
#openSUSE only supports armhf
%ifarch armv7hl armv7hnl
myconf_gn+=" a r m _ v e r s i o n = 7 "
%endif
%ifarch armv6hl
myconf_gn+=" a r m _ v e r s i o n = 6 "
%endif
myconf_gn+=" a r m _ f l o a t _ a b i = \" h a r d \" "
2022-07-04 09:07:38 +00:00
# Disable requirement of neon instructions
2022-09-21 09:00:14 +00:00
%ifarch armv7hnl armv8hnl armv8hcnl
myconf_gn+=" a r m _ u s e _ n e o n = t r u e "
%else
myconf_gn+=" a r m _ u s e _ n e o n = f a l s e "
2022-07-04 09:07:38 +00:00
%endif
2022-09-21 09:00:14 +00:00
%endif #ifarch arm
2022-10-04 19:13:55 +00:00
2022-01-27 22:16:50 +00:00
myconf_gn+=" h o s t _ o s = \" l i n u x \" "
2021-06-29 20:42:56 +00:00
myconf_gn+=" i s _ d e b u g = f a l s e "
2022-01-27 22:16:50 +00:00
myconf_gn+=" d c h e c k _ a l w a y s _ o n = f a l s e "
2021-06-29 20:42:56 +00:00
myconf_gn+=" e n a b l e _ n a c l = f a l s e "
2022-12-07 09:53:09 +00:00
%if %{with swiftshader}
myconf_gn+=" e n a b l e _ s w i f t s h a d e r = t r u e "
2022-07-04 09:07:38 +00:00
%if %{with subzero}
2021-06-29 20:42:56 +00:00
myconf_gn+=" u s e _ s w i f t s h a d e r _ w i t h _ s u b z e r o = t r u e "
2022-07-04 09:07:38 +00:00
%else
myconf_gn+=" u s e _ s w i f t s h a d e r _ w i t h _ s u b z e r o = f a l s e "
2021-06-29 20:42:56 +00:00
%endif
2022-12-07 09:53:09 +00:00
%else
myconf_gn+=" e n a b l e _ s w i f t s h a d e r = f a l s e "
%endif
2021-06-29 20:42:56 +00:00
myconf_gn+=" i s _ c o m p o n e n t _ f f m p e g = t r u e "
2023-10-27 09:24:58 +00:00
myconf_gn+=" u s e _ c u p s = f a l s e "
2022-08-01 08:25:54 +00:00
2023-03-20 07:15:32 +00:00
# link libvulkan.so and libGLX.so instead of dlopening
2022-10-04 19:13:55 +00:00
myconf_gn+=" a n g l e _ u s e _ c u s t o m _ l i b v u l k a n = f a l s e "
2023-03-20 07:15:32 +00:00
%if %{with link_vulkan}
myconf_gn+=" a n g l e _ s h a r e d _ l i b v u l k a n = f a l s e "
%endif
myconf_gn+=" a n g l e _ l i n k _ g l x = t r u e "
2023-05-26 15:49:46 +00:00
#Use faster flat_map instead of fallback std::unordered_map implementation in ANGLE.
#Upstream sets it by default to the value of is_clang with the comment “has trouble supporting MSVC”.
#This is supposed to be enabled in chromium and compiles fine with GCC.
myconf_gn+=' angle_enable_abseil=true'
2023-10-27 09:24:58 +00:00
#this is also mistakenly set to is_clang with the (untrue) comment “macros for determining endian type are currently clang specific”
#in fact, 1° clang copied those macros from gcc and 2° this should be unbundled.
myconf_gn+=' v8_use_libm_trig_functions=true'
2024-02-01 09:09:50 +00:00
#yet another is_clang
myconf_gn+=' rtc_enable_avx2=true'
2024-02-22 08:55:18 +00:00
myconf_gn+=' angle_enable_swiftshader=true'
2023-10-27 09:24:58 +00:00
2023-05-26 15:49:46 +00:00
2022-10-04 19:13:55 +00:00
# do not build PDF support
myconf_gn+=" e n a b l e _ p d f = f a l s e "
myconf_gn+=" e n a b l e _ p d f _ v i e w e r = f a l s e "
myconf_gn+=" e n a b l e _ p r i n t _ p r e v i e w = f a l s e "
2023-09-13 04:57:45 +00:00
myconf_gn+=" e n a b l e _ p r i n t i n g = f a l s e "
2023-10-21 18:20:42 +00:00
myconf_gn+=' use_cups=false'
2023-08-19 05:38:25 +00:00
#we don't build PDF support, so disabling the below:
#myconf_gn+=" use_system_lcms2=true"
#myconf_gn+=" use_system_libopenjpeg2=true"
2022-10-04 19:13:55 +00:00
2022-10-29 19:25:58 +00:00
#do not build chrome pepper plugins support
myconf_gn+=" e n a b l e _ p l u g i n s = f a l s e "
myconf_gn+=" e n a b l e _ p p a p i = f a l s e "
2024-04-19 21:15:15 +00:00
#it is set by default to enable_ppapi but is required by electron_api_web_frame.cc
myconf_gn+=' content_enable_legacy_ipc=true'
2022-10-04 19:13:55 +00:00
2023-09-29 11:12:59 +00:00
#do not build webextensions support
myconf_gn+=' enable_electron_extensions=false'
2022-08-01 08:25:54 +00:00
2022-08-08 08:46:02 +00:00
# The option below get overriden by whatever is in CFLAGS/CXXFLAGS, so they affect only C++ code.
2022-03-18 15:41:41 +00:00
# symbol_level=2 is full debug
# symbol_level=1 is enough info for stacktraces
2022-10-29 19:25:58 +00:00
# symbol_level=0 no debuginfo (only function names in private symbols)
2024-04-30 18:32:00 +00:00
# blink (HTML engine) and v8 (js engine) are template-heavy, trying to compile them with full debug leads to linker errors due to inherent limitations of the DWARF format.
2022-08-08 08:46:02 +00:00
%ifnarch %ix86 %arm aarch64
2024-07-12 10:45:39 +00:00
%if 0%{?fedora}
# [10675s] lto1: internal compiler error: in build_abbrev_table, at dwarf2out.cc:9244
myconf_gn+=' symbol_level=1'
%else
2024-04-30 18:32:00 +00:00
myconf_gn+=' symbol_level=2'
2024-07-12 10:45:39 +00:00
%endif
2024-04-30 18:32:00 +00:00
myconf_gn+=' blink_symbol_level=1'
myconf_gn+=' v8_symbol_level=1'
2022-08-08 08:46:02 +00:00
%endif
2022-10-29 19:25:58 +00:00
%ifarch %ix86 %arm
#Sorry, no debug on 32bit.
2023-09-13 04:57:45 +00:00
myconf_gn+=" s y m b o l _ l e v e l = 1 "
2022-10-29 19:25:58 +00:00
myconf_gn+=" b l i n k _ s y m b o l _ l e v e l = 0 "
myconf_gn+=" v 8 _ s y m b o l _ l e v e l = 0 "
2022-08-08 08:46:02 +00:00
%endif
2024-04-19 21:15:15 +00:00
%ifarch aarch64
2024-07-20 10:06:30 +00:00
%if %{with lto}
2024-04-19 21:15:15 +00:00
# linker OOM, sorry.
# we still seem to get some debug generated during linking when LTO is enabled
myconf_gn+=' symbol_level=0'
myconf_gn+=' blink_symbol_level=0'
myconf_gn+=' v8_symbol_level=0'
2024-07-20 10:06:30 +00:00
%else
2024-10-18 05:35:25 +00:00
%if 0%{?fedora} == 39
myconf_gn+=' symbol_level=1'
%else
2024-07-20 10:06:30 +00:00
myconf_gn+=' symbol_level=2'
2024-10-18 05:35:25 +00:00
%endif
2024-07-20 10:06:30 +00:00
myconf_gn+=' blink_symbol_level=1'
myconf_gn+=' v8_symbol_level=1'
%endif
2022-08-08 08:46:02 +00:00
%endif
2022-08-01 08:25:54 +00:00
2024-07-12 10:45:39 +00:00
#symbol_level should not affect generated code.
myconf_gn+=' enable_stack_trace_line_numbers=true'
2023-10-21 18:20:42 +00:00
2022-10-26 04:51:48 +00:00
# do not build some chrome features not used by electron
2023-10-21 18:20:42 +00:00
# (some of these only go to buildflag_headers and are dead code rn, but disabling them preemptively as long as they're visible)
2021-06-29 20:42:56 +00:00
myconf_gn+=" e n a b l e _ v r = f a l s e "
myconf_gn+=" e n a b l e _ r e a d i n g _ l i s t = f a l s e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" e n a b l e _ r e p o r t i n g = f a l s e "
myconf_gn+=" b u i l d _ w i t h _ t f l i t e _ l i b = f a l s e "
2022-12-03 23:54:17 +00:00
myconf_gn+=" b u i l d _ t f l i t e _ w i t h _ x n n p a c k = f a l s e "
2023-09-13 04:57:45 +00:00
myconf_gn+=" b u i l d _ w e b n n _ w i t h _ x n n p a c k = f a l s e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" s a f e _ b r o w s i n g _ m o d e = 0 "
2023-03-10 06:02:08 +00:00
myconf_gn+=" e n a b l e _ m a l d o c a = f a l s e "
2022-10-26 04:51:48 +00:00
myconf_gn+=" e n a b l e _ c a p t i v e _ p o r t a l _ d e t e c t i o n = f a l s e "
myconf_gn+=" e n a b l e _ b r o w s e r _ s p e e c h _ s e r v i c e = f a l s e "
myconf_gn+=" e n a b l e _ s p e e c h _ s e r v i c e = f a l s e "
myconf_gn+=" e n a b l e _ s c r e e n _ a i _ s e r v i c e = f a l s e "
2024-07-12 10:45:39 +00:00
myconf_gn+=' enable_screen_ai_browsertests=false'
2022-11-05 11:17:41 +00:00
myconf_gn+=" i n c l u d e _ t r a n s p o r t _ s e c u r i t y _ s t a t e _ p r e l o a d _ l i s t = f a l s e "
2022-11-05 18:12:04 +00:00
myconf_gn+=" e n a b l e _ w e b _ s p e e c h = f a l s e "
2022-11-28 15:48:53 +00:00
myconf_gn+=" c h r o m e _ w i d e _ e c h o _ c a n c e l l a t i o n _ s u p p o r t e d = f a l s e "
myconf_gn+=" e n a b l e _ d o w n g r a d e _ p r o c e s s i n g = f a l s e "
myconf_gn+=" e n a b l e _ c l i c k _ t o _ c a l l = f a l s e "
myconf_gn+=" e n a b l e _ w e b u i _ t a b _ s t r i p = f a l s e "
2022-12-03 23:54:17 +00:00
myconf_gn+=" e n a b l e _ w e b u i _ c e r t i f i c a t e _ v i e w e r = f a l s e "
2022-11-28 15:48:53 +00:00
myconf_gn+=" e n a b l e _ b a c k g r o u n d _ c o n t e n t s = f a l s e "
2023-09-13 04:57:45 +00:00
myconf_gn+=" e n a b l e _ e x t r a c t o r s = f a l s e "
2022-12-03 23:54:17 +00:00
myconf_gn+=" e n a b l e _ f e e d _ v 2 = f a l s e "
2022-12-19 19:59:13 +00:00
myconf_gn+=" o z o n e _ p l a t f o r m _ h e a d l e s s = f a l s e "
myconf_gn+=" a n g l e _ e n a b l e _ g l _ n u l l = f a l s e "
2023-01-13 05:29:42 +00:00
myconf_gn+=" e n a b l e _ p a i n t _ p r e v i e w = f a l s e "
2023-09-13 04:57:45 +00:00
myconf_gn+=" u s e _ b u n d l e d _ w e s t o n = f a l s e "
myconf_gn+=" e n a b l e _ c o m p o n e n t _ u p d a t e r = f a l s e "
myconf_gn+=" e n a b l e _ l e n s _ d e s k t o p = f a l s e "
2023-10-19 17:09:42 +00:00
myconf_gn+=' enable_bound_session_credentials=false'
myconf_gn+=' enable_chrome_notifications=false'
myconf_gn+=' enable_message_center=false'
2023-10-21 18:20:42 +00:00
myconf_gn+=' enable_system_notifications=false'
myconf_gn+=' enable_supervised_users=false'
2024-02-27 19:01:54 +00:00
myconf_gn+=' enable_compose=false'
2024-04-04 20:44:56 +00:00
myconf_gn+=' enterprise_cloud_content_analysis=false'
myconf_gn+=' enterprise_local_content_analysis=false'
myconf_gn+=' enterprise_watermark=false'
2024-09-16 18:02:24 +00:00
myconf_gn+=' enterprise_content_analysis=true'
2024-07-12 10:45:39 +00:00
myconf_gn+=' enable_video_effects=false'
myconf_gn+=' use_fake_screen_ai=true'
myconf_gn+=' webnn_use_tflite=false'
2024-09-16 18:02:24 +00:00
myconf_gn+=' structured_metrics_enabled=false'
myconf_gn+=' structured_metrics_debug_enabled=false'
2023-10-21 18:20:42 +00:00
2023-10-19 17:09:42 +00:00
#FIXME: possibly enable this when skia gets built with rust code by default.
#Need to patch in optflags and possibly FFI LTO hacks (see signal-desktop package for how it's done)
myconf_gn+=' enable_rust=false'
2024-04-19 21:15:15 +00:00
myconf_gn+=' enable_chromium_prelude=false'
2024-09-16 18:02:24 +00:00
myconf_gn+=' enable_cxx=false'
2022-12-19 19:59:13 +00:00
2024-04-19 21:15:15 +00:00
myconf_gn+=' chrome_certificate_policies_supported=false'
2024-09-16 18:02:24 +00:00
myconf_gn+=' chrome_root_store_cert_management_ui=false'
2023-10-21 18:20:42 +00:00
myconf_gn+=' use_kerberos=false'
2023-09-13 04:57:45 +00:00
myconf_gn+=' disable_histogram_support=true'
2022-11-28 15:48:53 +00:00
2022-07-04 09:07:38 +00:00
#Do not build Chromecast
2022-10-04 19:13:55 +00:00
myconf_gn+=" e n a b l e _ r e m o t i n g = f a l s e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" e n a b l e _ m e d i a _ r e m o t i n g = f a l s e "
2022-12-03 23:54:17 +00:00
myconf_gn+=" e n a b l e _ s e r v i c e _ d i s c o v e r y = f a l s e "
2022-07-04 09:07:38 +00:00
2023-03-10 06:02:08 +00:00
#disable some debug/tracing hooks, they increase size and we do not build chrome://tracing anyway (see disable-catapult.patch)
myconf_gn+=" e n a b l e _ t r a c e _ l o g g i n g = f a l s e "
myconf_gn+=" o p t i o n a l _ t r a c e _ e v e n t s _ e n a b l e d = f a l s e "
myconf_gn+=" r t c _ d i s a b l e _ l o g g i n g = t r u e "
myconf_gn+=" r t c _ d i s a b l e _ m e t r i c s = t r u e "
myconf_gn+=" r t c _ d i s a b l e _ t r a c e _ e v e n t s = t r u e "
2023-11-23 20:06:51 +00:00
myconf_gn+=' enable_perfetto_system_consumer=false'
myconf_gn+=' enable_perfetto_trace_processor_json=false'
myconf_gn+=' enable_perfetto_trace_processor_httpd=false'
myconf_gn+=' enable_perfetto_zlib=false'
2023-03-10 06:02:08 +00:00
2022-07-04 09:07:38 +00:00
2022-11-28 15:48:53 +00:00
2024-04-04 20:44:56 +00:00
myconf_gn+=' dawn_complete_static_libs=true'
2022-07-04 09:07:38 +00:00
myconf_gn+=" e n a b l e _ l i b r a r y _ c d m s = f a l s e "
2021-06-29 20:42:56 +00:00
myconf_gn+=" u s e _ p u l s e a u d i o = t r u e l i n k _ p u l s e a u d i o = t r u e "
myconf_gn+=" i s _ c o m p o n e n t _ b u i l d = f a l s e "
myconf_gn+=" u s e _ s y s r o o t = f a l s e "
myconf_gn+=" f a t a l _ l i n k e r _ w a r n i n g s = f a l s e "
2024-04-30 18:32:00 +00:00
2022-10-07 13:16:29 +00:00
2022-01-27 22:16:50 +00:00
myconf_gn+=" d i s a b l e _ f i e l d t r i a l _ t e s t i n g _ c o n f i g = t r u e "
2021-06-29 20:42:56 +00:00
myconf_gn+=" u s e _ u n o f f i c i a l _ v e r s i o n _ n u m b e r = f a l s e "
myconf_gn+=" u s e _ l l d = f a l s e "
2023-08-19 05:38:25 +00:00
2022-07-04 09:07:38 +00:00
%if %{with vaapi}
2024-04-19 21:15:15 +00:00
myconf_gn+=' use_vaapi=true use_vaapi_image_codecs=true'
2023-08-19 05:38:25 +00:00
%else
2024-04-19 21:15:15 +00:00
myconf_gn+=' use_vaapi=false use_vaapi_image_codecs=false'
%endif
%if %{with v4l2}
myconf_gn+=' use_v4l2_codec=true'
%else
myconf_gn+=' use_v4l2_codec=false'
2022-07-04 09:07:38 +00:00
%endif
2023-08-19 05:38:25 +00:00
2021-06-29 20:42:56 +00:00
myconf_gn+=" t r e a t _ w a r n i n g s _ a s _ e r r o r s = f a l s e "
myconf_gn+=" u s e _ d b u s = t r u e "
myconf_gn+=" e n a b l e _ v u l k a n = t r u e "
myconf_gn+=" i c u _ u s e _ d a t a _ f i l e = f a l s e "
2021-11-11 20:37:54 +00:00
myconf_gn+=" m e d i a _ u s e _ o p e n h 2 6 4 = f a l s e "
myconf_gn+=" r t c _ u s e _ h 2 6 4 = f a l s e "
2022-01-27 22:16:50 +00:00
myconf_gn+=" u s e _ v 8 _ c o n t e x t _ s n a p s h o t = t r u e "
myconf_gn+=" v 8 _ u s e _ e x t e r n a l _ s t a r t u p _ d a t a = t r u e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" u s e _ s y s t e m _ z l i b = t r u e "
myconf_gn+=" u s e _ s y s t e m _ l i b j p e g = t r u e "
myconf_gn+=" u s e _ s y s t e m _ l i b p n g = t r u e "
2023-09-13 04:57:45 +00:00
#we don't build PDF support, so disabling the below:
#myconf_gn+=" use_system_lcms2=true"
#myconf_gn+=" use_system_libopenjpeg2=true"
2022-01-27 22:16:50 +00:00
myconf_gn+=" u s e _ s y s t e m _ h a r f b u z z = t r u e "
myconf_gn+=" u s e _ s y s t e m _ f r e e t y p e = t r u e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" u s e _ s y s t e m _ c a r e s = t r u e "
myconf_gn+=" u s e _ s y s t e m _ n g h t t p 2 = t r u e "
2022-07-07 08:02:56 +00:00
%if %{with system_llhttp}
myconf_gn+=" u s e _ s y s t e m _ l l h t t p = t r u e "
%endif
%if %{with system_histogram}
myconf_gn+=" u s e _ s y s t e m _ h i s t o g r a m = t r u e "
%endif
2023-10-16 08:59:19 +00:00
%if %{with system_simdutf}
myconf_gn+=' use_system_simdutf=true'
%endif
2021-06-29 20:42:56 +00:00
myconf_gn+=" i s _ c l a n g = f a l s e "
2022-07-04 09:07:38 +00:00
myconf_gn+=" u s e _ g o l d = f a l s e "
2021-06-29 20:42:56 +00:00
%if %{with lto}
myconf_gn+=" g c c _ l t o = t r u e "
# endif with lto
%endif
2024-09-14 08:17:25 +00:00
%if %{with gdbjit}
#Enable GDB protocol (--js-flags=--gdbjit_full). It's disabled by default in Chromium but very useful for Node/Electron
myconf_gn+=' v8_enable_gdbjit=true'
%endif
2022-07-04 09:07:38 +00:00
2021-06-29 20:42:56 +00:00
%if %{with pipewire}
myconf_gn+=" r t c _ u s e _ p i p e w i r e = t r u e r t c _ l i n k _ p i p e w i r e = t r u e "
%endif
2022-12-07 09:53:09 +00:00
%if %{with qt}
2024-04-30 18:32:00 +00:00
myconf_gn+=' use_qt=true'
myconf_gn+=' moc_qt5_path="%{_libdir}/qt5/bin/"'
myconf_gn+=' use_qt6=true'
myconf_gn+=' moc_qt6_path="%{_qt6_libexecdir}"'
2022-12-07 09:53:09 +00:00
%endif
2022-07-04 09:07:38 +00:00
2023-01-13 05:29:42 +00:00
2022-07-04 09:07:38 +00:00
# Do not build WebGPU support. It is huge and not used by ANY known apps (we would know if it was — it's hidden behind an experimental flag).
myconf_gn+=" u s e _ d a w n = f a l s e "
2024-04-19 21:15:15 +00:00
myconf_gn+=' skia_use_dawn=false'
2022-07-04 09:07:38 +00:00
2021-06-29 20:42:56 +00:00
# The proprietary codecs just force the chromium to say they can use it and
# offload the actual computation to the ffmpeg, otherwise the chromium
# won't be able to load the codec even if the library can handle it
myconf_gn+=" p r o p r i e t a r y _ c o d e c s = t r u e "
myconf_gn+=" f f m p e g _ b r a n d i n g = \" C h r o m e \" "
# GN does not support passing cflags:
# https://bugs.chromium.org/p/chromium/issues/detail?id=642016
2024-02-27 19:01:54 +00:00
gn gen out/Release --testonly=false --args=" i m p o r t ( \" / / e l e c t r o n / b u i l d / a r g s / r e l e a s e . g n \" ) $ { m y c o n f _ g n } "
2022-09-09 08:50:38 +00:00
2021-06-29 20:42:56 +00:00
2022-10-26 04:51:48 +00:00
# dump the linker command line (if any) in case of failure
2024-02-27 19:01:54 +00:00
ninja -v %{?_smp_mflags} -C out/Release chromium_licenses copy_node_headers version electron || (cat out/Release/*.rsp | sed 's/ /\n/g' && false)
2022-09-09 08:50:38 +00:00
2021-07-12 19:40:24 +00:00
2021-06-29 20:42:56 +00:00
%install
install -d -m 0755 %{buildroot} %{_bindir}
2022-01-29 19:59:26 +00:00
install -d -m 0755 %{buildroot} %{_includedir} /electron
2021-06-29 20:42:56 +00:00
install -d -m 0755 %{buildroot} %{_libdir} /electron
install -d -m 0755 %{buildroot} %{_datadir} /applications
install -d -m 0755 %{buildroot} %{_datadir} /pixmaps/
install -d -m 0755 %{buildroot} %{_datadir} /icons/hicolor/symbolic/apps/
2022-07-04 09:07:38 +00:00
install -pm 0755 %{SOURCE10} %{buildroot} %{_bindir} /%{mod_name}
sed -i 's[XXXLIBDIRXXX[%{_libdir}[g' %{buildroot} %{_bindir} /%{mod_name}
2023-10-19 17:09:42 +00:00
install -pvDm644 electron/default_app/icon.png %{buildroot} %{_datadir} /icons/hicolor/1024x1024/apps/%{mod_name} .png
2023-10-12 17:11:37 +00:00
install -pvDm644 electron/shell/browser/resources/win/extracted-0.png %{buildroot} %{_datadir} /icons/hicolor/16x16/apps/%{mod_name} .png
install -pvDm644 electron/shell/browser/resources/win/extracted-1.png %{buildroot} %{_datadir} /icons/hicolor/32x32/apps/%{mod_name} .png
install -pvDm644 electron/shell/browser/resources/win/extracted-2.png %{buildroot} %{_datadir} /icons/hicolor/48x48/apps/%{mod_name} .png
install -pvDm644 electron/shell/browser/resources/win/extracted-3.png %{buildroot} %{_datadir} /icons/hicolor/256x256/apps/%{mod_name} .png
2021-06-29 20:42:56 +00:00
desktop-file-install --dir %{buildroot} %{_datadir} /applications/ %{SOURCE11}
pushd out/Release
2024-04-30 18:32:00 +00:00
install -pm 0644 version -t %{buildroot} %{_libdir} /electron/
2021-07-15 22:00:36 +00:00
2024-04-30 18:32:00 +00:00
gn desc . //electron:electron_app runtime_deps | grep -v ^gen/ | sort | uniq | xargs -t cp -l -v --parents -t %{buildroot} %{_libdir} /electron/ --
2021-06-29 20:42:56 +00:00
popd
2021-10-07 22:05:47 +00:00
2022-11-02 11:16:40 +00:00
2021-06-29 20:42:56 +00:00
2023-03-10 06:02:08 +00:00
cp -lrvT out/Release/gen/node_headers/include/node %{buildroot} %{_includedir} /electron
2022-01-29 19:59:26 +00:00
2024-05-11 22:39:59 +00:00
# Electron has a little known feature that make it work like a nodejs binary.
# We make use of it in the %%electron_rebuild macro which builds all dependencies in node_modules against Electron's headers.
# Not all scripts work when run under electron,
# but importantly npm/yarn and GYP do.
mkdir -pv %{buildroot} %{_libexecdir} /electron-node
cat <<EOF > %{buildroot} %{_libexecdir} /electron-node/node
#!/bin/sh
ELECTRON_RUN_AS_NODE=1 exec %{_libdir} /electron/electron " \ $ @ "
EOF
# HACK: This will refer to /usr/bin/npm17 on openSUSE, /usr/bin/npm on Fedora which are Node scripts
cat <<EOF >%{buildroot} %{_libexecdir} /electron-node/npm
#!/bin/sh
exec %{_libexecdir} /electron-node/node %{_bindir} /npm%{NODEJS_DEFAULT_VER} " \ $ @ "
EOF
cat <<EOF > %{buildroot} %{_libexecdir} /electron-node/npx
#!/bin/sh
exec %{_libexecdir} /electron-node/node %{_bindir} /npx%{NODEJS_DEFAULT_VER} " \ $ @ "
EOF
# On Fedora, /usr/bin/yarn is a node script which means it needs to be wrapped too. On openSUSE, it is a shell script.
%if 0%{?fedora}
cat <<EOF > %{buildroot} %{_libexecdir} /electron-node/yarn
#!/bin/sh
exec %{_libexecdir} /electron-node/node %{_bindir} /yarn " \ $ @ "
EOF
%endif
chmod -v 0755 %{buildroot} %{_libexecdir} /electron-node/*
2022-09-21 09:00:14 +00:00
# Install electron.macros
mkdir -p %{buildroot} %{_rpmconfigdir} /macros.d
cp /dev/stdin %{buildroot} %{_rpmconfigdir} /macros.d/macros.electron <<" E O F "
2024-05-11 22:39:59 +00:00
# Ensure rebuilds when electron major changes.
2022-09-21 09:00:14 +00:00
%%electron_req Requires: electron%{_isa}(abi) = %{abi_version}
2024-05-11 22:39:59 +00:00
# Build native modules against Electron. This should be done as the first step in ‰build. You must set CFLAGS/LDFLAGS previously.
# You can call it multiple times in different directories and pass more parameters to it (seen in vscode)
2024-07-04 04:31:28 +00:00
%%electron_rebuild %{?jitless} PATH=" %{_libexecdir} / e l e c t r o n - n o d e : $ P A T H " npm rebuild --verbose --foreground-scripts --nodedir=%{_includedir} /electron
2024-05-11 22:39:59 +00:00
# Sanity check that native modules load. You must include this in ‰check if the package includes native modules (possibly in addition to actual test suites)
# These do, in order:
# 1. Detect underlinking (missing dependencies)
# 2. Detect accidental linking to libuv which must not be used (Electron exports its own incompatible version)
# 3. Actually load each module
# This one should be paired with a simple `Requires: nodejs-electron%{_isa}` in requirements.
%%electron_check_native \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX sh -c '! ldd -d -r XXX | \\\
grep '\\' '^undefined symbol' \\'' | \\\
grep -v '\\' '^undefined symbol: napi_' \\'' | \\\
grep -v '\\' '^undefined symbol: uv_' \\'' ' \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX sh -c '! objdump -p XXX | grep -F libuv.so.1' \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX env ELECTRON_RUN_AS_NODE=1 %{_libdir} /electron/electron -e 'require("XXX")'
# This one allows use of unstable APIs and should be paired with the `‰electron_req` macro in requirements.
%%electron_check_native_unstable \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX sh -c '! ldd -d -r XXX | \\\
grep '\\' '^undefined symbol' \\'' | \\\
grep -v '\\' '^undefined symbol: node_' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZN12v8_inspector' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZN2v8' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZN4node' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZN5cppgc' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZN8electron' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZNK12v8_inspector' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZNK2v8' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZNK4node' \\'' | \\\
grep -v '\\' '^undefined symbol: _ZNK5cppgc' \\'' | \\\
grep -v '\\' '^undefined symbol: napi_' \\'' | \\\
grep -v '\\' '^undefined symbol: uv_' \\'' ' \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX sh -c '! objdump -p XXX | grep -F libuv.so.1' \
find '%%{buildroot}' -type f -name '*.node' -print0 | xargs -0 -t -IXXX env ELECTRON_RUN_AS_NODE=1 %{_libdir} /electron/electron -e 'require("XXX")'
2022-09-21 09:00:14 +00:00
EOF
chmod -v 644 %{buildroot} %{_rpmconfigdir} /macros.d/macros.electron
2022-09-09 08:50:38 +00:00
2023-02-09 18:41:02 +00:00
#help debugedit find the source files
ln -srv third_party/emoji-segmenter/src/emoji_presentation_scanner.c -t out/Release
ln -srv third_party/emoji-segmenter/src/emoji_presentation_scanner.rl -t out/Release
ln -srv third_party/angle/src/compiler/translator/glslang.l -t out/Release
ln -srv third_party/angle/src/compiler/preprocessor/preprocessor.l -t out/Release
ln -srv third_party -t out/Release
2021-06-29 20:42:56 +00:00
%files
2022-09-09 08:50:38 +00:00
%license electron/LICENSE out/Release/LICENSES.chromium.html
2021-06-29 20:42:56 +00:00
%{_bindir} /electron
2024-06-29 08:08:03 +00:00
%{_datadir} /applications/Electron.desktop
2023-10-12 17:11:37 +00:00
%{_datadir} /icons/hicolor/16x16/apps/electron.png
%{_datadir} /icons/hicolor/32x32/apps/electron.png
%{_datadir} /icons/hicolor/48x48/apps/electron.png
%{_datadir} /icons/hicolor/256x256/apps/electron.png
%{_datadir} /icons/hicolor/1024x1024
2021-10-07 22:05:47 +00:00
2024-04-30 18:32:00 +00:00
%dir %{_libdir} /electron/
%{_libdir} /electron/chrome_100_percent.pak
%{_libdir} /electron/chrome_200_percent.pak
%{_libdir} /electron/chrome_crashpad_handler
%{_libdir} /electron/electron
%{_libdir} /electron/libEGL.so
%{_libdir} /electron/libGLESv2.so
%{_libdir} /electron/libvk_swiftshader.so
%{_libdir} /electron/resources.pak
%{_libdir} /electron/snapshot_blob.bin
%{_libdir} /electron/v8_context_snapshot.bin
%{_libdir} /electron/version
%{_libdir} /electron/vk_swiftshader_icd.json
%dir %{_libdir} /electron/locales
%{_libdir} /electron/locales/*.pak
%dir %{_libdir} /electron/resources
%{_libdir} /electron/resources/default_app.asar
2021-06-29 20:42:56 +00:00
2022-01-29 19:59:26 +00:00
%files devel
%{_includedir} /electron
2022-09-21 09:00:14 +00:00
%{_rpmconfigdir} /macros.d/macros.electron
2024-05-11 22:39:59 +00:00
%dir %{_libexecdir} /electron-node
%{_libexecdir} /electron-node/node
%{_libexecdir} /electron-node/npm
%{_libexecdir} /electron-node/npx
%if 0%{?fedora}
%{_libexecdir} /electron-node/yarn
%endif
2022-01-29 19:59:26 +00:00
2022-10-04 19:13:55 +00:00
%files doc
%doc electron/README.md
%doc electron/docs
2024-04-30 18:32:00 +00:00
%if %{with qt}
%files qt5
%{_libdir} /electron/libqt5_shim.so
%files qt6
%{_libdir} /electron/libqt6_shim.so
%endif
2021-06-29 20:42:56 +00:00
%changelog