diff --git a/ChangeLog b/ChangeLog index 4e5aac7ab8..7b3cf73199 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Nov 19 10:07:57 2014 Nobuyoshi Nakada + + * template/prelude.c.tmpl (Prelude#translate): strip VPATH prefix + from prelude names, so that srcdir diffrences do not make the + generated code diffrent. + Wed Nov 19 07:45:11 2014 NAKAMURA Usaku * win32/win32.c (rb_w32_write): should set the error of diff --git a/template/prelude.c.tmpl b/template/prelude.c.tmpl index e1859fd436..c2f41da0c3 100644 --- a/template/prelude.c.tmpl +++ b/template/prelude.c.tmpl @@ -41,7 +41,7 @@ class Prelude idx = @preludes[filename] return idx if idx lines = [] - result = [@preludes.size, filename, lines, sub] + result = [@preludes.size, @vpath.strip(filename), lines, sub] @vpath.foreach(filename) do |line| @preludes[filename] ||= result line.sub!(/(?:^|\s+)\#(?:$|\s.*)/, '') diff --git a/tool/vpath.rb b/tool/vpath.rb index 0c8d6071ea..48ab148405 100644 --- a/tool/vpath.rb +++ b/tool/vpath.rb @@ -79,4 +79,9 @@ class VPath end @list end + + def strip(path) + prefix = list.map {|dir| Regexp.quote(dir)} + path.sub(/\A#{prefix.join('|')}(?:\/|\z)/, '') + end end