Problem compiling trunk with CentOS 5.3 (or python 2.4?)

View: New views
4 Messages — Rating Filter:   Alert me  

Problem compiling trunk with CentOS 5.3 (or python 2.4?)

by Pablo d'Angelo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,

I'm trying to compile the current OpenEV trunk on a CentOS 5.3 machine, and I'm running into various errors that seem to be related to the python 2.4 used by CentOS, for example Py_ssize_t is not available with python 2.4 etc. That was easily fixed by adding a typedef, but now I'm stuck with:

[angelo@vogon openev-trunk]$ python setup.py install --prefix=~/local/openev
running install
running build
running build_py
running build_ext
building 'openev._gv' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -DHAVE_OGR=1 -Isrc/lib/gv -Iresource -I/usr/include/gdal/ -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtkglext-1.0 -I/usr/lib64/gtkglext-1.0/include -I/usr/include/pygtk-2.0 -I/usr/include/python2.4 -c src/lib/gv/gv_pwrap.c -o build/temp.linux-x86_64-2.4/src/lib/gv/gv_pwrap.o
In file included from src/lib/gv/gvtypes.h:54,
                 from src/lib/gv/gvviewarea.h:159,
                 from src/lib/gv/gvtool.h:34,
                 from src/lib/gv/gvareatool.h:33,
                 from gv.override:6:
src/lib/gv/gv_config.h:28:7: warning: no newline at end of file
In file included from gv.override:40:
src/lib/gv/gvshape_wrap.c: In function ‘pygv_shape_set_properties’:
src/lib/gv/gvshape_wrap.c:420: warning: passing argument 2 of ‘PyDict_Next’ from incompatible pointer type
gv.override: In function ‘_wrap_gv_data_set_properties’:
gv.override:839: warning: passing argument 2 of ‘PyDict_Next’ from incompatible pointer type
gv.override: At top level:
gv.override:1281: error: ‘lenfunc’ undeclared here (not in a function)
gv.override:1281: error: expected ‘}’ before ‘_wrap_gv_shapes_sq_length’
error: command 'gcc' failed with exit status 1

Is it possible to use OpenEV 2 with python 2.4?
Is the python interface hand generated or is it based on some automatic wrapper generation, and could they be regenerated for python 2.4 somehow, or is lots of manual work required?

Thanks,
 Pablo

PS. I'm using openev quite a lot, and it is unfortunate that the developer community is a little small, given that it is such an excellent tool. All the other opensource GIS type application seem to have lots of difficulties handling large amounts of raster data.

______________________________________________________
GRATIS für alle WEB.DE-Nutzer: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://movieflat.web.de


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Openev-discuss mailing list
Openev-discuss@...
https://lists.sourceforge.net/lists/listinfo/openev-discuss

Re: Problem compiling trunk with CentOS 5.3 (or python 2.4?)

by Mario Beauchamp-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Pablo,

On Tue, Aug 4, 2009 at 3:26 AM, Pablo dAngelo<Pablo.dAngelo@...> wrote:
>
> Is it possible to use OpenEV 2 with python 2.4?
> Is the python interface hand generated or is it based on some automatic wrapper generation, and could they be regenerated for python 2.4 somehow, or is lots of manual work required?

Yes, it does work with 2.4. You simply need to regenerate gv_pwrap.c.
On my linux box, the following works (cd to src/lib/gv and do):
python /usr/share/pygtk/2.0/codegen/codegen.py -o gv.override -r
/usr/share/pygtk/2.0/defs/gtk-base-types.defs -p _gv gv.defs >
gv_pwrap.c

Your mileage may vary...

I should try to make this part of setup.py...

> PS. I'm using openev quite a lot, and it is unfortunate that the developer community is a little small, given that it is such an excellent tool. All the other opensource GIS type application seem to have lots of difficulties handling large amounts of raster data.

Well as it stands now, the community is only me, at least for the GTK2
port... and my real work leaves me little time to take care of OpenEV.
Hopefully, the community will grow eventually...

cheers
--
Mario B.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Openev-discuss mailing list
Openev-discuss@...
https://lists.sourceforge.net/lists/listinfo/openev-discuss

Parent Message unknown Re: Problem compiling trunk with CentOS 5.3 (or python 2.4?)

by Pablo d'Angelo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Mario,

> Hi Pablo,
>
> On Tue, Aug 4, 2009 at 3:26 AM, Pablo dAngelo<Pablo.dAngelo@...> wrote:
> >
> > Is it possible to use OpenEV 2 with python 2.4?
>
> Yes, it does work with 2.4. You simply need to regenerate gv_pwrap.c.
> On my linux box, the following works (cd to src/lib/gv and do):
> python /usr/share/pygtk/2.0/codegen/codegen.py -o gv.override -r
> /usr/share/pygtk/2.0/defs/gtk-base-types.defs -p _gv gv.defs >
> gv_pwrap.c
>
> Your mileage may vary...

The above command worked on my CentOS 5.3 machine. After adding

/* Backport type definitions from Python 2.5's object.h */
#if PY_VERSION_HEX < 0x02050000
typedef int Py_ssize_t;
typedef Py_ssize_t (*lenfunc)(PyObject *);
typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
#endif /* PY_VERSION_HEX */

to the top of gv.override, and rerunning the code generation,
I could compile the the python extension.

However, I now get an error in setup.py. Any idea about that?

