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 <CAPTzt1Cse=Aemrxugqzb_mkxejm2H023aFWZxaa8KzKrCsWhrg@mail.gmail.com>
site_init.py worked fine and modification are effective for all
environments later created. Thanks Bill.

  1 import os
  2 from SCons import Defaults
  3
  4 def _usw_relpath(sources, base, env):
  5     #print("#"*30)
  6     #print(str(sources))
  7     p = str(sources)
  8     if p.startswith('/'):
  9         return p
 10     else:
 11         return os.path.relpath(p, base)
 12
 13 Defaults.ConstructionEnvironment['_usw_relpath'] = _usw_relpath
On Thu, Oct 25, 2018 at 10:19 AM Hua Yanghao <[email protected]> wrote:
>
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.