Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 1 | # |
| 2 | # fullbuild creates everything that needs to be created before a |
| 3 | # distribution can be made, and puts it all in the right place. |
| 4 | # |
| 5 | # It expects the projects to be in the places where Jack likes them: |
| 6 | # in directories named like 'build.macppc.shared'. That is fixable, |
| 7 | # however. |
| 8 | # |
| 9 | # NOTE: You should proably make a copy of python with which to execute this |
| 10 | # script, rebuilding running programs does not work... |
| 11 | |
| 12 | import os |
| 13 | import sys |
| 14 | import macfs |
Jack Jansen | 1023dff | 1996-02-21 15:28:49 +0000 | [diff] [blame] | 15 | import MacOS |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 16 | import EasyDialogs |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 17 | |
| 18 | import addpack |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 19 | import aetools |
Jack Jansen | 1023dff | 1996-02-21 15:28:49 +0000 | [diff] [blame] | 20 | import AppleEvents |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 21 | from Metrowerks_Shell_Suite import Metrowerks_Shell_Suite |
| 22 | from Required_Suite import Required_Suite |
| 23 | |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 24 | import mkapplet |
| 25 | |
| 26 | class MwShell(aetools.TalkTo, Metrowerks_Shell_Suite, Required_Suite): |
| 27 | pass |
| 28 | |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 29 | RUNNING=[] |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 30 | |
| 31 | def buildmwproject(top, creator, projects): |
| 32 | """Build projects with an MW compiler""" |
Jack Jansen | b9e5e14 | 1996-09-20 15:30:52 +0000 | [diff] [blame] | 33 | mgr = MwShell(creator, start=1) |
Jack Jansen | 1023dff | 1996-02-21 15:28:49 +0000 | [diff] [blame] | 34 | mgr.send_timeout = AppleEvents.kNoTimeOut |
| 35 | |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 36 | for file in projects: |
| 37 | file = os.path.join(top, file) |
| 38 | fss = macfs.FSSpec(file) |
| 39 | print 'Building', file |
| 40 | mgr.open(fss) |
Jack Jansen | 1023dff | 1996-02-21 15:28:49 +0000 | [diff] [blame] | 41 | try: |
| 42 | mgr.Make_Project() |
Jack Jansen | b9e5e14 | 1996-09-20 15:30:52 +0000 | [diff] [blame] | 43 | except aetools.Error, arg: |
| 44 | print '** Failed:', arg |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 45 | mgr.Close_Project() |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 46 | ## mgr.quit() |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 47 | |
| 48 | def buildapplet(top, dummy, list): |
| 49 | """Create a PPC python applet""" |
| 50 | template = mkapplet.findtemplate() |
| 51 | for src in list: |
| 52 | if src[-3:] != '.py': |
| 53 | raise 'Should end in .py', src |
| 54 | base = os.path.basename(src) |
| 55 | dst = os.path.join(top, base)[:-3] |
| 56 | src = os.path.join(top, src) |
| 57 | try: |
| 58 | os.unlink(dst) |
| 59 | except os.error: |
| 60 | pass |
| 61 | print 'Building applet', dst |
| 62 | mkapplet.process(template, src, dst) |
| 63 | |
| 64 | # |
| 65 | # The build instructions. Entries are (routine, arg, list-of-files) |
| 66 | # XXXX We could also include the builds for stdwin and such here... |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 67 | PPC_INSTRUCTIONS=[ |
Jack Jansen | b39a5d7 | 1995-10-09 23:19:30 +0000 | [diff] [blame] | 68 | (buildmwproject, "CWIE", [ |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 69 | ":build.macppc.shared:PythonCorePPC.µ", |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 70 | ":build.macppc.shared:PythonPPC.µ", |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 71 | ":build.macppc.shared:PythonAppletPPC.µ", |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 72 | ]) |
| 73 | ] |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 74 | CFM68K_INSTRUCTIONS=[ |
| 75 | (buildmwproject, "CWIE", [ |
| 76 | ":build.mac68k.shared:PythonCoreCFM68K.µ", |
| 77 | ":build.mac68k.shared:PythonCFM68K.µ", |
| 78 | ":build.mac68k.shared:PythonAppletCFM68K.µ", |
| 79 | ]) |
| 80 | ] |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 81 | FAT_INSTRUCTIONS=[ |
| 82 | (buildmwproject, "CWIE", [ |
| 83 | ":build.macppc.shared:Python.µ", |
| 84 | ":build.macppc.shared:PythonApplet.µ", |
| 85 | ]) |
| 86 | ] |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 87 | PLUGIN_INSTRUCTIONS=[ |
| 88 | (buildmwproject, "CWIE", [ |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 89 | ":PlugIns:ctb.ppc.µ", |
Jack Jansen | e1d325f | 1996-12-23 16:56:19 +0000 | [diff] [blame] | 90 | ":PlugIns:gdbm.ppc.µ", |
Jack Jansen | 52e87f3 | 1997-01-07 16:24:18 +0000 | [diff] [blame] | 91 | ":PlugIns:icglue.ppc.µ", |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 92 | ":PlugIns:imgmodules.ppc.µ", |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 93 | ":PlugIns:macspeech.ppc.µ", |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 94 | ":PlugIns:toolboxmodules.ppc.µ", |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 95 | ":PlugIns:qtmodules.ppc.µ", |
| 96 | ":PlugIns:waste.ppc.µ", |
| 97 | ":PlugIns:_tkinter.ppc.µ", |
Jack Jansen | ab78656 | 1997-02-20 15:27:44 +0000 | [diff] [blame] | 98 | ":PlugIns:calldll.ppc.µ", |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 99 | ]) |
| 100 | ] |
| 101 | CFM68KPLUGIN_INSTRUCTIONS=[ |
| 102 | (buildmwproject, "CWIE", [ |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 103 | ":PlugIns:ctb.CFM68K.µ", |
Jack Jansen | e1d325f | 1996-12-23 16:56:19 +0000 | [diff] [blame] | 104 | ":PlugIns:gdbm.CFM68K.µ", |
Jack Jansen | 52e87f3 | 1997-01-07 16:24:18 +0000 | [diff] [blame] | 105 | ":PlugIns:icglue.CFM68K.µ", |
Jack Jansen | d2034c1 | 1996-10-23 15:51:35 +0000 | [diff] [blame] | 106 | ":PlugIns:imgmodules.CFM68K.µ", |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 107 | ":PlugIns:toolboxmodules.CFM68K.µ", |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 108 | ":PlugIns:qtmodules.CFM68K.µ", |
| 109 | ":PlugIns:waste.CFM68K.µ", |
| 110 | ":PlugIns:_tkinter.CFM68K.µ", |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 111 | ]) |
| 112 | ] |
| 113 | M68K_INSTRUCTIONS=[ |
| 114 | (buildmwproject, "CWIE", [ |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 115 | ":build.mac68k.stand:Python68K.µ", |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 116 | ]) |
| 117 | ] |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 118 | PPCSTAND_INSTRUCTIONS=[ |
| 119 | (buildmwproject, "CWIE", [ |
| 120 | ":build.macppc.stand:PythonStandalone.µ", |
| 121 | ]) |
| 122 | ] |
Jack Jansen | 52e87f3 | 1997-01-07 16:24:18 +0000 | [diff] [blame] | 123 | EXTENSION_INSTRUCTIONS=[ |
| 124 | (buildmwproject, "CWIE", [ |
| 125 | ":Extensions:Imaging:_imaging.ppc.µ", |
| 126 | ":Extensions:Imaging:_imaging.CFM68K.µ", |
Jack Jansen | 02dee9b | 1997-01-31 16:13:26 +0000 | [diff] [blame] | 127 | ":Extensions:Imaging:_tkinter.ppc.µ", |
| 128 | ":Extensions:Imaging:_tkinter.CFM68K.µ", |
Jack Jansen | 52e87f3 | 1997-01-07 16:24:18 +0000 | [diff] [blame] | 129 | ":Extensions:NumPy:numpymodules.ppc.µ", |
| 130 | ":Extensions:NumPy:numpymodules.CFM68K.µ", |
| 131 | ]) |
| 132 | ] |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 133 | APPLET_INSTRUCTIONS=[ |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 134 | (buildapplet, None, [ |
| 135 | ":Mac:scripts:EditPythonPrefs.py", |
| 136 | ":Mac:scripts:mkapplet.py", |
Jack Jansen | b39a5d7 | 1995-10-09 23:19:30 +0000 | [diff] [blame] | 137 | ":Mac:scripts:MkPluginAliases.py" |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 138 | ]) |
| 139 | ] |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 140 | |
| 141 | ALLINST=[ |
| 142 | ("PPC shared executable", PPC_INSTRUCTIONS), |
| 143 | ("PPC plugin modules", PLUGIN_INSTRUCTIONS), |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 144 | ("CFM68K shared executable", CFM68K_INSTRUCTIONS), |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 145 | ("CFM68K plugin modules", CFM68KPLUGIN_INSTRUCTIONS), |
| 146 | ("FAT shared executables", FAT_INSTRUCTIONS), |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 147 | ("68K standalone executable", M68K_INSTRUCTIONS), |
Jack Jansen | 0579715 | 1996-08-23 15:52:56 +0000 | [diff] [blame] | 148 | ("PPC standalone executable", PPCSTAND_INSTRUCTIONS), |
Jack Jansen | 52e87f3 | 1997-01-07 16:24:18 +0000 | [diff] [blame] | 149 | ("Extensions", EXTENSION_INSTRUCTIONS), |
Jack Jansen | 25b361f | 1996-08-20 16:35:30 +0000 | [diff] [blame] | 150 | ("Applets", APPLET_INSTRUCTIONS) |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 151 | ] |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 152 | |
| 153 | def main(): |
| 154 | dir, ok = macfs.GetDirectory('Python source folder:') |
| 155 | if not ok: |
| 156 | sys.exit(0) |
| 157 | dir = dir.as_pathname() |
Jack Jansen | f04fa72 | 1996-04-10 14:51:14 +0000 | [diff] [blame] | 158 | INSTRUCTIONS = [] |
| 159 | for string, inst in ALLINST: |
| 160 | answer = EasyDialogs.AskYesNoCancel("Build %s?"%string, 1) |
| 161 | if answer < 0: |
| 162 | sys.exit(0) |
| 163 | if answer: |
| 164 | INSTRUCTIONS = INSTRUCTIONS + inst |
Jack Jansen | 6655c4e | 1995-09-01 12:03:32 +0000 | [diff] [blame] | 165 | for routine, arg, list in INSTRUCTIONS: |
| 166 | routine(dir, arg, list) |
| 167 | print "All done!" |
| 168 | sys.exit(1) |
| 169 | |
| 170 | if __name__ == '__main__': |
| 171 | main() |
| 172 | |