Skip to content

Commit b028251

Browse files
joyeecheungrefack
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: nodejs#25293 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent f322d28 commit b028251

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
@@ -168,8 +168,10 @@ class NodeTraceStateObserver :
168168
TRACE_EVENT_METADATA1("__metadata", "process_name",
169169
"name", TRACE_STR_COPY(name_buffer));
170170
}
171-
TRACE_EVENT_METADATA1("__metadata", "version",
172-
"node", NODE_VERSION_STRING);
171+
TRACE_EVENT_METADATA1("__metadata",
172+
"version",
173+
"node",
174+
per_process::metadata.versions.node.c_str());
173175
TRACE_EVENT_METADATA1("__metadata", "thread_name",
174176
"name", "JavaScriptMainThread");
175177

@@ -184,13 +186,15 @@ class NodeTraceStateObserver :
184186

185187
trace_process->EndDictionary();
186188

187-
trace_process->SetString("arch", NODE_ARCH);
188-
trace_process->SetString("platform", NODE_PLATFORM);
189+
trace_process->SetString("arch", per_process::metadata.arch.c_str());
190+
trace_process->SetString("platform",
191+
per_process::metadata.platform.c_str());
189192

190193
trace_process->BeginDictionary("release");
191-
trace_process->SetString("name", NODE_RELEASE);
194+
trace_process->SetString("name",
195+
per_process::metadata.release.name.c_str());
192196
#if NODE_VERSION_IS_LTS
193-
trace_process->SetString("lts", NODE_VERSION_LTS_CODENAME);
197+
trace_process->SetString("lts", per_process::metadata.release.lts.c_str());
194198
#endif
195199
trace_process->EndDictionary();
196200
TRACE_EVENT_METADATA1("__metadata", "node",
@@ -839,54 +843,29 @@ void SetupProcessObject(Environment* env,
839843
#undef V
840844

841845
// process.arch
842-
READONLY_PROPERTY(process, "arch", OneByteString(env->isolate(), NODE_ARCH));
846+
READONLY_STRING_PROPERTY(process, "arch", per_process::metadata.arch);
843847

844848
// process.platform
845-
READONLY_PROPERTY(process,
846-
"platform",
847-
OneByteString(env->isolate(), NODE_PLATFORM));
849+
READONLY_STRING_PROPERTY(process, "platform", per_process::metadata.platform);
848850

849851
// process.release
850852
Local<Object> release = Object::New(env->isolate());
851853
READONLY_PROPERTY(process, "release", release);
852-
READONLY_PROPERTY(release, "name",
853-
OneByteString(env->isolate(), NODE_RELEASE));
854-
854+
READONLY_STRING_PROPERTY(release, "name", per_process::metadata.release.name);
855855
#if NODE_VERSION_IS_LTS
856-
READONLY_PROPERTY(release, "lts",
857-
OneByteString(env->isolate(), NODE_VERSION_LTS_CODENAME));
858-
#endif
859-
860-
// if this is a release build and no explicit base has been set
861-
// substitute the standard release download URL
862-
#ifndef NODE_RELEASE_URLBASE
863-
# if NODE_VERSION_IS_RELEASE
864-
# define NODE_RELEASE_URLBASE "https://nodejs.org/download/release/"
865-
# endif
866-
#endif
867-
868-
#if defined(NODE_RELEASE_URLBASE)
869-
# define NODE_RELEASE_URLPFX NODE_RELEASE_URLBASE "v" NODE_VERSION_STRING "/"
870-
# define NODE_RELEASE_URLFPFX NODE_RELEASE_URLPFX "node-v" NODE_VERSION_STRING
871-
872-
READONLY_PROPERTY(release,
873-
"sourceUrl",
874-
OneByteString(env->isolate(),
875-
NODE_RELEASE_URLFPFX ".tar.gz"));
876-
READONLY_PROPERTY(release,
877-
"headersUrl",
878-
OneByteString(env->isolate(),
879-
NODE_RELEASE_URLFPFX "-headers.tar.gz"));
880-
# ifdef _WIN32
881-
READONLY_PROPERTY(release,
882-
"libUrl",
883-
OneByteString(env->isolate(),
884-
strcmp(NODE_ARCH, "ia32") ? NODE_RELEASE_URLPFX "win-"
885-
NODE_ARCH "/node.lib"
886-
: NODE_RELEASE_URLPFX
887-
"win-x86/node.lib"));
888-
# endif
889-
#endif
856+
READONLY_STRING_PROPERTY(release, "lts", per_process::metadata.release.lts);
857+
#endif // NODE_VERSION_IS_LTS
858+
859+
#ifdef NODE_HAS_RELEASE_URLS
860+
READONLY_STRING_PROPERTY(
861+
release, "sourceUrl", per_process::metadata.release.source_url);
862+
READONLY_STRING_PROPERTY(
863+
release, "headersUrl", per_process::metadata.release.headers_url);
864+
#ifdef _WIN32
865+
READONLY_STRING_PROPERTY(
866+
release, "libUrl", per_process::metadata.release.lib_url);
867+
#endif // _WIN32
868+
#endif // NODE_HAS_RELEASE_URLS
890869

891870
// process.argv
892871
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)