Skip to content

Commit e9b4d24

Browse files
joyeecheungaddaleax
authored andcommitted
src: move arch, platform and release into node_metadata.cc
Move definitions of more metadata into node_metadata{.h, .cc} so the data can be reused and easily inspected in C++. PR-URL: #25293 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 43535f5 commit e9b4d24

File tree

3 files changed

+82
-48
lines changed

3 files changed

+82
-48
lines changed

src/node.cc

+26-47
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,10 @@ class NodeTraceStateObserver :
170170
TRACE_EVENT_METADATA1("__metadata", "process_name",
171171
"name", TRACE_STR_COPY(name_buffer));
172172
}
173-
TRACE_EVENT_METADATA1("__metadata", "version",
174-
"node", NODE_VERSION_STRING);
173+
TRACE_EVENT_METADATA1("__metadata",
174+
"version",
175+
"node",
176+
per_process::metadata.versions.node.c_str());
175177
TRACE_EVENT_METADATA1("__metadata", "thread_name",
176178
"name", "JavaScriptMainThread");
177179

@@ -186,13 +188,15 @@ class NodeTraceStateObserver :
186188

187189
trace_process->EndDictionary();
188190

189-
trace_process->SetString("arch", NODE_ARCH);
190-
trace_process->SetString("platform", NODE_PLATFORM);
191+
trace_process->SetString("arch", per_process::metadata.arch.c_str());
192+
trace_process->SetString("platform",
193+
per_process::metadata.platform.c_str());
191194

