Perhaps an option to direct this output to a file? On Sat, Aug 8, 2015 at 6:31 AM, William Blevins <wblevins...@gmail.com> wrote:
> > > On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot <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 <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 < >> 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=<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 >> >> >> >> _______________________________________________ >> 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