diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 22:16:19 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 22:16:19 +0000 |
commit | 31aa30be24edc4b269463762370b2ed2eeedeb25 (patch) | |
tree | 8e07bcbf41feff4e1cc4eca6e48034bbc7d3da65 /printing/cups_config_helper.py | |
parent | 718af82b9cda848d115dc731634ed9378640ace3 (diff) | |
download | chromium_src-31aa30be24edc4b269463762370b2ed2eeedeb25.zip chromium_src-31aa30be24edc4b269463762370b2ed2eeedeb25.tar.gz chromium_src-31aa30be24edc4b269463762370b2ed2eeedeb25.tar.bz2 |
cups: parse cups-config output to reduce flags spew
On both Lucid and Natty, cups-config --libs includes cflags and other
unneeded output. Parse the cups-config output to emit only the relevant
subsets of flags.
Review URL: http://codereview.chromium.org/7633022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96635 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/cups_config_helper.py')
-rwxr-xr-x | printing/cups_config_helper.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/printing/cups_config_helper.py b/printing/cups_config_helper.py new file mode 100755 index 0000000..c3ebbdf --- /dev/null +++ b/printing/cups_config_helper.py @@ -0,0 +1,58 @@ +#!/usr/bin/python +# Copyright (c) 2011 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. + +"""cups-config wrapper. + +cups-config, at least on Ubuntu Lucid and Natty, dumps all +cflags/ldflags/libs when passed the --libs argument. gyp would like +to keep these separate: cflags are only needed when compiling files +that use cups directly, while libs are only needed on the final link +line. + +TODO(evan): remove me once + https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/163704 +is fixed. +""" + +import subprocess +import sys + +def usage(): + print 'usage: %s {--cflags|--ldflags|--libs}' % sys.argv[0] + sys.exit(1) + +def run_cups_config(mode): + """Run cups-config with all --cflags etc modes, parse out the mode we want, + and return those flags as a list.""" + + cups = subprocess.Popen(['cups-config', '--cflags', '--ldflags', '--libs'], + stdout=subprocess.PIPE) + flags = cups.communicate()[0].strip() + + flags_subset = [] + for flag in flags.split(' '): + flag_mode = None + if flag.startswith('-l'): + flag_mode = '--libs' + elif (flag.startswith('-L') or flag.startswith('-Wl,')): + flag_mode = '--ldflags' + elif (flag.startswith('-I') or flag.startswith('-D')): + flag_mode = '--cflags' + + # Be conservative: for flags where we don't know which mode they + # belong in, always include them. + if flag_mode is None or flag_mode == mode: + flags_subset.append(flag) + + return flags_subset + +if len(sys.argv) != 2: + usage() + +mode = sys.argv[1] +if mode not in ('--cflags', '--libs', '--ldflags'): + usage() +flags = run_cups_config(mode) +print ' '.join(flags) |