From fc480888a82000d144be97030334c2a8bb157acb Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 6 Jul 2016 05:37:13 +0000 Subject: update-deps: for clang * tool/update-deps (read_single_cc_deps): clang may not include the current working directory name in .i files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/update-deps | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'tool/update-deps') diff --git a/tool/update-deps b/tool/update-deps index e0067c8ac2..efd556aebe 100755 --- a/tool/update-deps +++ b/tool/update-deps @@ -327,21 +327,23 @@ end def read_single_cc_deps(path_i, cwd) files = {} - path_i.each_line.with_index {|line, lineindex| + compiler_wd = nil + path_i.each_line {|line| next if /\A\# \d+ "(.*)"/ !~ line - files[$1] = lineindex + dep = $1 + next if %r{\A<.*>\z} =~ dep # omit , etc. + compiler_wd ||= dep + files[dep] = true } # gcc emits {# 1 "/absolute/directory/of/the/source/file//"} at 2nd line. - compiler_wd = files.keys.find {|f| %r{\A/.*//\z} =~ f } - if compiler_wd + if %r{\A/.*//\z} =~ compiler_wd files.delete compiler_wd compiler_wd = Pathname(compiler_wd.sub(%r{//\z}, '')) - else + elsif !(compiler_wd = yield) raise "compiler working directory not found: #{path_i}" end deps = [] files.each_key {|dep| - next if %r{\A<.*>\z} =~ dep # omit , etc. dep = Pathname(dep) if dep.relative? dep = compiler_wd + dep @@ -367,7 +369,13 @@ def read_cc_deps(cwd) end path_o = cwd + fn_o path_i = cwd + fn_i - deps[path_o] = read_single_cc_deps(path_i, cwd) + deps[path_o] = read_single_cc_deps(path_i, cwd) do + if fn_o.to_s.start_with?("enc/") + cwd + else + path_i.parent + end + end } deps end -- cgit v1.2.3