From 92db4f0b8a196601ae888b983f91dea42044418d Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 10 Jun 2024 10:34:36 -0500 Subject: [PATCH] build: fix `generate_gn_filenames_json.py` (#42389) build: fix generate_gn_filenames_json.py --- patches/node/build_add_gn_build_files.patch | 95 ++++++++++++++------- 1 file changed, 63 insertions(+), 32 deletions(-) diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index 9ca484febc..a688391250 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -1256,10 +1256,10 @@ index 0000000000000000000000000000000000000000..af9cbada10203b387fb9732b346583b1 +} diff --git a/filenames.json b/filenames.json new file mode 100644 -index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e112101ec +index 0000000000000000000000000000000000000000..fd42e2a5e6163ff70db0f716d2f9a32f13cdf668 --- /dev/null +++ b/filenames.json -@@ -0,0 +1,739 @@ +@@ -0,0 +1,734 @@ +// This file is automatically generated by generate_gn_filenames_json.py +// DO NOT EDIT +{ @@ -1292,7 +1292,7 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + ] + }, + { -+ "dest_dir": "include/node//", ++ "dest_dir": "include/node/./", + "files": [ + "//v8/include/v8-array-buffer.h", + "//v8/include/v8-callbacks.h", @@ -1346,11 +1346,12 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + "//v8/include/v8-wasm.h", + "//v8/include/v8-weak-callback-info.h", + "//v8/include/v8.h", -+ "//v8/include/v8config.h" ++ "//v8/include/v8config.h", ++ "deps/uv/include/uv.h" + ] + }, + { -+ "dest_dir": "include/node//libplatform/", ++ "dest_dir": "include/node/libplatform/", + "files": [ + "//v8/include/libplatform/libplatform-export.h", + "//v8/include/libplatform/libplatform.h", @@ -1358,7 +1359,7 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + ] + }, + { -+ "dest_dir": "include/node//cppgc/", ++ "dest_dir": "include/node/cppgc/", + "files": [ + "//v8/include/cppgc/allocation.h", + "//v8/include/cppgc/common.h", @@ -1391,7 +1392,7 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + ] + }, + { -+ "dest_dir": "include/node//cppgc/internal/", ++ "dest_dir": "include/node/cppgc/internal/", + "files": [ + "//v8/include/cppgc/internal/api-constants.h", + "//v8/include/cppgc/internal/atomic-entry-flag.h", @@ -1410,13 +1411,7 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + ] + }, + { -+ "dest_dir": "include/node//", -+ "files": [ -+ "deps/uv/include/uv.h" -+ ] -+ }, -+ { -+ "dest_dir": "include/node//uv/", ++ "dest_dir": "include/node/uv/", + "files": [ + "deps/uv/include/uv/aix.h", + "deps/uv/include/uv/bsd.h", @@ -1891,7 +1886,7 @@ index 0000000000000000000000000000000000000000..1a9cba024f1762b0dfe31da92213b51e + "src/dataqueue/queue.h", + "src/debug_utils.h", + "src/debug_utils-inl.h", -+ "src/embeded_data.h", ++ "src/embedded_data.h", + "src/encoding_binding.h", + "src/env_properties.h", + "src/env.h", @@ -2243,10 +2238,10 @@ index 75a7f3dd89e096d13ad7d70ed29d301cd56315b5..9a20a275fbe5df9f384b7b1d1d26806e // bootstrap scripts, whose source are bundled into the binary as static data. diff --git a/tools/generate_gn_filenames_json.py b/tools/generate_gn_filenames_json.py new file mode 100755 -index 0000000000000000000000000000000000000000..7848ddb1841b6d4f36e9376c73564eb4ff6d7c08 +index 0000000000000000000000000000000000000000..37c16859003e61636fe2f1a4040b1e904c472d0b --- /dev/null +++ b/tools/generate_gn_filenames_json.py -@@ -0,0 +1,90 @@ +@@ -0,0 +1,117 @@ +#!/usr/bin/env python3 +import json +import os @@ -2276,6 +2271,14 @@ index 0000000000000000000000000000000000000000..7848ddb1841b6d4f36e9376c73564eb4 +// DO NOT EDIT +'''.lstrip() + ++SRC_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..', '..')) ++ ++def get_out_dir(): ++ out_dir = 'Testing' ++ override = os.environ.get('ELECTRON_OUT_DIR') ++ if override is not None: ++ out_dir = override ++ return os.path.join(SRC_DIR, 'out', out_dir) + +if __name__ == '__main__': + node_root_dir = os.path.dirname(os.path.dirname(__file__)) @@ -2294,18 +2297,25 @@ index 0000000000000000000000000000000000000000..7848ddb1841b6d4f36e9376c73564eb4 + } + + def filter_v8_files(files): -+ if any(f.startswith('deps/v8/') for f in files): -+ files = [f.replace('deps/v8/', '../../v8/', 1) if f.endswith('js') else f.replace('deps/v8/', '//v8/') for f in files] ++ v8_files = [f for f in files if f.startswith('deps/v8/')] ++ other_files = [f for f in files if not f.startswith('deps/v8/')] + -+ if any(f == '<@(node_builtin_shareable_builtins)' for f in files): -+ files.remove('<@(node_builtin_shareable_builtins)') ++ for i, f in enumerate(v8_files): ++ if not f.startswith('deps/v8/tools'): ++ if f.endswith('js'): ++ v8_files[i] = f.replace('deps/v8/', '../../v8/', 1) ++ else: ++ v8_files[i] = f.replace('deps/v8/', '//v8/') ++ ++ if any(f == '<@(node_builtin_shareable_builtins)' for f in other_files): ++ other_files.remove('<@(node_builtin_shareable_builtins)') + shared_builtins = ['deps/cjs-module-lexer/lexer.js', 'deps/cjs-module-lexer/dist/lexer.js', 'deps/undici/undici.js'] -+ files.extend(shared_builtins) ++ other_files.extend(shared_builtins) + -+ return files ++ return v8_files + other_files + + def filter_fs_files(files): -+ return [f for f in files if f.startswith('lib/internal/fs/')] + ['lib/fs.js'] ++ return [f for f in files if f.startswith('lib/internal/fs/')] + ['lib/fs.js'] + ['lib/fs/promises.js'] + + lib_files = SearchFiles('lib', 'js') + out['library_files'] = filter_v8_files(lib_files) @@ -2322,17 +2332,29 @@ index 0000000000000000000000000000000000000000..7848ddb1841b6d4f36e9376c73564eb4 + out['node_sources'] += filter_v8_files(blocklisted_sources) + + out['headers'] = [] -+ def add_headers(files, dest_dir): ++ def add_headers(options, 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'] + elif any(f.startswith('../../v8/') for f in files): + files = [f.replace('../../v8/', '//v8/', 1) for f in files] + if files: -+ hs = {'files': sorted(files), 'dest_dir': dest_dir} -+ out['headers'].append(hs) ++ dir_index = next((i for i, d in enumerate(out['headers']) if d['dest_dir'] == dest_dir), -1) ++ if (dir_index != -1): ++ out['headers'][dir_index]['files'] += sorted(files) ++ else: ++ hs = {'files': sorted(files), 'dest_dir': dest_dir} ++ out['headers'].append(hs) + -+ install.variables = {'node_shared_libuv': 'false'} -+ install.headers(add_headers) ++ config_gypi_path = os.path.join(get_out_dir(), 'gen', 'config.gypi') ++ root_gen_dir = os.path.join(node_root_dir, 'out', 'Release', 'gen') ++ ++ options = install.parse_options(['install', '--v8-dir', '../../v8', '--config-gypi-path', config_gypi_path, '--headers-only']) ++ options.variables['node_use_openssl'] = 'false' ++ options.variables['node_shared_libuv'] = 'false' ++ # We generate zlib headers in Electron's BUILD.gn. ++ options.variables['node_shared_zlib'] = '' ++ ++ install.headers(options, add_headers) + with open(os.path.join(node_root_dir, 'filenames.json'), 'w') as f: + f.write(FILENAMES_JSON_HEADER) + f.write(json.dumps(out, sort_keys=True, indent=2, separators=(',', ': '))) @@ -2363,18 +2385,27 @@ index 0000000000000000000000000000000000000000..9be3ac447f9a4dde23fefc26e0b922b4 + transformed_f.write(transformed_contents) + diff --git a/tools/install.py b/tools/install.py -index b132c7bf26c02886a7ab341a1973bf449744ba0f..171b383a4b6c2528d11dd5f89a6837fd071bcf4b 100755 +index b132c7bf26c02886a7ab341a1973bf449744ba0f..757e3e60a7be01fac55c5fbb010dbbae00b1bfca 100755 --- a/tools/install.py +++ b/tools/install.py -@@ -284,6 +284,7 @@ def headers(options, action): +@@ -264,6 +264,7 @@ def headers(options, action): + 'include/v8-forward.h', + 'include/v8-function-callback.h', + 'include/v8-function.h', ++ 'include/v8-handle-base.h', + 'include/v8-initialization.h', + 'include/v8-internal.h', + 'include/v8-isolate.h', +@@ -284,6 +285,8 @@ def headers(options, action): 'include/v8-promise.h', 'include/v8-proxy.h', 'include/v8-regexp.h', + "include/v8-sandbox.h", ++ "include/v8-source-location.h", 'include/v8-script.h', 'include/v8-snapshot.h', 'include/v8-statistics.h', -@@ -390,7 +391,7 @@ def parse_options(args): +@@ -390,7 +393,7 @@ def parse_options(args): parser.add_argument('--build-dir', help='the location of built binaries', default='out/Release') parser.add_argument('--v8-dir', help='the location of V8',