blob: b1864a0e5d68386e109d2aa97f399ed128ea3a66 [file] [log] [blame]
# Copyright (C) PyZMQ Developers
# Distributed under the terms of the Modified BSD License.
# This bundling code is largely adapted from pyzmq-static's by
# Brandon Craig-Rhodes, which is itself BSD licensed.
# These functions were largely adapted from pyzmq's code
# PyZMQ Developers, which is itself Modified BSD licensed.
import errno
import os
import subprocess
import sys
from . import log
def _call_pkg_config(args):
"""Spawn a subprocess running pkg-config with the given args.
:param args: list of strings to pass to pkg-config's command line.
Refer to pkg-config's documentation for more detail.
Return the Popen object, or None if the command failed
return subprocess.Popen(['pkg-config'] + args,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
except OSError as e:
if e.errno == errno.ENOENT:
log.warn("command not found: pkg-config")
log.warn("Running pkg-config failed - %s." % e)
return None
def pkg_config_version(atleast=None, max_version=None, module='libqpid-proton'):
"""Check the qpid_proton version using pkg-config
This function returns True/False depending on whether
the library is found and atleast/max_version are met.
:param atleast: The minimum required version
:param max_version: The maximum supported version. This
basically represents the target version.
if atleast and max_version:
log.fatal('Specify either atleast or max_version')
p = _call_pkg_config(['--%s-version=%s' % (atleast and 'atleast' or 'max',
atleast or max_version),
if p:
out,err = p.communicate()
if p.returncode:"Did not find %s via pkg-config: %s" % (module, err))
return False"Using %s (found via pkg-config)." % module)
return True
return False
def pkg_config_get_var(name, module='libqpid-proton'):
"""Retrieve the value of the named module variable as a string
p = _call_pkg_config(['--variable=%s' % name, module])
if not p:
log.warn("pkg-config: var %s get failed, package %s", name, module)
return ""
out,err = p.communicate()
if p.returncode:
out = ""
return out