[Scons-dev] Patch for potential new debug option

William Blevins wblevins001 at gmail.com
Sat Aug 8 13:01:05 EDT 2015


On Sat, Aug 8, 2015 at 11:38 AM, Bill Deegan <bill at baddogconsulting.com>
wrote:

> Perhaps an option to direct this output to a file?
>

I assume that it can just be piped to a file, but maybe I don't understand
your question.


>
> On Sat, Aug 8, 2015 at 6:31 AM, William Blevins <wblevins001 at gmail.com>
> wrote:
>
>>
>>
>> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot <alexandre at feblot.fr>
>> wrote:
>>
>>> Hi,
>>> would have this been available, I indeed would already have used scons
>>> --envdump=CXXFLAGS,CFLAGS,ENV.PATH A.o
>>>
>>>
>> When I thought about the feature, I also thought the case 2 was more
>> useful, thank you for your feedback.  I can do both if we decided that
>> printing the whole environment object is ever useful, but lean code bases
>> make for maintainable code bases :)
>>
>>
>>> *--*
>>> Alexandre Feblot
>>>
>>> Le 8 août 2015 à 15:04, William Blevins <wblevins001 at gmail.com> a écrit
>>> :
>>>
>>> I guess I should be a bit more explicit about what I am trying to do.
>>>
>>> Example:
>>> A.cpp
>>> SConstruct -> "Program( 'exe', Glob( '*.cpp' ) )"
>>>
>>> My goal original goal was to be able to print environment objects from
>>> the command-line without having to modify code:
>>> 1. As written: [Example: "scons --debug=envdump A.o" would print the
>>> build environment object assigned to "A.o" ].
>>> 2. Afterthought on usability: [Example: "scons --envdump=LIBS A.o" would
>>> print the variable LIBS from the build environment assigned to "A.o"].
>>> 2.1 Since environment objects are rather large, maybe printing just a
>>> single value from the environment object would be more readable and/or
>>> desired on a regular basis.
>>>
>>> The supplied patch works for Case 1, but I am having a hard time getting
>>> only the targets on the command-line.  Currently, the patch prints the
>>> environment for all targets on the command-line, plus all their
>>> dependencies (as long as they have build environments) and I am hoping to
>>> not print their dependencies.
>>>
>>> [Example: "scons --debug=envdump A.o" would print the environment for
>>> target "A.o" but not "A.cpp" or "/usr/bin/g++" because they don't have a
>>> build environment.]
>>>
>>> [Example: "scons --debug=envdump exe" would print the environment for
>>> target "exe" plus "A.o" because it's in the target list (as a dependency of
>>> "exe")]
>>>
>>> If I can figure out a clean way to get only the targets on the
>>> command-line, then that makes the most sense.  The real question is do we
>>> want Case 1, Case 2,or both capabilities?
>>>
>>> V/R,
>>> William
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Aug 8, 2015 at 3:42 AM, Roberto De Vecchi <
>>> roberto.devecchi at vi-grade.com> wrote:
>>>
>>>> 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
>>>>>
>>>>
>>> _______________________________________________
>>> Scons-dev mailing list
>>> Scons-dev at scons.org
>>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> Scons-dev mailing list
>>> Scons-dev at scons.org
>>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>>
>>>
>>
>> _______________________________________________
>> Scons-dev mailing list
>> Scons-dev at scons.org
>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>
>>
>
> _______________________________________________
> 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/00bf6215/attachment.html>


More information about the Scons-dev mailing list