mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: generate valid config.gypi (#31441)
This commit is contained in:
6
BUILD.gn
6
BUILD.gn
@@ -187,6 +187,12 @@ action("electron_js2c") {
|
||||
rebase_path(sources, root_build_dir)
|
||||
}
|
||||
|
||||
action("generate_config_gypi") {
|
||||
outputs = [ "$root_gen_dir/config.gypi" ]
|
||||
script = "script/generate-config-gypi.py"
|
||||
args = rebase_path(outputs) + [ target_cpu ]
|
||||
}
|
||||
|
||||
target_gen_default_app_js = "$target_gen_dir/js/default_app"
|
||||
|
||||
typescript_build("default_app_js") {
|
||||
|
||||
@@ -5,7 +5,6 @@ feat_initialize_asar_support.patch
|
||||
expose_get_builtin_module_function.patch
|
||||
build_add_gn_build_files.patch
|
||||
fix_add_default_values_for_variables_in_common_gypi.patch
|
||||
feat_add_new_built_with_electron_variable_to_config_gypi.patch
|
||||
feat_add_flags_for_low-level_hooks_and_exceptions.patch
|
||||
fix_expose_tracing_agent_and_use_tracing_tracingcontroller_instead.patch
|
||||
pass_all_globals_through_require.patch
|
||||
|
||||
@@ -7,10 +7,10 @@ This adds GN build files for Node, so we don't have to build with GYP.
|
||||
|
||||
diff --git a/BUILD.gn b/BUILD.gn
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..52fb22305bb67c75c9a1cf4bc39cd901420cf7a9
|
||||
index 0000000000000000000000000000000000000000..d0641c5cbc3c527ce7a73d12118fb42db325be01
|
||||
--- /dev/null
|
||||
+++ b/BUILD.gn
|
||||
@@ -0,0 +1,401 @@
|
||||
@@ -0,0 +1,393 @@
|
||||
+import("//electron/build/asar.gni")
|
||||
+import("//v8/gni/v8.gni")
|
||||
+
|
||||
@@ -75,20 +75,12 @@ index 0000000000000000000000000000000000000000..52fb22305bb67c75c9a1cf4bc39cd901
|
||||
+ ]
|
||||
+}
|
||||
+
|
||||
+action("generate_config_gypi") {
|
||||
+ outputs = [
|
||||
+ "$target_gen_dir/config.gypi",
|
||||
+ ]
|
||||
+ script = "tools/generate_config_gypi.py"
|
||||
+ args = rebase_path(outputs, root_build_dir)
|
||||
+}
|
||||
+
|
||||
+chdir_action("node_js2c") {
|
||||
+ deps = [
|
||||
+ ":generate_config_gypi",
|
||||
+ "//electron:generate_config_gypi",
|
||||
+ ":node_js2c_inputs",
|
||||
+ ]
|
||||
+ config_gypi = [ "$target_gen_dir/config.gypi" ]
|
||||
+ config_gypi = [ "$root_gen_dir/config.gypi" ]
|
||||
+ inputs = library_files + config_gypi
|
||||
+ outputs = [
|
||||
+ "$target_gen_dir/node_javascript.cc",
|
||||
@@ -360,10 +352,10 @@ index 0000000000000000000000000000000000000000..52fb22305bb67c75c9a1cf4bc39cd901
|
||||
+
|
||||
+copy("node_gypi_headers") {
|
||||
+ deps = [
|
||||
+ ":generate_config_gypi",
|
||||
+ "//electron:generate_config_gypi",
|
||||
+ ]
|
||||
+ sources = [
|
||||
+ "$target_gen_dir/config.gypi",
|
||||
+ "$root_gen_dir/config.gypi",
|
||||
+ "common.gypi",
|
||||
+ ]
|
||||
+ outputs = [
|
||||
@@ -1795,23 +1787,6 @@ index 48b8d9f22fb98d0733630eaea3194d746fba8a2f..a7a12564e4dd9320959d07fb4ab1527f
|
||||
|
||||
// The NAPI_VERSION provided by this version of the runtime. This is the version
|
||||
// which the Node binary being built supports.
|
||||
diff --git a/tools/generate_config_gypi.py b/tools/generate_config_gypi.py
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..01f62d4ae6e3b9d539444e3dff069f0011353caa
|
||||
--- /dev/null
|
||||
+++ b/tools/generate_config_gypi.py
|
||||
@@ -0,0 +1,11 @@
|
||||
+# TODO: assess which if any of the config variables are important to include in
|
||||
+# the js2c'd config.gypi.
|
||||
+import sys
|
||||
+
|
||||
+def main(args):
|
||||
+ out = args[0]
|
||||
+ with open(out, 'w') as f:
|
||||
+ f.write("{'variables':{}}\n")
|
||||
+
|
||||
+if __name__ == '__main__':
|
||||
+ main(sys.argv[1:])
|
||||
diff --git a/tools/generate_gn_filenames_json.py b/tools/generate_gn_filenames_json.py
|
||||
new file mode 100755
|
||||
index 0000000000000000000000000000000000000000..8f884a41f57630ac432eb85ebfc9b8bc82cddaca
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Shelley Vohr <shelley.vohr@gmail.com>
|
||||
Date: Tue, 2 Oct 2018 11:39:58 -0700
|
||||
Subject: feat: add new built_with_electron variable to config.gypi
|
||||
|
||||
This allows 3rd-party native modules to know whether they're being built
|
||||
against Electron.
|
||||
|
||||
diff --git a/tools/generate_config_gypi.py b/tools/generate_config_gypi.py
|
||||
index 01f62d4ae6e3b9d539444e3dff069f0011353caa..d8b279f590c115108d5dca879747de7b0c9f1934 100644
|
||||
--- a/tools/generate_config_gypi.py
|
||||
+++ b/tools/generate_config_gypi.py
|
||||
@@ -5,7 +5,7 @@ import sys
|
||||
def main(args):
|
||||
out = args[0]
|
||||
with open(out, 'w') as f:
|
||||
- f.write("{'variables':{}}\n")
|
||||
+ f.write("{'variables':{'built_with_electron': 1}}\n")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1:])
|
||||
65
script/generate-config-gypi.py
Executable file
65
script/generate-config-gypi.py
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
import ast
|
||||
import os
|
||||
import pprint
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
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.
|
||||
if target_cpu == 'arm64' or target_cpu == 'x64':
|
||||
args += ['--experimental-enable-pointer-compression']
|
||||
# Work around "No acceptable ASM compiler found" error on some Windows
|
||||
# machines, it breaks nothing since Electron does not use OpenSSL.
|
||||
if sys.platform == 'win32':
|
||||
args += ['--openssl-no-asm']
|
||||
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') as f:
|
||||
content = f.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') as f:
|
||||
for line in f:
|
||||
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+') as f:
|
||||
f.write(pprint.pformat(config, indent=2))
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(*sys.argv[1:]))
|
||||
Reference in New Issue
Block a user