By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,908 Members | 2,056 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,908 IT Pros & Developers. It's quick & easy.

Compiling informxidb-1.3 on python2.2?

P: n/a
Hello,

Has anyone had success compiling the informixdb-1.3 module under
python 2.2? It seems the absense of makefile.pre.in in python 2.2
causes the break under py2.2. Is there an easy way around this. I've
heard rumors of a manual method, but have been unable to track down
details. Any help is very much appreciated.

Thanks in advance,
Mike
Jul 18 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
Mike S. <ms****@ieee.org> wrote:
Hello,

Has anyone had success compiling the informixdb-1.3 module under
python 2.2? It seems the absense of makefile.pre.in in python 2.2
causes the break under py2.2. Is there an easy way around this. I've
heard rumors of a manual method, but have been unable to track down
details. Any help is very much appreciated.

Thanks in advance,
Mike


Here's the step-by-step notes I wrote for myself when I had to do
exactly that back in May:

Steps in installing the informixdb module:

1. Download informixdb source from
http://starship.python.net/crew/sturner/informixdb.html
2. Untar, run configure
3. Edit ext/Makefile: change CFLAGS (line 100) to include
-I${INFORMIXDIR}/incl/esql
4. Cd into ext directory
5. Run "esql _informix.ec" to generate _informix.c file
6. Cd back into parent directory
7. Run make
8. Copy informixdb.py and ext/_informixdb.so into
/usr/lib/python2.2/site-packages/

I hope this helps. I did this install on a Red Hat machine that had the
Informix SDK installed, so I had the esql command available. If you
don't have esql available, then I'm not sure what you'll need to do.

Good luck!

--
Robin Munn <rm***@pobox.com> | http://www.rmunn.com/ | PGP key 0x6AFB6838
-----------------------------+-----------------------+----------------------
"Remember, when it comes to commercial TV, the program is not the product.
YOU are the product, and the advertiser is the customer." - Mark W. Schumann
Jul 18 '05 #2

P: n/a
> 2. Untar, run configure
Unfortunately, the trouble starts here at step 2. By any chance do
you have both python1.5 and python2.2 installed?

root@pe informixdb-1.3]# ./configure
loading cache ./config.cache
checking whether make sets ${MAKE}... (cached) yes
checking for python... (cached) /usr/bin/python
checking for --with-informix... /opt/informix
checking for esql... (cached) /opt/informix/bin/esql
checking for --enable-thread... no
checking for --enable-shared... yes
creating ./config.status
creating Makefile
creating ext/srcdir
creating ext/Setup
cp: cannot stat `/usr/lib/python1.5/config/Makefile.pre.in': No such
file or directory
creating ext/Makefile
make: ./Makefile.pre.in: No such file or directory
make: *** No rule to make target `./Makefile.pre.in'. Stop.
[root@pe informixdb-1.3]#
:

Robin Munn <rm***@pobox.com> wrote in message news:<sl******************@rmunnlfs.dyndns.org>...
Mike S. <ms****@ieee.org> wrote:
Hello,

Has anyone had success compiling the informixdb-1.3 module under
python 2.2? It seems the absense of makefile.pre.in in python 2.2
causes the break under py2.2. Is there an easy way around this. I've
heard rumors of a manual method, but have been unable to track down
details. Any help is very much appreciated.

Thanks in advance,
Mike


Here's the step-by-step notes I wrote for myself when I had to do
exactly that back in May:

Steps in installing the informixdb module:

1. Download informixdb source from
http://starship.python.net/crew/sturner/informixdb.html
2. Untar, run configure
3. Edit ext/Makefile: change CFLAGS (line 100) to include
-I${INFORMIXDIR}/incl/esql
4. Cd into ext directory
5. Run "esql _informix.ec" to generate _informix.c file
6. Cd back into parent directory
7. Run make
8. Copy informixdb.py and ext/_informixdb.so into
/usr/lib/python2.2/site-packages/

I hope this helps. I did this install on a Red Hat machine that had the
Informix SDK installed, so I had the esql command available. If you
don't have esql available, then I'm not sure what you'll need to do.

Good luck!

Jul 18 '05 #3

P: n/a
Well I managed to get the configure script to run:

../configure
loading cache ./config.cache
checking whether make sets ${MAKE}... (cached) yes
checking for python... (cached) /usr/bin/python
checking for --with-informix... /opt/informix
checking for esql... (cached) /opt/informix/bin/esql
checking for --enable-thread... no
checking for --enable-shared... yes
creating ./config.status
creating Makefile
creating ext/srcdir
creating ext/Setup
creating ext/Makefile

