Re: [Scons-dev] Patch for potential new debug option

2015-08-22 Thread anatoly techtonik
It would be interesting to see this committed to some branch, that can be
easily fetched to see what the output looks like. Or maybe it is possible
to bring up some blog post with such examples? It looks useful, but I am
not quite sure about usage cases and about the role of BuildTask for this
functionality.
___
Scons-dev mailing list
Scons-dev@scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread William Blevins
On Sat, Aug 8, 2015 at 5:48 PM, Bill Deegan 
wrote:

> If I run "scons --debug=dumpenv", won't it still do a build?
> So I could get a lot of extra output if I just redirect stdout.
>
> Does the output go to stdout or stderr?
>

The way the patch is written no.  It replaces the BuildTask, but since the
build task is unique it sorta depends on the order in which they are
specified... so there should probably be a check in that code to make sure
only one build task has been selected.


>
> -Bill
>
> On Sat, Aug 8, 2015 at 11:28 AM, William Blevins 
> wrote:
>
>>
>> On Aug 8, 2015 1:47 PM, "Jason Kenny"  wrote:
>> >
>> > 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).
>>
>> I am mapping a target to its build env and outputting the env data.  Just
>> like your example :)
>> >
>> > 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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>> >> +++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44
>> 2015 -0400
>> >> +++ b/src/engine/SCons/Script/SConsOptions.py  

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Bill Deegan
If I run "scons --debug=dumpenv", won't it still do a build?
So I could get a lot of extra output if I just redirect stdout.

Does the output go to stdout or stderr?

-Bill

On Sat, Aug 8, 2015 at 11:28 AM, William Blevins 
wrote:

>
> On Aug 8, 2015 1:47 PM, "Jason Kenny"  wrote:
> >
> > 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).
>
> I am mapping a target to its build env and outputting the env data.  Just
> like your example :)
> >
> > 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=" 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.pyMon Jun 29 15:37:44 2015 -0400
> >> +++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44
> 2015 -0400
> >> +++ b/src/engine/SCons/Script/SConsOptions.pyThu 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
> >
> >
> > ___
> > Scons-dev mailing list
> > Scons-dev@scons.org
> > https://pairlist2.pair.net/mailman/listinfo/scons-dev
> >
>
>
> ___
> Scons-dev mailing list
> Scons-dev@scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
>
___
Scons-dev mailing list
Scons-dev@scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread William Blevins
On Aug 8, 2015 1:47 PM, "Jason Kenny"  wrote:
>
> 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).

I am mapping a target to its build env and outputting the env data.  Just
like your example :)
>
> 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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>> +++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44
2015 -0400
>> +++ b/src/engine/SCons/Script/SConsOptions.pyThu 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
>
>
> ___
> Scons-dev mailing list
> Scons-dev@scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
___
Scons-dev mailing list
Scons-dev@scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Jason Kenny
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=" 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.pyMon Jun 29 15:37:44 2015 -0400
  +++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44 2015 
-0400
  +++ b/src/engine/SCons/Script/SConsOptions.pyThu 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
___
Scons-dev mailing list
Scons-dev@scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Roberto De Vecchi
William

Now I got your idea! Printing a subset of the env is a nice to have option but 
I find more value in the env dump capability than in the reduced output ( I 
have several cystom builders that dumps the env they are called from with an 
option: having a standard capability for this would be very welcome)

Making the story short I would like to see the new debug option included, but I 
 don't strictly need the variable filtering.

About the node logic for  selecting the nodes for which printing the 
environment, looks like we aee on the same page

Cheers
Roberto

--- Messaggio Originale ---
Da: William Blevins 
Data:   08 Agosto 2015 15:31:37
Oggetto:Re: [Scons-dev] Patch for potential new debug option
A:  SCons developer list 



On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot 
mailto:alexan...@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 
mailto:wblevins...@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 
mailto:roberto.devec...@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 mailto:wblevins...@gmail.com>>
Data:   08 Agosto 2015 07:22:12
Oggetto:[Scons-dev] Patch for potential new debug option
A:  SCons developer list mailto: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=" 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.pyMon Jun 29 15:37:44 2015 -0400
+++ b/src/engine/SCons/Script/Main.pyThu 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

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Alexandre Feblot
Yes, that’s what I meant. I wouldn't feel the need for a specific option when I 
can just do
scons --envdump=xx > file.txt

