blob: c77b0ab361d409a7789ebcd3566664d4d3c519bd [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 Jansend8eb8a71995-08-09 15:16:58 +000014
Jack Jansencbb5d492001-02-17 23:31:48 +000015SPLASH_COPYCORE=512
16SPLASH_COPYCARBON=513
17SPLASH_COPYCLASSIC=514
18SPLASH_BUILDAPPLETS=515
19
20ALERT_NOCORE=516
Jack Jansen52b5b022000-10-13 23:33:34 +000021ALERT_NONBOOT=517
22ALERT_NONBOOT_COPY=1
23ALERT_NONBOOT_ALIAS=2
Jack Jansend0240831997-09-08 13:16:29 +000024
Jack Jansencbb5d492001-02-17 23:31:48 +000025APPLET_LIST=[
26 (":Mac:scripts:EditPythonPrefs.py", "EditPythonPrefs", None),
27 (":Mac:scripts:BuildApplet.py", "BuildApplet", None),
28 (":Mac:scripts:BuildApplication.py", "BuildApplication", None),
29## (":Mac:scripts:ConfigurePython.py", "ConfigurePython", None),
30## (":Mac:scripts:ConfigurePython.py", "ConfigurePythonCarbon", "PythonInterpreterCarbon"),
31## (":Mac:scripts:ConfigurePython.py", "ConfigurePythonClassic", "PythonInterpreterClassic"),
32 (":Mac:Tools:IDE:PythonIDE.py", "Python IDE", None),
33 (":Mac:Tools:CGI:PythonCGISlave.py", ":Mac:Tools:CGI:PythonCGISlave", None),
34 (":Mac:Tools:CGI:BuildCGIApplet.py", ":Mac:Tools:CGI:BuildCGIApplet", None),
Jack Jansend8eb8a71995-08-09 15:16:58 +000035]
36
Jack Jansend09deac1996-10-22 15:32:06 +000037def getextensiondirfile(fname):
38 import macfs
39 import MACFS
40 vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, MACFS.kExtensionFolderType, 0)
41 fss = macfs.FSSpec((vrefnum, dirid, fname))
42 return fss.as_pathname()
43
44def mkcorealias(src, altsrc):
45 import string
46 import macostools
47 version = string.split(sys.version)[0]
48 dst = getextensiondirfile(src+ ' ' + version)
Just van Rossum786cb111999-01-30 17:46:34 +000049 if not os.path.exists(os.path.join(sys.exec_prefix, src)):
50 if not os.path.exists(os.path.join(sys.exec_prefix, altsrc)):
Jack Jansend09deac1996-10-22 15:32:06 +000051 return 0
52 src = altsrc
53 try:
54 os.unlink(dst)
55 except os.error:
56 pass
Jack Jansen52b5b022000-10-13 23:33:34 +000057 do_copy = 0
58 if macfs.FSSpec(sys.exec_prefix).as_tuple()[0] != -1: # XXXX
59 try:
60 import Dlg
61 rv = Dlg.CautionAlert(ALERT_NONBOOT, None)
62 if rv == ALERT_NONBOOT_COPY:
63 do_copy = 1
64 except ImportError:
65 pass
66 if do_copy:
67 macostools.copy(os.path.join(sys.exec_prefix, src), dst)
68 else:
69 macostools.mkalias(os.path.join(sys.exec_prefix, src), dst)
Jack Jansend09deac1996-10-22 15:32:06 +000070 return 1
Jack Jansencbb5d492001-02-17 23:31:48 +000071
72# Copied from fullbuild, should probably go to buildtools
73def buildapplet(top, dummy, list):
74 """Create python applets"""
75 import buildtools
76 for src, dst, tmpl in list:
77 template = buildtools.findtemplate(tmpl)
78 if src[-3:] != '.py':
79 raise 'Should end in .py', src
80 base = os.path.basename(src)
81 src = os.path.join(top, src)
82 dst = os.path.join(top, dst)
83 try:
84 os.unlink(dst)
85 except os.error:
86 pass
87 try:
88 buildtools.process(template, src, dst, 1)
89 except buildtools.BuildError, arg:
90 print '**', dst, arg
91
92def buildcopy(top, dummy, list):
93 import macostools
94 for src, dst in list:
95 src = os.path.join(top, src)
96 dst = os.path.join(top, dst)
97 import pdb ; pdb.set_trace()
98 macostools.copy(src, dst)
Jack Jansend8eb8a71995-08-09 15:16:58 +000099
100def main():
Jack Jansencbb5d492001-02-17 23:31:48 +0000101 os.chdir(sys.prefix)
Jack Jansene3c90a41996-08-28 14:19:53 +0000102
Jack Jansenbb748621997-10-10 15:49:36 +0000103 sys.path.append('::Mac:Lib')
Jack Jansene3c90a41996-08-28 14:19:53 +0000104 import macostools
Jack Jansen3112bc12001-02-14 17:04:51 +0000105
Jack Jansend09deac1996-10-22 15:32:06 +0000106 # Create the PythonCore alias(es)
Jack Jansencbb5d492001-02-17 23:31:48 +0000107 MacOS.splash(SPLASH_COPYCORE)
Jack Jansend09deac1996-10-22 15:32:06 +0000108 n = 0
Jack Jansen78c3cc41997-08-19 13:58:57 +0000109 n = n + mkcorealias('PythonCore', 'PythonCore')
Jack Jansen3112bc12001-02-14 17:04:51 +0000110 n = n + mkcorealias('PythonCoreCarbon', 'PythonCoreCarbon')
Jack Jansencbb5d492001-02-17 23:31:48 +0000111 if n == 0:
112 Dlg.CautionAlert(ALERT_NOCORE, None)
113 return
114 if sys.argv[0][-7:] == 'Classic':
115 do_classic = 1
116 elif sys.argv[0][-6:] == 'Carbon':
117 do_classic = 0
118 elif sys.argv[0][-15:] == 'ConfigurePython' or sys.argv[0][-18:] == 'ConfigurePython.py':
119 return
120 else:
121 print "I don't know the sys.argv[0] function", sys.argv[0]
Jack Jansend09deac1996-10-22 15:32:06 +0000122 sys.exit(1)
Jack Jansencbb5d492001-02-17 23:31:48 +0000123 if do_classic:
124 MacOS.splash(SPLASH_COPYCLASSIC)
125 buildcopy(sys.prefix, None, [("PythonInterpreterClassic", "PythonInterpreter")])
126 else:
127 MacOS.splash(SPLASH_COPYCARBON)
128 buildcopy(sys.prefix, None, [("PythonInterpreterCarbon", "PythonInterpreter")])
129 MacOS.splash(SPLASH_BUILDAPPLETS)
130 buildapplet(sys.prefix, None, APPLET_LIST)
131
Jack Jansend8eb8a71995-08-09 15:16:58 +0000132if __name__ == '__main__':
Jack Jansend8eb8a71995-08-09 15:16:58 +0000133 main()