192195
trace_process->BeginDictionary("release");
193-
trace_process->SetString("name", NODE_RELEASE);
196+
trace_process->SetString("name",
197+
per_process::metadata.release.name.c_str());
194198
#if NODE_VERSION_IS_LTS
195-
trace_process->SetString("lts", NODE_VERSION_LTS_CODENAME);
199+
trace_process->SetString("lts", per_process::metadata.release.lts.c_str());
196200
#endif
197201
trace_process->EndDictionary();
198202
TRACE_EVENT_METADATA1("__metadata", "node",
@@ -888,54 +892,29 @@ void SetupProcessObject(Environment* env,
888892
#undef V
889893

890894
// process.arch
891-
READONLY_PROPERTY(process, "arch", OneByteString(env->isolate(), NODE_ARCH));
895+
READONLY_STRING_PROPERTY(process, "arch", per_process::metadata.arch);
892896

893897
// process.platform
894-
READONLY_PROPERTY(process,
895-
"platform",
896-
OneByteString(env->isolate(), NODE_PLATFORM));
898+
READONLY_STRING_PROPERTY(process, "platform", per_process::metadata.platform);
897899

898900
// process.release
899901
Local<Object> release = Object::New(env->isolate());
900902
READONLY_PROPERTY(process, "release", release);
901-
READONLY_PROPERTY(release, "name",
902-
OneByteString(env->isolate(), NODE_RELEASE));
903-
903+
READONLY_STRING_PROPERTY(release, "name", per_process::metadata.release.name);
904904
#if NODE_VERSION_IS_LTS
905-
READONLY_PROPERTY(release, "lts",
906-
OneByteString(env->isolate(), NODE_VERSION_LTS_CODENAME));
907-
#endif
908-
909-
// if this is a release build and no explicit base has been set
910-
// substitute the standard release download URL
911-
#ifndef NODE_RELEASE_URLBASE
912-
# if NODE_VERSION_IS_RELEASE
913-
# define NODE_RELEASE_URLBASE "https://nodejs.org/download/release/"
914-
# endif
915-
#endif
916-
917-
#if defined(NODE_RELEASE_URLBASE)
918-
# define NODE_RELEASE_URLPFX NODE_RELEASE_URLBASE "v" NODE_VERSION_STRING "/"
919-
# define NODE_RELEASE_URLFPFX NODE_RELEASE_URLPFX "node-v" NODE_VERSION_STRING
920-
921-
READONLY_PROPERTY(release,
922-
"sourceUrl",
923-
OneByteString(env->isolate(),
924-
NODE_RELEASE_URLFPFX ".tar.gz"));
925-
READONLY_PROPERTY(release,
926-
"headersUrl",
927-
OneByteString(env->isolate(),
928-
NODE_RELEASE_URLFPFX "-headers.tar.gz"));
929-
# ifdef _WIN32
930-
READONLY_PROPERTY(release,
931-
"libUrl",
932-
OneByteString(env->isolate(),
933-
strcmp(NODE_ARCH, "ia32") ? NODE_RELEASE_URLPFX "win-"
934-
NODE_ARCH "/node.lib"
935-
: NODE_RELEASE_URLPFX
936-
"win-x86/node.lib"));
937-
# endif
938-
#endif
905+
READONLY_STRING_PROPERTY(release, "lts", per_process::metadata.release.lts);
906+
#endif // NODE_VERSION_IS_LTS
907+
908+
#ifdef NODE_HAS_RELEASE_URLS
909+
READONLY_STRING_PROPERTY(
910+
release, "sourceUrl", per_process::metadata.release.source_url);
911+
READONLY_STRING_PROPERTY(
912+
release, "headersUrl", per_process::metadata.release.headers_url);
913+
#ifdef _WIN32
914+
READONLY_STRING_PROPERTY(
915+
release, "libUrl", per_process::metadata.release.lib_url);
916+
#endif // _WIN32
917+
#endif // NODE_HAS_RELEASE_URLS
939918

940919
// process.argv
941920
process->Set(env->context(),

src/node_metadata.cc

+22
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,26 @@ Metadata::Versions::Versions() {
9090
#endif // NODE_HAVE_I18N_SUPPORT
9191
}
9292

93+
Metadata::Release::Release() : name(NODE_RELEASE) {
94+
#if NODE_VERSION_IS_LTS
95+
lts = NODE_VERSION_LTS_CODENAME;
96+
#endif // NODE_VERSION_IS_LTS
97+
98+
#ifdef NODE_HAS_RELEASE_URLS
99+
#define NODE_RELEASE_URLPFX NODE_RELEASE_URLBASE "v" NODE_VERSION_STRING "/"
100+
#define NODE_RELEASE_URLFPFX NODE_RELEASE_URLPFX "node-v" NODE_VERSION_STRING
101+
102+
source_url = NODE_RELEASE_URLFPFX ".tar.gz";
103+
headers_url = NODE_RELEASE_URLFPFX "-headers.tar.gz";
104+
#ifdef _WIN32
105+
lib_url = strcmp(NODE_ARCH, "ia32") ? NODE_RELEASE_URLPFX "win-" NODE_ARCH
106+
"/node.lib"
107+
: NODE_RELEASE_URLPFX "win-x86/node.lib";
108+
#endif // _WIN32
109+
110+
#endif // NODE_HAS_RELEASE_URLS
111+
}
112+
113+
Metadata::Metadata() : arch(NODE_ARCH), platform(NODE_PLATFORM) {}
114+
93115
} // namespace node

src/node_metadata.h

+34-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,22 @@
44
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
55

66
#include <string>
7+
#include "node_version.h"
78

89
namespace node {
910

11+
// if this is a release build and no explicit base has been set
12+
// substitute the standard release download URL
13+
#ifndef NODE_RELEASE_URLBASE
14+
#if NODE_VERSION_IS_RELEASE
15+
#define NODE_RELEASE_URLBASE "https://nodejs.org/download/release/"
16+
#endif // NODE_VERSION_IS_RELEASE
17+
#endif // NODE_RELEASE_URLBASE
18+
19+
#if defined(NODE_RELEASE_URLBASE)
20+
#define NODE_HAS_RELEASE_URLS
21+
#endif
22+
1023
#define NODE_VERSIONS_KEYS_BASE(V) \
1124
V(node) \
1225
V(v8) \
@@ -43,7 +56,7 @@ namespace node {
4356

4457
class Metadata {
4558
public:
46-
Metadata() = default;
59+
Metadata();
4760
Metadata(Metadata&) = delete;
4861
Metadata(Metadata&&) = delete;
4962
Metadata operator=(Metadata&) = delete;
@@ -63,7 +76,27 @@ class Metadata {
6376
#undef V
6477
};
6578

79+
struct Release {
80+
Release();
81+
82+
std::string name;
83+
#if NODE_VERSION_IS_LTS
84+
std::string lts;
85+
#endif // NODE_VERSION_IS_LTS
86+
87+
#ifdef NODE_HAS_RELEASE_URLS
88+
std::string source_url;
89+
std::string headers_url;
90+
#ifdef _WIN32
91+
std::string lib_url;
92+
#endif // _WIN32
93+
#endif // NODE_HAS_RELEASE_URLS
94+
};
95+
6696
Versions versions;
97+
const Release release;
98+
const std::string arch;
99+
const std::string platform;
67100
};
68101

69102
// Per-process global

0 commit comments

Comments
 (0)