[Scons-users] Emiter usage

pholat pholat at gmail.com
Wed Sep 21 02:41:39 EDT 2016


So you say python scripts are not parsed? Thats kind of new...

The example is working just fine... So maybe care running it first instead.

Pozdrawiam,
Adam A. Dobrowolski || pholat

2016-09-20 18:43 GMT+02:00 Bill Deegan <bill at baddogconsulting.com>:

> Adam,
>
> SCons files are not parsed, they are run by python.
> They are python scripts.
>
> You need to give the library a name in each directory...
> https://github.com/pholat/sconplay/blob/master/lib1/SConscript
>
> #!/bin/python
> Import("env")
> tmp = env.Library(Glob("*.cpp"))
> env.Install("#bin/lib1",tmp)
>
> Should be something like:
> #!/bin/python
> Import("env")
> tmp = env.Library('lib1',Glob("*.cpp"))
> env.Install("#bin/lib1",tmp)
>
> *Really you need to reread the scons users guide. You've clearly not
> understood it.*
> These are relevant:
>
> http://scons.org/doc/production/HTML/scons-user.html#chap-hierarchical
>
> http://scons.org/doc/production/HTML/scons-user.html#idp1396553892
>
> -Bill
>
>
> On Tue, Sep 20, 2016 at 2:02 AM, pholat <pholat at gmail.com> wrote:
>
>> Hi,
>>
>> I wasn't sure if when I run SConscript(...) in for loop dependencies will
>> be intact. As dependency check is not sequential and I do not know how
>> SCons files are parsed on 'scons' call.
>>
>> Here is working (just fine) example of my dilemma above:
>> https://github.com/pholat/sconplay/tree/master
>>
>> I'll add 3 different Environments so that it will match my previous
>> example.
>>
>> Great thanks, best regards,
>> Adam
>>
>> Pozdrawiam,
>> Adam A. Dobrowolski || pholat
>>
>> 2016-09-20 1:49 GMT+02:00 Bill Deegan <bill at baddogconsulting.com>:
>>
>>> Adam,
>>>
>>> On Mon, Sep 19, 2016 at 1:59 PM, Adam Dobrowolski <pholat at gmail.com>
>>> wrote:
>>>
>>>> On poniedziałek, 19 września 2016 13:09:34 CEST Bill Deegan wrote:
>>>> > Adam,
>>>> >
>>>> > On Mon, Sep 19, 2016 at 12:47 PM, Adam Dobrowolski <pholat at gmail.com>
>>>> wrote:
>>>> > > Hi,
>>>> > >
>>>> > > I want to build all four elements which have "Alias" at once, I've
>>>> added
>>>> > > Alias
>>>> > > to mark that these are end products.
>>>> > > Right now the main question is if SCons will recognize intermediate
>>>> files
>>>> > > needed if I loop over them, not write them by hand/copy in
>>>> SConsctruct.
>>>> > > I vaguely recall that SConstruct & SConscripts are being parsed
>>>> before any
>>>> > > functions are executed.
>>>> >
>>>> > Can you expand upon what would be in:
>>>> > X86_REL = SConscript("x86_release/SConcsript")
>>>> >
>>>> > What would you expect to be in X86_REL?
>>>> >
>>>> > I'm guessing that you don't realize that it's not necessary to pass
>>>> around
>>>> > the Node's returned from builders if you know the locations in the
>>>> > filesystem that their targets will be built in.
>>>> >
>>>> > So if a SConscript builds a bunch of binaries into : x86_release/bin,
>>>> you
>>>> > can create the alias either as:
>>>> >
>>>> > Alias('X86_REL','x86_release/bin')
>>>> >
>>>> > or if you like
>>>> >
>>>> > Alias('X86_REL',Glob('x86_release/bin/*'))
>>>> >
>>>> > Does that answer your question?
>>>>
>>>> As it was said in example:
>>>> (...)
>>>> These SConscripts use products of earlier SConscripts in for loop
>>>> For 10 SCOnscripts it would be 40 products in total
>>>> These are sourced with Glob("*")
>>>> (...)
>>>>
>>>> SConscript creates bunch of libraries which are Globed and compiled
>>>> into four
>>>> different binaries. I said products previously because I may have
>>>> different
>>>> builders that Program(..) and Library(..) in use.
>>>>
>>>
>>> You'll need to pastebin your builders for us to help you with that.
>>>
>>>>
>>>> So it doesn't answer my question.
>>>>
>>>
>>> If the alias should cause the respective binaries (and all their
>>> dependencies to be built), then specifying just the binaries to the alias
>>> is sufficient.
>>> In which case I did previously answer your question.
>>>
>>> -Bill
>>>
>>>
>>>>
>>>> >
>>>> > > So right now it's a question on SCons dependency handling.
>>>> > > ---
>>>> > > By the way:
>>>> > > The mail has "Emitter usage" in name because:
>>>> > > 1) I ate word "question" - sorry for that, I've just found it out.
>>>> > > 2) I read manual: http://scons.org/doc/1.2.0/HTM
>>>> L/scons-user/x3603.html
>>>> > > and I
>>>> > > thought that maybe I could do something similar. In the end I still
>>>> see no
>>>> > > use
>>>> > > in emitter in my case and can't grasp when I would need it. ( I
>>>> would be
>>>> > > grateful to any explanations though )
>>>> >
>>>> > Are you creating a builder? If not then you don't need it.
>>>> > Does the builder you're creating create output files (or input files,
>>>> or
>>>> > sideffects) which aren't listed as a target or source when the
>>>> builder is
>>>> > invoked?
>>>> > Then you do need an emitter.
>>>> > Otherwise you don't need one.
>>>> >
>>>> >
>>>> > Are you running SCons 1.2.0? The current version is 2.5.0.
>>>> >
>>>> > > Best regards,
>>>> > > Adam
>>>> > >
>>>> > > On poniedziałek, 19 września 2016 19:31:56 CEST Dirk Bächle wrote:
>>>> > > > Adam,
>>>> > > >
>>>> > > > On 19.09.2016 18:46, Adam Dobrowolski wrote:
>>>> > > > > Hi Dirk,
>>>> > > > >
>>>> > > > > Great thanks up to now, I meant something like that:
>>>> > > > >
>>>> > > > > #!/bin/python
>>>> > > > >
>>>> > > > > x86_env = Environment(<something for x86);
>>>> > > > > x86_deb = env.Clone();
>>>> > > > > x86_deb.Append(CXXFLAGS=['-g3','-O2'])
>>>> > > > > arm_env = Environment(<something for arm>);
>>>> > > > > arm_deb = env.Clone();
>>>> > > > > arm_deb.Append(CXXFLAGS=['-g3','-O2'])
>>>> > > > >
>>>> > > > > libs = [
>>>> > > > >
>>>> > > > >          "lib1/SConscript",
>>>> > > > >          "lib2/SConscript",
>>>> > > > >          "lib3/SConscript",
>>>> > > > >          (...)
>>>> > > > >          "libN/SConscript",
>>>> > > > >          ]
>>>> > > > >
>>>> > > > > for script in libs:
>>>> > > > >      SConscript(script, exports={'env' : x86_env},
>>>> > > > >      variant_dir='x86_release')
>>>> > > > >      SConscript(script, exports={'env' : x86_deb},
>>>> > > > >      variant_dir='x86_debug')
>>>> > > > >      SConscript(script, exports={'env' : arm_env},
>>>> > > > >      variant_dir='arm_release')
>>>> > > > >      SConscript(script, exports={'env' : arm_deb},
>>>> > > > >      variant_dir='arm_debug')
>>>> > > > >
>>>> > > > > # These SConscripts use products of earlier SConscripts in for
>>>> loop
>>>> > > > > # For 10 SCOnscripts it would be 40 products in total
>>>> > > > > # These are sourced with Glob("*")
>>>> > > > > X86_REL = SConscript("x86_release/SConcsript")
>>>> > > > > X86_DEB = SConscript("x86_debug/SConcsript")
>>>> > > > > ARM_REL = SConscript("arm_release/SConcsript")
>>>> > > > > ARM_DEB = SConscript("arm_debug/SConcsript")
>>>> > > > >
>>>> > > > > Alias('X86_REL',X86_REL)
>>>> > > > > Alias('X86_DEB',X86_DEB)
>>>> > > > > Alias('ARM_REL',ARM_REL)
>>>> > > > > Alias('ARM_DEB',ARM_DEB)
>>>> > > >
>>>> > > > what I get from this is that you want to be able to call "scons
>>>> > > > X86_REL",
>>>> > > > such that only the corresponding subtree is built. If this
>>>> > > > is correct, doesn't it contradict the specifications made in your
>>>> first
>>>> > >
>>>> > > mail:
>>>> > > >  > What I need to do is:
>>>> > > >  > Generate different output on different compilation variable.
>>>> > > >  >
>>>> > > >  > Exemplary problem: one app version is build with -DDEBUG
>>>> variable,
>>>> > > >  > and
>>>> > > >  > second one is without. Now I can build DEBUG app (or one
>>>> without) by
>>>> > > >  > changing the Environment by hand. But I would love to build
>>>> both in
>>>> > >
>>>> > > one
>>>> > >
>>>> > > >  > run.
>>>> > > >
>>>> > > > , especially for the last sentence?
>>>> > > >
>>>> > > > Regards,
>>>> > > >
>>>> > > > Dirk
>>>> > > >
>>>> > > >
>>>> > > > _______________________________________________
>>>> > > > Scons-users mailing list
>>>> > > > Scons-users at scons.org
>>>> > > > https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>> > >
>>>> > > _______________________________________________
>>>> > > Scons-users mailing list
>>>> > > Scons-users at scons.org
>>>> > > https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>>
>>>> _______________________________________________
>>>> Scons-users mailing list
>>>> Scons-users at scons.org
>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>>>
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20160921/a297343b/attachment.html>


More information about the Scons-users mailing list