Re: using variant_dir but strip out the variant_dir from source files
Hua Yanghao <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAPTzt1C5bq4siSoJkfuOB6FiUKm7P0mc2zBs92aL5iyLB_7H2A@mail.gmail.com> |
Hi Bill, I know it is a bad bad idea that's why I am asking for a better way :) I almost forgot we have site_scons/site_init.py to play with. I create quite a few different env but I guess if site_init.py is loaded fast enough I should be able to override it there ... Will let you know the result. BR, Yanghao On Thu, Oct 25, 2018 at 1:45 AM Bill Deegan <[email protected]> wrote: > > Did you try to monkey path it in site_scons/site_init.py ? > > Do you create new Environment()'s all over the place? > Or do you create a few and then clone them places? > You can set env['_concat'] > > Hacking default.py is a bad idea in general, and a very bad idea unless your using the scons-local scons package included with your sources (in which case it's still a bad idea) > > On Wed, Oct 24, 2018 at 1:03 PM Hua Yanghao <[email protected]> wrote: >> >> correction: my test shows it is the *former*. >> On Wed, Oct 24, 2018 at 10:02 PM Hua Yanghao <[email protected]> wrote: >> > >> > Bill, I tried but enlighten me please. >> > >> > The problem is when scons took the defaults.py settings ... is that >> > before the first line of code in SConstruct is being called or after >> > ... my test shows it is the latter so whatever I change in >> > SConstruct/SConscript does not make the function exported to the >> > environment where the command string is expanded ... >> > On Wed, Oct 24, 2018 at 8:22 PM Bill Deegan <[email protected]> wrote: >> > > >> > > you should not have to change defaults.py (ever.. it's python you can reach into anything and change anything in your SConstruct/sconscript/etc) >> > > >> > > So you want the string to be a/b/c.c and not build/a/b/c.c >> > > >> > > >> > > On Thu, Oct 18, 2018 at 9:07 AM Hua Yanghao <[email protected]> wrote: >> > >> >> > >> Hi Bill, I am chdir only to the top level folder "build", and want to >> > >> build CC a/b/c.c instead of CC build/a/b/c.c >> > >> >> > >> I got this working but wonder if there is a way that I do not need to >> > >> change the Defaults.py file. >> > >> On Thu, Oct 18, 2018 at 6:04 PM Bill Deegan <[email protected]> wrote: >> > >> > >> > >> > So you have a file: >> > >> > a/b/c.c >> > >> > variant dir to >> > >> > build/a/b/c.c >> > >> > >> > >> > you're chdir'ing into >> > >> > build/a/b ? >> > >> > >> > >> > And you want the command line to be >> > >> > compiler c.c >> > >> > >> > >> > ? >> > >> > >> > >> > On Thu, Oct 18, 2018 at 6:30 AM Hua Yanghao <[email protected]> wrote: >> > >> >> >> > >> >> Update: it looks like the _concat()-like stuff can only be put in the >> > >> >> SCons/Defaults.py otherwise not all environment will get it. >> > >> >> Not sure if there is a way that I do not need to modify the >> > >> >> Defaults.py but still able to add one function to the default >> > >> >> environment construction. >> > >> >> >> > >> >> Thanks, >> > >> >> Yanghao >> > >> >> On Thu, Oct 18, 2018 at 12:07 AM Hua Yanghao <[email protected]> wrote: >> > >> >> > >> > >> >> > Looked into the Action.py a little bit, doesn't seem to really have a >> > >> >> > controllable print for chdir messages. >> > >> >> > I tested below patch which works for me: >> > >> >> > >> > >> >> > diff --git i/tools/scons-3.0.1/scons-local-3.0.1/SCons/Action.py >> > >> >> > w/tools/scons-3.0.1/scons-local-3.0.1/SCons/Action.py >> > >> >> > index ce5471d..ee2a5c1 100644 >> > >> >> > --- i/tools/scons-3.0.1/scons-local-3.0.1/SCons/Action.py >> > >> >> > +++ w/tools/scons-3.0.1/scons-local-3.0.1/SCons/Action.py >> > >> >> > @@ -647,7 +647,8 @@ class _ActionAction(ActionBase): >> > >> >> > show=_null, >> > >> >> > execute=_null, >> > >> >> > chdir=_null, >> > >> >> > - executor=None): >> > >> >> > + executor=None, >> > >> >> > + chdir_verbose=False): >> > >> >> > if not is_List(target): >> > >> >> > target = [target] >> > >> >> > if not is_List(source): >> > >> >> > @@ -691,7 +692,8 @@ class _ActionAction(ActionBase): >> > >> >> > cmd = self.strfunction(target, source, env) >> > >> >> > if cmd: >> > >> >> > if chdir: >> > >> >> > - cmd = ('os.chdir(%s)\n' % repr(chdir)) + cmd >> > >> >> > + if chdir_verbose: >> > >> >> > + cmd = ('os.chdir(%s)\n' % repr(chdir)) + cmd >> > >> >> > try: >> > >> >> > get = env.get >> > >> >> > except AttributeError: >> > >> >> > @@ -718,7 +720,7 @@ class _ActionAction(ActionBase): >> > >> >> > finally: >> > >> >> > if save_cwd: >> > >> >> > os.chdir(save_cwd) >> > >> >> > - if cmd and save_cwd: >> > >> >> > + if cmd and save_cwd and chdir_verbose: >> > >> >> > print_func('os.chdir(%s)' % repr(save_cwd), target, source, env) >> > >> >> > >> > >> >> > return stat >> > >> >> > On Wed, Oct 17, 2018 at 11:54 PM Hua Yanghao <[email protected]> wrote: >> > >> >> > > >> > >> >> > > I finally implemented something like _concat() so I can use it >> > >> >> > > directly in the COMSTR definition to strip out the additional path. >> > >> >> > > However now scons trying to be very verbose and every single >> > >> >> > > os.chdir() is being printed (chdir="..." used for all builders). Is >> > >> >> > > there a way to disable this os.chdir() print message without modifying >> > >> >> > > the scons source code? Thanks. >> > >> >> > > On Wed, Oct 17, 2018 at 9:55 PM Hua Yanghao <[email protected]> wrote: >> > >> >> > > > >> > >> >> > > > Dear Scons User, >> > >> >> > > > I am having maybe an odd request. The background is there are some >> > >> >> > > > compilers out there produces all kinds of output in your current >> > >> >> > > > directory which you do not have control. I wanted to combine the >> > >> >> > > > variant_dir feature plus the chdir kw arguments to builders, to be >> > >> >> > > > able to invoke those compilers directly inside the variant_dir. And I >> > >> >> > > > still want to keep the source duplication in the variant_dir as it >> > >> >> > > > will be a snapshot of only the used files for a particular built out >> > >> >> > > > of thousands of irrelevant files. As a side effect now the source >> > >> >> > > > files are all prefixed with the variant_dir which becomes "invalid" >> > >> >> > > > because the compiler is already invoked in the variant_dir instead of >> > >> >> > > > the top level directory. >> > >> >> > > > >> > >> >> > > > Is there a way (e.g. a special env variable) already that when I write >> > >> >> > > > my builders instead of "$COMPILER $SOURCE", I can use something like >> > >> >> > > > "$COMPILER $ORIGINAL_SOURCE"? Or do I have to wrap around the >> > >> >> > > > $COMPILER with another command such that I can do things like >> > >> >> > > > "$COMPILER_WRAPPED $VARIANT_DIR $SOURCE"? I know the second one >> > >> >> > > > definitely can work but wondering if there are better ways already in >> > >> >> > > > scons. >> > >> >> > > > >> > >> >> > > > Best Regards, >> > >> >> > > > Yanghao >> > >> >> _______________________________________________ >> > >> >> Scons-users mailing list >> > >> >> [email protected] >> > >> >> https://pairlist4.pair.net/mailman/listinfo/scons-users >> > >> > >> > >> > _______________________________________________ >> > >> > Scons-users mailing list >> > >> > [email protected] >> > >> > https://pairlist4.pair.net/mailman/listinfo/scons-users >> > >> _______________________________________________ >> > >> Scons-users mailing list >> > >> [email protected] >> > >> https://pairlist4.pair.net/mailman/listinfo/scons-users >> > > >> > > _______________________________________________ >> > > Scons-users mailing list >> > > [email protected] >> > > https://pairlist4.pair.net/mailman/listinfo/scons-users >> _______________________________________________ >> Scons-users mailing list >> [email protected] >> https://pairlist4.pair.net/mailman/listinfo/scons-users > > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users