electron/script/generate-config-gypi.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

70 lines
2.1 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import ast
import os
import pprint
import re
import subprocess
import sys
chore: bump node to v20.11.0 (main) (#40941) * chore: bump node in DEPS to v20.11.0 * module: bootstrap module loaders in shadow realm https://github.com/nodejs/node/pull/48655 * src: add commit hash shorthand in zlib version https://github.com/nodejs/node/pull/50158 * v8,tools: expose necessary V8 defines https://github.com/nodejs/node/pull/50820 * esm: do not call getSource when format is commonjs https://github.com/nodejs/node/pull/50465 * esm: fallback to readFileSync when source is nullish https://github.com/nodejs/node/pull/50825 * vm: allow dynamic import with a referrer realm https://github.com/nodejs/node/pull/50360 * test: skip test-diagnostics-channel-memory-leak.js https://github.com/nodejs/node/pull/50327 * esm: do not call getSource when format is commonjs https://github.com/nodejs/node/pull/50465 * lib: fix assert throwing different error messages in ESM and CJS https://github.com/nodejs/node/pull/50634 * src: fix compatility with upcoming V8 12.1 APIs https://github.com/nodejs/node/pull/50709 * deps: update base64 to 0.5.1 https://github.com/nodejs/node/pull/50629 * src: avoid silent coercion to signed/unsigned int https://github.com/nodejs/node/pull/50663 * src: fix compatility with upcoming V8 12.1 APIs https://github.com/nodejs/node/pull/50709 * chore: fix patch indices * chore: update patches * test: disable TLS cipher test This can't be enabled owing to BoringSSL incompatibilities. https://github.com/nodejs/node/pull/50186 * fix: check for Buffer and global definition in shadow realm https://github.com/nodejs/node/pull/51239 * test: disable parallel/test-shadow-realm-custom-loader Incompatible with our asar logic, resulting in the following failure: > Failed to CompileAndCall electron script: electron/js2c/asar_bundle * chore: remove deleted parallel/test-crypto-modp1-error test * test: make test-node-output-v8-warning generic https://github.com/nodejs/node/pull/50421 * chore: fixup ModuleWrap patch * test: match wpt/streams/transferable/transform-stream-members.any.js to upstream * fix: sandbox is not enabled on arm * chore: disable v8 sandbox on ia32/arm --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2024-01-18 21:16:45 +00:00
from lib.config import get_target_arch
ELECTRON_DIR = os.path.abspath(os.path.join(__file__, '..', '..'))
NODE_DIR = os.path.join(ELECTRON_DIR, '..', 'third_party', 'electron_node')
def run_node_configure(target_cpu):
configure = os.path.join(NODE_DIR, 'configure.py')
args = ['--dest-cpu', target_cpu]
# Enabled in Chromium's V8, will be disabled on 32bit via
# common.gypi rules
args += ['--experimental-enable-pointer-compression']
# Work around "No acceptable ASM compiler found" error on some System,
# it breaks nothing since Electron does not use OpenSSL.
args += ['--openssl-no-asm']
# Enable whole-program optimization for electron native modules.
if sys.platform == "win32":
args += ['--with-ltcg']
subprocess.check_call([sys.executable, configure] + args)
def read_node_config_gypi():
config_gypi = os.path.join(NODE_DIR, 'config.gypi')
with open(config_gypi, 'r', encoding='utf-8') as file_in:
content = file_in.read()
return ast.literal_eval(content)
def read_electron_args():
all_gn = os.path.join(ELECTRON_DIR, 'build', 'args', 'all.gn')
args = {}
with open(all_gn, 'r', encoding='utf-8') as file_in:
for line in file_in:
if line.startswith('#'):
continue
m = re.match('(\w+) = (.+)', line)
if m == None:
continue
args[m.group(1)] = m.group(2)
return args
def main(target_file, target_cpu):
run_node_configure(target_cpu)
config = read_node_config_gypi()
args = read_electron_args()
# Remove the generated config.gypi to make the parallel/test-process-config
# test pass.
os.remove(os.path.join(NODE_DIR, 'config.gypi'))
v = config['variables']
# Electron specific variables:
v['built_with_electron'] = 1
v['node_module_version'] = int(args['node_module_version'])
# Used by certain versions of node-gyp.
v['build_v8_with_gn'] = 'false'
with open(target_file, 'w+', encoding='utf-8') as file_out:
file_out.write(pprint.pformat(config, indent=2))
if __name__ == '__main__':
2022-03-21 02:11:21 +00:00
sys.exit(main(sys.argv[1], sys.argv[2]))