Commit d83831a8 authored by Jack Jansen's avatar Jack Jansen

Added a --python option, which sets the python to be used in the #! line

in the bootstrap script of the applet.
parent b9311676
...@@ -332,6 +332,9 @@ class AppBuilder(BundleBuilder): ...@@ -332,6 +332,9 @@ class AppBuilder(BundleBuilder):
# If True, build standalone app. # If True, build standalone app.
standalone = 0 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 # If True, add a real main program that emulates sys.argv before calling
# mainprogram # mainprogram
argv_emulation = 0 argv_emulation = 0
...@@ -442,6 +445,8 @@ class AppBuilder(BundleBuilder): ...@@ -442,6 +445,8 @@ class AppBuilder(BundleBuilder):
# XXX we're screwed when the end user has deleted # XXX we're screwed when the end user has deleted
# /usr/bin/python # /usr/bin/python
hashbang = "/usr/bin/python" hashbang = "/usr/bin/python"
elif self.python:
hashbang = self.python
else: else:
hashbang = os.path.realpath(sys.executable) hashbang = os.path.realpath(sys.executable)
standalone = self.standalone standalone = self.standalone
...@@ -706,6 +711,7 @@ Options: ...@@ -706,6 +711,7 @@ Options:
--link-exec symlink the executable instead of copying it --link-exec symlink the executable instead of copying it
--standalone build a standalone application, which is fully --standalone build a standalone application, which is fully
independent of a Python installation 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 --lib=FILE shared library or framework to be copied into
the bundle the bundle
-x, --exclude=MODULE exclude module (with --standalone) -x, --exclude=MODULE exclude module (with --standalone)
...@@ -732,7 +738,7 @@ def main(builder=None): ...@@ -732,7 +738,7 @@ def main(builder=None):
"mainprogram=", "creator=", "nib=", "plist=", "link", "mainprogram=", "creator=", "nib=", "plist=", "link",
"link-exec", "help", "verbose", "quiet", "argv", "standalone", "link-exec", "help", "verbose", "quiet", "argv", "standalone",
"exclude=", "include=", "package=", "strip", "iconfile=", "exclude=", "include=", "package=", "strip", "iconfile=",
"lib=") "lib=", "python=")
try: try:
options, args = getopt.getopt(sys.argv[1:], shortopts, longopts) options, args = getopt.getopt(sys.argv[1:], shortopts, longopts)
...@@ -780,6 +786,8 @@ def main(builder=None): ...@@ -780,6 +786,8 @@ def main(builder=None):
builder.verbosity -= 1 builder.verbosity -= 1
elif opt == '--standalone': elif opt == '--standalone':
builder.standalone = 1 builder.standalone = 1
elif opt == '--python':
builder.python = arg
elif opt in ('-x', '--exclude'): elif opt in ('-x', '--exclude'):
builder.excludeModules.append(arg) builder.excludeModules.append(arg)
elif opt in ('-i', '--include'): elif opt in ('-i', '--include'):
......
...@@ -53,8 +53,8 @@ def buildapplet(): ...@@ -53,8 +53,8 @@ def buildapplet():
buildtools.process(template, filename, dstfilename, 1) buildtools.process(template, filename, dstfilename, 1)
else: else:
SHORTOPTS = "o:r:ne:v?" SHORTOPTS = "o:r:ne:v?P"
LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help") LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help", "python=")
try: try:
options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS) options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
except getopt.error: except getopt.error:
...@@ -78,6 +78,11 @@ def buildapplet(): ...@@ -78,6 +78,11 @@ def buildapplet():
if ':' in arg: if ':' in arg:
arg = arg.split(':') arg = arg.split(':')
extras.append(arg) 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'): elif opt in ('-v', '--verbose'):
verbose = Verbose() verbose = Verbose()
elif opt in ('-?', '--help'): elif opt in ('-?', '--help'):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment