aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/dependencies.py')
-rw-r--r--mesonbuild/dependencies.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py
index 4e87e4e..a092732 100644
--- a/mesonbuild/dependencies.py
+++ b/mesonbuild/dependencies.py
@@ -23,7 +23,7 @@ import re
import os, stat, glob, subprocess, shutil
import sysconfig
from collections import OrderedDict
-from . mesonlib import MesonException
+from . mesonlib import MesonException, version_compare, version_compare_many
from . import mlog
from . import mesonlib
from .environment import detect_cpu_family, for_windows
@@ -135,22 +135,27 @@ class PkgConfigDependency(Dependency):
self.modversion = 'none'
return
found_msg = ['%s dependency' % self.type_string, mlog.bold(name), 'found:']
- self.version_requirement = kwargs.get('version', None)
- if self.version_requirement is None:
+ self.version_reqs = kwargs.get('version', None)
+ if self.version_reqs is None:
self.is_found = True
else:
- if not isinstance(self.version_requirement, str):
- raise DependencyException('Version argument must be string.')
- self.is_found = mesonlib.version_compare(self.modversion, self.version_requirement)
+ if not isinstance(self.version_reqs, (str, list)):
+ raise DependencyException('Version argument must be string or list.')
+ (self.is_found, not_found, found) = \
+ version_compare_many(self.modversion, self.version_reqs)
if not self.is_found:
- found_msg += [mlog.red('NO'), 'found {!r}'.format(self.modversion),
- 'but need {!r}'.format(self.version_requirement)]
+ found_msg += [mlog.red('NO'),
+ 'found {!r} but need:'.format(self.modversion),
+ ', '.join(["'{}'".format(e) for e in not_found])]
+ if found:
+ found_msg += ['; matched:',
+ ', '.join(["'{}'".format(e) for e in found])]
if not self.silent:
mlog.log(*found_msg)
if self.required:
raise DependencyException(
'Invalid version of a dependency, needed %s %s found %s.' %
- (name, self.version_requirement, self.modversion))
+ (name, not_found, self.modversion))
return
found_msg += [mlog.green('YES'), self.modversion]
if not self.silent:
@@ -301,7 +306,7 @@ class WxDependency(Dependency):
self.modversion = out.decode().strip()
version_req = kwargs.get('version', None)
if version_req is not None:
- if not mesonlib.version_compare(self.modversion, version_req):
+ if not version_compare(self.modversion, version_req, strict=True):
mlog.log('Wxwidgets version %s does not fullfill requirement %s' %\
(self.modversion, version_req))
return