ruby-changes:43512
From: nobu <ko1@a...>
Date: Wed, 6 Jul 2016 14:37:18 +0900 (JST)
Subject: [ruby-changes:43512] nobu:r55585 (trunk): update-deps: for clang
nobu 2016-07-06 14:37:13 +0900 (Wed, 06 Jul 2016) New Revision: 55585 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=55585 Log: update-deps: for clang * tool/update-deps (read_single_cc_deps): clang may not include the current working directory name in .i files. Modified files: trunk/tool/update-deps Index: tool/update-deps =================================================================== --- tool/update-deps (revision 55584) +++ tool/update-deps (revision 55585) @@ -327,21 +327,23 @@ end https://github.com/ruby/ruby/blob/trunk/tool/update-deps#L327 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 <command-line>, 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 <command-line>, etc. dep = Pathname(dep) if dep.relative? dep = compiler_wd + dep @@ -367,7 +369,13 @@ def read_cc_deps(cwd) https://github.com/ruby/ruby/blob/trunk/tool/update-deps#L369 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/