[Scons-dev] Patch for potential new debug option
Bill Deegan
bill at baddogconsulting.com
Sat Aug 8 11:38:51 EDT 2015
Perhaps an option to direct this output to a file?
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20150808/11d39347/attachment.html>
More information about the Scons-dev
mailing list