Issue 4813: On OS-X the directories searched by setup.py for Tk are in the wrong order. (original) (raw)

In function detect_tkinter_darwin of setup.py framework_dirs should be the reverse of what it is: first the user's library should be searched, then /Library, and finally /System/Library. If Tk 8.5 is installed in /Library or ~/Library make will otherwise find the headers from 8.4 but the libraries from 8.5.

Issue 4017 discusses this problem, among others, and is marked fixed, but it is still incorrect in the 2.6 and 3.0 downloads as well as in the trunk, 3.0, and 3.1 subversion repositories. It may have been "fixed" in so far as someone was able to make a .dmg by manually altering setup.py, and that's great, but it isn't fixed in the source and the problem will reappear with each new version.

This issue is no longer valid, the current search order from setup.py:

def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
    # The _tkinter module, using frameworks. Since frameworks are quite
    # different the UNIX search logic is not sharable.
    from os.path import join, exists
    framework_dirs = [
        '/Library/Frameworks',
        '/System/Library/Frameworks/',
        join(os.getenv('HOME'), '/Library/Frameworks')
    ]

    sysroot = macosx_sdk_root()

This matches the order in which the linker searches.