Browse Source

build: fix Node.js filename generation (#25577)

Shelley Vohr 4 years ago
parent
commit
353c63e47a
1 changed files with 14 additions and 7 deletions
  1. 14 7
      patches/node/build_add_gn_build_files.patch

+ 14 - 7
patches/node/build_add_gn_build_files.patch

@@ -1615,10 +1615,10 @@ index 0000000000000000000000000000000000000000..01f62d4ae6e3b9d539444e3dff069f00
 +  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..9be5ffae55057c4072599d17384735984851de5a
+index 0000000000000000000000000000000000000000..e5fd79da5323e7039730fd8cca66caae8c84e903
 --- /dev/null
 +++ b/tools/generate_gn_filenames_json.py
-@@ -0,0 +1,63 @@
+@@ -0,0 +1,70 @@
 +#!/usr/bin/env python
 +import json
 +import os
@@ -1653,21 +1653,28 @@ index 0000000000000000000000000000000000000000..9be5ffae55057c4072599d1738473598
 +  node_gyp_path = os.path.join(node_root_dir, 'node.gyp')
 +  out = {}
 +  node_gyp = LoadPythonDictionary(node_gyp_path)
-+  out['library_files'] = node_gyp['variables']['library_files']
 +  node_lib_target = next(
 +      t for t in node_gyp['targets']
 +      if t['target_name'] == '<(node_lib_target_name)')
-+  node_source_blacklist = {
++  node_source_blocklist = {
 +      '<@(library_files)',
 +      'common.gypi',
 +      '<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
 +  }
-+  out['node_sources'] = [
++
++  def filter_v8_files(files):
++    if any(f.startswith('deps/v8/') for f in files):
++      files = [f.replace('deps/v8/', '//v8/', 1) for f in files]
++    return files
++
++  out['library_files'] = filter_v8_files(node_gyp['variables']['library_files'])
++
++  blocklisted_sources = [
 +      f for f in node_lib_target['sources']
-+      if f not in node_source_blacklist]
++      if f not in node_source_blocklist]
++  out['node_sources'] = filter_v8_files(blocklisted_sources)
 +
 +  out['headers'] = []
-+
 +  def add_headers(files, dest_dir):
 +    if 'src/node.h' in files:
 +      files = [f for f in files if f.endswith('.h') and f != 'src/node_version.h']