blob: f33688a797708f841f7d2b570e3a9f1bb52b2c4b [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"),
28 ("Menu.ppc.slb", "toolboxmodules.ppc.slb"),
29 ("List.ppc.slb", "toolboxmodules.ppc.slb"),
30 ("Qd.ppc.slb", "toolboxmodules.ppc.slb"),
31 ("Res.ppc.slb", "toolboxmodules.ppc.slb"),
32 ("Scrap.ppc.slb", "toolboxmodules.ppc.slb"),
33 ("Snd.ppc.slb", "toolboxmodules.ppc.slb"),
34 ("TE.ppc.slb", "toolboxmodules.ppc.slb"),
35 ("Win.ppc.slb", "toolboxmodules.ppc.slb"),
36
37 ("Cm.ppc.slb", "qtmodules.ppc.slb"),
38 ("Qt.ppc.slb", "qtmodules.ppc.slb"),
39
40 ("imgcolormap.ppc.slb", "imgmodules.ppc.slb"),
41 ("imgformat.ppc.slb", "imgmodules.ppc.slb"),
42 ("imggif.ppc.slb", "imgmodules.ppc.slb"),
43 ("imgjpeg.ppc.slb", "imgmodules.ppc.slb"),
44 ("imgop.ppc.slb", "imgmodules.ppc.slb"),
45 ("imgpbm.ppc.slb", "imgmodules.ppc.slb"),
46 ("imgpgm.ppc.slb", "imgmodules.ppc.slb"),
47 ("imgppm.ppc.slb", "imgmodules.ppc.slb"),
48 ("imgtiff.ppc.slb", "imgmodules.ppc.slb"),
49 ("imgsgi.ppc.slb", "imgmodules.ppc.slb")
50]
51
52cfm68k_goals = [
53 ("AE.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
54 ("Ctl.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
55 ("Dlg.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
56 ("Evt.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
57 ("Fm.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
58 ("Menu.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
59 ("List.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
60 ("Qd.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
61 ("Res.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
62 ("Scrap.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
63 ("Snd.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
64 ("TE.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
65 ("Win.CFM68K.slb", "toolboxmodules.CFM68K.slb"),
66
67 ("Cm.CFM68K.slb", "qtmodules.CFM68K.slb"),
68 ("Qt.CFM68K.slb", "qtmodules.CFM68K.slb"),
Jack Jansen3c7739a1996-10-08 09:25:02 +000069
70 ("imgcolormap.CFM68K.slb", "imgmodules.CFM68K.slb"),
71 ("imgformat.CFM68K.slb", "imgmodules.CFM68K.slb"),
72 ("imggif.CFM68K.slb", "imgmodules.CFM68K.slb"),
73 ("imgjpeg.CFM68K.slb", "imgmodules.CFM68K.slb"),
74 ("imgop.CFM68K.slb", "imgmodules.CFM68K.slb"),
75 ("imgpbm.CFM68K.slb", "imgmodules.CFM68K.slb"),
76 ("imgpgm.CFM68K.slb", "imgmodules.CFM68K.slb"),
77 ("imgppm.CFM68K.slb", "imgmodules.CFM68K.slb"),
78 ("imgtiff.CFM68K.slb", "imgmodules.CFM68K.slb"),
79 ("imgsgi.CFM68K.slb", "imgmodules.CFM68K.slb")
Jack Jansend8eb8a71995-08-09 15:16:58 +000080]
81
Jack Jansene3c90a41996-08-28 14:19:53 +000082def gotopluginfolder():
83 """Go to the plugin folder, assuming we are somewhere in the Python tree"""
84 import os
85
86 while not os.path.isdir(":Plugins"):
87 os.chdir("::")
88 os.chdir(":Plugins")
Jack Jansen09dcff71997-08-27 14:11:15 +000089 if verbose: print "current directory is", os.getcwd()
Jack Jansene3c90a41996-08-28 14:19:53 +000090
91def loadtoolboxmodules():
92 """Attempt to load the Res module"""
93 try:
94 import Res
95 except ImportError, arg:
96 err1 = arg
97 pass
98 else:
Jack Jansen09dcff71997-08-27 14:11:15 +000099 if verbose: print 'imported Res the standard way.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000100 return
101
102 # We cannot import it. First attempt to load the cfm68k version
103 import imp
104 try:
105 dummy = imp.load_dynamic('Res', 'toolboxmodules.CFM68K.slb')
106 except ImportError, arg:
107 err2 = arg
108 pass
109 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000110 if verbose: print 'Loaded Res from toolboxmodules.CFM68K.slb.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000111 return
112
113 # Ok, try the ppc version
114 try:
115 dummy = imp.load_dynamic('Res', 'toolboxmodules.ppc.slb')
116 except ImportError, arg:
117 err3 = arg
118 pass
119 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000120 if verbose: print 'Loaded Res from toolboxmodules.ppc.slb.'
Jack Jansene3c90a41996-08-28 14:19:53 +0000121 return
122
123 # Tough luck....
124 print "I cannot import the Res module, nor load it from either of"
125 print "toolboxmodules shared libraries. The errors encountered were:"
126 print "import Res:", err1
127 print "load from toolboxmodules.CFM68K.slb:", err2
128 print "load from toolboxmodules.ppc.slb:", err3
129 sys.exit(1)
130
Jack Jansend09deac1996-10-22 15:32:06 +0000131def getextensiondirfile(fname):
132 import macfs
133 import MACFS
134 vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, MACFS.kExtensionFolderType, 0)
135 fss = macfs.FSSpec((vrefnum, dirid, fname))
136 return fss.as_pathname()
137
138def mkcorealias(src, altsrc):
139 import string
140 import macostools
141 version = string.split(sys.version)[0]
142 dst = getextensiondirfile(src+ ' ' + version)
143 if not os.path.exists(src):
144 if not os.path.exists(altsrc):
Jack Jansen09dcff71997-08-27 14:11:15 +0000145 if verbose: print '*', src, 'not found'
Jack Jansend09deac1996-10-22 15:32:06 +0000146 return 0
147 src = altsrc
148 try:
149 os.unlink(dst)
150 except os.error:
151 pass
152 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000153 if verbose: print ' ', dst, '->', src
Jack Jansend09deac1996-10-22 15:32:06 +0000154 return 1
155
Jack Jansend8eb8a71995-08-09 15:16:58 +0000156
157def main():
Jack Jansend0240831997-09-08 13:16:29 +0000158 MacOS.splash(SPLASH_LOCATE)
Jack Jansene3c90a41996-08-28 14:19:53 +0000159 gotopluginfolder()
Jack Jansend8eb8a71995-08-09 15:16:58 +0000160
Jack Jansene3c90a41996-08-28 14:19:53 +0000161 loadtoolboxmodules()
162
163 import macostools
164
Jack Jansend8eb8a71995-08-09 15:16:58 +0000165 # Remove old .slb aliases and collect a list of .slb files
Jack Jansend0240831997-09-08 13:16:29 +0000166 didsplash = 0
Jack Jansend8eb8a71995-08-09 15:16:58 +0000167 LibFiles = []
168 allfiles = os.listdir(':')
Jack Jansen09dcff71997-08-27 14:11:15 +0000169 if verbose: print 'Removing old aliases...'
Jack Jansend8eb8a71995-08-09 15:16:58 +0000170 for f in allfiles:
171 if f[-4:] == '.slb':
172 finfo = macfs.FSSpec(f).GetFInfo()
173 if finfo.Flags & 0x8000:
Jack Jansend0240831997-09-08 13:16:29 +0000174 if not didsplash:
175 MacOS.splash(SPLASH_REMOVE)
176 didsplash = 1
Jack Jansen09dcff71997-08-27 14:11:15 +0000177 if verbose: print ' Removing', f
Jack Jansend8eb8a71995-08-09 15:16:58 +0000178 os.unlink(f)
179 else:
180 LibFiles.append(f)
Jack Jansen09dcff71997-08-27 14:11:15 +0000181 if verbose: print ' Found', f
182 if verbose: print
Jack Jansend8eb8a71995-08-09 15:16:58 +0000183
Jack Jansene3c90a41996-08-28 14:19:53 +0000184 # Create the new PPC aliases.
Jack Jansend0240831997-09-08 13:16:29 +0000185 didsplash = 0
Jack Jansen09dcff71997-08-27 14:11:15 +0000186 if verbose: print 'Creating PPC aliases...'
Jack Jansene3c90a41996-08-28 14:19:53 +0000187 for dst, src in ppc_goals:
188 if src in LibFiles:
Jack Jansend0240831997-09-08 13:16:29 +0000189 if not didsplash:
190 MacOS.splash(SPLASH_PPC)
191 didsplash = 1
Jack Jansene3c90a41996-08-28 14:19:53 +0000192 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000193 if verbose: print ' ', dst, '->', src
Jack Jansene3c90a41996-08-28 14:19:53 +0000194 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000195 if verbose: print '*', dst, 'not created:', src, 'not found'
196 if verbose: print
Jack Jansene3c90a41996-08-28 14:19:53 +0000197
198 # Create the CFM68K aliases.
Jack Jansend0240831997-09-08 13:16:29 +0000199 didsplash = 0
Jack Jansen09dcff71997-08-27 14:11:15 +0000200 if verbose: print 'Creating CFM68K aliases...'
Jack Jansene3c90a41996-08-28 14:19:53 +0000201 for dst, src in cfm68k_goals:
202 if src in LibFiles:
Jack Jansend0240831997-09-08 13:16:29 +0000203 if not didsplash:
204 MacOS.splash(SPLASH_CFM68K)
205 didsplash = 1
Jack Jansene3c90a41996-08-28 14:19:53 +0000206 macostools.mkalias(src, dst)
Jack Jansen09dcff71997-08-27 14:11:15 +0000207 if verbose: print ' ', dst, '->', src
Jack Jansene3c90a41996-08-28 14:19:53 +0000208 else:
Jack Jansen09dcff71997-08-27 14:11:15 +0000209 if verbose: print '*', dst, 'not created:', src, 'not found'
210 if verbose: print
Jack Jansend09deac1996-10-22 15:32:06 +0000211
212 # Create the PythonCore alias(es)
Jack Jansen09dcff71997-08-27 14:11:15 +0000213 if verbose: print 'Creating PythonCore aliases in Extensions folder...'
Jack Jansend09deac1996-10-22 15:32:06 +0000214 os.chdir('::')
215 n = 0
Jack Jansen78c3cc41997-08-19 13:58:57 +0000216 n = n + mkcorealias('PythonCore', 'PythonCore')
Jack Jansend09deac1996-10-22 15:32:06 +0000217 n = n + mkcorealias('PythonCorePPC', ':build.macppc.shared:PythonCorePPC')
218 n = n + mkcorealias('PythonCoreCFM68K', ':build.mac68k.shared:PythonCoreCFM68K')
Jack Jansend0240831997-09-08 13:16:29 +0000219
220 # Install NumPy
221 if os.path.exists(':Extensions:NumPy:macmkaliases.py'):
222 MacOS.splash(SPLASH_NUMPY)
223 os.chdir(':Extensions:NumPy')
224 import macmkaliases
225 err = macmkaliases.main()
Jack Jansen09dcff71997-08-27 14:11:15 +0000226 if verbose and n == 0:
Jack Jansend09deac1996-10-22 15:32:06 +0000227 sys.exit(1)
Jack Jansend8eb8a71995-08-09 15:16:58 +0000228
229if __name__ == '__main__':
Jack Jansen09dcff71997-08-27 14:11:15 +0000230 if len(sys.argv) > 1 and sys.argv[1] == '-v':
231 verbose = 1
Jack Jansend8eb8a71995-08-09 15:16:58 +0000232 main()