mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.3 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()
 |