summaryrefslogtreecommitdiffstats
path: root/patches/chromium/tools/grit/0001-GRIT-Allow-grd-files-outside-of-chromium-source-dir.patch
blob: 9da214cc26814bad83865954ebad08e8d060b276 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zeno Albisser <zeno.albisser@digia.com>
Date: Wed, 24 Jul 2013 15:54:50 +0200
Subject: 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('\\', '/')