[Scons-users] SWIG

William Blevins wblevins001 at gmail.com
Wed Mar 11 02:05:06 EDT 2015


Either way, that issue seems fixable, and at a minimum, there should be a
trouble ticket created for it.  Feel free to fix it :)

V/R,
William

On Wed, Mar 11, 2015 at 1:59 AM, William Blevins <wblevins001 at gmail.com>
wrote:

> You may need to do something like Dir(#out/lib).  Some inputs handle nodes
> and other don't.  SWIG may not.
>
> V/R,
> William
>
> On Wed, Mar 11, 2015 at 1:56 AM, William Roberts <bill.c.roberts at gmail.com
> > wrote:
>
>> Using #, fails:
>>
>> SWIG out/vm/src/miniat_wrap.c
>> Unable to open file #out/lib/miniat.py: No such file or directory
>> scons: *** [out/vm/src/miniat_wrap.c] Error 1
>> scons: building terminated because of errors.
>>
>> It doesn't look like its expanded.
>>
>> Using absolute path, and it doesn't rebuild the target....
>>
>>
>>
>> On Tue, Mar 10, 2015 at 10:54 PM, William Blevins <wblevins001 at gmail.com>
>> wrote:
>>
>>> FYI.  The behavior I expect from your code is that the python generated
>>> file would exist in the variant directory.  It obvious doesn't.
>>>
>>> V/R,
>>> William
>>>
>>> On Wed, Mar 11, 2015 at 1:53 AM, William Blevins <wblevins001 at gmail.com>
>>> wrote:
>>>
>>>> Honestly, that may be a bug with the SWIG emitter/builder and variant
>>>> directories.  Seems that the emitter is taking into account the variant
>>>> directory, but the builder isn't, so their is a mismatch between expected
>>>> and actual output.
>>>>
>>>> Try passing the outdir like "#out/lib" which may override the variant
>>>> directory expectation.  If that doesn't work then try specifying outdir as
>>>> absolute path, and let us know.
>>>>
>>>> V/R,
>>>> William
>>>>
>>>> On Wed, Mar 11, 2015 at 1:48 AM, William Roberts <
>>>> bill.c.roberts at gmail.com> wrote:
>>>>
>>>>> I think its pass 2. The file itself exists in out/lib/miniat.py where
>>>>> I expect it. That is what I set SWIGOUTDIR in my local branch too. public
>>>>> is a little behind me now.
>>>>>
>>>>>
>>>>> On Tue, Mar 10, 2015 at 10:45 PM, William Blevins <
>>>>> wblevins001 at gmail.com> wrote:
>>>>>
>>>>>> Is that pass-1 or pass-2?  And what is the expected behavior (IE.
>>>>>> where do you expect the file)?
>>>>>>
>>>>>> V/R,
>>>>>> William
>>>>>>
>>>>>> On Wed, Mar 11, 2015 at 1:42 AM, William Roberts <
>>>>>> bill.c.roberts at gmail.com> wrote:
>>>>>>
>>>>>>> absolutely, sorry about that. It appears that it concatenates
>>>>>>> variant directory with output directory which causes the
>>>>>>> file not to be found.
>>>>>>>
>>>>>>> scons: Building targets ...
>>>>>>> scons: building `out/vm/out/lib/miniat.py' because it doesn't exist
>>>>>>> swig -o out/vm/src/miniat_wrap.c -outdir "out/lib" -python
>>>>>>> out/vm/src/miniat.i
>>>>>>> scons: done building targets.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Mar 10, 2015 at 10:39 PM, William Blevins <
>>>>>>> wblevins001 at gmail.com> wrote:
>>>>>>>
>>>>>>>> Can you use debug=explain please?  We need finite state
>>>>>>>> descriptions to accompany issues or we cannot help ;)
>>>>>>>>
>>>>>>>> V/R,
>>>>>>>> William
>>>>>>>>
>>>>>>>> On Wed, Mar 11, 2015 at 1:37 AM, William Roberts <
>>>>>>>> bill.c.roberts at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> 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
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150311/cc3cc5f9/attachment-0001.html>


More information about the Scons-users mailing list