blob: 560ce6655e5f1c8a22766c7d7938be722f004f0e [file] [log] [blame]
Jack Jansen7df9c602001-02-16 21:48:24 +00001--- README.macosx ---
2
3[1] You need to build Python for macosx. The latest release (2.1b2)
4 builds out of the box for macosx -- use:
5 configure --with-dyld --with-suffix=.x
6 ( get the latest version -- you'll have to fix the build process
7 to get earlier versions to build.)
8
9
10[2] You need a copy of Apple's Universal Interfaces CIncludes.
11
12 The Carbon.framework include files on macosx are not as backwards
13 compatible as the ones in Universal Interfaces. For example
14 UI has a Windows.h file that includes MacWindows.h, while
15 Carbon.framework only has MacWindows.h
16 ( actually, it's: HIToolbox.framework/Headers/MacWindows.h )
17
18 Until macpython sources are converted to be more Carbon compliant
19 you need to get a copy of Universal Interfaces (downloadable from
20 Apple's web site if you don't have a copy. If you have Metrowerks
21 Compiler, there is probably a copy on your CD. )
22
23
24[3] If your are building from patches, you need to download the cvs
25 distribution and apply the patches. ( The "If" is there because I
26 may eventually package this up in a separate patched distribution.)
27
28 cvs -d:pserver:ropython@pythoncvs.oratrix.nl:/hosts/mm/CVSREMOTE login
29 Password: geheim
30
31 cvs -d:pserver:ropython@pythoncvs.oratrix.nl:/hosts/mm/CVSREMOTE co python/Mac
32
33 The normal macpython distributions have classic-mac line endings.
34 macosx gnu tools want unix line endings. Getting sources from
35 the cvs server avoids having to do a bunch of conversions on
36 the source files.
37
38
39 New files (go in python/Mac/Modules/ directory)
40 README.macosx (this file)
41 Makefile (makefile also creates a dummy .h file)
42 Carbonmodule.c
43
44 Patched files:
45 python/Mac/Python/macglue.c
46 python/Mac/Modules/Win/Winmodule.c
47
48
49[4] There are two lines you have to edit in the Makefile to point to
50 Universal Interfaces CIncludes and the Python source distribution.
51 (eventually, disutils will be used to find the Python sources.
52 eventually, macpython sources will use the more modern headers.)
53
54
55# Point this to the directory with the Universal Interfaces CIncludes:
56UINCLUDE= /Local/Carbon/Universal.Interfaces/CIncludes/
57
58# Point this to your python source directory:
59PYTHONHOME= /Users/sdm7g/Src/Python-2.1a2/
60
61 After changing those lines, you can type "make" .
62
63 "-undefined warning" is used rather than "-undefined supress" --
64 and there are always some undefined symbols that are resolved
65 in the main python module. If there is something *REALLY*
66 unresolved (or often the problem is multiple definitions)
67 you will get an error on importing Carbonmodule.so.
68
69[5] Installation is manual for now.
70 If you want to run it out of the python/Mac/Modules directory, you
71 need to copy it to /usr/local/lib/python2.1/site-packages/
72 ( or whatever is the appropriate directory on your machine )
73
74
75[6] All of the toolbox modules are built into a single container module
76 named Carbon. All of the other modules are in the Carbon namespace:
77 i.e. Carbon.Win. You can do a "from Carbon import *", however all
78 modules get put into sys.modules under their own name, so once
79 Carbon has been imported, statements like "import Win" will work --
80 there is no Winmodule.so file, but import will find 'Win' in the
81 sys.modules cache before it tries to match a filename.
82
83
84These are the modules currently linked:
85
86Python 2.1a2 (#1, 02/12/01, 19:49:54)
87[GCC Apple DevKit-based CPP 5.0] on Darwin1.2
88Type "copyright", "credits" or "license" for more information.
89>>> import Carbon
90>>> dir(Carbon)
91['AE', 'App', 'Cm', 'ColorPicker', 'Ctl', 'Dlg', 'Drag', 'Evt', 'Fm', 'HtmlRender', 'Icn', 'List', 'Menu', 'Qd', 'Qdoffs', 'Res', 'Scrap', 'Snd', 'TE', 'Win', '__doc__', '__file__', '__name__', 'macfs']
92>>>
93
94A simple test:
95
96>>> import Snd
97>>> Snd.SysBeep( 100 )
98
99The main one missing is macosmodule, which has some functions for handling
100resource forks of files, file types and creators, and how and whether
101MacPython handles events or your script does. Some of these functions
102require others in Python/macmain.c, which may drag in other symbols, either
103undefined or multiply defined ( because there is a unix-Python implementation
104parallel to the macpython one. ) It's likely that we will need (or at least
105want) new macosx implementations of some of these functions.
106
107If you're interested in trying to add them, there is an additional target
108in the Makefile "make Experimental", which compiles and links with the
109$(XXX) modules: currently just macosmodule.c and macmain.c -- you
110can add others to try to resolve undefined symbols or edit the files
111to remove some symbols or functions.
112
113-- Steve Majewski <sdm7g@Virginia.EDU>
114
115
116