But got a ton of errors when trying step 5 in Robin's list:
esql _informixdb.c
_informixdb.ec:48:20: Python.h: No such file or directory
_informixdb.ec:49:24: longobject.h: No such file or directory
In file included from _informixdb.ec:50:
dbi.h:13: parse error before '*' token
dbi.h:14: parse error before '*' token
dbi.h:15: parse error before '*' token
dbi.h:18: parse error before '*' token
dbi.h:18: parse error before '*' token
dbi.h:18: warning: data definition has no type or storage class
dbi.h:19: parse error before '*' token
dbi.h:19: parse error before '*' token
dbi.h:19: warning: data definition has no type or storage class
dbi.h:20: parse error before '*' token
dbi.h:20: parse error before '*' token
dbi.h:20: warning: data definition has no type or storage class
dbi.h:21: parse error before '*' token
dbi.h:21: parse error before '*' token
dbi.h:21: warning: data definition has no type or storage class
dbi.h:35: parse error before '*' token
dbi.h:35: warning: data definition has no type or storage class
Make sense to anyone??
ms****@ieee.org (Mike S.) wrote in message news:<bc**************************@posting.google. com>... 2. Untar, run configure

Unfortunately, the trouble starts here at step 2. By any chance do
you have both python1.5 and python2.2 installed?

root@pe informixdb-1.3]# ./configure
loading cache ./config.cache
checking whether make sets ${MAKE}... (cached) yes
checking for python... (cached) /usr/bin/python
checking for --with-informix... /opt/informix
checking for esql... (cached) /opt/informix/bin/esql
checking for --enable-thread... no
checking for --enable-shared... yes
creating ./config.status
creating Makefile
creating ext/srcdir
creating ext/Setup
cp: cannot stat `/usr/lib/python1.5/config/Makefile.pre.in': No such
file or directory
creating ext/Makefile
make: ./Makefile.pre.in: No such file or directory
make: *** No rule to make target `./Makefile.pre.in'. Stop.
[root@pe informixdb-1.3]#
:

Robin Munn <rm***@pobox.com> wrote in message news:<sl******************@rmunnlfs.dyndns.org>...
Mike S. <ms****@ieee.org> wrote:
Hello,

Has anyone had success compiling the informixdb-1.3 module under
python 2.2? It seems the absense of makefile.pre.in in python 2.2
causes the break under py2.2. Is there an easy way around this. I've
heard rumors of a manual method, but have been unable to track down
details. Any help is very much appreciated.

Thanks in advance,
Mike


Here's the step-by-step notes I wrote for myself when I had to do
exactly that back in May:

Steps in installing the informixdb module:

1. Download informixdb source from
http://starship.python.net/crew/sturner/informixdb.html
2. Untar, run configure
3. Edit ext/Makefile: change CFLAGS (line 100) to include
-I${INFORMIXDIR}/incl/esql
4. Cd into ext directory
5. Run "esql _informix.ec" to generate _informix.c file
6. Cd back into parent directory
7. Run make
8. Copy informixdb.py and ext/_informixdb.so into
/usr/lib/python2.2/site-packages/

I hope this helps. I did this install on a Red Hat machine that had the
Informix SDK installed, so I had the esql command available. If you
don't have esql available, then I'm not sure what you'll need to do.

Good luck!

Jul 18 '05 #4

P: n/a
I'm trying to compile it in order to use it on Zope 2.6.1 (python
2.1.3) on a RedHat 7.3, with Informix SDK csdk280_UC21LIN. Is it
possible at least ?

I've find a few infos about it in the ng, and here's what I dit :

cd $INFORMIXDIR/lib/esql
mkdir tmp
cp libifgen.so orig_libifgen.so
cp libifgen.a tmp
cd tmp
ar x libifgen.a
gcc -shared -o libifgen.so *.o
cp libifgen.so ..
cd ..
rm -rf tmp
su - root
ldconfig

In informixdb-1.3 sources directory:
../configure
Edit ext/Makefile: change CFLAGS (line 100) to include
-I${INFORMIXDIR}/incl/esql
esql ext/_informix.ec"

and here's what I get :

