Subject: Re: PoPy python module
From: Jason Tishler <[email-masked]>
To: Sherwood Robinson <[email-masked]>
Cc: [email-masked]
Date: Thu, 7 Jun 2001 10:47:06 -0400

Sherwood,

On Thu, Jun 07, 2001 at 09:19:02AM -0400, Sherwood Robinson wrote:
> Anyone experienced compiling the PoPy 
> (http://sourceforge.net/projects/popy) python module for PostgreSQL DB API 
> 2.0 compliant.
> 
> It is giving me  quite the time trying to get this to compile.
> 
> any help would be appreciated.

I just tried it and I was successful building and running PoPy-3.0-beta1:

    $ python
    Python 2.1 (#1, Apr 17 2001, 09:45:01) 
    [GCC 2.95.3-2 (cygwin special)] on cygwin_nt-4.01
    Type "copyright", "credits" or "license" for more information.
    >>> import PoPy
    >>> c = PoPy.connect('user=jt dbname=sanman', 1)
    >>> cursor = c.cursor()
    >>> cursor.execute('select * from pg_user')
    >>> cursor.fetchall()
    [('jt', 1004, 1, 1, 1, 1, '********', None), ('postgres', 1005, 1, 0, 1, 1, '********', None)]

Unfortunately, this process uncovered some issues:

1. The attached patch needs to be applied in order for PoPy to build
cleanly under Cygwin (and Win32 if appropriate).  Note that the essence
of this patch is very common -- I have submitted numerous ones that are
now part of Python CVS and to other projects such as python-ldap.

I recommend that you submit this patch to PoPy for consideration to be
included in PoPy CVS.

The procedure to apply the patch is as follows:

    $ # save the attachment to /tmp
    $ cd PoPy-3.0-beta1
    $ patch -p1 </tmp/PoPy-3.0-beta1.patch

2. It appears that PoPy is attempting to include files that are not
part of the Cygwin PostgreSQL distribution.  Note that I produced this
distribution using the typical "make install".  Hence, I am currently
at a loss as to why these files are missing.  I am going to attempt to
find out whether or not these files are truly missing or that PoPy is
incorrectly including files that are really only part of the source tree.
If files are missing from the Cygwin PostgreSQL distribution, then I
re-release the distribution with the missing files included.

Nevertheless, if you download and unpack PostgreSQL 7.1.2 and create the
following symlinks, then you should be able to build PoPy yourself:

    $ ln -s ~/src/postgresql-7.1.2/src/include/utils /usr/include/postgresql/utils
    $ ln -s ~/src/postgresql-7.1.2/src/include/catalog /usr/include/postgresql/catalog
    $ ln -s ~/src/postgresql-7.1.2/src/include/postgres.h /usr/include/postgresql/postgres.h

Note that the above assumes that PostgreSQL 7.1.2 is unpacked in ~/src -- you
may need to adjust the above commands to match your environment.

Jason

-- 
Jason Tishler
Director, Software Engineering       Phone: 732.264.8770 x235
Dot Hill Systems Corp.               Fax:   732.264.8798
82 Bethany Road, Suite 7             Email: [email-masked]
Hazlet, NJ 07730 USA                 WWW:   http://www.dothill.com
diff -rup PoPy-3.0-beta1.orig/PoPy.c PoPy-3.0-beta1/PoPy.c
--- PoPy-3.0-beta1.orig/PoPy.c	Mon Mar  5 10:05:21 2001
+++ PoPy-3.0-beta1/PoPy.c	Thu Jun  7 09:51:25 2001
@@ -266,11 +266,14 @@ static PyMethodDef PoPy_methods[] = {
 /*    PoPy MODULE INITIALIZATION    */
 /***************************************/
 
-void
+DL_EXPORT(void)
 initPoPy(void)
 {
 	PyObject *dict, *module;
 
+	PoPy_CursorObject_Type.ob_type = &PyType_Type;
+	PoPy_BinaryObject_Type.ob_type = &PyType_Type;
+	PoPy_ConnectionObject_Type.ob_type = &PyType_Type;
 	module = Py_InitModule3("PoPy", PoPy_methods, "");
 	dict = PyModule_GetDict(module);
 
diff -rup PoPy-3.0-beta1.orig/PoPybinary.c PoPy-3.0-beta1/PoPybinary.c
--- PoPy-3.0-beta1.orig/PoPybinary.c	Mon Mar  5 10:05:21 2001
+++ PoPy-3.0-beta1/PoPybinary.c	Thu Jun  7 09:49:28 2001
@@ -156,7 +156,7 @@ PoPy_binary_object_NEW(PyObject * self, 

 PyTypeObject PoPy_BinaryObject_Type = {
-	PyObject_HEAD_INIT(&PyType_Type) 0,
+	PyObject_HEAD_INIT(NULL) 0,
 	"binary",
 	sizeof(PoPy_BinaryObject),
 	0,
diff -rup PoPy-3.0-beta1.orig/PoPyconnection.c PoPy-3.0-beta1/PoPyconnection.c
--- PoPy-3.0-beta1.orig/PoPyconnection.c	Mon Mar  5 10:05:21 2001
+++ PoPy-3.0-beta1/PoPyconnection.c	Thu Jun  7 09:50:35 2001
@@ -322,7 +322,7 @@ PoPy_connection_object_getattr(PoPy_Conn

 PyTypeObject PoPy_ConnectionObject_Type = {
-	PyObject_HEAD_INIT(&PyType_Type) 0,
+	PyObject_HEAD_INIT(NULL) 0,
 	"ConnectionObject",
 	sizeof(PoPy_ConnectionObject),
 	0,
diff -rup PoPy-3.0-beta1.orig/PoPycursor.c PoPy-3.0-beta1/PoPycursor.c
--- PoPy-3.0-beta1.orig/PoPycursor.c	Mon Mar  5 10:05:21 2001
+++ PoPy-3.0-beta1/PoPycursor.c	Thu Jun  7 09:48:48 2001
@@ -722,7 +722,7 @@ PoPy_cursor_object_getattr(PoPy_CursorOb

 PyTypeObject PoPy_CursorObject_Type = {
-	PyObject_HEAD_INIT(&PyType_Type) 0,
+	PyObject_HEAD_INIT(NULL) 0,
 	"PoPy_CursorObject",
 	sizeof(PoPy_CursorObject),
 	0,

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple