[maemo-developers] Problem using swig to compile python module in scratchbox
From: Jussi Hakala jussi.hakala at movial.fiDate: Wed Jun 18 15:11:55 EEST 2008
- Previous message: Problem using swig to compile python module in scratchbox
- Next message: Problem using swig to compile python module in scratchbox
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Try using SBOX_REDIRECT_IGNORE=/usr/bin/swig and executing swig with explicit path, ie SBOX_REDIRECT_IGNORE=/usr/bin/swig /usr/bin/swig -version Make a substitution such as SWIG = SBOX_REDIRECT_IGNORE=/usr/bin/swig /usr/bin/swig and use $(SWIG) to invoke swig in your makefiles. Other alternative would be to disable maemo3-tools from your target. The swig in that devkit is there just to provided a dependency subversion needed, maybe the swig binaries themselves should be removed in the future to avoid problems like these... Regards, Jussi Pierre Amadio wrote: > Hello. > > I'm encoutering problem building a python module that used to build ok in > scratchbox with previous upstream version and wich is still compiling > all i right when i try to do so in a up to date debian Etch box. > > However, i am not able to compile the latest version in scratchbox (maemo > chinook, scratchbox-core 1.0.10, scratchbox-devkit-maemo3 1.0.3 ). > > The library is sword, http://www.crosswire.org/sword/index.jsp > > Currently available in garage for maemo, are sword 1.5.10 and python-sword, > a packaged python module (coming from the same sources as sword). > > When compiling the python module for 1.5.10, i had to use an newest version > of swig, as it always failed when i used the one available in scratchbox, so > I packaged "maemoswig" to have a freshest version available at the time (1.3.31) > > Trying the same method with sword 1.5.11 fails in scratchbox. > > In the Sword/bindings/swig, directory, i create the following setup.py file: > ______________________ > #! /usr/bin/python2.5 > > from distutils.core import setup, Extension > setup (name = "sword", > version = "1.5.11", > maintainer = "Sword Developers", > maintainer_email = "sword-devel at crosswire.org", > url = "http://www.crosswire.org/sword", > py_modules = ["Sword"], > include_dirs=['/usr/include/sword'], > ext_modules = [Extension("_Sword", ["Sword.cxx"], > libraries=[('sword')], > define_macros=[('SWIG',1)])], > ) > ________________________ > > Compiling the module is then done with: > > export SWIG_LIB=/usr/share/swig/1.3.31 > export SWIG_FEATURES=-I/usr/include/sword > /usr/bin/swig -python -c++ -shadow -o Sword.cxx -I. -I/usr/include/sword sword.i > /usr/bin/python2.5 setup.py build_ext -I. -I/usr/include/sword -L/usr/lib/sword > > The python2.5 setup.py fails with a lot of error starting with: > > In file included from Sword.cxx:5850:/usr/bin/python2.5 setup.py build_ext -I. -I/usr/include/sword -L/usr/lib/sword > rendercallback.h: At global scope: > rendercallback.h:189: error: base `sword::BasicFilterUserData' with only non-default constructor in class without a constructor > rendercallback.h:212: error: base `sword::BasicFilterUserData' with only non-default constructor in class without a constructor > In file included from Sword.cxx:5911: > Sword.h:18: error: `Swig' has not been declared > Sword.h:18: error: expected class-name before '{' token > Sword.h:64: error: `Swig' has not been declared > > It looks to me like there is a problem interacting with the scratchbox's swig > for several reason: > > * The Sword.cxx file i get says it has been generated by Version 1.3.29 > (scratchox) and not by the 1.3.31 version I installed. > > * Although /usr/bin/swig is the one i packaged, it still behave as the > scratchbox one. It start behaving as expected if i launch it from some where > else, and this really puzzle me. > > > [sbox-CHINOOK_X86: ~] > ls -l /usr/bin/swig > -rwxr-xr-x 1 user user 1112152 Jan 9 20:05 /usr/bin/swig > [sbox-CHINOOK_X86: ~] > /usr/bin/swig -version > > SWIG Version 1.3.29 > > Compiled with g++ [i386-pc-linux-gnu] > Please see http://www.swig.org for reporting bugs and further information > [sbox-CHINOOK_X86: ~] > cp /usr/bin/swig . > [sbox-CHINOOK_X86: ~] > ./swig -version > > SWIG Version 1.3.31 > > Compiled with i486-linux-gnu-g++ [i486-pc-linux-gnu] > Please see http://www.swig.org for reporting bugs and further information > > * The compilation works if i perform it on a debian box > > Now, just to see, i copied /usr/bin/sword in my local directory and try again > to create sword.cxx , but using the ./swig binary. > I managed to have a Sword.cxx file that says it has been generated by swig > 1.3.31) , but still, the next step fails. > > /usr/bin/python2.5 setup.py build_ext -I. -I/usr/include/sword -L/usr/lib/sword > > This time with less errors; and different one: > > rendercallback.h:189: error: base `sword::BasicFilterUserData' with only non-default constructor in class without a constructor > rendercallback.h:212: error: base `sword::BasicFilterUserData' with only non-default constructor in class without a constructor > > Around those line in the header file are the following comment : > > // trick SWIG into thinking this is not inherited from an inner class... > > The "trick" compile when done under debian, so my guess is that this error may still be due to an interaction with the swig coming from scratchbox. > > I do not know where to go from there. > > I would appreciate any idea that would let me > > 1) be able to compile this module within scratchbox > 2) be able to automatise the compilation when building package (ie most > probably finding another way than copying /usr/bin/swig somewhere else). > > Any ideas ? > _______________________________________________ > maemo-developers mailing list > maemo-developers at maemo.org > https://lists.maemo.org/mailman/listinfo/maemo-developers
- Previous message: Problem using swig to compile python module in scratchbox
- Next message: Problem using swig to compile python module in scratchbox
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]