diff options
author | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-25 21:26:55 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-25 21:26:55 +0000 |
commit | 2f80c3109c9fc7724740f405b3ef739d4a68ac81 (patch) | |
tree | ff089a486e0f5fcd197d3f555400f31fc7ebb8e0 /webkit/build/action_maketokenizer.py | |
parent | a2318cda8a1092f127ed6b88b12fad8208608ad1 (diff) | |
download | chromium_src-2f80c3109c9fc7724740f405b3ef739d4a68ac81.zip chromium_src-2f80c3109c9fc7724740f405b3ef739d4a68ac81.tar.gz chromium_src-2f80c3109c9fc7724740f405b3ef739d4a68ac81.tar.bz2 |
Import .gyp files into the Chromium tree
Review URL: http://codereview.chromium.org/27158
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10380 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/build/action_maketokenizer.py')
-rwxr-xr-x | webkit/build/action_maketokenizer.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/webkit/build/action_maketokenizer.py b/webkit/build/action_maketokenizer.py new file mode 100755 index 0000000..1823495 --- /dev/null +++ b/webkit/build/action_maketokenizer.py @@ -0,0 +1,72 @@ +#!/usr/bin/python + +# Copyright (c) 2009 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. + +# usage: action_maketokenizer.py OUTPUTS -- INPUTS +# +# Multiple INPUTS may be listed. The sections are separated by -- arguments. +# +# OUTPUTS must contain a single item: a path to tokenizer.cpp. +# +# INPUTS must contain exactly two items. The first item must be the path to +# maketokenizer. The second item must be the path to tokenizer.flex. + + +import os +import subprocess +import sys + + +def SplitArgsIntoSections(args): + sections = [] + while len(args) > 0: + if not '--' in args: + # If there is no '--' left, everything remaining is an entire section. + dashes = len(args) + else: + dashes = args.index('--') + + sections.append(args[:dashes]) + + # Next time through the loop, look at everything after this '--'. + if dashes + 1 == len(args): + # If the '--' is at the end of the list, we won't come back through the + # loop again. Add an empty section now corresponding to the nothingness + # following the final '--'. + args = [] + sections.append(args) + else: + args = args[dashes + 1:] + + return sections + + +def main(args): + sections = SplitArgsIntoSections(args[1:]) + assert len(sections) == 2 + (outputs, inputs) = sections + + assert len(outputs) == 1 + output = outputs[0] + + assert len(inputs) == 2 + maketokenizer = inputs[0] + flex_input = inputs[1] + + # Build up the command. + command = 'flex -t %s | perl %s > %s' % (flex_input, maketokenizer, output) + + # Do it. check_call is new in 2.5, so simulate its behavior with call and + # assert. + # TODO(mark): Don't use shell=True, build up the pipeline directly. + p = subprocess.Popen(command, shell=True) + return_code = p.wait() + assert return_code == 0 + + return return_code + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) |