Modify update_deps.py script to create monorepo DEPS
Bug: b/229950055
diff --git a/tools/update_deps.py b/tools/update_deps.py
index 74ab398..dffdcce 100755
--- a/tools/update_deps.py
+++ b/tools/update_deps.py
@@ -15,8 +15,9 @@
import sys
DART_SCRIPT_DIR = os.path.dirname(sys.argv[0])
-DART_ROOT = os.path.realpath(os.path.join(DART_SCRIPT_DIR, '../../third_party/dart'))
-FLUTTER_ROOT = os.path.realpath(os.path.join(DART_SCRIPT_DIR, '../../flutter'))
+DART_ROOT = os.path.realpath(os.path.join(DART_SCRIPT_DIR, '../../src/third_party/dart'))
+FLUTTER_ROOT = os.path.realpath(os.path.join(DART_SCRIPT_DIR, '../../src/flutter'))
+MONOREPO_ROOT = os.path.realpath(os.path.join(DART_SCRIPT_DIR, '..'))
class VarImpl(object):
def __init__(self, local_scope):
@@ -61,12 +62,29 @@
type=str,
help='Flutter DEPS file.',
default=os.path.join(FLUTTER_ROOT, 'DEPS'))
+ parser.add_argument('--monorepo_deps', '-m',
+ type=str,
+ help='Monorepo DEPS file.',
+ default=os.path.join(MONOREPO_ROOT, 'DEPS'))
+ parser.add_argument('--create_monorepo',
+ action='store_true',
+ help='Create monorepo DEPS file')
+ parser.add_argument('--dart_commit',
+ type=str,
+ help='Set monorepo DEPS to check out this Dart commit.')
+ parser.add_argument('--engine_commit',
+ type=str,
+ help='Set monorepo DEPS to check out this engine commit.')
+ parser.add_argument('--flutter_commit',
+ type=str,
+ help='Set monorepo DEPS to check out this flutter commit.')
return parser.parse_args(args)
def Main(argv):
args = ParseArgs(argv)
(new_vars, new_deps) = ParseDepsFile(args.dart_deps)
(old_vars, old_deps) = ParseDepsFile(args.flutter_deps)
+ output_file = args.monorepo_deps if args.create_monorepo else args.flutter_deps
updated_vars = {}
@@ -79,26 +97,66 @@
updated_vars[k] = updated_revision
# Write updated DEPS file to a side
- updatedfilename = args.flutter_deps + ".new"
+ updatedfilename = output_file + ".new"
updatedfile = open(updatedfilename, "w")
file = open(args.flutter_deps)
lines = file.readlines()
i = 0
+
+ create_monorepo = args.create_monorepo
+ # Track status of all rewrites
+ vars_updated = False
+ sdk_download = False
+ dart_pin = False
+ pinned_monorepo_deps = False
+ updated_dependencies = False
+
while i < len(lines):
updatedfile.write(lines[i])
if lines[i].startswith(" 'dart_revision':"):
+ vars_updated = True
i = i + 2
updatedfile.writelines([
'\n',
' # WARNING: DO NOT EDIT MANUALLY\n',
- ' # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py\n'])
+ ' # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py\n',
+ ' # The dart_revision line above is unused, a different revision is pinned below.\n'])
while i < len(lines) and len(lines[i].strip()) > 0:
i = i + 1
for (k, v) in sorted(updated_vars.items()):
updatedfile.write(" '%s': '%s',\n" % (k, v))
updatedfile.write('\n')
+ elif (create_monorepo
+ and lines[i].startswith(' # Download a prebuilt Dart SDK by default')
+ and lines[i+1].startswith(" 'download_dart_sdk': True,")):
+ sdk_download = True
+ updatedfile.write(" 'download_dart_sdk': False,\n")
+ i = i + 1
+
+ elif (create_monorepo
+ and lines[i].startswith('deps = {')
+ and lines[i+1].startswith(
+ " 'src': 'https://github.com/flutter/buildroot.git' + '@' + ")):
+ pinned_monorepo_deps = True
+ i = i + 1
+ updatedfile.write(lines[i])
+ for dependency in [('src/flutter', 'flutter_git', '/mirrors/engine', args.engine_commit),
+ ('src/third_party/dart', 'dart_git', '/sdk', args.dart_commit),
+ ('flutter', 'flutter_git', '/mirrors/flutter', args.flutter_commit),
+ ]:
+ updatedfile.write("\n '%s': Var('%s') + '%s' + '@' + '%s',\n" % dependency)
+
+ elif ( create_monorepo
+ and i < len(lines) - 3
+ and lines[i] == '\n'
+ and lines[i+1] == " 'src/third_party/dart':\n"
+ and lines[i+2] == " Var('dart_git') + '/sdk.git' + '@' + Var('dart_revision'),\n"):
+ dart_pin = True
+ i = i + 3
+
elif lines[i].startswith(" # WARNING: Unused Dart dependencies"):
+ updated_dependencies = True
updatedfile.write('\n')
i = i + 1
while i < len(lines) and (lines[i].startswith(" # WARNING: end of dart dependencies") == 0):
@@ -133,9 +191,25 @@
i = i + 1
# Rename updated DEPS file into a new DEPS file
- os.remove(args.flutter_deps)
- os.rename(updatedfilename, args.flutter_deps)
+ os.remove(output_file)
+ os.rename(updatedfilename, output_file)
+ if create_monorepo and not (vars_updated and
+ sdk_download and
+ dart_pin and
+ pinned_monorepo_deps and
+ updated_dependencies ):
+ if not vars_updated:
+ print("Could not find 'dart_revision' line.")
+ if not sdk_download:
+ print("Could not set download_dart_sdk to False.")
+ if not dart_pin:
+ print("Could not remove 'src/third_party/dart' dependency line.")
+ if not pinned_monorepo_deps:
+ print("Could not add flutter, engine, and dart dependencies.")
+ if not updated_dependencies:
+ print("Could not update third_party dependencies.")
+ return 1
return 0
if __name__ == '__main__':