From 7df9c60b8a263d8ff9dbed096ee681b36c2ba2ad Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Fri, 16 Feb 2001 21:48:24 +0000 Subject: [PATCH] Steven Majewski's instructions for building the toolbox modules for incorporating them in a vanilla Python under MacOSX (i.e. in a non-MacPython-Python). Not complete and up-to-date right now, but that'll be fixed shortly. --- Mac/OSX/README.macosx.txt | 116 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Mac/OSX/README.macosx.txt diff --git a/Mac/OSX/README.macosx.txt b/Mac/OSX/README.macosx.txt new file mode 100644 index 00000000000..560ce6655e5 --- /dev/null +++ b/Mac/OSX/README.macosx.txt @@ -0,0 +1,116 @@ +--- README.macosx --- + +[1] You need to build Python for macosx. The latest release (2.1b2) + builds out of the box for macosx -- use: + configure --with-dyld --with-suffix=.x + ( get the latest version -- you'll have to fix the build process + to get earlier versions to build.) + + +[2] You need a copy of Apple's Universal Interfaces CIncludes. + + The Carbon.framework include files on macosx are not as backwards + compatible as the ones in Universal Interfaces. For example + UI has a Windows.h file that includes MacWindows.h, while + Carbon.framework only has MacWindows.h + ( actually, it's: HIToolbox.framework/Headers/MacWindows.h ) + + Until macpython sources are converted to be more Carbon compliant + you need to get a copy of Universal Interfaces (downloadable from + Apple's web site if you don't have a copy. If you have Metrowerks + Compiler, there is probably a copy on your CD. ) + + +[3] If your are building from patches, you need to download the cvs + distribution and apply the patches. ( The "If" is there because I + may eventually package this up in a separate patched distribution.) + + cvs -d:pserver:ropython@pythoncvs.oratrix.nl:/hosts/mm/CVSREMOTE login + Password: geheim + + cvs -d:pserver:ropython@pythoncvs.oratrix.nl:/hosts/mm/CVSREMOTE co python/Mac + + The normal macpython distributions have classic-mac line endings. + macosx gnu tools want unix line endings. Getting sources from + the cvs server avoids having to do a bunch of conversions on + the source files. + + + New files (go in python/Mac/Modules/ directory) + README.macosx (this file) + Makefile (makefile also creates a dummy .h file) + Carbonmodule.c + + Patched files: + python/Mac/Python/macglue.c + python/Mac/Modules/Win/Winmodule.c + + +[4] There are two lines you have to edit in the Makefile to point to + Universal Interfaces CIncludes and the Python source distribution. + (eventually, disutils will be used to find the Python sources. + eventually, macpython sources will use the more modern headers.) + + +# Point this to the directory with the Universal Interfaces CIncludes: +UINCLUDE= /Local/Carbon/Universal.Interfaces/CIncludes/ + +# Point this to your python source directory: +PYTHONHOME= /Users/sdm7g/Src/Python-2.1a2/ + + After changing those lines, you can type "make" . + + "-undefined warning" is used rather than "-undefined supress" -- + and there are always some undefined symbols that are resolved + in the main python module. If there is something *REALLY* + unresolved (or often the problem is multiple definitions) + you will get an error on importing Carbonmodule.so. + +[5] Installation is manual for now. + If you want to run it out of the python/Mac/Modules directory, you + need to copy it to /usr/local/lib/python2.1/site-packages/ + ( or whatever is the appropriate directory on your machine ) + + +[6] All of the toolbox modules are built into a single container module + named Carbon. All of the other modules are in the Carbon namespace: + i.e. Carbon.Win. You can do a "from Carbon import *", however all + modules get put into sys.modules under their own name, so once + Carbon has been imported, statements like "import Win" will work -- + there is no Winmodule.so file, but import will find 'Win' in the + sys.modules cache before it tries to match a filename. + + +These are the modules currently linked: + +Python 2.1a2 (#1, 02/12/01, 19:49:54) +[GCC Apple DevKit-based CPP 5.0] on Darwin1.2 +Type "copyright", "credits" or "license" for more information. +>>> import Carbon +>>> dir(Carbon) +['AE', 'App', 'Cm', 'ColorPicker', 'Ctl', 'Dlg', 'Drag', 'Evt', 'Fm', 'HtmlRender', 'Icn', 'List', 'Menu', 'Qd', 'Qdoffs', 'Res', 'Scrap', 'Snd', 'TE', 'Win', '__doc__', '__file__', '__name__', 'macfs'] +>>> + +A simple test: + +>>> import Snd +>>> Snd.SysBeep( 100 ) + +The main one missing is macosmodule, which has some functions for handling +resource forks of files, file types and creators, and how and whether +MacPython handles events or your script does. Some of these functions +require others in Python/macmain.c, which may drag in other symbols, either +undefined or multiply defined ( because there is a unix-Python implementation +parallel to the macpython one. ) It's likely that we will need (or at least +want) new macosx implementations of some of these functions. + +If you're interested in trying to add them, there is an additional target +in the Makefile "make Experimental", which compiles and links with the +$(XXX) modules: currently just macosmodule.c and macmain.c -- you +can add others to try to resolve undefined symbols or edit the files +to remove some symbols or functions. + +-- Steve Majewski + + +