From d170ae2a713d6f69dbecbf31c566f5c092896344 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Wed, 24 Jul 2013 15:54:50 +0200 Subject: [PATCH] GRIT: Allow grd files outside of chromium source dir. When replacing substrings with values from a dictionary, the replacements should not be truncated to the length of src_root_dir. If the basename does not exist as a key in the resource_ids file, then fall back to an absolute path. The precedence is like: file in chromium > file basename > absolute file name. THIS SHOULD BE UPSTREAMABLE. --- grit/node/misc.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/grit/node/misc.py b/grit/node/misc.py index 734c57a..33848b2 100755 --- a/grit/node/misc.py +++ b/grit/node/misc.py @@ -49,7 +49,7 @@ def _ReadFirstIdsFromFile(filename, defines): def ReplaceVariable(matchobj): for key, value in defines.iteritems(): if matchobj.group(1) == key: - value = os.path.abspath(value)[len(src_root_dir) + 1:] + value = os.path.abspath(value) return value return '' @@ -427,6 +427,10 @@ class GritNode(base.Node): abs_filename = os.path.abspath(filename_or_stream) if abs_filename[:len(src_root_dir)] != src_root_dir: filename = os.path.basename(filename_or_stream) + # If the file is not within src_root_dir and the basename is not + # found as a key, fall back to using the absolute file name. + if not filename in first_ids: + filename = abs_filename else: filename = abs_filename[len(src_root_dir) + 1:] filename = filename.replace('\\', '/') -- 1.8.4.2