[Scons-users] SWIG

William Roberts bill.c.roberts at gmail.com
Wed Mar 11 01:37:54 EDT 2015


I used the filtered glob from here to correct the pickup of the generated
wrap.c file:
http://stackoverflow.com/questions/12518715/how-do-i-filter-an-scons-glob-result

However, it appears that the builder doesn't handle detecting changes
properly, and
always builds the wrapper file...

Executing script: /home/bill/workspace/miniat/out/peripherals/simple_term
scons: done reading SConscript files.
scons: Building targets ...
SWIG out/vm/src/miniat_wrap.c
scons: done building targets.


On Tue, Mar 10, 2015 at 10:30 PM, William Roberts <bill.c.roberts at gmail.com>
wrote:

> looks like the Glob(src/*.c) is picking up the miniat_wrap.c file that was
> generated by swig in the working directory.
>
> On Tue, Mar 10, 2015 at 10:09 PM, William Blevins <wblevins001 at gmail.com>
> wrote:
>
>> Nevermind there was a link included.  I am used to gettings attachments.
>>
>> Sorry,
>> William
>>
>> On Wed, Mar 11, 2015 at 1:04 AM, William Blevins <wblevins001 at gmail.com>
>> wrote:
>>
>>> You haven't supplied enough context.  This is most likely specific to
>>> your SConscript calls.  Can you please include your script?
>>>
>>> V/R,
>>> William
>>>
>>> On Wed, Mar 11, 2015 at 12:57 AM, William Roberts <
>>> bill.c.roberts at gmail.com> wrote:
>>>
>>>> FYI my work is here:
>>>> https://bitbucket.org/miniat/0x1-miniat/branch/swig-python
>>>>
>>>>
>>>> On Tue, Mar 10, 2015 at 8:56 PM, Bill Deegan <bill at baddogconsulting.com
>>>> > wrote:
>>>>
>>>>> William,
>>>>>
>>>>> If you want more control, you might break out.
>>>>>
>>>>> xyz=
>>>>> env.SharedObject('targetdir/file','sourcefile.i',SWIGFLAGS=['-python',
>>>>> '-outdir', 'out/lib'])
>>>>> And then use all or part of xyz
>>>>>
>>>>> Also note that all builders should be treated as if they return a list
>>>>> of Node objects.
>>>>> So your:
>>>>> return [l, x]
>>>>>
>>>>> Should likely be:
>>>>> return l+x
>>>>>
>>>>
>>>> doesn't scons internally flatten nested lists? Although, concatenating
>>>> is probably the better way, as you suggest.
>>>>
>>>> I seem to get some weird issues when I run scons without any
>>>> modfications to any files, it reruns swig and I see the following issues:
>>>>
>>>> scons: warning: Two different environments were specified for target
>>>> src/miniat_wrap.os,
>>>> but they appear to have the same action: $SHCC -o $TARGET -c $SHCFLAGS
>>>> $SHCCFLAGS $_CCCOMCOM $SOURCES
>>>> File "/home/bill/workspace/miniat/SConstruct", line 96, in
>>>> buildSharedLibrary
>>>> Executing script: /home/bill/workspace/miniat/out/vm/test
>>>> Executing script: /home/bill/workspace/miniat/out/tools/mash
>>>> Executing script: /home/bill/workspace/miniat/out/peripherals/debugger
>>>> Executing script: /home/bill/workspace/miniat/out/peripherals/simple_kb
>>>> Executing script:
>>>> /home/bill/workspace/miniat/out/peripherals/simple_term
>>>> scons: done reading SConscript files.
>>>> scons: Building targets ...
>>>> swig -o out/vm/src/miniat_wrap.c -python -outdir out/lib
>>>> out/vm/src/miniat.i
>>>> LD out/vm/libminiat.so
>>>> CP out/lib/libminiat.so
>>>> LD out/system/console/miniat_console
>>>>
>>>> It also somehow ends up modifying the libminiat.so library to include
>>>> swig python stuff that it didn't include in that so on the first build.
>>>> If you use nm to dump the symbols
>>>>
>>>> First Run, builds and links fine:
>>>> $ nm out/lib/libminiat.so | grep swig
>>>> <no output>
>>>>
>>>> run scons again, see the issues noted above, and the check the library:
>>>> $ nm out/lib/libminiat.so | grep swig
>>>> 0000000000213740 d _swigc__p_char
>>>> 0000000000213780 d _swigc__p_miniat
>>>>
>>>> It seems to be getting confused.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> -Bill
>>>>>
>>>>> On Tue, Mar 10, 2015 at 6:07 PM, William Roberts <
>>>>> bill.c.roberts at gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Mar 10, 2015 at 6:03 PM, William Roberts <
>>>>>> bill.c.roberts at gmail.com> wrote:
>>>>>>
>>>>>>> So I have a heiarchical biuld going on, my SConstruct defines this
>>>>>>> method that is exported to my SConscripts
>>>>>>>
>>>>>>> def buildSharedLibrary(*args, **kwargs):
>>>>>>>         l = env.SharedLibrary(*args, **kwargs)
>>>>>>>         x = env.Install(libdir, l)
>>>>>>>         return [l, x]
>>>>>>>
>>>>>>> So all my shared libraries end up in out/lib
>>>>>>>
>>>>>>> I am currently trying to make a swig wrapper, and my SConstruct
>>>>>>> defines:
>>>>>>>
>>>>>>> buildSharedLibrary('_miniat.so', 'src/miniat.i', LIBS=['miniat'],
>>>>>>> CPPPATH=[ INC, distutils.sysconfig.get_python_inc() ], SHLIBPREFIX="",
>>>>>>> SWIGFLAGS=['-python'])
>>>>>>>
>>>>>>> Which builds the wrapper into a shared object just fine. However,
>>>>>>> swig outputs a generated python file at:
>>>>>>> ./out/vm/src/miniat.py
>>>>>>>
>>>>>>> What I am trying to do, is get SCons to install this into the
>>>>>>> SharedLibrary directory, but it doesn't seem to be ommited here:
>>>>>>> l = env.SharedLibrary(*args, **kwargs)
>>>>>>>
>>>>>>> How can I get that generated file output where I want it?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> As usual, just after I sent I found what I was looking for:
>>>>>>
>>>>>> buildSharedLibrary('_miniat.so', 'src/miniat.i', LIBS=['miniat'],
>>>>>> CPPPATH=[ INC, distutils.sysconfig.get_python_inc() ], SHLIBPREFIX="",
>>>>>> SWIGFLAGS=['-python', '-outdir', 'out/lib'])
>>>>>>
>>>>>> But is this the best way?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> --
>>>>>>> Respectfully,
>>>>>>>
>>>>>>> William C Roberts
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Respectfully,
>>>>>>
>>>>>> William C Roberts
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Respectfully,
>>>>
>>>> William C Roberts
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>
>>
>
>
> --
> Respectfully,
>
> William C Roberts
>
>


-- 
Respectfully,

William C Roberts
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150310/d3042a4d/attachment-0001.html>


More information about the Scons-users mailing list