| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | # | 
					
						
							|  |  |  |  | # fullbuild creates everything that needs to be created before a | 
					
						
							|  |  |  |  | # distribution can be made, and puts it all in the right place. | 
					
						
							|  |  |  |  | # | 
					
						
							|  |  |  |  | # It expects the projects to be in the places where Jack likes them: | 
					
						
							|  |  |  |  | # in directories named like 'build.macppc.shared'. That is fixable, | 
					
						
							|  |  |  |  | # however. | 
					
						
							|  |  |  |  | # | 
					
						
							|  |  |  |  | # NOTE: You should proably make a copy of python with which to execute this | 
					
						
							|  |  |  |  | # script, rebuilding running programs does not work... | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import os | 
					
						
							|  |  |  |  | import sys | 
					
						
							|  |  |  |  | import macfs | 
					
						
							| 
									
										
										
										
											1996-02-21 15:28:49 +00:00
										 |  |  |  | import MacOS | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | import EasyDialogs | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | import addpack | 
					
						
							|  |  |  |  | import aetools | 
					
						
							| 
									
										
										
										
											1996-02-21 15:28:49 +00:00
										 |  |  |  | import AppleEvents | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | from Metrowerks_Shell_Suite import Metrowerks_Shell_Suite | 
					
						
							|  |  |  |  | from Required_Suite import Required_Suite  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | addpack.addpack('Mac') | 
					
						
							|  |  |  |  | addpack.addpack('scripts') | 
					
						
							|  |  |  |  | import mkapplet | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class MwShell(aetools.TalkTo, Metrowerks_Shell_Suite, Required_Suite): | 
					
						
							|  |  |  |  | 	pass | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | RUNNING=[] | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | def buildmwproject(top, creator, projects): | 
					
						
							|  |  |  |  | 	"""Build projects with an MW compiler""" | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 	if not creator in RUNNING: | 
					
						
							|  |  |  |  | 		print 'Please start project mgr with signature', creator,'-' | 
					
						
							|  |  |  |  | 		sys.stdin.readline() | 
					
						
							|  |  |  |  | 		RUNNING.append(creator) | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	try: | 
					
						
							|  |  |  |  | 		mgr = MwShell(creator) | 
					
						
							|  |  |  |  | 	except 'foo': | 
					
						
							|  |  |  |  | 		print 'Not handled:', creator | 
					
						
							|  |  |  |  | 		return | 
					
						
							| 
									
										
										
										
											1996-02-21 15:28:49 +00:00
										 |  |  |  | 	mgr.send_timeout = AppleEvents.kNoTimeOut | 
					
						
							|  |  |  |  | 	 | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	for file in projects: | 
					
						
							|  |  |  |  | 		file = os.path.join(top, file) | 
					
						
							|  |  |  |  | 		fss = macfs.FSSpec(file) | 
					
						
							|  |  |  |  | 		print 'Building', file | 
					
						
							|  |  |  |  | 		mgr.open(fss) | 
					
						
							| 
									
										
										
										
											1996-02-21 15:28:49 +00:00
										 |  |  |  | 		try: | 
					
						
							|  |  |  |  | 			mgr.Make_Project() | 
					
						
							|  |  |  |  | 		except MacOS.Error, arg: | 
					
						
							|  |  |  |  | 			print '** Failed. Possible error:', arg | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 		mgr.Close_Project() | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | ##	mgr.quit() | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	 | 
					
						
							|  |  |  |  | def buildapplet(top, dummy, list): | 
					
						
							|  |  |  |  | 	"""Create a PPC python applet""" | 
					
						
							|  |  |  |  | 	template = mkapplet.findtemplate() | 
					
						
							|  |  |  |  | 	for src in list: | 
					
						
							|  |  |  |  | 		if src[-3:] != '.py': | 
					
						
							|  |  |  |  | 			raise 'Should end in .py', src | 
					
						
							|  |  |  |  | 		base = os.path.basename(src) | 
					
						
							|  |  |  |  | 		dst = os.path.join(top, base)[:-3] | 
					
						
							|  |  |  |  | 		src = os.path.join(top, src) | 
					
						
							|  |  |  |  | 		try: | 
					
						
							|  |  |  |  | 			os.unlink(dst) | 
					
						
							|  |  |  |  | 		except os.error: | 
					
						
							|  |  |  |  | 			pass | 
					
						
							|  |  |  |  | 		print 'Building applet', dst | 
					
						
							|  |  |  |  | 		mkapplet.process(template, src, dst) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # | 
					
						
							|  |  |  |  | # The build instructions. Entries are (routine, arg, list-of-files) | 
					
						
							|  |  |  |  | # XXXX We could also include the builds for stdwin and such here... | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | PPC_INSTRUCTIONS=[ | 
					
						
							| 
									
										
										
										
											1995-10-09 23:19:30 +00:00
										 |  |  |  | 	(buildmwproject, "CWIE", [ | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 		":build.macppc.shared:PythonCore.<2E>", | 
					
						
							|  |  |  |  | 		":build.macppc.shared:PythonPPC.<2E>", | 
					
						
							|  |  |  |  | 		":build.macppc.shared:PythonApplet.<2E>", | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 	]) | 
					
						
							|  |  |  |  | ] | 
					
						
							|  |  |  |  | PLUGIN_INSTRUCTIONS=[ | 
					
						
							|  |  |  |  | 	(buildmwproject, "CWIE", [ | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 		":PlugIns:ctbmodule.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:imgmodules.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:macspeechmodule.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:mactcpmodules.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:stdwinmodule.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:toolboxmodules.<2E>", | 
					
						
							| 
									
										
										
										
											1996-05-20 11:29:41 +00:00
										 |  |  |  | 		":PlugIns:wastemodule.<2E>", | 
					
						
							|  |  |  |  | 		":PlugIns:_tkintermodule.<2E>", | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 	]) | 
					
						
							|  |  |  |  | ] | 
					
						
							|  |  |  |  | M68K_INSTRUCTIONS=[ | 
					
						
							|  |  |  |  | 	(buildmwproject, "CWIE", [ | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 		":build.mac68k.stand:Python68K.<2E>", | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 	]) | 
					
						
							|  |  |  |  | ] | 
					
						
							|  |  |  |  | APPLET_INSTRUCTIONS=[ | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	(buildapplet, None, [ | 
					
						
							|  |  |  |  | 		":Mac:scripts:EditPythonPrefs.py", | 
					
						
							|  |  |  |  | 		":Mac:scripts:mkapplet.py", | 
					
						
							| 
									
										
										
										
											1995-10-09 23:19:30 +00:00
										 |  |  |  | 		":Mac:scripts:RunLibScript.py", | 
					
						
							|  |  |  |  | 		":Mac:scripts:MkPluginAliases.py" | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	]) | 
					
						
							|  |  |  |  | ] | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ALLINST=[ | 
					
						
							|  |  |  |  | 	("PPC shared executable", PPC_INSTRUCTIONS), | 
					
						
							|  |  |  |  | 	("PPC plugin modules", PLUGIN_INSTRUCTIONS), | 
					
						
							|  |  |  |  | 	("68K executable", M68K_INSTRUCTIONS), | 
					
						
							|  |  |  |  | 	("PPC applets", APPLET_INSTRUCTIONS) | 
					
						
							|  |  |  |  | ] | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 				 | 
					
						
							|  |  |  |  | def main(): | 
					
						
							|  |  |  |  | 	dir, ok = macfs.GetDirectory('Python source folder:') | 
					
						
							|  |  |  |  | 	if not ok: | 
					
						
							|  |  |  |  | 		sys.exit(0) | 
					
						
							|  |  |  |  | 	dir = dir.as_pathname() | 
					
						
							| 
									
										
										
										
											1996-04-10 14:51:14 +00:00
										 |  |  |  | 	INSTRUCTIONS = [] | 
					
						
							|  |  |  |  | 	for string, inst in ALLINST: | 
					
						
							|  |  |  |  | 		answer = EasyDialogs.AskYesNoCancel("Build %s?"%string, 1) | 
					
						
							|  |  |  |  | 		if answer < 0: | 
					
						
							|  |  |  |  | 			sys.exit(0) | 
					
						
							|  |  |  |  | 		if answer: | 
					
						
							|  |  |  |  | 			INSTRUCTIONS = INSTRUCTIONS + inst | 
					
						
							| 
									
										
										
										
											1995-09-01 12:03:32 +00:00
										 |  |  |  | 	for routine, arg, list in INSTRUCTIONS: | 
					
						
							|  |  |  |  | 		routine(dir, arg, list) | 
					
						
							|  |  |  |  | 	print "All done!" | 
					
						
							|  |  |  |  | 	sys.exit(1)	 | 
					
						
							|  |  |  |  | 	 | 
					
						
							|  |  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |  | 	main() | 
					
						
							|  |  |  |  | 	 |