зеркало из https://github.com/electron/electron.git
refactor: dynamically search defines from node (#30563)
This commit is contained in:
Родитель
ec13a0b0e6
Коммит
8699124397
18
BUILD.gn
18
BUILD.gn
|
@ -307,6 +307,23 @@ action("electron_fuses") {
|
|||
args = rebase_path(outputs)
|
||||
}
|
||||
|
||||
action("electron_generate_node_defines") {
|
||||
script = "build/generate_node_defines.py"
|
||||
|
||||
inputs = [
|
||||
"//third_party/electron_node/src/tracing/trace_event_common.h",
|
||||
"//third_party/electron_node/src/tracing/trace_event.h",
|
||||
"//third_party/electron_node/src/util.h",
|
||||
]
|
||||
|
||||
outputs = [
|
||||
"$target_gen_dir/push_and_undef_node_defines.h",
|
||||
"$target_gen_dir/pop_node_defines.h",
|
||||
]
|
||||
|
||||
args = [ rebase_path(target_gen_dir) ] + rebase_path(inputs)
|
||||
}
|
||||
|
||||
source_set("electron_lib") {
|
||||
configs += [ "//v8:external_startup_data" ]
|
||||
configs += [ "//third_party/electron_node:node_internals" ]
|
||||
|
@ -318,6 +335,7 @@ source_set("electron_lib") {
|
|||
|
||||
deps = [
|
||||
":electron_fuses",
|
||||
":electron_generate_node_defines",
|
||||
":electron_js2c",
|
||||
":electron_version_header",
|
||||
":resources",
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
DEFINE_EXTRACT_REGEX = re.compile('^ *# *define (\w*)', re.MULTILINE)
|
||||
|
||||
def main(outDir, headers):
|
||||
defines = []
|
||||
for filename in headers:
|
||||
with open(filename, 'r') as f:
|
||||
content = f.read()
|
||||
defines += read_defines(content)
|
||||
|
||||
push_and_undef = ''
|
||||
for define in defines:
|
||||
push_and_undef += '#pragma push_macro("%s")\n' % define
|
||||
push_and_undef += '#undef %s\n' % define
|
||||
with open(os.path.join(outDir, 'push_and_undef_node_defines.h'), 'w') as o:
|
||||
o.write(push_and_undef)
|
||||
|
||||
pop = ''
|
||||
for define in defines:
|
||||
pop += '#pragma pop_macro("%s")\n' % define
|
||||
with open(os.path.join(outDir, 'pop_node_defines.h'), 'w') as o:
|
||||
o.write(pop)
|
||||
|
||||
def read_defines(content):
|
||||
defines = []
|
||||
for match in DEFINE_EXTRACT_REGEX.finditer(content):
|
||||
defines.append(match.group(1))
|
||||
return defines
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1], sys.argv[2:])
|
|
@ -10,7 +10,6 @@ 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
|
||||
fixme_comment_trace_event_macro.patch
|
||||
build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch
|
||||
refactor_allow_embedder_overriding_of_internal_fs_calls.patch
|
||||
chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Nitish Sakhawalkar <nitsakh@icloud.com>
|
||||
Date: Tue, 26 Mar 2019 11:28:05 -0700
|
||||
Subject: fixme: Comment trace event macro
|
||||
|
||||
This broke the build at some point. Does it still? We should probably remove
|
||||
this patch and find out!
|
||||
|
||||
diff --git a/src/node_internals.h b/src/node_internals.h
|
||||
index 8f7929994f3243fbd58b47374dfcadafb1feda8f..c333dc3464d2a23437fa22659d38dd17b6678112 100644
|
||||
--- a/src/node_internals.h
|
||||
+++ b/src/node_internals.h
|
||||
@@ -386,10 +386,11 @@ class TraceEventScope {
|
||||
TraceEventScope(const char* category,
|
||||
const char* name,
|
||||
void* id) : category_(category), name_(name), id_(id) {
|
||||
- TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(category_, name_, id_);
|
||||
+ // TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(category_, name_, id_);
|
||||
+ (void) category_; (void)name_; (void)id_;
|
||||
}
|
||||
~TraceEventScope() {
|
||||
- TRACE_EVENT_NESTABLE_ASYNC_END0(category_, name_, id_);
|
||||
+ // TRACE_EVENT_NESTABLE_ASYNC_END0(category_, name_, id_);
|
||||
}
|
||||
|
||||
private:
|
|
@ -212,7 +212,7 @@ int NodeMain(int argc, char* argv[]) {
|
|||
|
||||
env = node::CreateEnvironment(isolate_data, gin_env.context(),
|
||||
result.args, result.exec_args);
|
||||
CHECK_NOT_NULL(env);
|
||||
CHECK_NE(nullptr, env);
|
||||
|
||||
node::IsolateSettings is;
|
||||
node::SetIsolateUpForNode(isolate, is);
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "shell/browser/microtasks_runner.h"
|
||||
#include "shell/common/gin_helper/cleaned_up_at_exit.h"
|
||||
#include "shell/common/node_includes.h"
|
||||
#include "tracing/trace_event.h"
|
||||
|
||||
namespace {
|
||||
v8::Isolate* g_isolate;
|
||||
|
|
|
@ -5,109 +5,35 @@
|
|||
#ifndef SHELL_COMMON_NODE_INCLUDES_H_
|
||||
#define SHELL_COMMON_NODE_INCLUDES_H_
|
||||
|
||||
#include "base/check.h"
|
||||
|
||||
// Include common headers for using node APIs.
|
||||
|
||||
#ifdef NODE_SHARED_MODE
|
||||
#define BUILDING_NODE_EXTENSION
|
||||
#endif
|
||||
|
||||
// The following define makes sure that we do not include the macros
|
||||
// again. But we still need the tracing functions, so declaring them.
|
||||
#define SRC_TRACING_TRACE_EVENT_H_
|
||||
|
||||
#pragma push_macro("ASSERT")
|
||||
#pragma push_macro("CHECK")
|
||||
#pragma push_macro("CHECK_EQ")
|
||||
#pragma push_macro("CHECK_GE")
|
||||
#pragma push_macro("CHECK_GT")
|
||||
#pragma push_macro("CHECK_LE")
|
||||
#pragma push_macro("CHECK_LT")
|
||||
#pragma push_macro("CHECK_NE")
|
||||
#pragma push_macro("DCHECK")
|
||||
#pragma push_macro("DCHECK_EQ")
|
||||
#pragma push_macro("DCHECK_GE")
|
||||
#pragma push_macro("DCHECK_GT")
|
||||
#pragma push_macro("DCHECK_LE")
|
||||
#pragma push_macro("DCHECK_LT")
|
||||
#pragma push_macro("DCHECK_NE")
|
||||
#pragma push_macro("DISALLOW_COPY_AND_ASSIGN")
|
||||
#pragma push_macro("LIKELY")
|
||||
#pragma push_macro("NO_RETURN")
|
||||
#pragma push_macro("UNLIKELY")
|
||||
|
||||
#undef ASSERT
|
||||
#undef CHECK
|
||||
#undef CHECK_EQ
|
||||
#undef CHECK_GE
|
||||
#undef CHECK_GT
|
||||
#undef CHECK_LE
|
||||
#undef CHECK_LT
|
||||
#undef CHECK_NE
|
||||
#undef DCHECK
|
||||
#undef DCHECK_EQ
|
||||
#undef DCHECK_GE
|
||||
#undef DCHECK_GT
|
||||
#undef DCHECK_LE
|
||||
#undef DCHECK_LT
|
||||
#undef DCHECK_NE
|
||||
#undef DISALLOW_COPY_AND_ASSIGN
|
||||
#undef LIKELY
|
||||
#undef NO_RETURN
|
||||
#undef UNLIKELY
|
||||
|
||||
#undef debug_string // This is defined in macOS SDK in AssertMacros.h.
|
||||
#undef require_string // This is defined in macOS SDK in AssertMacros.h.
|
||||
|
||||
#include "electron/push_and_undef_node_defines.h"
|
||||
|
||||
#include "env-inl.h"
|
||||
#include "env.h"
|
||||
#include "node.h"
|
||||
#include "node_buffer.h"
|
||||
#include "node_errors.h"
|
||||
#include "node_internals.h"
|
||||
#include "node_native_module_env.h"
|
||||
#include "node_options-inl.h"
|
||||
#include "node_options.h"
|
||||
#include "node_platform.h"
|
||||
#include "tracing/agent.h"
|
||||
|
||||
#include "electron/pop_node_defines.h"
|
||||
|
||||
// Alternative to NODE_MODULE_CONTEXT_AWARE_X.
|
||||
// Allows to explicitly register builtin modules instead of using
|
||||
// __attribute__((constructor)).
|
||||
#define NODE_LINKED_MODULE_CONTEXT_AWARE(modname, regfunc) \
|
||||
NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_LINKED)
|
||||
|
||||
#pragma pop_macro("ASSERT")
|
||||
#pragma pop_macro("CHECK")
|
||||
#pragma pop_macro("CHECK_EQ")
|
||||
#pragma pop_macro("CHECK_GE")
|
||||
#pragma pop_macro("CHECK_GT")
|
||||
#pragma pop_macro("CHECK_LE")
|
||||
#pragma pop_macro("CHECK_LT")
|
||||
#pragma pop_macro("CHECK_NE")
|
||||
#pragma pop_macro("DCHECK")
|
||||
#pragma pop_macro("DCHECK_EQ")
|
||||
#pragma pop_macro("DCHECK_GE")
|
||||
#pragma pop_macro("DCHECK_GT")
|
||||
#pragma pop_macro("DCHECK_LE")
|
||||
#pragma pop_macro("DCHECK_LT")
|
||||
#pragma pop_macro("DCHECK_NE")
|
||||
#pragma pop_macro("DISALLOW_COPY_AND_ASSIGN")
|
||||
#pragma pop_macro("LIKELY")
|
||||
#pragma pop_macro("NO_RETURN")
|
||||
#pragma pop_macro("UNLIKELY")
|
||||
|
||||
namespace node {
|
||||
namespace tracing {
|
||||
|
||||
class TraceEventHelper {
|
||||
public:
|
||||
static v8::TracingController* GetTracingController();
|
||||
static node::tracing::Agent* GetAgent();
|
||||
static void SetAgent(node::tracing::Agent* agent);
|
||||
};
|
||||
|
||||
} // namespace tracing
|
||||
} // namespace node
|
||||
|
||||
#endif // SHELL_COMMON_NODE_INCLUDES_H_
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
// found in the LICENSE file.
|
||||
|
||||
#include "shell/common/node_util.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "shell/common/node_includes.h"
|
||||
#include "third_party/electron_node/src/node_native_module_env.h"
|
||||
|
||||
namespace electron {
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче