summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2009-12-24 13:30:58 (GMT)
committerRonald Oussoren <ronaldoussoren@mac.com>2009-12-24 13:30:58 (GMT)
commit92919a66d2bd4641a83edff4356805280d77a068 (patch)
treeb3a14baded017d5a0b02eb871dc1bd808b6bdf24 /Lib/idlelib
parent1a13cff7a59a1301a220d721088cb98f2feec7ad (diff)
downloadcpython-92919a66d2bd4641a83edff4356805280d77a068.zip
cpython-92919a66d2bd4641a83edff4356805280d77a068.tar.gz
cpython-92919a66d2bd4641a83edff4356805280d77a068.tar.bz2
Issue #6834: replace the implementation for the 'python' and 'pythonw' executables on OSX.
The previous implementation used execv(2) to run the real interpreter, which means that you cannot use the arch(1) tool to select the architecture you want to use for a universal build because that only affects the python/pythonw wrapper and not the actual interpreter. The new version uses posix_spawnv with a number of OSX-specific options that ensure that the real interpreter is started using the same CPU architecture as the wrapper, and that means that 'arch -ppc python' now actually works. I've also changed the way that the wrapper looks for the framework: it is now linked to the framework rather than hardcoding the framework path. This should make it easier to provide pythonw support in tools like virtualenv.
Diffstat (limited to 'Lib/idlelib')
-rw-r--r--Lib/idlelib/macosxSupport.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/idlelib/macosxSupport.py b/Lib/idlelib/macosxSupport.py
index 8f86ca6..03a1458 100644
--- a/Lib/idlelib/macosxSupport.py
+++ b/Lib/idlelib/macosxSupport.py
@@ -5,13 +5,19 @@ GUI application (as opposed to an X11 application).
import sys
import Tkinter
+
+_appbundle = None
+
def runningAsOSXApp():
"""
Returns True if Python is running from within an app on OSX.
If so, assume that Python was built with Aqua Tcl/Tk rather than
X11 Tcl/Tk.
"""
- return (sys.platform == 'darwin' and '.app' in sys.executable)
+ global _appbundle
+ if _appbundle is None:
+ _appbundle = (sys.platform == 'darwin' and '.app' in sys.executable)
+ return _appbundle
def addOpenEventSupport(root, flist):
"""