summaryrefslogtreecommitdiffstats
path: root/adv.py
Side-by-side diff
Diffstat (limited to 'adv.py') (more/less context) (ignore whitespace changes)
-rwxr-xr-xadv.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/adv.py b/adv.py
index 6c165ae..a51bf67 100755
--- a/adv.py
+++ b/adv.py
@@ -200,14 +200,16 @@ class Archive(Cluster, Node):
class Solver:
def __init__(self, archives):
self.archives = archives
-
- def solve_symbol(self, from_object, symbol):
+ self.symtab = {}
+ # construct the symbol -> object dict
for archive in self.archives:
for object in archive.objects:
- if object == from_object:
- continue
- if object.has_symbol(symbol.name):
- from_object.add_dependency(object)
+ for symbol in object.symbols:
+ self.symtab[symbol.name] = object
+
+ def solve_symbol(self, from_object, symbol):
+ if self.symtab.has_key(symbol.name):
+ from_object.add_dependency(self.symtab[symbol.name])
def solve_object(self, object):
verbose(2, "Solving %s dependencies" % object.name)