setupext.py chooses tk on mac OS X incorrectly

Adam: sorry, I didn't mean to just send that straight to you. gmail
decided its default would be to send to you and not the mailing list.

Everyone else: The message that was supposed to go to the list:

I was looking at setupext.py and I am thinking that we could just
change the add_tk_flags function.

My idea is to remove the elif sys.platform == "darwin" section and
always go to the else.

In the except line after trying query_tcltk() we can add a check for
darwin and have it search the normal framework locations, or even put
an if sys.platform == "darwin" that goes for the frameworks in
hardcoded_tclconfig().

In the else line after that we could do a check to see if the returned
tcl/tk libs and version match any normal system framework paths (in
$HOME/Library/Frameworks, /System/Library and
/System/Library/Frameworks) or even just look at the library name or
some
other method to determine if it is a framework and add the "-framework
Tcl -framework Tk" flags to module.extra_link_args and
module.extra_compile_args if they are.

Also, I was looking and I don't actually see any point around here
where it is explicitly checked if the results of query_tcltk()
correspond to a directory that is in basedir["darwin"].

As an aside, we could add to hardcoded_tclconfig() to surf the
directories returned from add_base_flags / basedir["darwin"] instead
of the directories it has. It would probably be best on all systems
to look in the basedir[os.system] directories for Tk as a last result
rather
than /usr/local

Basically, I am just sharing some of the ideas I have been playing with.

Jayson

ยทยทยท

On Thu, Feb 12, 2009 at 12:45 PM, Jayson Barr <jbarr@...694...> wrote:

I was looking at setupext.py and I am thinking that we could just
change the add_tk_flags function.

My idea is to remove the elif sys.platform == "darwin" section and
always go to the else.

In the except line after trying query_tcltk() we can add a check for
darwin and have it search the normal framework locations, or even put
an if sys.platform == "darwin" that goes for the frameworks in
hardcoded_tclconfig().

In the else line after that we could do a check to see if the returned
tcl/tk libs and version match any normal system framework paths (in
$HOME/Library/Frameworks, /System/Library and
/System/Library/Frameworks) or even just look at the library or some
other method to determine if it is a framework and add the "-framework
Tcl -framework Tk" flags to module.extra_link_args and
module.extra_compile_args if they are.

Also, I was looking and I don't actually see any point around here
where it is explicitly checked if the results of query_tcltk()
corrsepond to a directory that is in basedir["darwin"].

As an aside, we could add to hardcoded_tclconfig() to surf the
directories returned from add_base_flags / basedir["darwin"] instead
of the directories it has. It would probably be best on all systems
to look in the basedir[os.system] directories as a last result rather
than /usr/local

Basically, I am just sharing some of the ideas I have been playing with.

Jayson

On Tue, Feb 10, 2009 at 9:54 AM, Adam Mercer <ramercer@...149...> wrote:

On Mon, Feb 9, 2009 at 17:08, Jayson Barr <jbarr@...694...> wrote:

I agree with JDH.

Likewise.

Unfortunately, work has been exceptionally hectic so I haven't begun
the patch (if you don't count the hack job I did to install it for
myself).

Same here, I'm really busy with work and don't have much time to look
into this at the moment.

Hi Adam,
As noted above, I haven't started a patch yet but I would be up for
working with you on one. It sounds like we can get this tested pretty
well.

Its on my todo list, so when I get chance I'm going to investigate a
better solution. I'll keep you posted.

Cheers

Adam