[Scons-dev] Likely bug - installing side effect files

Bill Deegan bill at baddogconsulting.com
Fri Oct 31 19:22:18 EDT 2014


SideEffect() by definition (to me at least) should be informing SCons that
a file is produced, but it is not important.  Allowing SCons to be aware of
it.

It seems like using that file as an input in any part of your build would
violate such an idea.
So I think I'm agreeing with Dirk on this one.
Regardless of however the code might be defined today. I think it's
important to be able to tell SCons about such a type of file.

-Bill

On Fri, Oct 31, 2014 at 12:20 PM, Dirk Bächle <tshortik at gmx.de> wrote:

> On 31.10.2014 20:04, Gary Oberbrunner wrote:
>
>> On Fri, Oct 31, 2014 at 2:55 PM, Dirk Bächle <tshortik at gmx.de> wrote:
>>
>>> I don't think there is anything to fix here...and it's no bug for me
>>> either.
>>> Please read the man page for the definition
>>> of a SideEffect, and when it should be used. My understanding is, that in
>>> your case the conditions do not apply...so you should rather define an
>>> Emitter (see http://www.scons.org/wiki/ToolsForFools for example) that
>>> adds
>>> "sf0" and "sf1" to the list of targets.
>>> Then the Install() should work as expected.
>>>
>> I disagree.  He's explicitly passing the files in sf to Install();
>> Install() should always (try to) install all the files given as its
>> sources.  Whether they're created as side effects or anything else
>> _shouldn't_ matter.
>>
>>  Hmm, do you mean "all files" or "all targets"? I really don't regard
> SideEffects to be full targets...but maybe I'm overlooking something. I'm
> just thinking about the case where I use a "foo" compiler. It always
> creates a file "named.fix", containing some internal info that's input for
> the build step itself.
> So, for scheduling single builds with this compiler correctly, in
> concurrency speak: locking it with a kind of monitor for parallel mode, I
> define the file "named.fix" as SideEffect in my "foo" Builder.
> If I then say something like:
>
>   env = Environment(tools=['foo'])
>   a = env.Foo('a.foo','a.in')
>   b = env.Foo('b.foo','b.in')
>
>   env.Install('/install', [a, b, 'named.fix'])
>
> which version of "named.fix" gets installed? Which version *should* get
> installed? And is the intended ordering guaranteed for any invocation of
> "-j n"?
> You're probably right, but the above is what's rolling through my head
> right now...all kinds of clarifications and comments are welcome. ;)
>
> Dirk
>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20141031/2a162306/attachment.html>


More information about the Scons-dev mailing list