blob: da94189eec6ac95bc6fe38b652bbf24065d76181 [file] [log] [blame]
Jack Jansend8eb8a71995-08-09 15:16:58 +00001# This python script creates Finder aliases for all the
2# dynamically-loaded modules that "live in" in a single
3# shared library.
Jack Jansend8eb8a71995-08-09 15:16:58 +00004#
Jack Jansene3c90a41996-08-28 14:19:53 +00005# This is sort-of a merger between Jack's MkPluginAliases
6# and Guido's mkaliases.
7#
8# Jack Jansen, CWI, August 1996
Jack Jansend8eb8a71995-08-09 15:16:58 +00009
Jack Jansend8eb8a71995-08-09 15:16:58 +000010import sys
Jack Jansene3c90a41996-08-28 14:19:53 +000011import os
Jack Jansenbc128731995-09-24 21:06:50 +000012import macfs
Jack Jansend0240831997-09-08 13:16:29 +000013import MacOS
Jack Jansen09dcff71997-08-27 14:11:15 +000014verbose=0
Jack Jansend8eb8a71995-08-09 15:16:58 +000015
Jack Jansend0240831997-09-08 13:16:29 +000016SPLASH_LOCATE=512
17SPLASH_REMOVE=513
18SPLASH_CFM68K=514
19SPLASH_PPC=515
20SPLASH_NUMPY=516
21
Jack Jansen25b361f1996-08-20 16:35:30 +000022ppc_goals = [
23 ("AE.ppc.slb", "toolboxmodules.ppc.slb"),
24 ("Ctl.ppc.slb", "toolboxmodules.ppc.slb"),
25 ("Dlg.ppc.slb", "toolboxmodules.ppc.slb"),
26 ("Evt.ppc.slb", "toolboxmodules.ppc.slb"),
27 ("Fm.ppc.slb", "toolboxmodules.ppc.slb"),
Jack Jansen80b53291997-09-09 13:57:59 +000028 ("Help.ppc.slb", "toolboxmodules.ppc.slb"),
Jack Jansen25b361f1996-08-20 16:35:30 +000029 ("Menu.ppc.slb", "toolboxmodules.ppc.slb"),
30 ("List.ppc.slb", "toolboxmodules.ppc.slb"),
31 ("Qd.ppc.slb", "toolboxmodules.ppc.slb"),
32 ("Res.ppc.slb", "toolboxmodules.ppc.slb"),
33 ("Scrap.ppc.slb", "toolboxmodules.ppc.slb"),
34 ("Snd.ppc.slb", "toolboxmodules.ppc.slb"),
35 ("TE.ppc.slb", "toolboxmodules.ppc.slb"),
36 ("Win.ppc.slb", "toolboxmodules.ppc.slb"),
37
38 ("Cm.ppc.slb", "qtmodules.ppc.slb"),
39 ("Qt.ppc.slb", "qtmodules.ppc.slb"),
40
41 ("imgcolormap.ppc.slb", "imgmodules.ppc.slb"),
42 ("imgformat.ppc.slb", "imgmodules.ppc.slb"),
43 ("imggif.ppc.slb", "imgmodules.ppc.slb"),
44 ("imgjpeg.ppc.slb", "imgmodules.ppc.slb"),
45 ("imgop.ppc.slb", "imgmodules.ppc.slb"),
46 ("imgpbm.ppc.slb", "imgmodules.ppc.slb"),
47 ("imgpgm.ppc.slb", "imgmodules.ppc.slb"),
48 ("imgppm.ppc.slb", "imgmodules.ppc.slb"),
49 ("imgtiff.ppc.slb", "imgmodules.ppc.slb"),
50 ("imgsgi.ppc.slb", "imgmodules.ppc.slb")
51]
52
53cfm68k_goals = [
54 ("AE.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
55 ("Ctl.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
56 ("Dlg.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
57 ("Evt.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
58 ("Fm.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
Jack Jansen80b53291997-09-09 13:57:59 +000059 ("Help.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
Jack Jansen25b361f1996-08-20 16:35:30 +000060 ("Menu.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
61 ("List.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
62 ("Qd.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
63 ("Res.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
64 ("Scrap.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
65 ("Snd.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
66 ("TE.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
67 ("Win.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
68
69 ("Cm.CFM68K.slb", "qtmodules.CFM68K.slb"),
70 ("Qt.CFM68K.slb", "qtmodules.CFM68K.slb"),
Jack Jansen3c7739a1996-10-08 09:25:02 +000071
72 ("imgcolormap.CFM68K.slb", "imgmodules.CFM68K.slb"),
73 ("imgformat.CFM68K.slb", "imgmodules.CFM68K.slb"),
74 ("imggif.CFM68K.slb", "imgmodules.CFM68K.slb"),
75 ("imgjpeg.CFM68K.slb", "imgmodules.CFM68K.slb"),
76 ("imgop.CFM68K.slb", "imgmodules.CFM68K.slb"),
77 ("imgpbm.CFM68K.slb", "imgmodules.CFM68K.slb"),
78 ("imgpgm.CFM68K.slb", "imgmodules.CFM68K.slb"),
79 ("imgppm.CFM68K.slb", "imgmodules.CFM68K.slb"),
80 ("imgtiff.CFM68K.slb", "imgmodules.CFM68K.slb"),
81 ("imgsgi.CFM68K.slb", "imgmodules.CFM68K.slb")
Jack Jansend8eb8a71995-08-09 15:16:58 +000082]
83
Jack Jansene3c90a41996-08-28 14:19:53 +000084def gotopluginfolder():
85 """Go to the plugin folder, assuming we are somewhere in the Python tree"""
86 import os
87
88 while not os.path.isdir(":Plugins"):
89 os.chdir("::")
90 os.chdir(":Plugins")
Jack Jansen09dcff71997-08-27 14:11:15 +000091 if verbose: print "current directory is", os.getcwd()
Jack Jansene3c90a41996-08-28 14:19:53 +000092
93def loadtoolboxmodules():
94 """Attempt to load the Res module"""
95 try:
96 import Res
97 except ImportError, arg:
98 err1 = arg
99 pass
100 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000101 if verbose: print 'imported Res the standard way.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000102 return
103
104 # We cannot import it. First attempt to load the cfm68k version
105 import imp
106 try:
107 dummy = imp.load_dynamic('Res', 'toolboxmodules.CFM68K.slb')
108 except ImportError, arg:
109 err2 = arg
110 pass
111 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000112 if verbose: print 'Loaded Res from toolboxmodules.CFM68K.slb.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000113 return
114
115 # Ok, try the ppc version
116 try:
117 dummy = imp.load_dynamic('Res', 'toolboxmodules.ppc.slb')
118 except ImportError, arg:
119 err3 = arg
120 pass
121 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000122 if verbose: print 'Loaded Res from toolboxmodules.ppc.slb.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000123 return
124
125 # Tough luck....
126 print "I cannot import the Res module, nor load it from either of"
127 print "toolboxmodules shared libraries. The errors encountered were:"
128 print "import Res:", err1
129 print "load from toolboxmodules.CFM68K.slb:", err2
130 print "load from toolboxmodules.ppc.slb:", err3
131 sys.exit(1)
132
Jack Jansend09deac1996-10-22 15:32:06 +0000133def getextensiondirfile(fname):
134 import macfs
135 import MACFS
136 vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, MACFS.kExtensionFolderType, 0)
137 fss = macfs.FSSpec((vrefnum, dirid, fname))
138 return fss.as_pathname()
139
140def mkcorealias(src, altsrc):
141 import string
142 import macostools
143 version = string.split(sys.version)[0]
144 dst = getextensiondirfile(src+ ' ' + version)
145 if not os.path.exists(src):
146 if not os.path.exists(altsrc):
Jack Jansen09dcff71997-08-27 14:11:15 +0000147 if verbose: print '*', src, 'not found'
Jack Jansend09deac1996-10-22 15:32:06 +0000148 return 0
149 src = altsrc
150 try:
151 os.unlink(dst)
152 except os.error:
153 pass
154 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000155 if verbose: print ' ', dst, '->', src
Jack Jansend09deac1996-10-22 15:32:06 +0000156 return 1
157
Jack Jansend8eb8a71995-08-09 15:16:58 +0000158
159def main():
Jack Jansend0240831997-09-08 13:16:29 +0000160 MacOS.splash(SPLASH_LOCATE)
Jack Jansene3c90a41996-08-28 14:19:53 +0000161 gotopluginfolder()
Jack Jansend8eb8a71995-08-09 15:16:58 +0000162
Jack Jansene3c90a41996-08-28 14:19:53 +0000163 loadtoolboxmodules()
164
Jack Jansenbb748621997-10-10 15:49:36 +0000165 sys.path.append('::Mac:Lib')
Jack Jansene3c90a41996-08-28 14:19:53 +0000166 import macostools
167
Jack Jansend8eb8a71995-08-09 15:16:58 +0000168 # Remove old .slb aliases and collect a list of .slb files
Jack Jansend0240831997-09-08 13:16:29 +0000169 didsplash = 0
Jack Jansend8eb8a71995-08-09 15:16:58 +0000170 LibFiles = []
171 allfiles = os.listdir(':')
Jack Jansen09dcff71997-08-27 14:11:15 +0000172 if verbose: print 'Removing old aliases...'
Jack Jansend8eb8a71995-08-09 15:16:58 +0000173 for f in allfiles:
174 if f[-4:] == '.slb':
175 finfo = macfs.FSSpec(f).GetFInfo()
176 if finfo.Flags & 0x8000:
Jack Jansend0240831997-09-08 13:16:29 +0000177 if not didsplash:
178 MacOS.splash(SPLASH_REMOVE)
179 didsplash = 1
Jack Jansen09dcff71997-08-27 14:11:15 +0000180 if verbose: print ' Removing', f
Jack Jansend8eb8a71995-08-09 15:16:58 +0000181 os.unlink(f)
182 else:
183 LibFiles.append(f)
Jack Jansen09dcff71997-08-27 14:11:15 +0000184 if verbose: print ' Found', f
185 if verbose: print
Jack Jansend8eb8a71995-08-09 15:16:58 +0000186
Jack Jansene3c90a41996-08-28 14:19:53 +0000187 # Create the new PPC aliases.
Jack Jansend0240831997-09-08 13:16:29 +0000188 didsplash = 0
Jack Jansen09dcff71997-08-27 14:11:15 +0000189 if verbose: print 'Creating PPC aliases...'
Jack Jansene3c90a41996-08-28 14:19:53 +0000190 for dst, src in ppc_goals:
191 if src in LibFiles:
Jack Jansend0240831997-09-08 13:16:29 +0000192 if not didsplash:
193 MacOS.splash(SPLASH_PPC)
194 didsplash = 1
Jack Jansene3c90a41996-08-28 14:19:53 +0000195 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000196 if verbose: print ' ', dst, '->', src
Jack Jansene3c90a41996-08-28 14:19:53 +0000197 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000198 if verbose: print '*', dst, 'not created:', src, 'not found'
199 if verbose: print
Jack Jansene3c90a41996-08-28 14:19:53 +0000200
201 # Create the CFM68K aliases.
Jack Jansend0240831997-09-08 13:16:29 +0000202 didsplash = 0
Jack Jansen09dcff71997-08-27 14:11:15 +0000203 if verbose: print 'Creating CFM68K aliases...'
Jack Jansene3c90a41996-08-28 14:19:53 +0000204 for dst, src in cfm68k_goals:
205 if src in LibFiles:
Jack Jansend0240831997-09-08 13:16:29 +0000206 if not didsplash:
207 MacOS.splash(SPLASH_CFM68K)
208 didsplash = 1
Jack Jansene3c90a41996-08-28 14:19:53 +0000209 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000210 if verbose: print ' ', dst, '->', src
Jack Jansene3c90a41996-08-28 14:19:53 +0000211 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000212 if verbose: print '*', dst, 'not created:', src, 'not found'
213 if verbose: print
Jack Jansend09deac1996-10-22 15:32:06 +0000214
215 # Create the PythonCore alias(es)
Jack Jansen09dcff71997-08-27 14:11:15 +0000216 if verbose: print 'Creating PythonCore aliases in Extensions folder...'
Jack Jansend09deac1996-10-22 15:32:06 +0000217 os.chdir('::')
218 n = 0
Jack Jansen78c3cc41997-08-19 13:58:57 +0000219 n = n + mkcorealias('PythonCore', 'PythonCore')
Jack Jansend09deac1996-10-22 15:32:06 +0000220 n = n + mkcorealias('PythonCorePPC', ':build.macppc.shared:PythonCorePPC')
221 n = n + mkcorealias('PythonCoreCFM68K', ':build.mac68k.shared:PythonCoreCFM68K')
Jack Jansend0240831997-09-08 13:16:29 +0000222
223 # Install NumPy
224 if os.path.exists(':Extensions:NumPy:macmkaliases.py'):
225 MacOS.splash(SPLASH_NUMPY)
226 os.chdir(':Extensions:NumPy')
227 import macmkaliases
228 err = macmkaliases.main()
Jack Jansen09dcff71997-08-27 14:11:15 +0000229 if verbose and n == 0:
Jack Jansend09deac1996-10-22 15:32:06 +0000230 sys.exit(1)
Jack Jansend8eb8a71995-08-09 15:16:58 +0000231
232if __name__ == '__main__':
Jack Jansen09dcff71997-08-27 14:11:15 +0000233 if len(sys.argv) > 1 and sys.argv[1] == '-v':
234 verbose = 1
Jack Jansend8eb8a71995-08-09 15:16:58 +0000235 main()