/usr/informix/lib/esql/libifos.so: the use of `mktemp' is dangerous,
better use `mkstemp'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o: In function
`_start':
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o(.text+0x18):
undefined reference to `main'
/tmp/cc3c2Xz6.o: In function `ifxdbCursor':
/tmp/cc3c2Xz6.o(.text+0x346): undefined reference to `PyObject_Init'
/tmp/cc3c2Xz6.o: In function `ifxdbCurClose':
/tmp/cc3c2Xz6.o(.text+0x5bc): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x5c1): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ifxdbPrintError':
/tmp/cc3c2Xz6.o(.text+0x753): undefined reference to `PyErr_SetString'
/tmp/cc3c2Xz6.o: In function `ifxdbClose':
/tmp/cc3c2Xz6.o(.text+0x7e2): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x7e7): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `connectionGetAttr':
/tmp/cc3c2Xz6.o(.text+0x833): undefined reference to `Py_FindMethod'
/tmp/cc3c2Xz6.o: In function `ifxdbCommit':
/tmp/cc3c2Xz6.o(.text+0x90e): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x913): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ifxdbRollback':
/tmp/cc3c2Xz6.o(.text+0x9aa): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x9af): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ibindRaw':
/tmp/cc3c2Xz6.o(.text+0xbb5): undefined reference to `dbiValue'
/tmp/cc3c2Xz6.o(.text+0xbc8): undefined reference to `PyObject_Str'
/tmp/cc3c2Xz6.o: In function `ibindDate':
/tmp/cc3c2Xz6.o(.text+0xcb5): undefined reference to `dbiValue'
/tmp/cc3c2Xz6.o(.text+0xcc0): undefined reference to `PyNumber_Long'
/tmp/cc3c2Xz6.o(.text+0xcdd): undefined reference to `PyLong_AsLong'
/tmp/cc3c2Xz6.o(.text+0xd93): undefined reference to `PyErr_SetString'
/tmp/cc3c2Xz6.o: In function `ibindString':
/tmp/cc3c2Xz6.o(.text+0xdb9): undefined reference to `PyObject_Str'
/tmp/cc3c2Xz6.o(.text+0xe36): undefined reference to `PyLong_Type'
/tmp/cc3c2Xz6.o: In function `ibindFcn':
/tmp/cc3c2Xz6.o(.text+0xeb5): undefined reference to `dbiIsRaw'
/tmp/cc3c2Xz6.o(.text+0xed3): undefined reference to `dbiIsDate'
/tmp/cc3c2Xz6.o(.text+0xeeb): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `bindInput':
/tmp/cc3c2Xz6.o(.text+0x10b4): undefined reference to `PyObject_Size'
/tmp/cc3c2Xz6.o(.text+0x1112): undefined reference to
`PySequence_GetItem'
/tmp/cc3c2Xz6.o(.text+0x1187): undefined reference to
`PyErr_SetString'
/tmp/cc3c2Xz6.o: In function `bindOutput':
/tmp/cc3c2Xz6.o(.text+0x1259): undefined reference to `PyTuple_New'
/tmp/cc3c2Xz6.o(.text+0x12d5): undefined reference to `Py_BuildValue'
/tmp/cc3c2Xz6.o: In function `ifxdbCurExec':
/tmp/cc3c2Xz6.o(.text+0x1538): undefined reference to
`PyArg_ParseTuple'
/tmp/cc3c2Xz6.o(.text+0x1828): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x182d): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1839): undefined reference to
`PyEval_SaveThread'
/tmp/cc3c2Xz6.o(.text+0x187d): undefined reference to
`PyEval_RestoreThread'
/tmp/cc3c2Xz6.o(.text+0x18b3): undefined reference to `Py_BuildValue'
/tmp/cc3c2Xz6.o: In function `doCopy':
/tmp/cc3c2Xz6.o(.text+0x1a7e): undefined reference to `PyInt_FromLong'
/tmp/cc3c2Xz6.o(.text+0x1a87): undefined reference to `dbiMakeDate'
/tmp/cc3c2Xz6.o(.text+0x1aa4): undefined reference to `PyInt_FromLong'
/tmp/cc3c2Xz6.o(.text+0x1aad): undefined reference to `dbiMakeDate'
/tmp/cc3c2Xz6.o(.text+0x1b08): undefined reference to `Py_BuildValue'
/tmp/cc3c2Xz6.o(.text+0x1b20): undefined reference to
`PyFloat_FromDouble'
/tmp/cc3c2Xz6.o(.text+0x1b3c): undefined reference to
`PyFloat_FromDouble'
/tmp/cc3c2Xz6.o(.text+0x1b64): undefined reference to
`PyFloat_FromDouble'
/tmp/cc3c2Xz6.o(.text+0x1b7b): undefined reference to `PyInt_FromLong'
/tmp/cc3c2Xz6.o(.text+0x1b8d): undefined reference to `PyInt_FromLong'
/tmp/cc3c2Xz6.o(.text+0x1bba): undefined reference to
`PyString_FromStringAndSize'
/tmp/cc3c2Xz6.o(.text+0x1bc3): undefined reference to `dbiMakeRaw'
/tmp/cc3c2Xz6.o(.text+0x1bce): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1bd3): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `processOutput':
/tmp/cc3c2Xz6.o(.text+0x1bf0): undefined reference to `PyTuple_New'
/tmp/cc3c2Xz6.o(.text+0x1c38): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ifxdbCurFetchOne':
/tmp/cc3c2Xz6.o(.text+0x1cb7): undefined reference to
`PyEval_SaveThread'
/tmp/cc3c2Xz6.o(.text+0x1cf8): undefined reference to
`PyEval_RestoreThread'
/tmp/cc3c2Xz6.o(.text+0x1d20): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1d25): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ifxdbFetchCounted':
/tmp/cc3c2Xz6.o(.text+0x1d88): undefined reference to `PyList_New'
/tmp/cc3c2Xz6.o(.text+0x1df3): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1e2e): undefined reference to `PyList_Append'
/tmp/cc3c2Xz6.o: In function `ifxdbCurFetchMany':
/tmp/cc3c2Xz6.o(.text+0x1ed5): undefined reference to
`PyArg_ParseTuple'
/tmp/cc3c2Xz6.o: In function `ifxdbCurSetInputSizes':
/tmp/cc3c2Xz6.o(.text+0x1f29): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1f2e): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `ifxdbCurSetOutputSize':
/tmp/cc3c2Xz6.o(.text+0x1f39): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1f3e): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o: In function `cursorGetAttr':
/tmp/cc3c2Xz6.o(.text+0x1f82): undefined reference to `_Py_NoneStruct'
/tmp/cc3c2Xz6.o(.text+0x1f87): more undefined references to
`_Py_NoneStruct' follow
/tmp/cc3c2Xz6.o: In function `cursorGetAttr':
/tmp/cc3c2Xz6.o(.text+0x1fcb): undefined reference to `Py_FindMethod'
/tmp/cc3c2Xz6.o: In function `ifxdbLogon':
/tmp/cc3c2Xz6.o(.text+0x1ff5): undefined reference to
`PyArg_ParseTuple'
/tmp/cc3c2Xz6.o(.text+0x2022): undefined reference to `PyObject_Init'
/tmp/cc3c2Xz6.o(.text+0x205a): undefined reference to
`PyEval_SaveThread'
/tmp/cc3c2Xz6.o(.text+0x2083): undefined reference to
`PyEval_RestoreThread'
/tmp/cc3c2Xz6.o: In function `init_informixdb':
/tmp/cc3c2Xz6.o(.text+0x214d): undefined reference to `Py_InitModule4'
/tmp/cc3c2Xz6.o(.text+0x2167): undefined reference to `Py_BuildValue'
/tmp/cc3c2Xz6.o(.text+0x2187): undefined reference to
`PyModule_GetDict'
/tmp/cc3c2Xz6.o(.text+0x2192): undefined reference to
`PyDict_SetItemString'
/tmp/cc3c2Xz6.o(.text+0x21cc): undefined reference to `initdbi'
/tmp/cc3c2Xz6.o(.data+0x24): undefined reference to `PyType_Type'
/tmp/cc3c2Xz6.o(.data+0xe4): undefined reference to `PyType_Type'
collect2: ld returned 1 exit status

