6
0
Files
nodejs-electron/common.gypi-compiler.patch

57 lines
2.8 KiB
Diff
Raw Permalink Normal View History

--- src/third_party/electron_node/common.gypi.orig 2025-07-19 11:44:59.181882205 +0200
+++ src/third_party/electron_node/common.gypi 2025-07-19 16:21:44.297731896 +0200
@@ -534,15 +534,19 @@
'ldflags': [ '-pthread' ],
}],
[ 'OS in "linux freebsd openbsd solaris android aix os400 cloudabi openharmony"', {
- 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
+ # Add some useful flags which need to be specified on all modules anyway.
+ # `-fpic -fno-semantic-interposition` is the best relocation model for code that will live in a dlopened library
+ # If a downstream package needs capital `-fPIC` (unlikely) it can still override this (unlike CFLAGS which are injected at the very end)
+ # `-fvisibility=hidden` is something we're adding to fix downstream overzealous exports.
+ # The electron headers annotate their visibility correctly, but many third-party code does not which leads to bloated builds.
+ 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-fpic', '-fno-semantic-interposition', '-fvisibility=hidden' ],
- Update to 35.2.1 * Chromium 134.0.6998.205 * Node 22.14.0 * V8 13.4 * Removed AVIF image format * Added excludeUrls to webRequest filter and deprecated the use of empty arrays in urls property. * Added fromVersionID on ServiceWorkers to get an instance of ServiceWorkerMain. * Deprecated getPreloads and setPreloads on Session. * Moved 'console-message' arguments into event object. * Added ServiceWorkerMain class to interact with service workers in the main process. * Added contextBridge.executeInMainWorld to safely execute code across world boundaries. * Added frame to 'console-message' event. * Added optional animation parameter to BrowserWindow.setVibrancy. * Added permission support for document.executeCommand("paste"). * Added support for service worker preload scripts. * Support Portal's globalShortcuts. Electron must be run with --enable-features=GlobalShortcutsPortal in order to have the feature working. * see https://github.com/electron/electron/releases/tag/v35.0.0 and https://www.electronjs.org/blog/electron-35-0 for more - Remove Fedora 40 support * drop bundled-minizip.patch * drop quiche-absl-HexStringToBytes.patch - Leap 15.6: use backported wayland-protocols * drop wayland-protocol-toplevel-icon.patch * drop wayland-protocol-toplevel-icon-2.patch * drop wayland-protocol-toplevel-drag.patch - Build with LTO also on 15.6 (so now we enable it everywhere) - Fedora: use system simdjson * merge system-ada-url.patch into use-system-libraries-in-node.patch - Drop no longer applicable patches * account_id-missing-optional.patch * blink-platform-INSIDE_BLINK-Wodr.patch * boringssl-internal-addc-cxx.patch * build-without-extensions.patch * css_attr_value_tainting-missing-once_flag.patch * electron-13-fix-base-check-nomerge.patch * exception_context-missing-variant.patch * fix-build-without-safebrowsing.patch * fix-build-without-service-discovery.patch * ip_protection_data_types-missing-optional.patch * node-compiler.patch * skia_image_decoder_base-missing-stack.patch * vtt_scanner-missing-variant.patch * wayland_connection-Wchanges-meaning.patch - Add backported or upstreamable patches * ax_platform_node_id-fpermissive.patch * browser_process_impl-fix-safe_browsing_mode-0.patch * content_browser_client-incomplete-WebUIController.patch * css_shape_value-constructor.patch * exception_state-constexpr-initializer.patch * fix-build-without-pdf.patch * fix-build-without-video-effects.patch * media_session_uma_helper-missing-optional.patch * object_paint_properties-explicit-specialization-in-non-namespace-scope.patch * perfetto-ThreadTrack-Current-null-dereference.patch * picture_in_picture_window_manager_uma_helper-missing-optional.patch * plugin_utils-build-without-electron_extensions.patch * raw_ptr-fpermissive.patch * resource_response-Wchanges-meaning.patch * resource-Wchanges-meaning.patch * string-hasher-flax-vector-conversions.patch * string_truncator-convert.patch * style_scope-unqualified-To.patch * to_vector-std-projected-gcc119888.patch * unexportable_key_service_impl-Wlto-type-mismatch.patch * xml_document_parser-Wmissing-template-keyword.patch - merge remove-libphonenumber.patch & delete-old-language-detection-which-uses-tflite.patch into remove-ai-language-detection-factory-which-requires-tflite-and-libphonenumber.patch - Revert upstream change which breaks build with old abseil * webrtc-make_ref_counted-absl2024-nullability.patch - Conditionally (15.6) remove feature change which needs new spirv * angle-SPV_BINARY_TO_TEXT_OPTION_NESTED_INDENT.patch - Use system sqlite in node (except 15.6) * system-sqlite.patch - Remove more rust code * chromium-132-no-rust.patch - Actually disable AVIF support without disabling AV1 video * disable-avif-really.patch - Various other build fixes * absl_strings-missing-headers.patch * blink-shape_result-highway.patch * build-without-mesage-center.patch * fix-system-highway.patch * gn-logspam-breaks-install.patch * permission-gcc14.2.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=202
2025-04-26 10:14:41 +00:00
'cflags_cc': [
'-fno-rtti',
'-fno-exceptions',
- '-fno-strict-aliasing',
'-std=gnu++20',
],
'defines': [ '__STDC_FORMAT_MACROS' ],
- 'ldflags': [ '-rdynamic' ],
- Update to 35.2.1 * Chromium 134.0.6998.205 * Node 22.14.0 * V8 13.4 * Removed AVIF image format * Added excludeUrls to webRequest filter and deprecated the use of empty arrays in urls property. * Added fromVersionID on ServiceWorkers to get an instance of ServiceWorkerMain. * Deprecated getPreloads and setPreloads on Session. * Moved 'console-message' arguments into event object. * Added ServiceWorkerMain class to interact with service workers in the main process. * Added contextBridge.executeInMainWorld to safely execute code across world boundaries. * Added frame to 'console-message' event. * Added optional animation parameter to BrowserWindow.setVibrancy. * Added permission support for document.executeCommand("paste"). * Added support for service worker preload scripts. * Support Portal's globalShortcuts. Electron must be run with --enable-features=GlobalShortcutsPortal in order to have the feature working. * see https://github.com/electron/electron/releases/tag/v35.0.0 and https://www.electronjs.org/blog/electron-35-0 for more - Remove Fedora 40 support * drop bundled-minizip.patch * drop quiche-absl-HexStringToBytes.patch - Leap 15.6: use backported wayland-protocols * drop wayland-protocol-toplevel-icon.patch * drop wayland-protocol-toplevel-icon-2.patch * drop wayland-protocol-toplevel-drag.patch - Build with LTO also on 15.6 (so now we enable it everywhere) - Fedora: use system simdjson * merge system-ada-url.patch into use-system-libraries-in-node.patch - Drop no longer applicable patches * account_id-missing-optional.patch * blink-platform-INSIDE_BLINK-Wodr.patch * boringssl-internal-addc-cxx.patch * build-without-extensions.patch * css_attr_value_tainting-missing-once_flag.patch * electron-13-fix-base-check-nomerge.patch * exception_context-missing-variant.patch * fix-build-without-safebrowsing.patch * fix-build-without-service-discovery.patch * ip_protection_data_types-missing-optional.patch * node-compiler.patch * skia_image_decoder_base-missing-stack.patch * vtt_scanner-missing-variant.patch * wayland_connection-Wchanges-meaning.patch - Add backported or upstreamable patches * ax_platform_node_id-fpermissive.patch * browser_process_impl-fix-safe_browsing_mode-0.patch * content_browser_client-incomplete-WebUIController.patch * css_shape_value-constructor.patch * exception_state-constexpr-initializer.patch * fix-build-without-pdf.patch * fix-build-without-video-effects.patch * media_session_uma_helper-missing-optional.patch * object_paint_properties-explicit-specialization-in-non-namespace-scope.patch * perfetto-ThreadTrack-Current-null-dereference.patch * picture_in_picture_window_manager_uma_helper-missing-optional.patch * plugin_utils-build-without-electron_extensions.patch * raw_ptr-fpermissive.patch * resource_response-Wchanges-meaning.patch * resource-Wchanges-meaning.patch * string-hasher-flax-vector-conversions.patch * string_truncator-convert.patch * style_scope-unqualified-To.patch * to_vector-std-projected-gcc119888.patch * unexportable_key_service_impl-Wlto-type-mismatch.patch * xml_document_parser-Wmissing-template-keyword.patch - merge remove-libphonenumber.patch & delete-old-language-detection-which-uses-tflite.patch into remove-ai-language-detection-factory-which-requires-tflite-and-libphonenumber.patch - Revert upstream change which breaks build with old abseil * webrtc-make_ref_counted-absl2024-nullability.patch - Conditionally (15.6) remove feature change which needs new spirv * angle-SPV_BINARY_TO_TEXT_OPTION_NESTED_INDENT.patch - Use system sqlite in node (except 15.6) * system-sqlite.patch - Remove more rust code * chromium-132-no-rust.patch - Actually disable AVIF support without disabling AV1 video * disable-avif-really.patch - Various other build fixes * absl_strings-missing-headers.patch * blink-shape_result-highway.patch * build-without-mesage-center.patch * fix-system-highway.patch * gn-logspam-breaks-install.patch * permission-gcc14.2.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=202
2025-04-26 10:14:41 +00:00
+ #'ldflags': [ '-rdynamic' ], this is totally bogus — we are building a plugin, not a plugin host
'target_conditions': [
# The 1990s toolchain on SmartOS can't handle thin archives.
['_type=="static_library" and OS=="solaris"', {
@@ -720,29 +724,7 @@
'-Wl,--export-dynamic',
],
}],
- # if node is built as an executable,
- # the openssl mechanism for keeping itself "dload"-ed to ensure proper
- # atexit cleanup does not apply
- ['node_shared_openssl!="true" and node_shared!="true"', {
- 'defines': [
- # `OPENSSL_NO_PINSHARED` prevents openssl from dload
- # current node executable,
- # see https://github.com/nodejs/node/pull/21848
- # or https://github.com/nodejs/node/issues/27925
- 'OPENSSL_NO_PINSHARED'
- ],
- }],
- ['node_shared_openssl!="true"', {
- # `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures.
- 'defines': [
- 'OPENSSL_THREADS',
- ],
- }],
- ['node_shared_openssl!="true" and openssl_no_asm==1', {
- 'defines': [
- 'OPENSSL_NO_ASM',
- ],
- }],
+ # Electron does not export its openssl fork (boringssl). Removing these defines which are bogus and can interfere with modules actually using openssl (signal-desktop is known to use it)
['OS == "zos"', {
'defines': [
'_XOPEN_SOURCE_EXTENDED',