1
0
Files
nodejs-electron/common.gypi-compiler.patch
Bruno Pitrus 542e43e0b8 Accepting request 1173454 from home:dziobian:gulgul-ultron:19
- nodejs-electron-devel:
  * Introduce /usr/libexec/electron-node wrapper scripts
  * Introduce `electron_rebuild`, `electron_check_native`
    and `electron_check_native_unstable` RPM macros to ease packaging Electron apps
  * Correct some injected compiler flags (common.gypi-compiler.patch)

OBS-URL: https://build.opensuse.org/request/show/1173454
OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=146
2024-05-11 22:39:59 +00:00

52 lines
2.7 KiB
Diff

--- src/third_party/electron_node/common.gypi.orig 2024-05-09 09:30:23.202414200 +0000
+++ src/third_party/electron_node/common.gypi 2024-05-10 17:53:01.801592000 +0000
@@ -428,10 +428,15 @@
'ldflags': [ '-pthread' ],
}],
[ 'OS in "linux freebsd openbsd solaris android aix os400 cloudabi"', {
- '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' ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++17' ],
'defines': [ '__STDC_FORMAT_MACROS' ],
- 'ldflags': [ '-rdynamic' ],
+ #'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"', {
@@ -608,29 +613,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',