What's wrong with this ?

Thanks
Jul 18 '05 #5

P: n/a
Hi Mick,

a while ago I managed the compilation of informixdb
'manually' without help of Makefiles or configure
scripts or distutils for Python-2.2.1.

Basically all you need is to compile dbi.c as well as
_informixdb.c and to link it to a shared library.
informixdb.py and _informixdb.so then has to be copied
to the proper places.

What you need as well is the help of th esql script
provided with the informix sdk and the information
provided in the lib/config/ folder of your Python
installation (used compiler switches, libraries
for linking ...).

Run:
esql -e -G -libs _informixdb.ec or
esql -e -G -thread -libs _informixdb.ec

to get a list of the informix libraries and objectfiles
needed for linking.

Of course you need to specify the path to the informix include files
and the path to the library files as well as the library files
for compilation and linking.

There are other issues with informixdb as well:

1) DBI 1-0 interface:
dates are limited to EPOCH (aka unix time) due
to limitations of the DBI-1.0 specification.
2) all Informix warnings raise an error in the
informixdb layer. In many cases this is not
wanted.

I can send you the patches I got from different
people/places.

Carl

cm********@gmx.de

ms****@ieee.org (Mike S.) wrote in message news:<bc*************************@posting.google.c om>...
Well I managed to get the configure script to run:

