aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/dependencies.py10
-rw-r--r--mesonbuild/interpreter.py4
2 files changed, 12 insertions, 2 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py
index 7462bd8..271c6b4 100644
--- a/mesonbuild/dependencies.py
+++ b/mesonbuild/dependencies.py
@@ -1148,7 +1148,15 @@ def get_dep_identifier(name, kwargs):
modlist = [modlist]
for module in modlist:
elements.append(module)
- return '/'.join(elements) + '/main' + str(kwargs.get('main', False)) + '/static' + str(kwargs.get('static', False))
+ # We use a tuple because we need a non-mutable structure to use as the key
+ # of a dictionary and a string has potential for name collisions
+ identifier = tuple(elements)
+ identifier += ('main', kwargs.get('main', False))
+ identifier += ('static', kwargs.get('static', False))
+ if 'fallback' in kwargs:
+ f = kwargs.get('fallback')
+ identifier += ('fallback', f[0], f[1])
+ return identifier
def find_external_dependency(name, environment, kwargs):
required = kwargs.get('required', True)
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 5a99e1c..1491767 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1626,7 +1626,9 @@ class Interpreter():
dep = dependencies.find_external_dependency(name, self.environment, kwargs)
except dependencies.DependencyException:
if 'fallback' in kwargs:
- return self.dependency_fallback(kwargs)
+ dep = self.dependency_fallback(kwargs)
+ self.coredata.deps[identifier] = dep.held_object
+ return dep
raise
self.coredata.deps[identifier] = dep
return DependencyHolder(dep)