Skip to content

Instantly share code, notes, and snippets.

@gicmo
Last active August 29, 2015 14:04
Show Gist options
  • Save gicmo/a78ada52753d1db91de6 to your computer and use it in GitHub Desktop.
Save gicmo/a78ada52753d1db91de6 to your computer and use it in GitHub Desktop.
Package config support for python
#!/usr/bin/env python
import commands
import sys
class PackageNotFoundError(StandardError):
pass
def pkg_config(*packages, **kw):
flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
ignore_error = 'ignore_error' in kw
if ignore_error:
del kw['ignore_error']
pkg_string = ' '.join(packages)
status, out = commands.getstatusoutput("pkg-config --libs --cflags " + pkg_string)
if status != 0:
err_str = 'Some packages were not found: %s [%s]' % (pkg_string, out)
if ignore_error:
sys.stderr.write('WARNING: ' + err_str)
out = ''
else:
raise PackageNotFoundError(err_str)
for token in out.split():
kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
# remove duplicated
for k, v in kw.iteritems():
del kw[k]
kw[k] = list(set(v))
return kw
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment