mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	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.
This commit is contained in:
		
							parent
							
								
									6bfa31c5a0
								
							
						
					
					
						commit
						7df9c60b8a
					
				
					 1 changed files with 116 additions and 0 deletions
				
			
		
							
								
								
									
										116
									
								
								Mac/OSX/README.macosx.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								Mac/OSX/README.macosx.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -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> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue