Chromium Code Reviews| Index: build/toolchain/gcc_ar_wrapper.py |
| diff --git a/build/toolchain/gcc_ar_wrapper.py b/build/toolchain/gcc_ar_wrapper.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..ed5d29f03413ecb9e1ce56ed77df4f36ef1114c3 |
| --- /dev/null |
| +++ b/build/toolchain/gcc_ar_wrapper.py |
| @@ -0,0 +1,55 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2015 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. |
| + |
| +"""Runs the 'ar' command after removing its output file first. |
| + |
| +This script is invoked like: |
| + python gcc_ar_wrapper.py --ar=$AR --output=$OUT $OP $INPUTS |
| +to do the equivalent of: |
| + rm -f $OUT && $AR $OP $OUT $INPUTS |
| +""" |
| + |
| +import argparse |
| +import os |
| +import subprocess |
| +import sys |
| + |
| + |
| +def main(): |
| + parser = argparse.ArgumentParser(description=__doc__) |
| + parser.add_argument('--ar', |
| + required=True, |
| + help='The ar binary to run', |
| + metavar='PATH') |
| + parser.add_argument('--output', |
| + required=True, |
| + help='Output archive file', |
| + metavar='ARCHIVE') |
| + parser.add_argument('operation', |
| + help='Operation on the archive') |
| + parser.add_argument('--plugin', |
| + help='Load plugin') |
|
Dirk Pranke
2015/10/28 22:13:03
nit: I'd reorder --plugin before operation.
Roland McGrath
2015/10/28 22:25:16
Done. I originally wrote them in the order they a
|
| + parser.add_argument('inputs', nargs='+', |
| + help='Input files') |
| + args = parser.parse_args() |
| + |
| + command = [args.ar, args.operation] |
| + if args.plugin is not None: |
| + command += ['--plugin', args.plugin] |
| + command.append(args.output) |
| + command += args.inputs |
| + |
| + # Remove the output file first. |
| + try: |
| + os.remove(args.output) |
| + except OSError: |
| + pass |
|
Dirk Pranke
2015/10/28 22:13:03
I suspect you shouldn't be ignoring the error here
Roland McGrath
2015/10/28 22:25:15
Ignoring the error is the equivalent of 'rm -f', w
|
| + |
| + # Now just run the ar command. |
| + return subprocess.call(command) |
| + |
| + |
| +if __name__ == "__main__": |
| + sys.exit(main()) |