Issue409044
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2001-03-16 06:21 by idiscovery, last changed 2022-04-10 16:03 by admin. This issue is now closed.
Files | ||||
---|---|---|---|---|
File name | Uploaded | Description | Edit | |
Setup.dist.diff.gz | idiscovery, 2001-03-16 06:21 | Modules/Setup.dist context diff |
Messages (6) | |||
---|---|---|---|
msg36062 - (view) | Author: Internet Discovery (idiscovery) | Date: 2001-03-16 06:21 | |
A small patch to Modules/Setup.dist to update the Tix version to the current tix8.1.8.2 library. Also, it may be important when adding Tcl extensions like Tix to define -L/usr/local/lib *before* any possible libraries like -ltix8.1.8.2. Linux will silently pick up other installed versions of the -l libraries defpending on the ld.so settings. The attached context diff is against 2.1b1, but it should apply to any 2.x version. |
|||
msg36063 - (view) | Author: Martin v. Löwis (loewis) * | Date: 2001-03-18 10:58 | |
Logged In: YES user_id=21627 I believe Tix integration should not rely on static linkage anymore. Instead, you should do self.tk.eval("package require Tix") and rely on Tix being loaded as a dynamic Tk extension. If you agree, I'd rather encourage ripping out the Tix "support" in setup.py, Setup, and all other locations. Are you using a wrapper module Tix.py? If so, *that* would be a good addition, and it would also be the place where dynamic loading of Tix is attempted. |
|||
msg36064 - (view) | Author: Internet Discovery (idiscovery) | Date: 2001-03-18 22:36 | |
Logged In: YES user_id=33229 I would love to load Tix using package require, because that would be a "good thing", but there are some details: 1) _tkinter.c is written to declare static packages. I just followed that route for consistency. Perhaps there is no need, and _tkinter.c should be just rewritten and recommented to advise using packages. 2) I don't think [package require] will work with Freeze.py - it must be loaded static, and hence the current setup works with Freeze. 3) i think the current Windows .dsp files also imply static linking. My feeling is that we need to move the whole Tcl/Tk/Tix setup towards stubs first, then [package require], but there are a lot of platforms and combinations that need testing. And I really think we should discuss this in the newsgroup to get Cameron Laird and Jeff Hobbes involved. I also have *extremely grave reservations* about setup.py. I think I understand what it's trying to do, but I think its probably a bad approach: 1) The algoritm for finding libraries differs from the OS, which differs from OS to OS. This is even for static linking (see my original comment on -L), and 100 times worse for dynamic. 2) It hides what used to be user controlled (edit Setup) under magic. 3) The "right way" would be to have configure --with-tk ... and then have setup.py pick up info out of config.status. 4) I don't see where setup.py edits _tkinter.dsp for cross platform consitency. 5) I don't see where setup.py ties in with ActiveState's new approach. These are all cans of worms, so my thought was: put Tix in as static, and get the documentation in, for the next bug fix release. Then raise the whole issue of stubs->package require->frozen in the newsgroup, and get the issue properly explored. Don't hesitate to send me email as well idiscovery@users.sourceforge.net Mike. |
|||
msg36065 - (view) | Author: Martin v. Löwis (loewis) * | Date: 2001-03-19 18:43 | |
Logged In: YES user_id=21627 For 1), I'd say this is historic garbage (I added some of it myself), so don't be afraid to rip it out. tkappinit.c predates the times that Tcl could do dynamic loading. Also, there is no need to operate the same way for all packages; just fix Tix for now. For 2), there are more problems when freezing: In Python 2.1, setup.py will build _tkinter as a dynamic module, and you can't freeze them, anyway. So anybody who wants to freeze would need a build where _tkinter is listed in Modules/Setup. Furthermore, you typically need Tix SAM libraries, or else the binary won't be stand-alone. Then you need static versions of libtcl.a, not shared ones. Anybody who wants to freeze with Tix needs a fair amount of local configuration, so supporting freeze is more complicated. For 3), if Tix does not appear in the C files at all, it can be removed from the .dsp file as well. For setup.py: You still can use Setup if you want to. The problem I see with static linkage that _tkinter then depends on Tix, so to install Python, you'll need to install Tix first; if you build Python not to depend on Tix, you can't use it even when it gets installed. Since most people use binary distributions, they get more out of dynamic loading than they'd get from static linking. |
|||
msg36066 - (view) | Author: Internet Discovery (idiscovery) | Date: 2001-03-21 05:18 | |
Logged In: YES user_id=33229 The "Tix" patches have been resubmitted as #410231, and all of the suggestions here have been incoproated (dynamic loading, package require, Tkinter.Widget.__bases__). But this patch still remains valid for all Tk extensions, even for 2.0.x, as the -L must proceed *any* -l. Also, tix4.1.8.0 was never an official release, and most Linux releases are now distributing tix8.1.8.x. |
|||
msg36067 - (view) | Author: Guido van Rossum (gvanrossum) * | Date: 2001-03-23 02:47 | |
Logged In: YES user_id=6380 Checked in. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-10 16:03:52 | admin | set | github: 34158 |
2001-03-16 06:21:46 | idiscovery | create |