diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-09-04 12:21:28 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-09-04 12:21:28 +0200 |
commit | c71fbb58e52e93e5aa1b18257a7a236d22f9a594 (patch) | |
tree | bd66eebff834ee1548e2984a15fc0216e896c653 | |
parent | ddca9bbe3a6fa3ac0d045f13bb425fe2bd401be4 (diff) | |
download | python-systemd-c71fbb58e52e93e5aa1b18257a7a236d22f9a594.tar.gz |
build-sys: output full pkg-config output on failure
-rw-r--r-- | setup.py | 38 |
1 files changed, 28 insertions, 10 deletions
@@ -1,19 +1,37 @@ +import sys, os from distutils.core import setup, Extension -import subprocess +from subprocess import Popen, PIPE + +def call(*cmd): + cmd = Popen(cmd, + stdout=PIPE, stderr=PIPE, + universal_newlines=True) + if cmd.wait() == 0: + return cmd.returncode, cmd.stdout.read() + else: + return cmd.returncode, cmd.stderr.read() def pkgconfig(package, **kw): flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'} - output = subprocess.check_output(['pkg-config', '--libs', '--cflags', package], - universal_newlines=True) - for token in output.split(): + status, result = call('pkg-config', '--libs', '--cflags', package) + if status != 0: + return status, result + for token in result.split(): kw.setdefault(flag_map.get(token[:2]), []).append(token[2:]) - return kw + return status, kw -def lib(name, fallback): - try: - return pkgconfig(name) - except subprocess.CalledProcessError: - return pkgconfig(fallback) +def lib(*names): + if '--version' in sys.argv: + return {} + results = [] + for name in names: + status, result = pkgconfig(name) + if status == 0: + return result + results.append(result) + sys.stderr.write('Cannot find ' + ' or '.join(names) + ':\n\n' + + '\n'.join(results) + '\n') + sys.exit(status) version = '230' defines = [('PACKAGE_VERSION', '"{}"'.format(version))] |