On Thu, Aug 15, 2013 at 1:57 AM, Georgios Pierris <[email protected]>wrote:

> Build sorted! Tests fail but it must be the known Python 2.7 problem below
>

Awesome!

>
> Adding a PyNode region...
> ERROR:  Matching Python module for py.TestNode not found.
> Exception: Matching Python module for py.TestNode not found.
>
 Python 2.7 problems should soon be history... :)


> My suspicion on the size_t translated to unsigned int from SWIG was
> correct.
>
> It seems like it was a known problem in the nupic team by reading the
> comment in    nupic/py/bindings/algorithms/algorithms_impl.i
>
> line 1004: // Already seen by swig on linux32 where size_t is the same
> size as unsigned int
> #ifndef NTA_PLATFORM_linux32
> %template(Size_T_Vector) std::vector<size_t>;
> #endif
>
> Then I found this "guy" below in the
> nupic/lang/common/engine_internal_common.i
>
> %template(Dimset) std::vector<size_t>;
>
> and wrapped him in an #ifndef
>
> //32bit fix
> #ifndef NTA_PLATFORM_linux32
> %template(Dimset) std::vector<size_t>;
> #endif
>
Wow, good catch and investigation work!

>
>
>
> So I will go ahead and add my comments in the JIRA issue too.
>
> Marek, I will also attach my 15MB archived complete external/linux32
> folder with the compiled libraries. If not portable let me know and I will
> summarize all the steps for building them natively.?
>
> Will give it also a try tomorrow with Python 2.6 and if everything goes
> well we can wrap all steps and files to provide 32 bit support.
>
Excited to see your files, let's wrap it up to a git branch, someone else
(i dont have 32bit unfortunately) will test for us (i believe portability
will be ok) and we can ship to 32bits! Yay

Thanks a lot!
Mark

>
> Cheers,
> Georgios
>
>
> On Wed, Aug 14, 2013 at 8:50 AM, Marek Otahal <[email protected]>wrote:
>
>> Hi,
>>
>> yep, the time diff is a beach :P
>>
>>
>> On Wed, Aug 14, 2013 at 4:53 AM, Georgios Pierris <[email protected]>wrote:
>>
>>> I think I've narrowed the SWIG problem and it should be a matter of
>>> minutes (famous last words) for you Marek, I just couldn't find the proper
>>> files to test my idea. See below my notes and let me know if this deserves
>>> a new JIRA or comment on the one you mentioned earlier.
>>>
>>
>> Please post this, and follow ups to the existing JIRA ticket, it's useful
>> and we can get moving forward with it..
>>
>>>
>>>
>>> Create the external/linux32/lib folders and external/linux32/share
>>> Copy the external/linux64/share into external/linux32/share
>>>
>>> Copy the static libs from /usr/lib/ to external/linux32/lib
>>> /usr/lib/libapr-1.a
>>> /usr/lib/libaprutil-1.a
>>> *If not there just install apr tools and apr-utils from package manager
>>> or download and compile
>>>
>>
>>  Please see the APR subtask for JIRA NPC-143, if you can, send me the
>> include/ headers configured on your 32bit system, and the libapr*.a files.
>>
>> As a pullrequest to my branch, or attach to the JIRA ticket, as you wish.
>>
>>
>>> Unpack the libyaml file from external/src
>>> Change line 5 of  CMakeLists.txt file
>>> from:   set(LIB_TYPE SHARED)   to:   set(LIB_TYPE STATIC)
>>>
>> Why is this needed? I'd prefer not touch the swig internals..it's
>> tricky.
>>
>> mkdir build
>>> cmake ..
>>> etc.
>>>
>>> copy static libyaml-cpp.a file into linux32/lib and rename it to
>>> libyaml.a
>>>
>>> download and build zlib and copy the static libz.a file to linux32/lib
>>>
>>  again, can you give me the compiled .a files?
>>
>>>
>>> install swig (cyrrently trying with version 1.3.36 in an attempt to
>>> match the folder name in share (just in case). I had the same issues with
>>> version 2.0 but have to confirm it again.)
>>>
>> also, please send me swig binary build on 32bit
>>
>>>
>>> Currently fails:
>>> make[2]: Entering directory
>>> `/nupic_tmp_build/lang/py/bindings/engine_internal'
>>> ...
>>> engine_internal_py.cpp:4455:22: error: redefinition of 'struct
>>> swig::traits<unsigned int>'
>>> engine_internal_py.cpp:4378:22: error: previous definition of 'struct
>>> swig::traits<unsigned int>'
>>> engine_internal_py.cpp:4459:23: error: redefinition of 'struct
>>> swig::traits_asval<unsigned int>'
>>> engine_internal_py.cpp:4382:23: error: previous definition of 'struct
>>> swig::traits_asval<unsigned int>'
>>> engine_internal_py.cpp:4465:23: error: redefinition of 'struct
>>> swig::traits_from<unsigned int>'
>>> engine_internal_py.cpp:4388:23: error: previous definition of 'struct
>>> swig::traits_from<unsigned int>'
>>>
>>> Heads Up :
>>> I think that the problem has to do with the size_t that SWIG casts it
>>> into "unsigned long" in 64 bit machines and "unsigned int" in 32 bit
>>> machines. I assume that at some SWIG interface file you are defining the
>>> vector<size_t> and then you also define the vector<unsigned int>. In 64 bit
>>> there are no problems as they are different types, but in the 32 bit
>>> machines we have redefinition of the vector<unsigned int>. (See more on
>>> this similar issue of Gnuradio project for their explanation
>>> http://gnuradio.org/redmine/issues/529 )
>>>
>> Good work, did you manage to find the commit they mention to fix that?
>>
>>>
>>> It took me some time looking for these definitions in the .i files but
>>> without luck, however, I am sure you know exactly where these are to give
>>> it a try.
>>>
>>> This time difference is killing me :)
>>>
>>> Cheers,
>>> Georgios
>>>
>> Thanks a lot! Mark
>>
>> --
>> Marek Otahal :o)
>>
>> _______________________________________________
>> nupic mailing list
>> [email protected]
>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>
>>
>
> _______________________________________________
> nupic mailing list
> [email protected]
> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>
>


-- 
Marek Otahal :o)
_______________________________________________
nupic mailing list
[email protected]
http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org

Reply via email to