summaryrefslogtreecommitdiffstats
path: root/printing/cups_config_helper.py
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-12 22:16:19 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-12 22:16:19 +0000
commit31aa30be24edc4b269463762370b2ed2eeedeb25 (patch)
tree8e07bcbf41feff4e1cc4eca6e48034bbc7d3da65 /printing/cups_config_helper.py
parent718af82b9cda848d115dc731634ed9378640ace3 (diff)
downloadchromium_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-xprinting/cups_config_helper.py58
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)