diff --git a/patches/common/chromium/.patches.yaml b/patches/common/chromium/.patches.yaml index 81b372d8eae6..0a106bec0e73 100644 --- a/patches/common/chromium/.patches.yaml +++ b/patches/common/chromium/.patches.yaml @@ -92,23 +92,6 @@ patches: author: null file: browser_plugin_wheel.patch description: null -- - author: null - file: build_toolchain_win_patch.patch - description: | - Patch the Windows build toolchain to generate unique PDB names - - When the PDB files generated by the `static_library` build are - packaged for distribution they are all copied to a single folder, - some of the PDB files have identical names so they end up - overwriting each other. The missing PDB files cause linker warnings - when building Electron in Release mode, and make it more difficult - to debug release builds. - - This patch modifies the PDB naming convention for the - `static_library` build configuration to ensure PDB names are unique. - For example, instead of generating `obj/ui/base/base_cc.pdb` the - build will now generate `obj/ui/base/obj_ui_base_base_cc.pdb`. - author: Cheng Zhao file: can_create_window.patch diff --git a/patches/common/chromium/build_toolchain_win_patch.patch b/patches/common/chromium/build_toolchain_win_patch.patch deleted file mode 100644 index 55c8519bdfce..000000000000 --- a/patches/common/chromium/build_toolchain_win_patch.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 88c91c7f60e6251c35fdb3549a5dd7fc66cfdf3b Mon Sep 17 00:00:00 2001 -From: Anonymous -Date: Wed, 19 Sep 2018 18:55:58 -0700 -Subject: build_toolchain_win_patch.patch - -Patch the Windows build toolchain to generate unique PDB names - -When the PDB files generated by the `static_library` build are -packaged for distribution they are all copied to a single folder, -some of the PDB files have identical names so they end up -overwriting each other. The missing PDB files cause linker warnings -when building Electron in Release mode, and make it more difficult -to debug release builds. - -This patch modifies the PDB naming convention for the -`static_library` build configuration to ensure PDB names are unique. -For example, instead of generating `obj/ui/base/base_cc.pdb` the -build will now generate `obj/ui/base/obj_ui_base_base_cc.pdb`. - -diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn -index eb3e2b2b377d..fdffcdbdbbfe 100644 ---- a/build/toolchain/win/BUILD.gn -+++ b/build/toolchain/win/BUILD.gn -@@ -173,6 +173,12 @@ template("msvc_toolchain") { - ] - - command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\"" -+ -+ if (is_electron_build && !is_component_build) { -+ pdbdir = "{{target_out_dir}}" -+ pdbname = "{{label_name}}_c.pdb" -+ command = "$python_path $tool_wrapper_path cl-wrapper $env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} $pdbdir \"$pdbname\"" -+ } - } - - tool("cxx") { -@@ -189,6 +195,12 @@ template("msvc_toolchain") { - ] - - command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\"" -+ -+ if (is_electron_build && !is_component_build) { -+ pdbdir = "{{target_out_dir}}" -+ pdbname = "{{label_name}}_cc.pdb" -+ command = "$python_path $tool_wrapper_path cl-wrapper $env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} $pdbdir \"$pdbname\"" -+ } - } - - tool("rc") { -diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py -index cb0393ecd507..ee21eb4b194b 100644 ---- a/build/toolchain/win/tool_wrapper.py -+++ b/build/toolchain/win/tool_wrapper.py -@@ -247,6 +247,25 @@ class WinTool(object): - dirname = dirname[0] if dirname else None - return subprocess.call(args, shell=True, env=env, cwd=dirname) - -+ def ExecClWrapper(self, *args): -+ """Invokes cl.exe to compile a C/C++ source file.""" -+ args = list(args) -+ # Incorporate the PDB output dir into the PDB name to ensure the PDB name -+ # is unique (see https://github.com/electron/libchromiumcontent/issues/287) -+ pdb_name = args.pop() -+ pdb_dir = args.pop() -+ pdb_filename = '%s/%s_%s' % (pdb_dir, pdb_dir.replace('/', '_'), pdb_name) -+ # On Windows when args is a sequence instead of a single string -+ # subprocess.call() will use subprocess.list2cmdline() to convert the -+ # sequence to a string. Unfortunately the double-quote escaping done by -+ # subprocess.list2cmdline() mangles the /Fd"path/to/some.pdb" arg to -+ # /Fd\"path/to/some.pdb\", and cl.exe then fails to parse the PDB filename -+ # correctly. To work around this we use subprocess.list2cmdline() -+ # (even though it's not part of the public API) to construct most of the -+ # command line, and then append the /Fd flag. -+ pdb_flag = '/Fd"%s"' % pdb_filename -+ cmdline = '%s %s' % (subprocess.list2cmdline(args), pdb_flag) -+ return subprocess.call(cmdline, shell=False) - - if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) --- -2.17.0 -