Repository: nodejs/node
Pull request: tools: remove deps/zlib/GN-scraper.py

Gyp appends search path for `pymod_do_main`, so `GN-scraper.py` in
`v8_gypfiles` always takes precedence over `deps/zlib/GN-scraper.py`,
and `deps/zlib/GN-scraper.py` is never loaded.

Refs: https://github.com/nodejs/gyp-next/blob/46fc91f1fa0aeb72a2581ea6996f5e37f7a2e9ce/pylib/gyp/input.py#L935

Changed files:
filename: deps/zlib/GN-scraper.py
patch: @@ -1,28 +0,0 @@
-# Copyright (c) 2019 Refael Ackeramnn<refack@gmail.com>. All rights reserved.
-# Use of this source code is governed by an MIT-style license.
-import re
-import os
-import sys
-
-PLAIN_SOURCE_RE = re.compile('\s*"([^/$].+)"\s*')
-def DoMain(args):
-  gn_filename, pattern = args
-  src_root = os.path.dirname(gn_filename)
-  with open(gn_filename, 'rb') as gn_file:
-    gn_content = gn_file.read().decode('utf-8')
-
-  scraper_re = re.compile(pattern + r'\[([^\]]+)', re.DOTALL)
-  matches = scraper_re.search(gn_content)
-  match = matches.group(1)
-  files = []
-  for l in match.splitlines():
-    m2 = PLAIN_SOURCE_RE.match(l)
-    if not m2:
-      continue
-    files.append(m2.group(1))
-  # always use `/` since GYP will process paths further downstream
-  rel_files = ['"%s/%s"' % (src_root, f) for f in files]
-  return ' '.join(rel_files)
-
-if __name__ == '__main__':
-  print(DoMain(sys.argv[1:]))

filename: tools/dep_updaters/update-zlib.sh
patch: @@ -14,7 +14,7 @@ echo "Comparing latest upstream with current revision"
 
 git fetch https://chromium.googlesource.com/chromium/src/third_party/zlib.git HEAD
 
-# Revert zconf.h changes before checking diff 
+# Revert zconf.h changes before checking diff
 perl -i -pe 's|^//#include "chromeconf.h"|#include "chromeconf.h"|' "$DEPS_DIR/zlib/zconf.h"
 git stash -- "$DEPS_DIR/zlib/zconf.h"
 
@@ -63,13 +63,13 @@ gzip -dc "$ZLIB_TARBALL" | tar xf - -C zlib/
 
 rm "$ZLIB_TARBALL"
 
-cp "$DEPS_DIR/zlib/zlib.gyp" "$DEPS_DIR/zlib/GN-scraper.py" "$DEPS_DIR/zlib/win32/zlib.def" "$DEPS_DIR"
+cp "$DEPS_DIR/zlib/zlib.gyp" "$DEPS_DIR/zlib/win32/zlib.def" "$DEPS_DIR"
 
 rm -rf "$DEPS_DIR/zlib" zlib/.git
 
 mv zlib "$DEPS_DIR/"
 
-mv "$DEPS_DIR/zlib.gyp" "$DEPS_DIR/GN-scraper.py" "$DEPS_DIR/zlib/"
+mv "$DEPS_DIR/zlib.gyp" "$DEPS_DIR/zlib/"
 
 mkdir "$DEPS_DIR/zlib/win32"
 

filename: tools/gyp_node.py
patch: @@ -9,6 +9,10 @@
 sys.path.insert(0, os.path.join(node_root, 'tools', 'gyp', 'pylib'))
 import gyp
 
+# Add search path for `pymod_do_main` first to avoid depending on
+# load order of gyp files.
+sys.path.insert(0, os.path.join(node_root, 'tools', 'v8_gypfiles'))
+
 # Directory within which we want all generated files (including Makefiles)
 # to be written.
 output_dir = os.path.join(os.path.abspath(node_root), 'out')

filename: tools/v8_gypfiles/GN-scraper.py
patch: @@ -2,6 +2,7 @@
 # Use of this source code is governed by an MIT-style license.
 import re
 import os
+import sys
 
 PLAIN_SOURCE_RE = re.compile(r'\s*"([^/$].+)"\s*')
 def DoMain(args):
@@ -22,3 +23,6 @@ def DoMain(args):
   # always use `/` since GYP will process paths further downstream
   rel_files = ['"%s/%s"' % (src_root, f) for f in files]
   return ' '.join(rel_files)
+
+if __name__ == '__main__':
+  print(DoMain(sys.argv[1:]))