On Tue, Jul 14, 2009 at 11:48 PM, Sridhar Ratnakumar<sridh...@activestate.com> wrote: > Jeff Hobbs pointed out that using tcl stubs is the correct thing to do in > order to ensure compatibility with different versions of Tcl/Tk libraries > installed. Since this is not an issue with python.org's Python (whose 2.5 > version comes with Tcl/Tk 8.4), I do not consider this a severe issue, > however, having this fixed will at least make PIL work against some of the > custom Python installations (of which ActivePython is just one of them).
Actually, good idea. Here's a patch: http://git.kitsu.ru/patched/pil.git?a=commitdiff;h=34b332238afbdd22a27f9e66905df60f8856e74c (just ignore setup-df-mingw.py and setup-df.py) Or here, if gmail doesn't screw it up: diff --git a/Tk/tkImaging.c b/Tk/tkImaging.c index 5e37d05..3ddace5 100644 --- a/Tk/tkImaging.c +++ b/Tk/tkImaging.c @@ -240,6 +240,12 @@ PyImagingPhotoGet(ClientData clientdata, Tcl_Interp* interp, void TkImaging_Init(Tcl_Interp* interp) { +#ifdef USE_TCL_STUBS + Tcl_InitStubs(interp, TCL_VERSION, 0); +#endif +#ifdef USE_TK_STUBS + Tk_InitStubs(interp, TK_VERSION, 0); +#endif Tcl_CreateCommand(interp, "PyImagingPhoto", PyImagingPhotoPut, (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); Tcl_CreateCommand(interp, "PyImagingPhotoGet", PyImagingPhotoGet, diff --git a/setup.py b/setup.py index aee3d2d..2a64576 100644 --- a/setup.py +++ b/setup.py @@ -211,6 +211,7 @@ class pil_build_ext(build_ext): class feature: zlib = jpeg = tiff = freetype = tcl = tk = None + tclstub = tkstub = False feature = feature() if find_library_file(self, "z"): @@ -250,11 +251,23 @@ class pil_build_ext(build_ext): if _tkinter: # the library names may vary somewhat (e.g. tcl84 or tcl8.4) version = TCL_VERSION[0] + TCL_VERSION[2] - if find_library_file(self, "tcl" + version): + if find_library_file(self, "tclstub" + version): + feature.tcl = "tclstub" + version + feature.tclstub = True + elif find_library_file(self, "tclstub" + TCL_VERSION): + feature.tcl = "tclstub" + TCL_VERSION + feature.tclstub = True + elif find_library_file(self, "tcl" + version): feature.tcl = "tcl" + version elif find_library_file(self, "tcl" + TCL_VERSION): feature.tcl = "tcl" + TCL_VERSION - if find_library_file(self, "tk" + version): + if find_library_file(self, "tkstub" + version): + feature.tk = "tkstub" + version + feature.tkstub = True + elif find_library_file(self, "tkstub" + TCL_VERSION): + feature.tk = "tkstub" + TCL_VERSION + feature.tkstub = True + elif find_library_file(self, "tk" + version): feature.tk = "tk" + version elif find_library_file(self, "tk" + TCL_VERSION): feature.tk = "tk" + TCL_VERSION @@ -326,9 +339,15 @@ class pil_build_ext(build_ext): )) feature.tcl = feature.tk = 1 # mark as present elif feature.tcl and feature.tk: + tkdefs = [] + if feature.tclstub: + tkdefs.append(("USE_TCL_STUBS",None)) + if feature.tkstub: + tkdefs.append(("USE_TK_STUBS",None)) exts.append(Extension( "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], - libraries=[feature.tcl, feature.tk] + libraries=[feature.tcl, feature.tk], + define_macros=tkdefs )) if os.path.isfile("_imagingmath.c"): _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig