[Scons-dev] Patch for potential new debug option

Jason Kenny dragon512 at live.com
Sat Aug 8 13:42:11 EDT 2015


My only concern with this feature is that it can dump a lot of data. Given Parts for example I would have lots of environment that would be dumped. such information is generally only useful when you can map a given environment to the correct file ( or part file in my case) or build actions (such as this is the environment for link foo.so or this was the environment for making hello.o).

Jason

From: William Blevins 
Sent: Saturday, August 8, 2015 12:22 AM
To: SCons developer list 
Subject: [Scons-dev] Patch for potential new debug option

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 



--------------------------------------------------------------------------------
_______________________________________________
Scons-dev mailing list
Scons-dev at scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20150808/774503fb/attachment-0001.html>


More information about the Scons-dev mailing list