[angelo@vogon openev-trunk]$ python setup.py install --prefix=~/local/openev
running install
running build
running build_py
running build_ext
building 'openev._gv' extension
Traceback (most recent call last):
  File "setup.py", line 236, in ?
    data_files       = [('share/openev/pics', glob('resource/pics/*')),
  File "/usr/lib64/python2.4/distutils/core.py", line 149, in setup
    dist.run_commands()
  File "/usr/lib64/python2.4/distutils/dist.py", line 946, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.4/distutils/dist.py", line 966, in run_command
    cmd_obj.run()
  File "/usr/lib64/python2.4/distutils/command/install.py", line 506, in run
    self.run_command('build')
  File "/usr/lib64/python2.4/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib64/python2.4/distutils/dist.py", line 966, in run_command
    cmd_obj.run()
  File "/usr/lib64/python2.4/distutils/command/build.py", line 112, in run
    self.run_command(cmd_name)
  File "/usr/lib64/python2.4/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib64/python2.4/distutils/dist.py", line 966, in run_command
    cmd_obj.run()
  File "/usr/lib64/python2.4/distutils/command/build_ext.py", line 279, in run
    self.build_extensions()
  File "/usr/lib64/python2.4/distutils/command/build_ext.py", line 405, in build_extensions
    self.build_extension(ext)
  File "/usr/lib64/python2.4/distutils/command/build_ext.py", line 502, in build_extension
    target_lang=language)
  File "/usr/lib64/python2.4/distutils/ccompiler.py", line 847, in link_shared_object
    extra_preargs, extra_postargs, build_temp, target_lang)
  File "/usr/lib64/python2.4/distutils/unixccompiler.py", line 153, in link
    libraries)
  File "/usr/lib64/python2.4/distutils/ccompiler.py", line 1257, in gen_lib_options
    (lib_dir, lib_name) = os.path.split (lib)
  File "/usr/lib64/python2.4/posixpath.py", line 77, in split
    i = p.rfind('/') + 1
AttributeError: 'list' object has no attribute 'rfind'

> Well as it stands now, the community is only me, at least for the GTK2
> port... and my real work leaves me little time to take care of OpenEV.

I fully understand that, as I'm in a similar situation (regarding the lack of time) with the open source project I started (hugin).
Fortunately there is a good community there now.

cheers,
 Pablo
________________________________________________________________
Neu: WEB.DE Doppel-FLAT mit Internet-Flatrate + Telefon-Flatrate
für nur 19,99 Euro/mtl.!* http://produkte.web.de/go/02/


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Openev-discuss mailing list
Openev-discuss@...
https://lists.sourceforge.net/lists/listinfo/openev-discuss

Re: Problem compiling trunk with CentOS 5.3 (or python 2.4?)

by Mario Beauchamp-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Pablo,

On Wed, Aug 5, 2009 at 11:11 AM, Pablo dAngelo<Pablo.dAngelo@...> wrote:

> Hi Mario,
>>
>> Yes, it does work with 2.4. You simply need to regenerate gv_pwrap.c.
>> On my linux box, the following works (cd to src/lib/gv and do):
>> python /usr/share/pygtk/2.0/codegen/codegen.py -o gv.override -r
>> /usr/share/pygtk/2.0/defs/gtk-base-types.defs -p _gv gv.defs >
>> gv_pwrap.c
>
> The above command worked on my CentOS 5.3 machine. After adding
>
> /* Backport type definitions from Python 2.5's object.h */
> #if PY_VERSION_HEX < 0x02050000
> typedef int Py_ssize_t;
> typedef Py_ssize_t (*lenfunc)(PyObject *);
> typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
> typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
> typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
> typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
> #endif /* PY_VERSION_HEX */
>
> to the top of gv.override, and rerunning the code generation,
> I could compile the the python extension.

Okay, so you did need that also (I thought somehow it would have been
taken care of by pygtk). I got something slightly cleaner (and more
complete) from somewhere else though:

#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
typedef int Py_ssize_t;
#define PY_SSIZE_T_MAX INT_MAX
#define PY_SSIZE_T_MIN INT_MIN
typedef inquiry lenfunc;
typedef intargfunc ssizeargfunc;
typedef intobjargproc ssizeobjargproc;
typedef intintargfunc ssizessizeargfunc;
typedef intintobjargproc ssizessizeobjargproc;
typedef getreadbufferproc readbufferproc;
typedef getwritebufferproc writebufferproc;
typedef getsegcountproc segcountproc;
typedef getcharbufferproc charbufferproc;
#endif

But I don't know where this really belongs... I guess at the top of
gv.override is fine, unless someone else has a better idea.

> However, I now get an error in setup.py. Any idea about that?

<snip>
>  File "/usr/lib64/python2.4/posixpath.py", line 77, in split
>    i = p.rfind('/') + 1
> AttributeError: 'list' object has no attribute 'rfind'

I never encountered this error... and I must admit I am not familiar
enough with distutils to be able to diagnostic. Help anyone?

> I fully understand that, as I'm in a similar situation (regarding the lack of time) with the open source project I started (hugin).
> Fortunately there is a good community there now.

You mean hugin the panorama stitching software? I used it last year
for a personal project. Nice work on this!

cheers
--
Mario B.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Openev-discuss mailing list
Openev-discuss@...
https://lists.sourceforge.net/lists/listinfo/openev-discuss