Patchwork [bitbake-devel] bitbake: Force -S option to take a parameter

login
register
mail settings
Submitter Richard Purdie
Date March 26, 2014, 1:46 p.m.
Message ID <1395841614.24890.92.camel@ted>
Download mbox | patch
Permalink /patch/69269/
State New
Headers show

Comments

Richard Purdie - March 26, 2014, 1:46 p.m.
There is no easy way to make this change. We really need parameters for the -S
(dump signatures) handling code. Such a parameter can then be used within the
codebase to handle the signatures in different ways.

For now, "none" is the recommended default and "printdiff" will execute the
new (and more expensive) comparison algorithms.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---

Patch

diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index 5c0b2d4..b173f16 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -139,8 +139,8 @@  class BitBakeConfigParameters(cookerdata.ConfigParameters):
         parser.add_option("-n", "--dry-run", help = "Don't execute, just go through the motions.",
                    action = "store_true", dest = "dry_run", default = False)
 
-        parser.add_option("-S", "--dump-signatures", help = "Don't execute, just dump out the signature construction information.",
-                   action = "store_true", dest = "dump_signatures", default = False)
+        parser.add_option("-S", "--dump-signatures", help = "Dump out the signature construction information, with no task execution. Parameters are passed to the signature handling code, use 'none' if no specific handler is required.",
+                   action = "append", dest = "dump_signatures", default = [])
 
         parser.add_option("-p", "--parse-only", help = "Quit after parsing the BB recipes.",
                    action = "store_true", dest = "parse_only", default = False)
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py
index 6200b0e..b9b9e16 100644
--- a/bitbake/lib/bb/cookerdata.py
+++ b/bitbake/lib/bb/cookerdata.py
@@ -124,7 +124,7 @@  class CookerConfiguration(object):
         self.profile = False
         self.nosetscene = False
         self.invalidate_stamp = False
-        self.dump_signatures = False
+        self.dump_signatures = []
         self.dry_run = False
         self.tracking = False
         self.interface = []
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 90fe40b..423b03c 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1036,10 +1036,13 @@  class RunQueue:
                     bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.cooker.data)
 
         if self.state is runQueueSceneInit:
-            if self.cooker.configuration.dump_signatures:
-                invalidtasks = self.print_diffscenetasks()
+            dump = self.cooker.configuration.dump_signatures
+            if dump:
+                if 'printdiff' in dump:
+                    invalidtasks = self.print_diffscenetasks()
                 self.dump_signatures()
-                self.write_diffscenetasks(invalidtasks)
+                if 'printdiff' in dump:
+                    self.write_diffscenetasks(invalidtasks)
                 self.state = runQueueComplete
             else:
                 self.start_worker()