--
Alexandre Feblot

> Le 8 août 2015 à 19:01, William Blevins  a écrit :
> 
> 
> 
> On Sat, Aug 8, 2015 at 11:38 AM, Bill Deegan  <mailto:b...@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  <mailto:wblevins...@gmail.com>> wrote:
> 
> 
> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot  <mailto:alexan...@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 > <mailto:wblevins...@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 
>> mailto:roberto.devec...@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 mailto:wblevins...@gmail.com>>
>> Data:08 Agosto 2015 07:22:12
>> Oggetto: [Scons-dev] Patch for potential new debug option
>> A:   SCons developer list mailto: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=" 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.pyMon

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread William Blevins
On Sat, Aug 8, 2015 at 11:38 AM, Bill Deegan 
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 
> wrote:
>
>>
>>
>> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot 
>> 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  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.devec...@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 <
>>>> 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=" 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/SCo

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Alexandre Feblot
Would a standard shell redirection not be enough?
--
Alexandre Feblot

> Le 8 août 2015 à 17:38, Bill Deegan  a écrit :
> 
> Perhaps an option to direct this output to a file?
> 
> On Sat, Aug 8, 2015 at 6:31 AM, William Blevins  <mailto:wblevins...@gmail.com>> wrote:
> 
> 
> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot  <mailto:alexan...@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 > <mailto:wblevins...@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 
>> mailto:roberto.devec...@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 mailto:wblevins...@gmail.com>>
>> Data:08 Agosto 2015 07:22:12
>> Oggetto: [Scons-dev] Patch for potential new debug option
>> A:   SCons developer list mailto: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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>>> +++ b/src/engine/SCons/Script/Main.pyThu Aug 06 23:44:50 2015 -0400
>>> @@ -391,6 +391,21 @@
>>>  def prepare(self):
>>>  pass
>>>  
>>> +class EnvDumpTask(SCons.Taskmaster.AlwaysTask):
>>> +"""SCo

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Bill Deegan
Perhaps an option to direct this output to a file?

On Sat, Aug 8, 2015 at 6:31 AM, William Blevins 
wrote:

>
>
> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot 
> 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  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.devec...@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 <
>>> 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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>>>>> +++ b/src/engine/SCons/Script/Main.pyThu 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.""

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread William Blevins
On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot 
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  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.devec...@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 > > *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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>>>> +++ b/src/engine/SCons/Script/Main.pyThu 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(SCo

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Alexandre Feblot
Hi,
would have this been available, I indeed would already have used scons 
--envdump=CXXFLAGS,CFLAGS,ENV.PATH A.o

--
Alexandre Feblot

> Le 8 août 2015 à 15:04, William Blevins  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 
> mailto:roberto.devec...@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 mailto:wblevins...@gmail.com>>
> Data: 08 Agosto 2015 07:22:12
> Oggetto:  [Scons-dev] Patch for potential new debug option
> A:SCons developer list mailto: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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>> +++ b/src/engine/SCons/Script/Main.pyThu 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

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread William Blevins
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.devec...@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 
> *Data: * 08 Agosto 2015 07:22:12 *Oggetto: * [Scons-dev] Patch for
> potential new debug option *A: * SCons developer list  >
>
> 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=" 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.pyMon Jun 29 15:37:44 2015 -0400
>>> +++ b/src/engine/SCons/Script/Main.pyThu 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 = EnvD

Re: [Scons-dev] Patch for potential new debug option

2015-08-08 Thread Roberto De Vecchi
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 
Data:   08 Agosto 2015 07:22:12
Oggetto:[Scons-dev] Patch for potential new debug option
A:  SCons developer list 

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=" 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.pyMon Jun 29 15:37:44 2015 -0400
+++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44 2015 -0400
+++ b/src/engine/SCons/Script/SConsOptions.pyThu 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


[Scons-dev] Patch for potential new debug option

2015-08-07 Thread William Blevins
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=" 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.pyMon Jun 29 15:37:44 2015 -0400
> +++ b/src/engine/SCons/Script/Main.pyThu 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.pyMon Jun 29 15:37:44 2015
> -0400
> +++ b/src/engine/SCons/Script/SConsOptions.pyThu 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