Repository: python-pillow/Pillow

Issue:
Flags --disable-tcl and --disable-tk ignored
The flags --disable-tcl --disable-tk appear to be ignored. As it attempts to link against Tkinter even when it is expressly forbidden. I should add that I am using Mac OS 10.9 with Python 2.7.9.



Discussion:
@jakirkham Appear to be ignored, or are actually ignored? You may want to paste your build output or give some more detail; I'm not sure we've heard this one before.


Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -464,7 +464,7 @@ def build_extensions(self):
                 if _find_library_file(self, "lcms2"):
                     feature.lcms = "lcms2"
                 elif _find_library_file(self, "lcms2_static"):
-                    #alternate Windows name.
+                    # alternate Windows name.
                     feature.lcms = "lcms2_static"
 
         if _tkinter and _find_include_file(self, "tk.h"):
@@ -571,32 +571,33 @@ def build_extensions(self):
             exts.append(Extension(
                 "PIL._webp", ["_webp.c"], libraries=libs, define_macros=defs))
 
-        if sys.platform == "darwin":
-            # locate Tcl/Tk frameworks
-            frameworks = []
-            framework_roots = [
-                "/Library/Frameworks",
-                "/System/Library/Frameworks"]
-            for root in framework_roots:
-                if (
-                        os.path.exists(os.path.join(root, "Tcl.framework")) and
-                        os.path.exists(os.path.join(root, "Tk.framework"))):
-                    print("--- using frameworks at %s" % root)
-                    frameworks = ["-framework", "Tcl", "-framework", "Tk"]
-                    dir = os.path.join(root, "Tcl.framework", "Headers")
-                    _add_directory(self.compiler.include_dirs, dir, 0)
-                    dir = os.path.join(root, "Tk.framework", "Headers")
-                    _add_directory(self.compiler.include_dirs, dir, 1)
-                    break
-            if frameworks:
+        if feature.tcl and feature.tk:
+            if sys.platform == "darwin":
+                # locate Tcl/Tk frameworks
+                frameworks = []
+                framework_roots = [
+                    "/Library/Frameworks",
+                    "/System/Library/Frameworks"]
+                for root in framework_roots:
+                    root_tcl = os.path.join(root, "Tcl.framework")
+                    root_tk = os.path.join(root, "Tk.framework")
+                    if (os.path.exists(root_tcl) and os.path.exists(root_tk)):
+                        print("--- using frameworks at %s" % root)
+                        frameworks = ["-framework", "Tcl", "-framework", "Tk"]
+                        dir = os.path.join(root_tcl, "Headers")
+                        _add_directory(self.compiler.include_dirs, dir, 0)
+                        dir = os.path.join(root_tk, "Headers")
+                        _add_directory(self.compiler.include_dirs, dir, 1)
+                        break
+                if frameworks:
+                    exts.append(Extension(
+                        "PIL._imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"],
+                        extra_compile_args=frameworks,
+                        extra_link_args=frameworks))
+            else:
                 exts.append(Extension(
                     "PIL._imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"],
-                    extra_compile_args=frameworks, extra_link_args=frameworks))
-                feature.tcl = feature.tk = 1  # mark as present
-        elif feature.tcl and feature.tk:
-            exts.append(Extension(
-                "PIL._imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"],
-                libraries=[feature.tcl, feature.tk]))
+                    libraries=[feature.tcl, feature.tk]))
 
         if os.path.isfile("_imagingmath.c"):
             exts.append(Extension("PIL._imagingmath", ["_imagingmath.c"]))


Test patch: