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

Bill Deegan bill at baddogconsulting.com
Sat Apr 30 16:38:51 EDT 2016


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20160430/69744d4f/attachment-0001.html>


More information about the Scons-users mailing list