diff options
author | Just van Rossum <just@letterror.com> | 2003-06-20 18:56:10 (GMT) |
---|---|---|
committer | Just van Rossum <just@letterror.com> | 2003-06-20 18:56:10 (GMT) |
commit | 3166f59d2a9f3922902837db3de208c530cca89d (patch) | |
tree | eb98e7554ac14eb784c3805414908b8450e907b6 | |
parent | 4327521688baf21f67b134a21cb6398d6b72967f (diff) | |
download | cpython-3166f59d2a9f3922902837db3de208c530cca89d.zip cpython-3166f59d2a9f3922902837db3de208c530cca89d.tar.gz cpython-3166f59d2a9f3922902837db3de208c530cca89d.tar.bz2 |
Add initial standalone support for Python.framework
-rwxr-xr-x | Lib/plat-mac/bundlebuilder.py | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/Lib/plat-mac/bundlebuilder.py b/Lib/plat-mac/bundlebuilder.py index 1a15591..7c8a80a 100755 --- a/Lib/plat-mac/bundlebuilder.py +++ b/Lib/plat-mac/bundlebuilder.py @@ -284,6 +284,7 @@ if %(standalone)s: os.environ["PYTHONHOME"] = resdir os.environ["PYTHONEXECUTABLE"] = executable os.environ["DYLD_LIBRARY_PATH"] = libdir +os.environ["DYLD_FRAMEWORK_PATH"] = libdir os.execve(executable, sys.argv, os.environ) """ @@ -298,6 +299,18 @@ argvemulator.ArgvCollector().mainloop() execfile(os.path.join(os.path.split(__file__)[0], "%(realmainprogram)s")) """ +# +# When building a standalone app with Python.framework, we need to copy +# a subset from Python.framework to the bundle. The following list +# specifies exactly what items we'll copy. +# +PYTHONFRAMEWORKGOODIES = [ + "Python", # the Python core library + "Resources/English.lproj", + "Resources/Info.plist", + "Resources/version.plist", +] + class AppBuilder(BundleBuilder): @@ -331,10 +344,10 @@ class AppBuilder(BundleBuilder): # If True, build standalone app. standalone = 0 - + # If set, use this for #! lines in stead of sys.executable python = None - + # If True, add a real main program that emulates sys.argv before calling # mainprogram argv_emulation = 0 @@ -392,6 +405,9 @@ class AppBuilder(BundleBuilder): if not hasattr(self.plist, "NSPrincipalClass"): self.plist.NSPrincipalClass = "NSApplication" + if self.standalone and "Python.framework" in sys.exec_prefix: + self.addPythonFramework() + BundleBuilder.setup(self) self.plist.CFBundleExecutable = self.name @@ -474,6 +490,20 @@ class AppBuilder(BundleBuilder): if self.missingModules or self.maybeMissingModules: self.reportMissing() + def addPythonFramework(self): + # If we're building a standalone app with Python.framework, + # include a minimal subset of Python.framework + frameworkpath = sys.exec_prefix[:sys.exec_prefix.find( + "Python.framework") + len("Python.framework")] + version = sys.version[:3] + frameworkpath = pathjoin(frameworkpath, "Versions", version) + destbase = pathjoin("Contents", "Frameworks", "Python.framework", + "Versions", version) + for item in PYTHONFRAMEWORKGOODIES: + src = pathjoin(frameworkpath, item) + dst = pathjoin(destbase, item) + self.files.append((src, dst)) + def addPythonModules(self): self.message("Adding Python modules", 1) |