Cleanup .gclient_entries to avoid sync problems.

The .gclient_entries file is written after a successful
gclient sync operation and contains paths mapped to URLs for
all DEPS entries that have been synced.
This has been causing problems for users when switching from
the legacy Subversion based checkouts to the new DEPS approach
using a Chromium Git checkout combined with symlinks.

Also it has been discovered that when entries have been
removed from the Chromium DEPS file, subsequent gclient sync
operations fail when it's trying to process those directories.

This CL changes so that .gclient_entries is wiped for the WebRTC
checkout when moving from the legacy SVN to Git.
It also wipes the chromium/.gclient_entries file when a new Chromium
revision is about to be synced, to avoid problems when DEPS entries
have been removed.

BUG=415219
R=agable@chromium.org

Review URL: https://webrtc-codereview.appspot.com/28509004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7222 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/setup_links.py b/setup_links.py
index bb4b111..c403ca8 100755
--- a/setup_links.py
+++ b/setup_links.py
@@ -88,6 +88,7 @@
   'third_party/BUILD.gn': None,
 }
 
+ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
 CHROMIUM_CHECKOUT = os.path.join('chromium', 'src')
 LINKS_DB = 'links'
 
@@ -264,6 +265,14 @@
           source_dir, None, check_fn=os.path.isdir,
           check_msg='directories')
 
+    if not on_bot and self._force:
+      # When making the manual switch from legacy SVN checkouts to the new
+      # Git-based Chromium DEPS, the .gclient_entries file that contains cached
+      # URLs for all DEPS entries must be removed to avoid future sync problems.
+      entries_file = os.path.join(os.path.dirname(ROOT_DIR), '.gclient_entries')
+      if os.path.exists(entries_file):
+        actions.append(Remove(entries_file, dangerous=True))
+
     actions.sort()
 
     if self._dry_run:
diff --git a/sync_chromium.py b/sync_chromium.py
index d02346c..db6fb98 100755
--- a/sync_chromium.py
+++ b/sync_chromium.py
@@ -59,6 +59,12 @@
         return 0
     os.unlink(flag_file)
 
+  # To avoid gclient sync problems when DEPS entries have been removed we must
+  # wipe the .gclient_entries file that contains cached URLs for all DEPS.
+  entries_file = os.path.join(opts.chromium_dir, '.gclient_entries')
+  if os.path.exists(entries_file):
+    os.unlink(entries_file)
+
   env = os.environ.copy()
   env['GYP_CHROMIUM_NO_ACTION'] = '1'
   gclient_cmd = 'gclient.bat' if sys.platform.startswith('win') else 'gclient'