./configure
loading cache ./config.cache
checking whether make sets ${MAKE}... (cached) yes
checking for python... (cached) /usr/bin/python
checking for --with-informix... /opt/informix
checking for esql... (cached) /opt/informix/bin/esql
checking for --enable-thread... no
checking for --enable-shared... yes
creating ./config.status
creating Makefile
creating ext/srcdir
creating ext/Setup
creating ext/Makefile

But got a ton of errors when trying step 5 in Robin's list:
esql _informixdb.c
_informixdb.ec:48:20: Python.h: No such file or directory
_informixdb.ec:49:24: longobject.h: No such file or directory
In file included from _informixdb.ec:50:
dbi.h:13: parse error before '*' token
dbi.h:14: parse error before '*' token
dbi.h:15: parse error before '*' token
dbi.h:18: parse error before '*' token
dbi.h:18: parse error before '*' token
dbi.h:18: warning: data definition has no type or storage class
dbi.h:19: parse error before '*' token
dbi.h:19: parse error before '*' token
dbi.h:19: warning: data definition has no type or storage class
dbi.h:20: parse error before '*' token
dbi.h:20: parse error before '*' token
dbi.h:20: warning: data definition has no type or storage class
dbi.h:21: parse error before '*' token
dbi.h:21: parse error before '*' token
dbi.h:21: warning: data definition has no type or storage class
dbi.h:35: parse error before '*' token
dbi.h:35: warning: data definition has no type or storage class
Make sense to anyone??
ms****@ieee.org (Mike S.) wrote in message news:<bc**************************@posting.google. com>... 2. Untar, run configure

Unfortunately, the trouble starts here at step 2. By any chance do
you have both python1.5 and python2.2 installed?

root@pe informixdb-1.3]# ./configure
loading cache ./config.cache
checking whether make sets ${MAKE}... (cached) yes
checking for python... (cached) /usr/bin/python
checking for --with-informix... /opt/informix
checking for esql... (cached) /opt/informix/bin/esql
checking for --enable-thread... no
checking for --enable-shared... yes
creating ./config.status
creating Makefile
creating ext/srcdir
creating ext/Setup
cp: cannot stat `/usr/lib/python1.5/config/Makefile.pre.in': No such
file or directory
creating ext/Makefile
make: ./Makefile.pre.in: No such file or directory
make: *** No rule to make target `./Makefile.pre.in'. Stop.
[root@pe informixdb-1.3]#
:

Robin Munn <rm***@pobox.com> wrote in message news:<sl******************@rmunnlfs.dyndns.org>...
Mike S. <ms****@ieee.org> wrote:
> Hello,
>
> Has anyone had success compiling the informixdb-1.3 module under
> python 2.2? It seems the absense of makefile.pre.in in python 2.2
> causes the break under py2.2. Is there an easy way around this. I've
> heard rumors of a manual method, but have been unable to track down
> details. Any help is very much appreciated.
>
> Thanks in advance,
> Mike

Here's the step-by-step notes I wrote for myself when I had to do
exactly that back in May:

Steps in installing the informixdb module:

1. Download informixdb source from
http://starship.python.net/crew/sturner/informixdb.html
2. Untar, run configure
3. Edit ext/Makefile: change CFLAGS (line 100) to include
-I${INFORMIXDIR}/incl/esql
4. Cd into ext directory
5. Run "esql _informix.ec" to generate _informix.c file
6. Cd back into parent directory
7. Run make
8. Copy informixdb.py and ext/_informixdb.so into
/usr/lib/python2.2/site-packages/

I hope this helps. I did this install on a Red Hat machine that had the
Informix SDK installed, so I had the esql command available. If you
don't have esql available, then I'm not sure what you'll need to do.

Good luck!

Jul 18 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.