tags 440272 + patch thanks Graham Dumpleton wrote: > I think I know what may have gone wrong here. > > In Python source code there is md5c.c and md5.h. In the md5.h file it has: > > /* Rename all exported symbols to avoid conflicts with similarly named > symbols in some systems' standard C libraries... */ > > #define MD5Init _Py_MD5Init > #define MD5Update _Py_MD5Update > #define MD5Final _Py_MD5Final > > void MD5Init(MD5_CTX *); > void MD5Update(MD5_CTX *, unsigned char *, unsigned int); > void MD5Final(unsigned char [16], MD5_CTX *); > > If when the Python package was Debianised, whoever did it added > additional -I flags at the start of the CPPFLAGS passed to the > compiler such that instead of picking up md5.h from the Python source > directory, it picked up one from some system include directory, or > from another package, then the symbols would not have been namespace > prefixed like they should have. > > As a result, just for Debian package of Python, the symbols wouldn't > be namespaced and thus why this problem only appears on Linux systems > derived from Debian packages. > > The only way therefore of fixing this may be to review the Debian > package build scripts around Python to see if they do do something > with -I as a described. Simple fix may then be to append the -I flags > rather than prepend them. Otherwise, would be necessary to patch > md5c.c in Python source code to move the #defines into it just before > "md5.h" is included. That way the namespace prefixing will occur even > if wrong "md5.h" is included. One would hope though in this case that > the "md5.h" file actually used is compatible with the md5c.c file in > Python. > > Graham
I'll offer an alternate theory. From the python2.4 Debian changelog,
python2.4 (2.4dfsg-1) unstable; urgency=medium
[...]
* Replace md5 implementation with one having a DFSG conforming license.
[...]
-- Matthias Klose <[EMAIL PROTECTED]> Tue, 8 Feb 2005 19:13:10 +0100
This implementation doesn't have the #define re-definitions, and
unfortunately uses the same MD5* symbols used in other DSOs. This patch
ought to fix that. Build-tested; the symbols are properly re-defined
and the md5 module still works.
--- python2.4-2.4.4/Modules/md5.h.orig 2007-08-31 04:32:55.778928580 -0400
+++ python2.4-2.4.4/Modules/md5.h 2007-08-31 04:33:34.997163501 -0400
@@ -45,6 +45,14 @@
UWORD32 in[16];
};
+/* Rename all exported symbols to avoid conflicts with similarly named
+ symbols in other libraries */
+
+#define MD5Init _PyDFSG_MD5Init
+#define MD5Update _PyDFSG_MD5Update
+#define MD5Final _PyDFSG_MD5Final
+#define MD5Transform _PyDFSG_MD5Transform
+
void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len);
void MD5Final(unsigned char digest[16], struct MD5Context *context);
--
Robert Edmonds
[EMAIL PROTECTED]
signature.asc
Description: Digital signature

