[cipd] Support cipd dependencies hooked under same directory

When hooks multiple cipd packages under same directory, gclient would
pop up error that same directory name appears multiple times in deps
section. This CL overrides verify_validity for CipdDependency to
support multiple packages hooked in same directory.

Bug:812386
Change-Id: Ia4f1fe0e3c8481c9b06c1d22b6e98d98e1e4c309
Reviewed-on: https://chromium-review.googlesource.com/920686
Commit-Queue: Shenghua Zhang <shenghuazhang@chromium.org>
Reviewed-by: Aaron Gable <agable@chromium.org>
diff --git a/gclient.py b/gclient.py
index f83043b..e492b8c 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1878,7 +1878,7 @@
     url = urlparse.urljoin(
         cipd_root.service_url, '%s@%s' % (package, version))
     super(CipdDependency, self).__init__(
-        parent, name, url, url, None, None, custom_vars,
+        parent, name + ':' + package, url, url, None, None, custom_vars,
         None, None, should_process, relative, condition, condition_value)
     if relative:
       # TODO(jbudorick): Implement relative if necessary.
@@ -1887,7 +1887,7 @@
     self._cipd_root = cipd_root
 
     self._cipd_subdir = os.path.relpath(
-        os.path.join(self.root.root_dir, self.name), cipd_root.root_dir)
+        os.path.join(self.root.root_dir, name), cipd_root.root_dir)
     self._cipd_package = self._cipd_root.add_package(
         self._cipd_subdir, package, version)
 
@@ -1896,6 +1896,12 @@
     self.add_dependencies_and_close([], [])
 
   #override
+  def verify_validity(self):
+    """CIPD dependencies allow duplicate name for packages in same directory."""
+    logging.info('Dependency(%s).verify_validity()' % self.name)
+    return True
+
+  #override
   def GetScmName(self, url):
     """Always 'cipd'."""
     del url