Maybe fix options with dependencies.
authorCarl Hetherington <cth@carlh.net>
Mon, 3 Jul 2017 09:31:59 +0000 (10:31 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 3 Jul 2017 09:31:59 +0000 (10:31 +0100)
cdist

diff --git a/cdist b/cdist
index 0e325147349f7ad1233859052f9c65ab9d0dd2db..c52fd8f33328625c364607e848dad9410325c87f 100755 (executable)
--- a/cdist
+++ b/cdist
@@ -701,25 +701,37 @@ class Tree(object):
         with TreeDirectory(self):
             return self.cscript[function](self.target, *args)
 
-    def build_dependencies(self, dry_run):
-        if 'dependencies' in self.cscript:
-            for d in self.call('dependencies'):
-                log('Building dependency %s %s of %s' % (d[0], d[1], self.name))
-                dep = globals.trees.get(d[0], d[1], self.target)
-
-                options = dict()
-                # Make the options to pass in from the option_defaults of the thing
-                # we are building and any options specified by the parent.
-                if 'option_defaults' in dep.cscript:
-                    for k, v in dep.cscript['option_defaults']().items():
-                        options[k] = v
-
-                if len(d) > 2:
-                    for k, v in d[2].items():
-                        options[k] = v
-
-                dep.build_dependencies(dry_run, options)
-                dep.build(dry_run, options)
+    def build_dependencies(self, dry_run, options=None):
+
+        if not 'dependencies' in self.cscript:
+            return
+
+        if len(inspect.getargspec(self.cscript['dependencies']).args) == 2:
+            deps = self.call('dependencies', options)
+        else:
+            deps = self.call('dependencies')
+
+        for d in deps:
+            dep = globals.trees.get(d[0], d[1], self.target)
+
+            options = dict()
+            # Make the options to pass in from the option_defaults of the thing
+            # we are building and any options specified by the parent.
+            if 'option_defaults' in dep.cscript:
+                for k, v in dep.cscript['option_defaults']().items():
+                    options[k] = v
+
+            if len(d) > 2:
+                for k, v in d[2].items():
+                    options[k] = v
+
+            msg = 'Building dependency %s %s of %s' % (d[0], d[1], self.name)
+            if len(options) > 0:
+                msg += ' with options %s' % options
+            log(msg)
+
+            dep.build_dependencies(dry_run, options)
+            dep.build(dry_run, options)
 
     def build(self, dry_run, options=None):
         if self.built: