summaryrefslogtreecommitdiffstats
path: root/Mac/OSX
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2001-02-16 21:48:24 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2001-02-16 21:48:24 (GMT)
commit7df9c60b8a263d8ff9dbed096ee681b36c2ba2ad (patch)
treedd6f7cd57bdafefb85e428a5f9a660b2a10bb6e8 /Mac/OSX
parent6bfa31c5a0077ebf67746da69444123f2825221d (diff)
downloadcpython-7df9c60b8a263d8ff9dbed096ee681b36c2ba2ad.zip
cpython-7df9c60b8a263d8ff9dbed096ee681b36c2ba2ad.tar.gz
cpython-7df9c60b8a263d8ff9dbed096ee681b36c2ba2ad.tar.bz2
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.
Diffstat (limited to 'Mac/OSX')
-rw-r--r--Mac/OSX/README.macosx.txt116
1 files changed, 116 insertions, 0 deletions
diff --git a/Mac/OSX/README.macosx.txt b/Mac/OSX/README.macosx.txt
new file mode 100644
index 0000000..560ce66
--- /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 <sdm7g@Virginia.EDU>
+
+
+