[Scons-users] Problems with env.Install()
    Michel Lestrade 
    michel.lestrade at crosslight.com
       
    Fri Jan 25 12:21:32 EST 2013
    
    
  
Hi,
The idea of storing my list of DLLs into the environment variable is to 
make it easier to propagate it to various SConscript in sub-folders; I 
named that key 'DLLS' to match the existing 'LIBS' key which contains 
the link libraries. I guess I could pass the list as a separate variable 
but since I can print the contents properly, that should not really 
matter; it seems to be imported properly.
In each of those sub-folders I mainly build libraries for a top-level 
project but there are test programs which need those earlier DLLs to run 
properly. I don't actually need those test programs for my final project 
but it helps to be able to run them in the early stages to make sure I 
did not mess anything up when porting the original Makefiles. Once the 
final project is built it would also be convenient to have all those 
files copied to a single install/redistributable folder, hence the idea 
of having a single list of those binary files.
The project dependency basically looks like this (omitting the MPI code 
which is linked pretty much everywhere):
linear solver exe -> MUMPS DLL -> PT-Scotch DLL -> Pthread for Windows DLL
So the PT-Scotch test programs need the ptscotch and pthread DLLs while 
the MUMPS test programs need that DLL on top of those two from before. 
Each of those projects is in its own folder and has one ore more 
SConscript files.
Now, as to the reason why I initialize with a NodeList() it's because 
that if I create the 'DLLS' key in my environment straight with 
env.Append(DLLS=pthread[0]), it will store it as a File() node and 
subsequent Append() commands will fail since File() does not support 
insert (at least, that's the error message I seem to remember). It's the 
same thing that happens when the first thing you store in a key is a 
string: sometimes SCons will concatenate that string on the next 
Append() rather than adding another list item. I have also tried simply 
initializing with a regular empty Python list ([]) but I get the same 
behavior.
Is this enough information ? I can attach a couple of my SCons files but 
I have pretty much tailored everything to the Intel compiler so it is 
not very portable yet. Not quite sure about sending attachments to a 
mailing list either.
Michel Lestrade
On 24/01/2013 11:57 PM, William Deegan wrote:
> Michel,
> On Jan 24, 2013, at 3:59 PM, Michel Lestrade <michel.lestrade at crosslight.com> wrote:
>
>> Hi,
>>
>> I think the documentation is pretty clear that you can install multiple targets at the same time but I have some trouble making that work.
>>
>> What I am doing is building up a list of DLLs used by my test programs in environment variable and then installing those in my build folders:
>>
>>> env['DLLS'] = SCons.Node.NodeList()
> Why do this?
>
>>> .....
>>> env.Append(DLLS=pthread[0])
>>> etc .... (more DLLS added in SConscript)
>> The list appears to be populated correctly but env.Install() only copies the last item:
>>
>>> for x in env['DLLS']: print 'Debug:', x.abspath
>>> env.Install('scotch_dll',env['DLLS'])
>> which produces the following output:
>>
>>> Debug: D:\Source\MUMPS_scons\build\pthread64\pthread64.dll
>>> Debug: D:\Source\MUMPS_scons\build\scotch64\scotch_wexit64.dll
>>> scons: done reading SConscript files.
>>> scons: Building targets ...
>>> Install file: "build\scotch64\scotch_wexit64.dll" as "build\scotch64\scotch_dll\
>>> scotch_wexit64.dll"
>>> scons: done building targets.
>> Before doing this, I deleted all the DLLs in that folder so it is not simply that this single build target was missing. After scons finishes, only 1 DLL is in my scotch_dll directory instead of the expected 2. It's maddening that something so simple does not work. Even doing it the brute force way (for x in env['DLLS']: env.Install('scotch_dll',x)) produces the same behavior.
>>
>> As a complete newbie, am I missing something obvious ?
> You need to post more of your logic to be able to help you.
> -Bill
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> http://four.pairlist.net/mailman/listinfo/scons-users
>
    
    
More information about the Scons-users
mailing list