Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(277)

Unified Diff: tools/isolate_driver.py

Issue 1354523002: Revert of Add debug symbols to all generated .isolate. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2_process
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/isolate_driver.py
diff --git a/tools/isolate_driver.py b/tools/isolate_driver.py
index e8b5c3ba160d4d5a2cf5851a8e225db39ba10c46..f75b4bdf71995e9928e8eac3c10499034e6a7efc 100755
--- a/tools/isolate_driver.py
+++ b/tools/isolate_driver.py
@@ -24,7 +24,6 @@
import logging
import os
import posixpath
-import re
import StringIO
import subprocess
import sys
@@ -100,11 +99,7 @@
def load_ninja(build_dir):
- """Loads the tree of .ninja files in build_dir.
-
- Returns:
- dict(target: list of dependencies).
- """
+ """Loads the tree of .ninja files in build_dir."""
build_steps = {}
total = load_ninja_recursively(build_dir, 'build.ninja', build_steps)
logging.info('Loaded %d ninja files, %d build steps', total, len(build_steps))
@@ -132,54 +127,21 @@
if ext in IGNORED:
return False
# Special case Windows, keep .dll.lib but discard .lib.
- if sys.platform == 'win32':
- if item.endswith('.dll.lib'):
- return True
- if ext == '.lib':
- return False
+ if item.endswith('.dll.lib'):
+ return True
+ if ext == '.lib':
+ return False
return item not in ('', '|', '||')
-
-# This is a whitelist of known ninja native rules.
-KNOWN_TOOLS = frozenset(
- (
- 'copy',
- 'copy_infoplist',
- 'cxx',
- 'idl',
- 'link',
- 'link_embed',
- 'mac_tool',
- 'package_framework',
- 'phony',
- 'rc',
- 'solink',
- 'solink_embed',
- 'solink_module',
- 'solink_module_embed',
- 'solink_module_notoc',
- 'solink_notoc',
- 'stamp',
- ))
def raw_build_to_deps(item):
"""Converts a raw ninja build statement into the list of interesting
dependencies.
"""
- items = filter(None, item.split(' '))
- for i in xrange(len(items) - 2, 0, -1):
- # Merge back '$ ' escaping.
- # OMG please delete this code as soon as possible.
- if items[i].endswith('$'):
- items[i] = items[i][:-1] + ' ' + items[i+1]
- items.pop(i+1)
-
- # Always skip the first item; it is the build rule type, e.g. , etc.
- if items[0] not in KNOWN_TOOLS:
- # Check for phony ninja rules.
- assert re.match(r'^[^.]+_[0-9a-f]{32}$', items[0]), items
-
- return filter(using_blacklist, items[1:])
+ # TODO(maruel): Use a whitelist instead? .stamp, .so.TOC, .dylib.TOC,
+ # .dll.lib, .exe and empty.
+ # The first item is the build rule, e.g. 'link', 'cxx', 'phony', etc.
+ return filter(using_blacklist, item.split(' ')[1:])
def collect_deps(target, build_steps, dependencies_added, rules_seen):
@@ -205,56 +167,37 @@
def post_process_deps(build_dir, dependencies):
- """Processes the dependency list with OS specific rules.
-
- Returns:
- list of dependencies to add.
- """
- out = []
- for i in dependencies:
+ """Processes the dependency list with OS specific rules."""
+ def filter_item(i):
+ if i.endswith('.so.TOC'):
+ # Remove only the suffix .TOC, not the .so!
+ return i[:-4]
+ if i.endswith('.dylib.TOC'):
+ # Remove only the suffix .TOC, not the .dylib!
+ return i[:-4]
+ if i.endswith('.dll.lib'):
+ # Remove only the suffix .lib, not the .dll!
+ return i[:-4]
+ return i
+
+ def is_exe(i):
+ # This script is only for adding new binaries that are created as part of
+ # the component build.
+ ext = os.path.splitext(i)[1]
+ # On POSIX, executables have no extension.
+ if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'):
+ return False
if os.path.isabs(i):
# In some rare case, there's dependency set explicitly on files outside
- # the checkout. In practice, it was observed on /usr/bin/eu-strip only on
- # official Chrome build.
- continue
- if os.path.isdir(os.path.join(build_dir, i)):
- if sys.platform == 'darwin':
- # This is an application.
- out.append(i + '/')
- elif i.endswith('.so.TOC'):
- out.append(i[:-4])
- elif i.endswith('.dylib.TOC'):
- i = i[:-4]
- out.append(i)
- # Debug symbols may not be present.
- i += '.dSym'
- if os.path.isdir(os.path.join(build_dir, i)):
- out.append(i + '/')
- elif i.endswith('.dll.lib'):
- i = i[:-4]
- out.append(i)
- # Naming is inconsistent.
- if os.path.isfile(os.path.join(build_dir, i + '.pdb')):
- out.append(i + '.pdb')
- if os.path.isfile(os.path.join(build_dir, i[:-4] + '.pdb')):
- out.append(i[:-4] + '.pdb')
- elif i.endswith('.exe'):
- out.append(i)
- # Naming is inconsistent.
- if os.path.isfile(os.path.join(build_dir, i + '.pdb')):
- out.append(i + '.pdb')
- if os.path.isfile(os.path.join(build_dir, i[:-4] + '.pdb')):
- out.append(i[:-4] + '.pdb')
- elif i.endswith('.nexe'):
- out.append(i)
- i += '.debug'
- if os.path.isfile(os.path.join(build_dir, i)):
- out.append(i)
- elif sys.platform != 'win32':
- # On POSIX, executables have no extension.
- if not os.path.splitext(i)[1]:
- out.append(i)
- return out
+ # the checkout.
+ return False
+
+ # Check for execute access and strip directories. This gets rid of all the
+ # phony rules.
+ p = os.path.join(build_dir, i)
+ return os.access(p, os.X_OK) and not os.path.isdir(p)
+
+ return filter(is_exe, map(filter_item, dependencies))
def create_wrapper(args, isolate_index, isolated_index):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698