[Scons-dev] Patch for potential new debug option

William Blevins wblevins001 at gmail.com
Sat Aug 8 01:22:02 EDT 2015


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/502700a7/attachment.html>


More information about the Scons-dev mailing list