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
