Index: build/android/gyp/ant.py |
diff --git a/build/android/gyp/ant.py b/build/android/gyp/ant.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..5394b9ec7d5ae6792ea54b611ab4c438b3ba48e6 |
--- /dev/null |
+++ b/build/android/gyp/ant.py |
@@ -0,0 +1,65 @@ |
+#!/usr/bin/env python |
+# |
+# Copyright 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""An Ant wrapper that suppresses useless Ant output. |
+ |
+Ant build scripts output "BUILD SUCCESSFUL" and build timing at the end of |
+every build. In the Android build, this just adds a lot of useless noise to the |
+build output. This script forwards its arguments to ant, and prints Ant's |
+output up until the BUILD SUCCESSFUL line. |
+ |
+Also, when a command fails, this script will re-run that ant command with the |
+'-verbose' argument so that the failure is easier to debug. |
+""" |
+ |
+import optparse |
+import sys |
+import traceback |
+ |
+from util import build_utils |
+ |
+ |
+def main(argv): |
+ option_parser = optparse.OptionParser() |
+ build_utils.AddDepfileOption(option_parser) |
+ options, args = option_parser.parse_args(argv[1:]) |
+ |
+ try: |
+ stdout = build_utils.CheckOutput(['ant'] + args) |
+ except build_utils.CalledProcessError: |
+ # It is very difficult to diagnose ant failures without the '-verbose' |
+ # argument. So, when an ant command fails, re-run it with '-verbose' so that |
+ # the cause of the failure is easier to identify. |
+ verbose_args = ['-verbose'] + [a for a in args if a != '-quiet'] |
+ try: |
+ stdout = build_utils.CheckOutput(['ant'] + verbose_args) |
+ except build_utils.CalledProcessError: |
+ traceback.print_exc() |
+ sys.exit(1) |
+ |
+ # If this did sys.exit(1), building again would succeed (which would be |
+ # awkward). Instead, just print a big warning. |
+ build_utils.PrintBigWarning( |
+ 'This is unexpected. `ant ' + ' '.join(args) + '` failed.' + |
+ 'But, running `ant ' + ' '.join(verbose_args) + '` passed.') |
+ |
+ stdout = stdout.strip().split('\n') |
+ for line in stdout: |
+ if line.strip() == 'BUILD SUCCESSFUL': |
+ break |
+ print line |
+ |
+ if options.depfile: |
+ assert '-buildfile' in args |
+ ant_buildfile = args[args.index('-buildfile') + 1] |
+ |
+ build_utils.WriteDepfile( |
+ options.depfile, |
+ [ant_buildfile] + build_utils.GetPythonDependencies()) |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main(sys.argv)) |