# # spec file for package nodejs-electron # # Copyright (c) 2022 SUSE LLC # Copyright (c) 2021-2022 Andreas Schneider # # 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. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %undefine _package_note_file # https://fedoraproject.org/wiki/Changes/SetBuildFlagsBuildCheck %undefine _auto_set_build_flags %global debug_package %{nil} %define mod_name electron # https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json %define abi_version 110 # Do not provide libEGL.so, etc… %define __provides_exclude ^lib.*\\.so.*$ # Double DWZ memory limits %define _dwz_low_mem_die_limit 20000000 %define _dwz_max_die_limit 100000000 #x86 requires SSE2 #see v8/src/codegen/ia32/assembler-ia32.cc %ifarch %ix86 ExclusiveArch: i586 i686 BuildArch: i686 %{expand:%%global optflags %(echo "%optflags") -march=pentium4 -mtune=generic} %endif %bcond_without pipewire %bcond_without swiftshader %ifarch %ix86 x86_64 %x86_64 %arm #Use subzero as swiftshader backend instead of LLVM %bcond_without subzero %else %bcond_with subzero %endif #the QT ui is currently borderline unusable (too small fonts in menu and wrong colors) %bcond_with qt %bcond_without vaapi %if %{with vaapi} #vaapi still requires bundled libvpx %bcond_with system_vpx %else %bcond_without system_vpx %endif %bcond_with clang %if %{with clang} %global toolchain clang %else # Linker selection. GCC only. Default is BFD. # You can try different ones if it has problems. # arm64 reports relocation errors with BFD. %ifarch aarch64 %bcond_with gold %else %bcond_with gold %endif %endif #with clang %bcond_without lld #Mold succeeds on ix86 but seems to produce corrupt binaries (no build-id) %bcond_with mold %ifnarch %ix86 %arm aarch64 # OBS does not have enough powerful machines to build with LTO on aarch64. %if (0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora}) %bcond_with lto %else %bcond_with lto %endif %else %bcond_with lto %endif %bcond_without system_nghttp2 %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150500 || 0%{?fedora} >= 37 %bcond_without system_jxl %bcond_without system_dav1d %else %bcond_with system_jxl %bcond_with system_dav1d %endif %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora} >= 37 %bcond_without harfbuzz_5 %bcond_without system_aom %bcond_without system_avif %bcond_without icu_71 %bcond_without ffmpeg_5 %bcond_without system_spirv %else %bcond_with harfbuzz_5 %bcond_with system_aom %bcond_with system_avif %bcond_with icu_71 %bcond_with ffmpeg_5 %bcond_with system_spirv %endif %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150500 || 0%{?fedora_version} %bcond_without system_crc32c %bcond_without system_nvctrl %else %bcond_with system_crc32c %bcond_with system_nvctrl %endif %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora_version} %bcond_without link_vulkan %else %bcond_with link_vulkan %endif %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150500 %bcond_without system_yuv %else %bcond_with system_yuv %endif %if 0%{?fedora} %bcond_without system_llhttp %bcond_without system_histogram %else %bcond_with system_llhttp %bcond_with system_histogram %endif %if 0%{?fedora} >= 37 %bcond_without llhttp_8 %else %bcond_with llhttp_8 %endif # Abseil is broken in Leap # enable this when boo#1203378 and boo#1203379 get fixed %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora} >= 37 %if %{without clang} %bcond_without system_abseil %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora} >= 39 %bcond_without abseil_2023 %else %bcond_with abseil_2023 %endif %else # Clang has several problems with std::optional used by system abseil %bcond_with system_abseil %endif %else %bcond_with system_abseil %endif # We always ship the following bundled libraries as part of Electron despite a system version being available in either openSUSE or Fedora: # Name | Path in tarball | Reason # -------------+-----------------------------------+--------------------------------------- # boringssl | third_party/boringssl | The openSUSE package is unmaintained. # 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. # srtp / srtp2 | third_party/libsrtp | Api matches neither version 1 nor 2 of this library. # uv | third_party/electron_node/deps/uv | Heavily modified version which is exposed as part of Electron's public ABI. Name: nodejs-electron Version: 22.3.21 Release: 2%{?dist} Summary: Build cross platform desktop apps with JavaScript, HTML, and CSS License: AFL-2.0 AND Apache-2.0 AND blessing AND BSD-2-Clause AND BSD-3-Clause AND BSD-Protection AND BSD-Source-Code AND bzip2-1.0.6 AND IJG 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 Group: Development/Languages/NodeJS URL: https://github.com/electron/electron Source0: %{mod_name}-%{version}.tar.zst Source1: create_tarball.sh Source10: electron-launcher.sh Source11: electron.desktop Source12: electron-logo-symbolic.svg # Shim generators for unbundling libraries Source50: flatbuffers.gn Source51: libsecret.gn # Reverse upstream changes to be able to build against ffmpeg-4 Source400: ffmpeg-new-channel-layout.patch Source401: audio_file_reader-ffmpeg-AVFrame-duration.patch # …and against icu-69 Source410: NumberFormat-icu71-incrementExact.patch Source411: intl-objects-icu71-UNUM_APPROXIMATELY_SIGN_FIELD.patch # and against harfbuzz 4 Source415: harfbuzz-replace-chromium-scoped-type.patch #Reverse upstream changes to build against system libavif. #All of this patch is dead code, so it can be reversed unconditionally. Source420: avif_image_decoder-AVIF_PIXEL_FORMAT_COUNT.patch # PATCHES for openSUSE-specific things Patch0: chromium-102-compiler.patch Patch1: fpic.patch Patch3: gcc-enable-lto.patch Patch5: chromium-norar.patch Patch6: chromium-vaapi.patch Patch7: chromium-91-java-only-allowed-in-android-builds.patch Patch9: chromium-86-fix-vaapi-on-intel.patch # Always disable use_thin_lto which is an lld feature Patch21: electron-13-fix-use-thin-lto.patch # Fix common.gypi to include /usr/include/electron Patch25: electron-16-system-node-headers.patch # https://sources.debian.org/patches/chromium/102.0.5005.115-1/debianization/support-i386.patch/ Patch39: support-i386.patch # from https://sources.debian.org/patches/chromium/103.0.5060.53-1/disable/catapult.patch/ Patch67: disable-catapult.patch Patch69: nasm-generate-debuginfo.patch Patch70: disable-fuses.patch Patch71: enable-jxl.patch Patch72: electron-version-from-env.patch # https://code.qt.io/cgit/qt/qtwebengine-chromium.git/commit/?h=102-based&id=d617766b236a93749ddbb50b75573dd35238ffc9 Patch73: disable-webspeech.patch Patch74: common.gypi-remove-fno-omit-frame-pointer.patch Patch75: gcc-asmflags.patch # https://sources.debian.org/patches/chromium/108.0.5359.124-1/disable/tests.patch/ Patch76: disable-devtools-tests.patch Patch77: angle_link_glx.patch Patch78: rdynamic.patch # PATCHES to use system libs Patch1000: do-not-build-libvulkan.so.patch Patch1002: chromium-system-libusb.patch 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 # https://sources.debian.org/patches/chromium/102.0.5005.115-1/system/jsoncpp.patch/ Patch1040: system-jsoncpp.patch # https://sources.debian.org/patches/chromium/102.0.5005.115-1/system/zlib.patch/ Patch1041: system-zlib.patch Patch1044: replace_gn_files-system-libs.patch Patch1045: angle-system-xxhash.patch # https://svnweb.mageia.org/packages/cauldron/chromium-browser-stable/current/SOURCES/chromium-99-pdfium-system-libtiff-libpng.patch Patch1046: chromium-99-pdfium-system-libtiff.patch Patch1047: cares_public_headers.patch Patch1048: chromium-remove-bundled-roboto-font.patch Patch1053: swiftshader-use-system-llvm.patch Patch1054: thread_annotations-fix-build-with-system-abseil.patch Patch1063: system-libbsd.patch Patch1065: base-system-nspr.patch Patch1066: system-gtest.patch 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 Patch1076: crashpad-use-system-abseil.patch Patch1077: chromium-108-abseil-shims.patch # PATCHES to fix interaction with third-party software Patch2004: chromium-gcc11.patch Patch2010: chromium-93-ffmpeg-4.4.patch Patch2011: chromium-ffmpeg-first-dts.patch # Fix building sql recover_module Patch2020: electron-13-fix-sql-virtualcursor-type.patch # 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 # Fix electron patched code Patch2024: electron-16-std-vector-non-const.patch Patch2029: electron-16-webpack-fix-openssl-3.patch Patch2030: v8-icu69-FormattedNumberRange-no-default-constructible.patch Patch2031: partition_alloc-no-lto.patch Patch2032: seccomp_bpf-no-lto.patch # adjust to llhttp 8 api changes %if %{with llhttp_8} Patch2033: node-upgrade-llhttp-to-8.patch %else Source2033: node-upgrade-llhttp-to-8.patch %endif Patch2034: swiftshader-LLVMJIT-AddressSanitizerPass-dead-code-remove.patch Patch2035: RenderFrameHostImpl-use-after-free.patch # PATCHES that should be submitted upstream verbatim or near-verbatim Patch3016: chromium-98-EnumTable-crash.patch # 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 Patch3056: async_shared_storage_database_impl-missing-absl-WrapUnique.patch # https://salsa.debian.org/chromium-team/chromium/-/blob/456851fc808b2a5b5c762921699994e957645917/debian/patches/upstream/nested-nested-nested-nested-nested-nested-regex-patterns.patch Patch3064: nested-nested-nested-nested-nested-nested-regex-patterns.patch Patch3067: reproducible-config.gypi.patch Patch3069: aggregatable_attribution_utils-do-not-assume-abseil-ABI.patch Patch3071: electron_serial_delegate-ambiguous-Observer.patch Patch3072: attribution_response_parsing-do-not-assume-abseil-ABI.patch Patch3078: select_file_dialog_linux_kde-Wodr.patch Patch3079: web_contents_impl-Wsubobject-linkage.patch Patch3080: compact_enc_det_generated_tables-Wnarrowing.patch Patch3081: string_hasher-type-pun-UB-causes-heap-corruption.patch Patch3082: ipcz-buffer_id-Wnarrowing.patch Patch3083: swiftshader-Half-Wstrict-aliasing.patch Patch3084: swiftshader-Constants-Wstrict-aliasing.patch Patch3085: half_float-Wstrict-aliasing.patch Patch3086: unzip-Wsubobject-linkage.patch Patch3087: v8_initializer-PageAllocator-fpermissive.patch Patch3089: ipcz-safe_math-Wuninitialized.patch Patch3090: passwords_counter-Wsubobject-linkage.patch Patch3091: vector_math_impl-Wstrict-aliasing.patch Patch3092: webgl_image_conversion-Wstrict-aliasing.patch Patch3093: xr_cube_map-Wstrict-aliasing.patch Patch3094: static_constructors-Wstrict-aliasing.patch Patch3095: CVE-2022-43548.patch Patch3096: remove-date-reproducible-builds.patch Patch3097: shim_headers-fix-ninja.patch Patch3098: document_loader-private-DecodedBodyData.patch Patch3099: crashpad-elf_image_reader-ProgramHeaderTableSpecific-expected-unqualified-id.patch Patch3100: first_party_set_parser-IssueWithMetadata-no-known-conversion.patch Patch3101: print_dialog_gtk-no-kEnableOopPrintDriversJobPrint.patch Patch3102: angle-ShaderVars-missing-uint32_t.patch Patch3103: openscreen-gcc13-missing-headers.patch Patch3104: perfetto-uuid-missing-uint8_t.patch Patch3105: swiftshader-LRUCache-missing-uint64_t.patch Patch3106: vulkan_memory_allocator-vk_mem_alloc-missing-snprintf.patch Patch3107: profiler-missing-uintptr_t.patch Patch3108: components-gcc13-missing-headers.patch Patch3109: one_writer_seqlock-missing-uintptr_t.patch Patch3110: bluetooth_uuid-missing-uint8_t.patch Patch3111: broker_file_permission-missing-uint64_t.patch Patch3112: net-third_party-quiche-gcc13-missing-headers.patch Patch3113: webrtc-base64-missing-uint8_t.patch Patch3114: ui-gcc13-missing-headers.patch Patch3115: net-gcc13-missing-headers.patch Patch3116: extensions-gcc13-missing-headers.patch Patch3117: target_property-missing-uint32_t.patch Patch3118: gpu_feature_info-missing-uint32_t.patch Patch3119: blink-gcc13-missing-headers.patch Patch3120: effect_paint_property_node-Wchanges-meaning.patch Patch3121: services-network-optional-explicit-constructor.patch # PATCH-FIX-UPSTREAM - https://swiftshader-review.googlesource.com/c/SwiftShader/+/70528 Patch3200: d0aa9ad.patch # PATCH-FIX-UPSTREAM - https://swiftshader-review.googlesource.com/c/SwiftShader/+/70328 Patch3201: 647d3d2.patch Patch3202: mojom-python3.12-imp.patch # https://src.fedoraproject.org/rpms/qt6-qtwebengine/blob/rawhide/f/Partial-migration-from-imp-to-importlib.patch Patch3203: Partial-migration-from-imp-to-importlib.patch Patch3204: re2-11-StringPiece.patch %if %{with clang} BuildRequires: clang BuildRequires: lld BuildRequires: llvm %if 0%{?suse_version} && 0%{?suse_version} < 1550 BuildRequires: gcc11 BuildRequires: libstdc++6-devel-gcc11 %endif %endif %if %{with gold} BuildRequires: binutils-gold %endif BuildRequires: brotli %if %{with system_cares} BuildRequires: c-ares-devel %endif %if %{with system_crc32c} BuildRequires: cmake(Crc32c) %endif BuildRequires: double-conversion-devel BuildRequires: desktop-file-utils %if 0%{?fedora} BuildRequires: flatbuffers-compiler %endif BuildRequires: flatbuffers-devel BuildRequires: gn >= 0.1807 BuildRequires: gperf %if %{with system_histogram} BuildRequires: HdrHistogram_c-devel %endif BuildRequires: hicolor-icon-theme BuildRequires: hwdata %if 0%{?fedora} BuildRequires: libatomic %endif %if %{with system_aom} BuildRequires: libaom-devel >= 3.4 %endif BuildRequires: libbsd-devel BuildRequires: libpng-devel %if %{with system_nvctrl} BuildRequires: libXNVCtrl-devel %endif %if %{with system_llhttp} %if %{with llhttp_8} BuildRequires: llhttp-devel >= 8 %else BuildRequires: llhttp-devel < 8 %endif %endif %if %{with lld} BuildRequires: lld %endif %if %{with swiftshader} && %{without subzero} BuildRequires: llvm-devel %endif #BuildRequires: memory-constraints %if %{with mold} BuildRequires: mold %endif %ifarch %ix86 x86_64 %x86_64 %if %{without system_aom} || %{without system_vpx} BuildRequires: nasm %endif %endif %if 0%{?suse_version} BuildRequires: ninja >= 1.7.2 %else BuildRequires: ninja-build >= 1.7.2 %endif %if 0%{?fedora} >= 37 BuildRequires: nodejs-npm %else BuildRequires: npm %endif BuildRequires: pkgconfig BuildRequires: plasma-wayland-protocols BuildRequires: python3-json5 BuildRequires: python3-mako BuildRequires: python3-ply BuildRequires: python3-six BuildRequires: snappy-devel %if 0%{?suse_version} BuildRequires: update-desktop-files %endif BuildRequires: util-linux BuildRequires: vulkan-headers BuildRequires: wayland-devel BuildRequires: zstd %if %{with system_abseil} BuildRequires: pkgconfig(absl_algorithm_container) >= 20211000 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) BuildRequires: pkgconfig(absl_utility) BuildRequires: pkgconfig(absl_variant) %if %{with abseil_2023} BuildRequires: pkgconfig(absl_core_headers) >= 20230000 %endif %endif BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(cairo) >= 1.6 %if %{with system_dav1d} BuildRequires: pkgconfig(dav1d) >= 1 %endif BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(glproto) BuildRequires: pkgconfig(gtest) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(harfbuzz) >= 3 %if %{with harfbuzz_5} BuildRequires: pkgconfig(harfbuzz) >= 5 %endif %if %{with icu_71} BuildRequires: pkgconfig(icu-i18n) >= 71 %else %if 0%{?fedora} BuildRequires: libicu-devel < 70 %else BuildRequires: icu.691-devel %endif %endif BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(krb5) BuildRequires: pkgconfig(lcms2) %if %{with ffmpeg_5} BuildRequires: pkgconfig(libavcodec) >= 59 BuildRequires: pkgconfig(libavformat) >= 59 BuildRequires: pkgconfig(libavutil) >= 57 %else BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) >= 58 BuildRequires: pkgconfig(libavutil) %endif %if %{with system_avif} BuildRequires: pkgconfig(libavif) >= 0.10 %endif BuildRequires: pkgconfig(libbrotlidec) BuildRequires: pkgconfig(libbrotlienc) BuildRequires: pkgconfig(libcares) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libevent) %if %{with system_jxl} BuildRequires: pkgconfig(libjxl) >= 0.7 %endif %if 0%{?fedora} >= 38 #Work around https://bugzilla.redhat.com/show_bug.cgi?id=2148612 BuildRequires: pkgconfig(libmd) %endif %if %{with system_nghttp2} BuildRequires: pkgconfig(libnghttp2) %endif BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(libopenjp2) BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libsecret-1) %if %{with vaapi} BuildRequires: pkgconfig(libva) %endif BuildRequires: pkgconfig(libwebp) >= 0.4.0 BuildRequires: pkgconfig(libwoff2dec) BuildRequires: pkgconfig(libxml-2.0) >= 2.9.5 BuildRequires: pkgconfig(libxslt) BuildRequires: pkgconfig(libxxhash) %if %{with system_yuv} BuildRequires: pkgconfig(libyuv) %endif %if 0%{?fedora} BuildRequires: minizip-compat-devel %else BuildRequires: pkgconfig(minizip) %endif BuildRequires: pkgconfig(nspr) >= 4.9.5 BuildRequires: pkgconfig(nss) >= 3.26 BuildRequires: pkgconfig(opus) >= 1.3.1 BuildRequires: pkgconfig(pangocairo) %if %{with qt} BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Widgets) %endif BuildRequires: pkgconfig(re2) %if %{with system_spirv} %if 0%{?suse_version} BuildRequires: spirv-headers %else BuildRequires: spirv-headers-devel %endif BuildRequires: pkgconfig(SPIRV-Tools) >= 2022.2 %endif %if %{with link_vulkan} BuildRequires: pkgconfig(vulkan) >= 1.3 %endif 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} BuildRequires: pkgconfig(vpx) >= 1.8.2 %endif %if %{without clang} %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora} BuildRequires: gcc >= 12 BuildRequires: gcc-c++ >= 12 %else BuildRequires: gcc12-PIE BuildRequires: gcc12-c++ %endif %endif %if %{with pipewire} BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libspa-0.2) %endif Requires: hicolor-icon-theme Requires: google-roboto-fonts Recommends: noto-coloremoji-fonts # This required library is dlopened %if %{without link_vulkan} %ifarch %ix86 %arm Requires: libvulkan.so.1 %else Requires: libvulkan.so.1()(64bit) %endif %endif Provides: electron Provides: electron%{_isa}(abi) = %{abi_version} Obsoletes: nodejs-electron-prebuilt < %{version} Provides: nodejs-electron-prebuilt = %{version} %description Nodejs application: Build cross platform desktop apps with JavaScript, HTML, and CSS %package devel Summary: Electron development headers Group: Development/Libraries/C and C++ Requires: nodejs-electron%{?_isa} = %{version} Requires: pkgconfig(zlib) %if %{without icu_71} #SUSE patched code includes icu headers %if 0%{?fedora} Requires: libicu-devel%{?_isa} %else Requires: icu.691-devel%{?_isa} %endif %endif %description devel Development headers for Electron projects. %package doc Summary: Electron API documentation Group: Documentation/Other Enhances: nodejs-electron-devel = %{version} BuildArch: noarch %description doc Development documentation for the Electron runtime. %prep %if %{with clang} clang -v %endif # Use stable path to source to make use of ccache %autosetup -n src -p1 # Sanity check if macro corresponds to the actual ABI test $(grep ^node_module_version electron/build/args/all.gn | sed 's/.* = //') = %abi_version %if %{without system_abseil} patch -R -p1 < %PATCH1054 patch -R -p1 < %PATCH1076 %endif %if %{with system_abseil} && %{with abseil_2023} patch -R -p1 < %PATCH1054 %endif %if %{without ffmpeg_5} patch -R -p1 < %SOURCE400 %endif %if %{without harfbuzz_5} patch -R -p1 < %SOURCE415 %endif %if %{without icu_71} patch -R -p1 < %SOURCE410 patch -R -p1 < %SOURCE411 %else patch -R -p1 < %PATCH2030 %endif # This one depends on an ffmpeg nightly, reverting unconditionally. patch -R -p1 < %SOURCE401 # This one is dead code, we cen revert it even when using bundled avif. patch -R -p1 < %SOURCE420 # Link system wayland-protocols-devel into where chrome expects them mkdir -p third_party/wayland/src mkdir -p third_party/wayland-protocols/kde/src ln -svfT %{_datadir}/wayland third_party/wayland/src/protocol #mkdir -p third_party/wayland-protocols/mesa #ln -svfT %{_datadir}/wayland-protocols third_party/wayland-protocols/src #ln -svfT %{_datadir}/wayland-eglstream third_party/wayland-protocols/mesa/wayland-drm ln -svfT %{_datadir}/plasma-wayland-protocols third_party/wayland-protocols/kde/src/protocols # Shim generators for replace_gn_files.py cp -lv %{_sourcedir}/*.gn build/linux/unbundle/ # 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 # Fix eu-strip mkdir -p buildtools/third_party/eu-strip/bin ln -sf %{_bindir}/eu-strip buildtools/third_party/eu-strip/bin/eu-strip # Fix shim header generation sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ tools/generate_shim_headers/generate_shim_headers.py %build # GN sets lto on its own and we need just ldflag options, not cflags %define _lto_cflags %{nil} # see electron-version-from-env.patch export SUSE_ELECTRON_VERSION=%{version} # Make sure python is python3 install -d -m 0755 python3-path ln -sf %{_bindir}/python3 "$(pwd)/python3-path/python" export PATH="$(pwd)/python3-path:${PATH}" #some Fedora ports still try to build with LTO ARCH_FLAGS=$(echo "%optflags"|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="$ARCH_FLAGS -DIS_SERIAL_ENABLED_PLATFORM" %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="$(echo $ARCH_FLAGS | sed -e 's/ -fexceptions / /g')" %endif %if %{with clang} #RPM debugedit cannot handle clang's default dwarf-5 ARCH_FLAGS="$ARCH_FLAGS -fdebug-default-version=4" %endif # for wayland export CXXFLAGS="${ARCH_FLAGS} -I/usr/include/wayland -I/usr/include/libxkbcommon" export CFLAGS="${CXXFLAGS}" # 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="${CXXFLAGS} -Wno-error=return-type" # [ 8947s] gen/third_party/blink/renderer/bindings/modules/v8/v8_gpu_sampler_descriptor.h:212:39: error: narrowing conversion of '4294967295' from 'unsigned int' to 'float' [-Wnarrowing] # [ 8947s] 212 | float member_lod_max_clamp_{0xffffffff}; # I have no idea where this code is generated, and it is not something that needs a critical fix. # Remove this once upstream issues a proper patch. export CXXFLAGS="${CXXFLAGS} -Wno-error=narrowing" # A bunch of memcpy'ing of JSObject in V8 runs us into “Logfile got too big, killed job.” export CXXFLAGS="${CXXFLAGS} -Wno-class-memaccess" # 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="$(echo ${CXXFLAGS} | sed -e 's/-g / /g' -e 's/-g$//g')" %ifnarch x86_64 %x86_64 export CFLAGS="$(echo ${CFLAGS} | sed -e 's/-g /-g1 /g' -e 's/-g$/-g1/g')" %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} -Wl,-O2 -Wl,--gc-sections " %if %{without lld} && %{without gold} export LDFLAGS="$LDFLAGS -Wl,--gc-keep-exported" %endif %if %{with clang} export CC=clang export CXX=clang++ export AR=llvm-ar export NM=llvm-nm export RANLIB=llvm-ranlib # else with clang %else %ifarch %ix86 %arm #try to reduce memory %if %{without lld} && %{without mold} %if %{with gold} export LDFLAGS="${LDFLAGS} -Wl,--no-map-whole-files -Wl,--no-keep-memory -Wl,--no-keep-files-mapped" %else export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--hash-size=30 -Wl,--reduce-memory-overheads" %endif %endif #without lld %endif #ifarch ix86 arm %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150600 || 0%{?fedora} export CC=gcc export CXX=g++ export AR=gcc-ar export NM=gcc-nm export RANLIB=gcc-ranlib %else export CC=gcc-12 export CXX=g++-12 export AR=gcc-ar-12 export NM=gcc-nm-12 export RANLIB=gcc-ranlib-12 %endif # endif with clang %endif %if %{with lld} export LDFLAGS="${LDFLAGS} -Wl,--as-needed -fuse-ld=lld" %endif %if %{with mold} export LDFLAGS="${LDFLAGS} -Wl,--as-needed -fuse-ld=mold" %endif # do not eat all memory # copr already set the max number of files already by default # https://pagure.io/fedora-infra/ansible/blob/main/f/roles/copr/backend/files/provision/files/mock/site-defaults.cfg # https://pagure.io/fedora-infra/ansible/blob/main/f/roles/copr/backend/files/provision/provision_builder_tasks.yml#_176-186 # ulimit -n 4096 %if %{with lto} && %{without clang} %ifarch aarch64 %if %{without mold} %if %{with gold} export LDFLAGS="${LDFLAGS} -Wl,--no-map-whole-files -Wl,--no-keep-memory -Wl,--no-keep-files-mapped" %else export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--hash-size=30 -Wl,--reduce-memory-overheads" %endif %endif export LDFLAGS="$LDFLAGS --param ggc-min-expand=30 --param ggc-min-heapsize=4096" %endif export LDFLAGS="$LDFLAGS -flto=1 --param lto-max-streaming-parallelism=1" %endif gn_system_libraries=( brotli double-conversion ffmpeg flac flatbuffers fontconfig freetype harfbuzz-ng icu libdrm libevent libjpeg libpng libsecret libusb libwebp libxml libxslt opus re2 snappy woff2 zlib ) %if %{with system_abseil} find third_party/abseil-cpp -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( absl_algorithm absl_base absl_cleanup absl_container absl_debugging absl_flags absl_functional absl_hash absl_log absl_log_internal absl_memory absl_meta absl_numeric absl_random absl_status absl_strings absl_synchronization absl_time absl_types absl_utility ) %endif %if %{with system_aom} find third_party/libaom -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libaom ) %endif %if %{with system_avif} find third_party/libavif -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libavif ) %endif %if %{with system_crc32c} find third_party/crc32c -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( crc32c ) %endif %if %{with system_jxl} find third_party/highway -type f ! -name "*.gn" -a ! -name "*.gni" -delete find third_party/libjxl -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libjxl ) %endif %if %{with system_dav1d} find third_party/dav1d -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( dav1d ) %endif %if %{with system_nvctrl} find third_party/angle/src/third_party/libXNVCtrl/ -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libXNVCtrl ) %endif %if %{with system_spirv} rm -rf third_party/swiftshader/third_party/SPIRV-Headers/include find third_party/swiftshader/third_party/SPIRV-Tools/ -type f ! -name "*.gn" -a ! -name "*.gni" -delete rm -rf third_party/vulkan-deps/spirv-headers/src/include find third_party/vulkan-deps/spirv-tools/ -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( 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 %if %{with system_vpx} find third_party/libvpx -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libvpx ) %endif %if %{with system_yuv} find third_party/libyuv -type f ! -name "*.gn" -a ! -name "*.gni" -delete gn_system_libraries+=( libyuv ) %endif build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries[@]} %if %{with link_vulkan} find third_party/angle/src/third_party/volk -type f ! -name "*.gn" -a ! -name "*.gni" -delete %endif %if %{with system_nghttp2} find third_party/electron_node/deps/nghttp2 -type f ! -name "*.gn" -a ! -name "*.gni" -a ! -name "*.gyp" -a ! -name "*.gypi" -delete %endif %if %{with system_llhttp} find third_party/electron_node/deps/llhttp -type f ! -name "*.gn" -a ! -name "*.gni" -a ! -name "*.gyp" -a ! -name "*.gypi" -delete %endif %if %{with system_histogram} find third_party/electron_node/deps/histogram -type f ! -name "*.gn" -a ! -name "*.gni" -a ! -name "*.gyp" -a ! -name "*.gypi" -delete %endif # Create the configuration for GN # Available options: out/Release/gn args --list out/Release/ myconf_gn="" myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" myconf_gn+=" use_custom_libcxx=false" %ifarch %ix86 myconf_gn+=" host_cpu=\"x86\"" %endif %ifarch x86_64 %x86_64 myconf_gn+=" host_cpu=\"x64\"" %endif %ifarch aarch64 myconf_gn+=" host_cpu=\"arm64\"" #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+=" arm_control_flow_integrity=\"pac\"" %endif %ifarch %arm myconf_gn+=" host_cpu=\"arm\"" #openSUSE only supports armhf %ifarch armv7hl armv7hnl myconf_gn+=" arm_version=7" %endif %ifarch armv6hl myconf_gn+=" arm_version=6" %endif myconf_gn+=" arm_float_abi=\"hard\"" # Disable requirement of neon instructions %ifarch armv7hnl armv8hnl armv8hcnl myconf_gn+=" arm_use_neon=true" %else myconf_gn+=" arm_use_neon=false" %endif %endif #ifarch arm myconf_gn+=" host_os=\"linux\"" myconf_gn+=" is_debug=false" myconf_gn+=" dcheck_always_on=false" myconf_gn+=" enable_nacl=false" %if %{with swiftshader} myconf_gn+=" enable_swiftshader=true" %if %{with subzero} myconf_gn+=" use_swiftshader_with_subzero=true" %else myconf_gn+=" use_swiftshader_with_subzero=false" %endif %else myconf_gn+=" enable_swiftshader=false" %endif myconf_gn+=" is_component_ffmpeg=true" myconf_gn+=" use_cups=true" myconf_gn+=" use_aura=true" # link libvulkan.so and libGLX.so instead of dlopening myconf_gn+=" angle_use_custom_libvulkan=false" %if %{with link_vulkan} myconf_gn+=" angle_shared_libvulkan=false" %endif myconf_gn+=" angle_link_glx=true" #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' # do not build PDF support myconf_gn+=" enable_pdf=false" myconf_gn+=" enable_pdf_viewer=false" myconf_gn+=" enable_print_preview=false" myconf_gn+=" enable_basic_printing=false" #we don't build PDF support, so disabling the below: #myconf_gn+=" use_system_lcms2=true" #myconf_gn+=" use_system_libopenjpeg2=true" #do not build chrome pepper plugins support myconf_gn+=" enable_plugins=false" myconf_gn+=" enable_ppapi=false" # This requires the non-free closure_compiler.jar. If we ever need to build chrome with JS typecheck, # we would need to package it separately and compile it from sources, since the chrome git repo # provides only a compiled binary. myconf_gn+=" enable_js_type_check=false" # The option below get overriden by whatever is in CFLAGS/CXXFLAGS, so they affect only C++ code. # symbol_level=2 is full debug # symbol_level=1 is enough info for stacktraces # symbol_level=0 no debuginfo (only function names in private symbols) # blink (HTML engine) and v8 (js engine) are template-heavy, trying to compile them with full debug leads to linker errors %ifnarch %ix86 %arm aarch64 %if %{without lto} myconf_gn+=" symbol_level=2" %else myconf_gn+=" symbol_level=1" %endif myconf_gn+=" blink_symbol_level=1" myconf_gn+=" v8_symbol_level=1" %endif %ifarch %ix86 %arm #Sorry, no debug on 32bit. myconf_gn+=" symbol_level=1" myconf_gn+=" blink_symbol_level=0" myconf_gn+=" v8_symbol_level=0" %endif %ifarch aarch64 #“No space left on device” with symbol level 2 myconf_gn+=" symbol_level=1" myconf_gn+=" blink_symbol_level=1" myconf_gn+=" v8_symbol_level=1" %endif myconf_gn+=" use_kerberos=true" # do not build some chrome features not used by electron myconf_gn+=" enable_vr=false" myconf_gn+=" enable_reading_list=false" myconf_gn+=" enable_reporting=false" myconf_gn+=" build_with_tflite_lib=false" myconf_gn+=" build_tflite_with_xnnpack=false" myconf_gn+=" safe_browsing_mode=0" myconf_gn+=" enable_maldoca=false" myconf_gn+=" enable_captive_portal_detection=false" myconf_gn+=" enable_browser_speech_service=false" myconf_gn+=" enable_speech_service=false" myconf_gn+=" enable_screen_ai_service=false" myconf_gn+=" include_transport_security_state_preload_list=false" myconf_gn+=" enable_web_speech=false" myconf_gn+=" chrome_wide_echo_cancellation_supported=false" myconf_gn+=" enable_downgrade_processing=false" myconf_gn+=" enable_click_to_call=false" myconf_gn+=" enable_webui_tab_strip=false" myconf_gn+=" enable_webui_certificate_viewer=false" myconf_gn+=" enable_background_contents=false" myconf_gn+=" enable_xz_extractor=false" myconf_gn+=" enable_feed_v2=false" myconf_gn+=" ozone_platform_headless=false" myconf_gn+=" angle_enable_gl_null=false" myconf_gn+=" enable_paint_preview=false" #Do not build Chromecast myconf_gn+=" enable_remoting=false" myconf_gn+=" enable_media_remoting=false" myconf_gn+=" enable_service_discovery=false" #disable some debug/tracing hooks, they increase size and we do not build chrome://tracing anyway (see disable-catapult.patch) myconf_gn+=" enable_trace_logging=false" myconf_gn+=" optional_trace_events_enabled=false" myconf_gn+=" use_runtime_vlog=false" myconf_gn+=" rtc_disable_logging=true" myconf_gn+=" rtc_disable_metrics=true" myconf_gn+=" rtc_disable_trace_events=true" myconf_gn+=" enable_library_cdms=false" myconf_gn+=" use_pulseaudio=true link_pulseaudio=true" myconf_gn+=" is_component_build=false" myconf_gn+=" use_sysroot=false" myconf_gn+=" fatal_linker_warnings=false" myconf_gn+=" use_allocator=\"partition\"" myconf_gn+=" use_allocator_shim=true" myconf_gn+=" use_partition_alloc=true" myconf_gn+=" disable_fieldtrial_testing_config=true" myconf_gn+=" use_gnome_keyring=false" myconf_gn+=" use_unofficial_version_number=false" myconf_gn+=" use_lld=false" %if %{with vaapi} myconf_gn+=' use_vaapi=true' myconf_gn+=' use_vaapi_x11=true' myconf_gn+=' use_libgav1_parser=true' %else myconf_gn+=' use_vaapi=false' myconf_gn+=' use_vaapi_x11=false' myconf_gn+=' use_libgav1_parser=false' %endif myconf_gn+=" treat_warnings_as_errors=false" myconf_gn+=" use_dbus=true" myconf_gn+=" enable_vulkan=true" myconf_gn+=" icu_use_data_file=false" myconf_gn+=" media_use_openh264=false" myconf_gn+=" rtc_use_h264=false" myconf_gn+=" use_v8_context_snapshot=true" myconf_gn+=" v8_use_external_startup_data=true" myconf_gn+=" use_system_zlib=true" myconf_gn+=" use_system_libjpeg=true" myconf_gn+=" use_system_libpng=true" myconf_gn+=" use_system_wayland_scanner=true" myconf_gn+=" use_system_libwayland=true" myconf_gn+=" use_system_harfbuzz=true" myconf_gn+=" use_system_freetype=true" myconf_gn+=" use_system_cares=true" %if %{with system_nghttp2} myconf_gn+=" use_system_nghttp2=true" %endif %if %{with system_llhttp} myconf_gn+=" use_system_llhttp=true" %endif %if %{with system_histogram} myconf_gn+=" use_system_histogram=true" %endif %if %{with clang} myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false" myconf_gn+=" use_lld=true" # PGO is broken rn myconf_gn+=" chrome_pgo_phase=0" %else myconf_gn+=" is_clang=false" %if %{with gold} myconf_gn+=" use_gold=true" %else myconf_gn+=" use_gold=false" %endif %endif %if %{with lto} %if %{without clang} myconf_gn+=" gcc_lto=true" %else myconf_gn+=" use_thin_lto=true" %endif # endif with lto %endif %ifarch %arm # Bundled libaom is broken on ARMv7 %if %{without system_aom} # [74796s] FAILED: v8_context_snapshot_generator # [74796s] python3 "../../build/toolchain/gcc_link_wrapper.py" --output="./v8_context_snapshot_generator" -- g++ -Wl,--build-id=sha1 -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -rdynamic -Wl,-z,defs -Wl,--as-needed -pie -Wl,--disable-new-dtags -Wl,-rpath=\$ORIGIN -Wl,--as-needed -fuse-ld=lld -o "./v8_context_snapshot_generator" -Wl,--start-group @"./v8_context_snapshot_generator.rsp" -Wl,--end-group -latomic -ldl -lpthread -lrt -lgmodule-2.0 -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -ljsoncpp -labsl_base -labsl_raw_logging_internal -labsl_log_severity -labsl_spinlock_wait -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_exponential_biased -labsl_cordz_handle -labsl_synchronization -labsl_graphcycles_internal -labsl_stacktrace -labsl_symbolize -labsl_debugging_internal -labsl_demangle_internal -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_time_zone -labsl_bad_optional_access -labsl_strings -labsl_strings_internal -labsl_int128 -labsl_throw_delegate -labsl_hash -labsl_city -labsl_bad_variant_access -labsl_low_level_hash -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_failure_signal_handler -labsl_examine_stack -labsl_random_distributions -labsl_random_seed_sequences -labsl_random_internal_pool_urbg -labsl_random_internal_randen -labsl_random_internal_randen_hwaes -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow -labsl_random_internal_platform -labsl_random_internal_seed_material -labsl_random_seed_gen_exception -labsl_status -labsl_str_format_internal -labsl_strerror -labsl_statusor -licui18n -licuuc -licudata -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -ldouble-conversion -levent -lz -ljpeg -lpng16 -lxml2 -lxslt -lresolv -lgio-2.0 -lbrotlidec -lwebpdemux -lwebpmux -lwebp -lfreetype -lexpat -lfontconfig -lharfbuzz-subset -lharfbuzz -lyuv -lopus -lvpx -lm -ldav1d -lX11 -lXcomposite -lXdamage -lXext -lXfixes -lXrender -lXrandr -lXtst -lpipewire-0.3 -lgbm -lEGL -ldrm -lcrc32c -lbsd -lxcb -lxkbcommon -lwayland-client -ldbus-1 -lre2 -lpangocairo-1.0 -lpango-1.0 -lcairo -latk-1.0 -latk-bridge-2.0 -lasound -lpulse -lavcodec -lavformat -lavutil -lXi -lpci -lxxhash -lXNVCtrl -lsnappy -lavif -ljxl -lwoff2dec -latspi # [74796s] ld.lld: error: undefined symbol: aom_arm_cpu_caps # [74796s] >>> referenced by av1_rtcd.h:1079 (../../third_party/libaom/source/config/linux/arm/config/av1_rtcd.h:1079) # [74796s] >>> libaom/av1_rtcd.o:(setup_rtcd_internal) in archive obj/third_party/libaom/libaom.a # [74796s] >>> referenced by aom_dsp_rtcd.h:3560 (../../third_party/libaom/source/config/linux/arm/config/aom_dsp_rtcd.h:3560) # [74796s] >>> libaom/aom_dsp_rtcd.o:(setup_rtcd_internal) in archive obj/third_party/libaom/libaom.a # [74796s] >>> referenced by aom_scale_rtcd.h:162 (../../third_party/libaom/source/config/linux/arm/config/aom_scale_rtcd.h:162) # [74796s] >>> libaom/aom_scale_rtcd.o:(setup_rtcd_internal) in archive obj/third_party/libaom/libaom.a myconf_gn+=" enable_libaom=false" %endif %endif %if %{with pipewire} myconf_gn+=" rtc_use_pipewire=true rtc_link_pipewire=true" %endif %if %{with qt} myconf_gn+=" use_qt=true" %endif # 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+=" use_dawn=false" # 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+=" proprietary_codecs=true" myconf_gn+=" ffmpeg_branding=\"Chrome\"" # GN does not support passing cflags: # https://bugs.chromium.org/p/chromium/issues/detail?id=642016 gn gen out/Release --args="import(\"//electron/build/args/release.gn\") ${myconf_gn}" # dump the linker command line (if any) in case of failure ninja -v %{?_smp_mflags} -C out/Release chromium_licenses copy_headers version electron || (cat out/Release/*.rsp | sed 's/ /\n/g' && false) %install install -d -m 0755 %{buildroot}%{_bindir} install -d -m 0755 %{buildroot}%{_includedir}/electron install -d -m 0755 %{buildroot}%{_libdir}/electron install -d -m 0755 %{buildroot}%{_libdir}/electron/resources install -d -m 0755 %{buildroot}%{_datadir}/applications install -d -m 0755 %{buildroot}%{_datadir}/pixmaps/ install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/ install -pm 0755 %{SOURCE10} %{buildroot}%{_bindir}/%{mod_name} sed -i 's[XXXLIBDIRXXX[%{_libdir}[g' %{buildroot}%{_bindir}/%{mod_name} install -pm 0644 electron/default_app/icon.png %{buildroot}%{_datadir}/pixmaps/%{mod_name}.png install -pm 0644 %{SOURCE12} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/electron-symbolic.svg desktop-file-install --dir %{buildroot}%{_datadir}/applications/ %{SOURCE11} pushd out/Release cp -lv *.bin *.pak -t %{buildroot}%{_libdir}/electron/ install -pm 0644 resources/default_app.asar -t %{buildroot}%{_libdir}/electron/resources/ cp -lrv locales -t %{buildroot}%{_libdir}/electron/ rm -v %{buildroot}%{_libdir}/electron/locales/*.pak.info install -pm 0755 electron -t %{buildroot}%{_libdir}/electron/ install -pm 0755 chrome_crashpad_handler -t %{buildroot}%{_libdir}/electron/ ||true install -pm 0755 libEGL.so -t %{buildroot}%{_libdir}/electron/ install -pm 0755 libGLESv2.so -t %{buildroot}%{_libdir}/electron/ install -pm 0755 libqt5_shim.so -t %{buildroot}%{_libdir}/electron/ ||true install -pm 0755 libvk_swiftshader.so -t %{buildroot}%{_libdir}/electron/ ||true install -pm 0644 vk_swiftshader_icd.json -t %{buildroot}%{_libdir}/electron/ ||true install -pm 0644 version -t %{buildroot}%{_libdir}/electron/ popd # Install folders required for webapps mkdir -p "%{buildroot}%{_sysconfdir}/webapps" mkdir -p "%{buildroot}%{_datadir}/webapps" cp -lrvT out/Release/gen/node_headers/include/node %{buildroot}%{_includedir}/electron # Install electron.macros mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d cp /dev/stdin %{buildroot}%{_rpmconfigdir}/macros.d/macros.electron <<"EOF" %%electron_req Requires: electron%{_isa}(abi) = %{abi_version} EOF chmod -v 644 %{buildroot}%{_rpmconfigdir}/macros.d/macros.electron #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 ln -srv third_party/libvpx -t third_party/libvpx/source/libvpx/third_party ln -srv third_party -t third_party/libvpx/source/libvpx/vp8 ln -srv third_party -t third_party/libvpx/source/libvpx/vp9 ln -srv third_party -t third_party/libvpx/source %files %license electron/LICENSE out/Release/LICENSES.chromium.html %{_bindir}/electron %{_datadir}/pixmaps/electron.png %{_datadir}/icons/hicolor/symbolic/apps/electron-symbolic.svg %{_datadir}/applications/electron.desktop %{_libdir}/electron/ %dir %{_sysconfdir}/webapps %dir %{_datadir}/webapps %files devel %{_includedir}/electron %{_rpmconfigdir}/macros.d/macros.electron %files doc %doc electron/README.md %doc electron/docs %changelog * Wed Aug 30 2023 Sérgio Basto - 22.3.21-2 - Update BRs * Mon Aug 28 2023 Sérgio Basto - 22.3.21-1 - Update to 22.3.21 * Tue Jun 27 2023 Sérgio Basto - 22.3.14-1 - Update to 22.3.14 * Wed Jun 21 2023 Sérgio Basto - 22.3.11-2 - disable golden, enable lld * Sat May 27 2023 Sérgio Basto - 22.3.2-2 - Rebuild for ffmepg 6 * Fri Mar 10 2023 Sérgio Basto - 22.3.0-3 - 22.3.2 * Wed Mar 08 2023 Sérgio Basto - 22.3.0-2 - 22.3.0 * Mon Dec 26 2022 Sérgio Basto - 21.3.2-3 - relax version of harfbuzz