 +                   extra_bindings=extra_bindings,
 +                   use_prebuild_stamp=False)
 +
-+    if spec['type'] == 'executable':
-+      self.WriteEdge([self.ComputeOutputFileName(spec)], 'phony', [output],
-+                     use_prebuild_stamp=False)
++    # Write a short name to build this target.  This benefits both the
++    # "build chrome" case as well as the gyp tests, which expect to be
++    # able to run actions and build libraries by their short name.
++    self.WriteEdge([self.name], 'phony', [output], use_prebuild_stamp=False)
 +
 +    output_link_deps = set()
 +    if spec['type'] not in ('executable', 'loadable_module'):
 +      if 'library' in spec['type']:
 +        output_link_deps.add(output)
-+      for dep in deps:
-+        output_link_deps.update(self.target_links.get(dep, set()))
++      #for dep in deps:
++      #  output_link_deps.update(self.target_links.get(dep, set()))
 +
 +    return (output, output_link_deps)
 +

+      inputs = [self.InputPath(i) for i in action['inputs']]
+      if int(action.get('process_outputs_as_sources', False)):
+        extra_sources += action['outputs']
+      outputs = [self.OutputPath(o) for o in action['outputs']]
+
+      # Then write out an edge using the rule.
+      self.WriteEdge(outputs, name, inputs)
+      all_outputs += outputs
+
+      # And a phony edge to run the action by name.
+      self.WriteEdge([name], 'phony', outputs, use_prebuild_stamp=False)
+
+      self.WriteLn()
+

+    outputs = []
+    for copy in copies:
+      for path in copy['files']:
+        # Normalize the path so trailing slashes don't confuse us.
+        path = os.path.normpath(path)
+        filename = os.path.split(path)[1]
+        src = self.InputPath(path)
+        # See discussion of InputPath in WriteActions for why we use it here.
+        dst = self.InputPath(os.path.join(copy['destination'], filename))
+        self.WriteEdge([dst], 'copy', [src])
+        outputs.append(dst)
+
