[Scons-users] Make all Program and SharedLibrary targets implicitly Precious?

Andrew C. Morrow andrew.c.morrow at gmail.com
Thu May 12 12:18:47 EDT 2016


Hi Bill -

I like this suggestion of adding a PreAction to each executable and shared
library, but I don't want to have to explicitly call .AddPreAction on each
target.

Can you suggest an easy way to achieve the same effect globally for all
SharedLibrary and Program targets, without writing a PseudoBuilder? I'm
fine though with reaching into the existing builders and altering them.

Thanks,
Andrew

On Sat, Apr 30, 2016 at 4:38 PM, Bill Deegan <bill at baddogconsulting.com>
wrote:

> Andrew,
>
> How about a pre-action to mv the existing file to another name, and then
> copy it to original name, then incremental link the copy?
> That should resolve the crashing bit.
>
> lsof filename won't help if the files being used on another system, but
> would if on current system. (to see if in use)
>
> -Bill
>
> On Sat, Apr 30, 2016 at 3:47 PM, Andrew C. Morrow <
> andrew.c.morrow at gmail.com> wrote:
>
>>
>> Definitely a possibility. MongoDB probes for compiler support for ld.gold
>> and prefers it by default:
>>
>> https://github.com/mongodb/mongo/blob/master/SConstruct#L2164-L2167
>>
>> The downside to using incremental linking and making dynamic targets
>> Precious is that by overwriting the binaries you end up crashing running
>> programs that have them mapped. That happens often enough during developer
>> workflow that it is unfortunate.
>>
>> So, it definitely should be opt-in behavior, and a Tool sounds right for
>> that.
>>
>> I also wonder whether such a Tool might be able to make intelligent use
>> of gold's --incremental-base file to avoid the above problem. If you first
>> copied the dynamic target aside under a different name, then unlinked the
>> original, then used --incremental-base pointing to the moved-aside file,
>> perhaps you could avoid crashing programs that have the target mapped. I'm
>> not sure though if the cost of the file copy would eat up most of the gains
>> from incremental linking.
>>
>> That sounds complex enough to also warrant a separate Tool.
>>
>>
>> On Fri, Apr 29, 2016 at 1:52 PM, Bill Deegan <bill at baddogconsulting.com>
>> wrote:
>>
>>> Andrew,
>>>
>>> Might make sense to make a gold linker tool?
>>>
>>> -Bill
>>>
>>> On Fri, Apr 29, 2016 at 9:47 AM, Andrew C. Morrow <
>>> andrew.c.morrow at gmail.com> wrote:
>>>
>>>>
>>>> Thanks Bill -
>>>>
>>>> I think that sounds promising, I'll give it a look. If I get it working
>>>> well I'll ping the list back and describe my findings.
>>>>
>>>> Thanks,
>>>> Andrew
>>>>
>>>> On Fri, Apr 29, 2016 at 12:10 PM, Bill Deegan <
>>>> bill at baddogconsulting.com> wrote:
>>>>
>>>>> Andrew,
>>>>>
>>>>> Likely you want to stick this logic in the emitter for building
>>>>> libraries and programs.
>>>>> SCons/Tool/link.py  shlib_emitter() is the current logic.
>>>>> The environment tracks this in:
>>>>> env['SHLIBEMITTER'] which is a list.
>>>>> So if you append to SHLIBEMITTER and mark the relevant nodes Precious()
>>>>> env['PROGEMITTER'] is the emitter for programs. Looks like it's only
>>>>> defined for mslink and qt, so you can defined one on non qt/mslink freely
>>>>> and do the same.
>>>>>
>>>>> Hope that helps
>>>>> -Bill
>>>>>
>>>>>
>>>>> On Fri, Apr 29, 2016 at 8:52 AM, William Blevins <
>>>>> wblevins001 at gmail.com> wrote:
>>>>>
>>>>>> Andrew,
>>>>>>
>>>>>> I expect that you could make a Pseudo-Builder that wraps Program and
>>>>>> Library calls, and replace the top-level calls with your wrappers.
>>>>>>
>>>>>> I think you can replace them like env['BUILDERS']['xxxxxx'] = Wrapper
>>>>>> or env.AddMethod but I haven't tested this explicitly.
>>>>>>
>>>>>> https://bitbucket.org/scons/scons/wiki/ToolsForFools
>>>>>>
>>>>>> V/R,
>>>>>> William
>>>>>>
>>>>>> On Fri, Apr 29, 2016 at 4:21 PM, Andrew C. Morrow <
>>>>>> andrew.c.morrow at gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>> Hi -
>>>>>>>
>>>>>>> Is there a simple way to do this? I'd like to use ld.gold's
>>>>>>> incremental linking, but I don't want to need to add .Precious to every
>>>>>>> executable and library in my project.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Andrew
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> 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
>>
>>
>
> _______________________________________________
> 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/20160512/d645ea4e/attachment-0001.html>


More information about the Scons-users mailing list