summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/plat-mac/bundlebuilder.py10
-rw-r--r--Mac/scripts/BuildApplet.py9
2 files changed, 16 insertions, 3 deletions
diff --git a/Lib/plat-mac/bundlebuilder.py b/Lib/plat-mac/bundlebuilder.py
index 26c3886..1a15591 100755
--- a/Lib/plat-mac/bundlebuilder.py
+++ b/Lib/plat-mac/bundlebuilder.py
@@ -332,6 +332,9 @@ 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
@@ -442,6 +445,8 @@ class AppBuilder(BundleBuilder):
# XXX we're screwed when the end user has deleted
# /usr/bin/python
hashbang = "/usr/bin/python"
+ elif self.python:
+ hashbang = self.python
else:
hashbang = os.path.realpath(sys.executable)
standalone = self.standalone
@@ -706,6 +711,7 @@ Options:
--link-exec symlink the executable instead of copying it
--standalone build a standalone application, which is fully
independent of a Python installation
+ --python=FILE Python to use in #! line in stead of current Python
--lib=FILE shared library or framework to be copied into
the bundle
-x, --exclude=MODULE exclude module (with --standalone)
@@ -732,7 +738,7 @@ def main(builder=None):
"mainprogram=", "creator=", "nib=", "plist=", "link",
"link-exec", "help", "verbose", "quiet", "argv", "standalone",
"exclude=", "include=", "package=", "strip", "iconfile=",
- "lib=")
+ "lib=", "python=")
try:
options, args = getopt.getopt(sys.argv[1:], shortopts, longopts)
@@ -780,6 +786,8 @@ def main(builder=None):
builder.verbosity -= 1
elif opt == '--standalone':
builder.standalone = 1
+ elif opt == '--python':
+ builder.python = arg
elif opt in ('-x', '--exclude'):
builder.excludeModules.append(arg)
elif opt in ('-i', '--include'):
diff --git a/Mac/scripts/BuildApplet.py b/Mac/scripts/BuildApplet.py
index 64a3d5e..e954854 100644
--- a/Mac/scripts/BuildApplet.py
+++ b/Mac/scripts/BuildApplet.py
@@ -53,8 +53,8 @@ def buildapplet():
buildtools.process(template, filename, dstfilename, 1)
else:
- SHORTOPTS = "o:r:ne:v?"
- LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help")
+ SHORTOPTS = "o:r:ne:v?P"
+ LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help", "python=")
try:
options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
except getopt.error:
@@ -78,6 +78,11 @@ def buildapplet():
if ':' in arg:
arg = arg.split(':')
extras.append(arg)
+ elif opt in ('-P', '--python'):
+ # This is a very dirty trick. We set sys.executable
+ # so that bundlebuilder will use this in the #! line
+ # for the applet bootstrap.
+ sys.executable = arg
elif opt in ('-v', '--verbose'):
verbose = Verbose()
elif opt in ('-?', '--help'):