Martin Landa wrote: > 2010/5/18 Glynn Clements <gl...@gclements.plus.com>: > > What platform, Python version, ctypesgen version? > > Debian GNU/Linux unstable, x86-32 > Python 2.5.5 > ctypesgen from SVN
FWIW, I'm using Python 2.6.4. I've also checked with the latest SVN version of ctypesgen, but haven't found any differences. > > The G_find_raster2() definition should look like: > > > > # /usr/local/src/grass/7.0/dist.i686-pc-linux-gnu/include/grass/gisdefs.h: > > 220 > > if hasattr(_libs['grass_gis'], 'G_find_raster2'): > > G_find_raster2 = _libs['grass_gis'].G_find_raster2 > > G_find_raster2.restype = ReturnString > > G_find_raster2.argtypes = [String, String] > > I found > > dist.i686-pc-linux-gnu/etc/python/grass/lib/grass.py: if > hasattr(_lib, 'G_find_raster2'): > dist.i686-pc-linux-gnu/etc/python/grass/lib/grass.py: > G_find_raster2 = _lib.G_find_raster2 > dist.i686-pc-linux-gnu/etc/python/grass/lib/grass.py: > G_find_raster2.restype = String > dist.i686-pc-linux-gnu/etc/python/grass/lib/grass.py: > G_find_raster2.argtypes = [String, String] > dist.i686-pc-linux-gnu/etc/python/grass/lib/grass.py: > G_find_raster2.errcheck = ReturnString Okay; I know why this (the code differences) is happening: Hmm. From ctypesgencore/printer/printer.py: def print_fixed_function(self, function): self.srcinfo(function.src) if function.source_library: print >>self.file, "if hasattr(_libs[%r], %r):" % \ (function.source_library,function.c_name()) print >>self.file, " %s = _libs[%r].%s" % \ (function.py_name(),function.source_library,function.c_name()) print >>self.file, " %s.restype = %s" % \ (function.py_name(),function.restype.py_string()) print >>self.file, " %s.argtypes = [%s]" % (function.py_name(), ', '.join([a.py_string() for a in function.argtypes])) else: print >>self.file, "for _lib in _libs.values():" print >>self.file, " if hasattr(_lib, %r):" % function.c_name() print >>self.file, " %s = _lib.%s" % (function.py_name(),function.c_name()) print >>self.file, " %s.restype = %s" % (function.py_name(),function.restype.py_string()) print >>self.file, " %s.argtypes = [%s]" % (function.py_name(), ', '.join([a.py_string() for a in function.argtypes])) print >>self.file, " break" I'm getting the first case, while you're getting the second. The source_library field is only set if it manages to load the library. I don't use GRASS "sessions"; I just set all of the environment variables from my ~/.bash_profile, so GRASS commands work everywhere. This means that LD_LIBRARY_PATH includes $GISBASE/lib while I'm building GRASS. If I unset LD_LIBRARY_PATH before building, I get the second case. This particular issue should be fixed by r42311. I don't know if this is related to the problem, but it's something to eliminate. -- Glynn Clements <gl...@gclements.plus.com> _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev