aboutsummaryrefslogtreecommitdiff
path: root/dependencies.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-02-08 15:22:21 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2015-02-08 15:22:21 +0200
commitcd757db89964bd39f6aeaa3763b216f14dc03c9e (patch)
tree7c77e7d874c593a96c413bda0a09396b83eff6fe /dependencies.py
parent526c86d92fcd53edbb216983acee297c79172c99 (diff)
downloadmeson-cd757db89964bd39f6aeaa3763b216f14dc03c9e.zip
meson-cd757db89964bd39f6aeaa3763b216f14dc03c9e.tar.gz
meson-cd757db89964bd39f6aeaa3763b216f14dc03c9e.tar.bz2
Can specify version requirements to dependencies.
Diffstat (limited to 'dependencies.py')
-rw-r--r--dependencies.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/dependencies.py b/dependencies.py
index 2e48ac6..e3dfc74 100644
--- a/dependencies.py
+++ b/dependencies.py
@@ -72,7 +72,8 @@ class Dependency():
class PkgConfigDependency(Dependency):
pkgconfig_found = None
- def __init__(self, name, required):
+ def __init__(self, name, kwargs):
+ required = kwargs.get('required', True)
Dependency.__init__(self)
self.name = name
if PkgConfigDependency.pkgconfig_found is None:
@@ -92,9 +93,19 @@ class PkgConfigDependency(Dependency):
self.cargs = []
self.libs = []
else:
- mlog.log('Dependency', mlog.bold(name), 'found:', mlog.green('YES'))
- self.is_found = True
self.modversion = out.decode().strip()
+ mlog.log('Dependency', mlog.bold(name), 'found:', mlog.green('YES'), self.modversion)
+ version_requirement = kwargs.get('version', None)
+ if version_requirement is None:
+ self.is_found = True
+ else:
+ if not isinstance(version_requirement, str):
+ raise DependencyException('Version argument must be string.')
+ self.is_found = mesonlib.version_compare(self.modversion, version_requirement)
+ if not self.is_found and required:
+ raise DependencyException('Invalid version of a dependency, needed %s %s found %s.' % (name, version_requirement, self.modversion))
+ if not self.is_found:
+ return
p = subprocess.Popen(['pkg-config', '--cflags', name], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out = p.communicate()[0]
@@ -521,7 +532,7 @@ class Qt5Dependency(Dependency):
if isinstance(mods, str):
mods = [mods]
for module in mods:
- self.modules.append(PkgConfigDependency('Qt5' + module, False))
+ self.modules.append(PkgConfigDependency('Qt5' + module, kwargs))
if len(self.modules) == 0:
raise DependencyException('No Qt5 modules specified.')
if not qt5toolinfo_printed:
@@ -795,7 +806,7 @@ def find_external_dependency(name, kwargs):
pkg_exc = None
pkgdep = None
try:
- pkgdep = PkgConfigDependency(name, required)
+ pkgdep = PkgConfigDependency(name, kwargs)
if pkgdep.found():
return pkgdep
except Exception as e: