mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +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()
 | 
