[Scons-dev] Patch for potential new debug option

Roberto De Vecchi roberto.devecchi at vi-grade.com
Sat Aug 8 03:42:58 EDT 2015


William,

from my experience using varname as a filter to limit the output will not help much in big trees where my cloned env are assigned to vars with the same name.

I would find very useful having the env dump limited to the target node specified on the command line: is this already supported by your proposal?

Roberto

--- Messaggio Originale ---
Da:     William Blevins <wblevins001 at gmail.com>
Data:   08 Agosto 2015 07:22:12
Oggetto:        [Scons-dev] Patch for potential new debug option
A:      SCons developer list <scons-dev at scons.org>

Here is a patch for dumping build environments via the command-line.

I couldn't ever figure out a good way to get only explicitly lister targets (non-default commandline targets).  It will essentially print the node.get_env().Dump() for all targets with a build_env defined.

I could potentially change it from "--debug=envdump" to something like "--envdump=<VARIABLE>" so that it could print a particular variable rather than the whole env.

Does this interest anyone or waste of chars?

diff -r 682b8a7a51fb src/engine/SCons/Script/Main.py
--- a/src/engine/SCons/Script/Main.py    Mon Jun 29 15:37:44 2015 -0400
+++ b/src/engine/SCons/Script/Main.py    Thu Aug 06 23:44:50 2015 -0400
@@ -391,6 +391,21 @@
     def prepare(self):
         pass

+class EnvDumpTask(SCons.Taskmaster.AlwaysTask):
+    """SCons task for --debug=envdump.  Prints env dump for BUILD_TARGETS."""
+    def prepare(self):
+        pass
+
+    def execute(self):
+        for target in self.targets:
+            if target.get_build_env():
+                print 'Environment dump for target: ' + str(target)
+                print target.get_env().Dump()
+
+    def executed(self):
+        pass
+
+
 class QuestionTask(SCons.Taskmaster.AlwaysTask):
     """An SCons task for the -q (question) option."""
     def prepare(self):
@@ -657,6 +672,7 @@
     if "memory" in debug_values:
         memory_stats.enable(sys.stdout)
     print_objects = ("objects" in debug_values)
+    options.debug_envdump = ( "envdump" in debug_values )
     if print_objects:
         SCons.Debug.track_instances = True
     if "presub" in debug_values:
@@ -1210,8 +1226,13 @@
         failure_message = "done building targets (errors occurred during build)."
     else:
         failure_message = "building terminated because of errors."
+
+    if options.debug_envdump:
+        task_class = EnvDumpTask
+
     if options.question:
         task_class = QuestionTask
+
     try:
         if options.clean:
             task_class = CleanTask
diff -r 682b8a7a51fb src/engine/SCons/Script/SConsOptions.py
--- a/src/engine/SCons/Script/SConsOptions.py    Mon Jun 29 15:37:44 2015 -0400
+++ b/src/engine/SCons/Script/SConsOptions.py    Thu Aug 06 23:44:50 2015 -0400
@@ -673,7 +673,7 @@
         "tree"          : '; please use --tree=all instead',
     }

-    debug_options = ["count", "duplicate", "explain", "findlibs",
+    debug_options = ["count", "duplicate", "explain", "envdump", "findlibs",
                      "includes", "memoizer", "memory", "objects",
                      "pdb", "prepare", "presub", "stacktrace",
                      "time"]



V/R,
William
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20150808/b9586146/attachment.html>


More information about the Scons-dev mailing list