Skip to content

Commit f2338f0

Browse files
committed
Fixup js2c modification patch
nodejs/node#30755
1 parent 99fad42 commit f2338f0

1 file changed

Lines changed: 22 additions & 26 deletions

File tree

patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,7 @@ index 752344d68c3f63b4c5e491b33d4576ed48f8b74f..a6f0805048e3c3f4dd81ce6e90b684c4
5959

6060
}} // namespace native_module
6161

62-
@@ -243,8 +245,8 @@ def GetDefinition(var, source, step=30):
63-
return definition, len(code_points)
64-
65-
66-
-def AddModule(filename, consts, macros, definitions, initializers):
67-
- code = ReadFile(filename)
68-
+def AddModule(filename, consts, macros, definitions, initializers, FileReadFn=ReadFile):
69-
+ code = FileReadFn(filename)
70-
code = ExpandConstants(code, consts)
71-
code = ExpandMacros(code, macros)
72-
name = NormalizeFileName(filename)
73-
@@ -256,7 +258,7 @@ def AddModule(filename, consts, macros, definitions, initializers):
62+
@@ -256,7 +258,7 @@ def AddModule(filename, definitions, initializers):
7463
initializers.append(initializer)
7564

7665
def NormalizeFileName(filename):
@@ -79,23 +68,30 @@ index 752344d68c3f63b4c5e491b33d4576ed48f8b74f..a6f0805048e3c3f4dd81ce6e90b684c4
7968
if split[0] == 'deps':
8069
split = ['internal'] + split
8170
else: # `lib/**/*.js` so drop the 'lib' part
82-
@@ -274,9 +276,9 @@ def NormalizeFileName(filename):
71+
@@ -114,8 +114,8 @@ def GetDefinition(var, source, step=30):
72+
return definition, len(code_points)
73+
8374

75+
-def AddModule(filename, definitions, initializers):
76+
- code = ReadFile(filename)
77+
+def AddModule(filename, definitions, initializers, ReadFileFn=ReadFile):
78+
+ code = ReadFileFn(filename)
79+
name = NormalizeFileName(filename)
80+
slug = SLUGGER_RE.sub('_', name)
81+
var = slug + '_raw'
82+
@@ -141,7 +141,7 @@ def NormalizeFileName(filename):
8483
return os.path.splitext(filename)[0]
8584

85+
8686
-def JS2C(source_files, target):
8787
+def JS2C(source_files, target, only_js):
88-
# Process input from all *macro.py files
89-
- consts, macros = ReadMacros(source_files['.py'])
90-
+ consts, macros = ReadMacros([] if only_js else source_files['.py'])
91-
9288
# Build source code lines
9389
definitions = []
94-
@@ -284,14 +286,26 @@ def JS2C(source_files, target):
95-
90+
initializers = []
91+
@@ -149,13 +149,26 @@ def JS2C(source_files, target):
9692
for filename in source_files['.js']:
97-
AddModule(filename, consts, macros, definitions, initializers)
98-
-
93+
AddModule(filename, definitions, initializers)
94+
9995
- config_def, config_size = handle_config_gypi(source_files['config.gypi'])
10096
- definitions.append(config_def)
10197
+ # Electron: Expose fs module without asar support.
@@ -105,9 +101,9 @@ index 752344d68c3f63b4c5e491b33d4576ed48f8b74f..a6f0805048e3c3f4dd81ce6e90b684c4
105101
+ # we have to copy both 'fs' *and* 'internal/fs/streams' and modify the
106102
+ # copies to depend on each other instead of on our asarified 'fs' code.
107103
+ # See https://github.com/electron/electron/pull/16028 for more.
108-
+ AddModule('lib/original-fs.js', consts, macros, definitions, initializers, lambda _: ReadFile(filename).replace("require('internal/fs/streams')", "require('internal/original-fs/streams')"))
104+
+ AddModule('lib/original-fs.js', definitions, initializers, lambda _: ReadFile(filename).replace("require('internal/fs/streams')", "require('internal/original-fs/streams')"))
109105
+ elif filename == 'lib/internal/fs/streams.js':
110-
+ AddModule('lib/internal/original-fs/streams.js', consts, macros, definitions, initializers, lambda _: ReadFile(filename).replace("require('fs')", "require('original-fs')"))
106+
+ AddModule('lib/internal/original-fs/streams.js', definitions, initializers, lambda _: ReadFile(filename).replace("require('fs')", "require('original-fs')"))
111107
+
112108
+ config_size = 0
113109
+ if not only_js:
@@ -132,16 +128,16 @@ index 752344d68c3f63b4c5e491b33d4576ed48f8b74f..a6f0805048e3c3f4dd81ce6e90b684c4
132128
global is_verbose
133129
is_verbose = options.verbose
134130
source_files = functools.reduce(SourceFileByExt, options.sources, {})
135-
# Should have exactly 3 types: `.js`, `.py`, and `.gypi`
136-
- assert len(source_files) == 3
131+
# Should have exactly 2 types: `.js`, and `.gypi`
132+
- assert len(source_files) == 2
137133
- # Currently config.gypi is the only `.gypi` file allowed
138134
- assert source_files['.gypi'] == ['config.gypi']
139135
- source_files['config.gypi'] = source_files.pop('.gypi')[0]
140136
- JS2C(source_files, options.target)
141137
+ if options.only_js:
142138
+ assert len(source_files) == 1
143139
+ else:
144-
+ assert len(source_files) == 3
140+
+ assert len(source_files) == 2
145141
+ # Currently config.gypi is the only `.gypi` file allowed
146142
+ assert source_files['.gypi'][0].endswith('config.gypi')
147143
+ source_files['config.gypi'] = source_files.pop('.gypi')[0]

0 commit comments

Comments
 (0)