webrtc/check_root_dir.py
kjellander@webrtc.org 0b0ac8236b Remove root_dir variable from DEPS + enforce rename.
Update DEPS to no longer have the root_dir variable.
Add a script that detects if the user have a solution named
'trunk' and explains what needs to be done to change it to 'src'.

The reason for this change is that bot_update doesn't support
custom_vars in solutions and Chrome infra is trying to get
rid of them entirely in the future.

The bots are already using a solution named 'src' so they
won't run into this error during runhooks.

BUG=3534
TESTED=Ran the script with a .gclient containing a solution
named 'trunk' and one named 'src'. Also tested the presence
of the custom_vars dict and not.

R=andrew@webrtc.org, hinoka@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7405 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-09 09:11:27 +00:00

58 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
"""Checks for legacy root directory and instructs the user how to upgrade."""
import os
import sys
SOLUTION_ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
os.pardir)
MESSAGE = """\
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
A C T I O N R E Q I R E D
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
It looks like you have a legacy checkout where the solution's top-level
directory is named 'trunk'. From now on, it must be named 'src'.
What you need to do is to:
1. Edit your .gclient file and change the solution name from 'trunk' to 'src'
2. Rename your 'trunk' directory to 'src'
3. Re-run gclient sync (or gclient runhooks)"""
def main():
gclient_filename = os.path.join(SOLUTION_ROOT_DIR, '.gclient')
config_dict = {}
try:
with open(gclient_filename, 'rb') as gclient_file:
exec(gclient_file, config_dict)
for solution in config_dict.get('solutions', []):
if solution['name'] == 'trunk':
print MESSAGE
if solution.get('custom_vars', {}).get('root_dir'):
print ('4. Optional: Remove your "root_dir" entry from the '
'custom_vars dictionary of the solution.')
# Remove the gclient cache file to avoid an error on the next sync.
entries_file = os.path.join(SOLUTION_ROOT_DIR, '.gclient_entries')
if os.path.exists(entries_file):
os.unlink(entries_file)
return 1
return 0
except Exception as e:
print >> sys.stderr, "Error while parsing .gclient: ", e
return 1
if __name__ == '__main__':
sys.exit(main())