mirror of https://github.com/python/cpython
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
"""macfreeze - Main program and GUI
|
|
|
|
macfreeze allows you to turn Python scripts into fully self-contained
|
|
Mac applications, by including all the Python and C code needed in a single
|
|
executable. Like unix/windows freeze it can produce a config.c allowing you
|
|
to build the application with a development environment (CodeWarrior, to be
|
|
precise), but unlike the standard freeze it is also possible to create frozen
|
|
applications without a development environment, by glueing all the
|
|
shared libraries and extension modules needed together in a single
|
|
executable, using some Code Fragment Manager tricks."""
|
|
|
|
import macfs
|
|
import sys
|
|
import EasyDialogs
|
|
import string
|
|
|
|
import macfreezegui
|
|
import macmodulefinder
|
|
|
|
#
|
|
# Here are the macfreeze directives, used when freezing macfreeze itself
|
|
# (see directives.py for an explanation)
|
|
#
|
|
# macfreeze: path ::::Tools:freeze
|
|
# macfreeze: exclude win32api
|
|
#
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
gentype, program, output, debug = macfreezegui.dialog()
|
|
elif len(sys.argv) == 2:
|
|
gentype, program, output, debug = macfreezegui.dialog(sys.argv[1])
|
|
else:
|
|
EasyDialog.Message(
|
|
"Please pass a single script. Additional modules can be specified with directives")
|
|
sys.exit(0)
|
|
mustwait = process(gentype, program, output, debug=debug)
|
|
if mustwait:
|
|
sys.exit(1)
|
|
|
|
def process(gentype, program, output, modules=None, module_files=None, debug=0, with_ifdef=0):
|
|
if modules is None:
|
|
modules = []
|
|
if module_files is None:
|
|
module_files = []
|
|
module_dict, missing = macmodulefinder.process(program, modules, module_files, debug)
|
|
if missing:
|
|
missing.sort()
|
|
print '** Missing modules:', string.join(missing, ' ')
|
|
sys.exit(1)
|
|
#
|
|
# And generate
|
|
#
|
|
if gentype == 'info':
|
|
import macgen_info
|
|
macgen_info.generate(output, module_dict)
|
|
return 1 # So the user can inspect it
|
|
elif gentype == 'source':
|
|
import macgen_src
|
|
warnings = macgen_src.generate(output, module_dict, debug, with_ifdef)
|
|
return warnings
|
|
elif gentype == 'resource':
|
|
import macgen_rsrc
|
|
macgen_rsrc.generate(output, module_dict, debug)
|
|
warnings = macgen_rsrc.warnings(module_dict)
|
|
return warnings
|
|
elif gentype == 'applet':
|
|
import macgen_bin
|
|
architecture = 'fat' # user should choose
|
|
macgen_bin.generate(program, output, module_dict, architecture, debug)
|
|
else:
|
|
raise 'unknown gentype', gentype
|
|
|
|
if __name__ == '__main__':
|
|
main()
|