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 <wblevins...@gmail.com> Data: 08 Agosto 2015 07:22:12 Oggetto: [Scons-dev] Patch for potential new debug option A: SCons developer list <scons-dev@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
_______________________________________________ Scons-dev mailing list Scons-dev@scons.org https://pairlist2.pair.net/mailman/listinfo/scons-dev