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