On Sat, Aug 8, 2015 at 11:38 AM, Bill Deegan <[email protected]> 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 <[email protected]> > wrote: > >> >> >> On Sat, Aug 8, 2015 at 9:14 AM, Alexandre Feblot <[email protected]> >> 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 <[email protected]> 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 < >>> [email protected]> 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 < >>>> [email protected]> *Data: * 08 Agosto 2015 07:22:12 *Oggetto: * >>>> [Scons-dev] >>>> Patch for potential new debug option *A: * SCons developer list < >>>> [email protected]> >>>> >>>> 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 >>> [email protected] >>> https://pairlist2.pair.net/mailman/listinfo/scons-dev >>> >>> >>> >>> _______________________________________________ >>> Scons-dev mailing list >>> [email protected] >>> https://pairlist2.pair.net/mailman/listinfo/scons-dev >>> >>> >> >> _______________________________________________ >> Scons-dev mailing list >> [email protected] >> https://pairlist2.pair.net/mailman/listinfo/scons-dev >> >> > > _______________________________________________ > Scons-dev mailing list > [email protected] > https://pairlist2.pair.net/mailman/listinfo/scons-dev > >
_______________________________________________ Scons-dev mailing list [email protected] https://pairlist2.pair.net/mailman/listinfo/scons-dev
