mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			138 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			138 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | 
 | ||
|  | This documentation tries to help people who intend to use Python on | ||
|  | AIX. | ||
|  | 
 | ||
|  | There used to be many issues with Python on AIX, but the major ones | ||
|  | have been corrected for version 3.2, so that Python should now work | ||
|  | rather well on this platform. The remaining known issues are listed in | ||
|  | this document. | ||
|  | 
 | ||
|  | 
 | ||
|  | ====================================================================== | ||
|  | 			   Compiling Python | ||
|  | ---------------------------------------------------------------------- | ||
|  | 
 | ||
|  | You can compile Python with gcc or the native AIX compiler. The native | ||
|  | compiler used to give better performances on this system with older | ||
|  | versions of Python.  With Python 3.2 it may not be the case anymore, | ||
|  | as this compiler does not allow compiling Python with computed gotos. | ||
|  | Some benchmarks need to be done. | ||
|  | 
 | ||
|  | Compiling with gcc: | ||
|  | 
 | ||
|  | cd Python-3.2 | ||
|  | CC=gcc OPT="-O2" ./configure --enable-shared | ||
|  | make | ||
|  | 
 | ||
|  | There are various aliases for the native compiler.  The recommended | ||
|  | alias for compiling Python is 'xlc_r', which provides a better level of | ||
|  | compatibility and handles thread initialization properly. | ||
|  | 
 | ||
|  | It is a good idea to add the '-qmaxmem=70000' option, otherwise the | ||
|  | compiler considers various files too complex to optimize. | ||
|  | 
 | ||
|  | Compiling with xlc: | ||
|  | 
 | ||
|  | cd Python-3.2 | ||
|  | CC=xlc_r OPT="-O2 -qmaxmem=70000" ./configure --without-computed-gotos --enable-shared | ||
|  | make | ||
|  | 
 | ||
|  | Note: | ||
|  | On AIX 5.3 and earlier, you will also need to specify the | ||
|  | "--disable-ipv6" flag to configure. This has been corrected in AIX | ||
|  | 6.1. | ||
|  | 
 | ||
|  | 
 | ||
|  | ====================================================================== | ||
|  | 			  Memory Limitations | ||
|  | ---------------------------------------------------------------------- | ||
|  | 
 | ||
|  | Note: this section may not apply when compiling Python as a 64 bit | ||
|  | application. | ||
|  | 
 | ||
|  | By default on AIX each program gets one segment register for its data | ||
|  | segment. As each segment register covers 256 MB, a Python program that | ||
|  | would use more than 256MB will raise a MemoryError.  The standard | ||
|  | Python test suite is one such application. | ||
|  | 
 | ||
|  | To allocate more segment registers to Python, you must use the linker | ||
|  | option -bmaxdata or the ldedit tool to specify the number of bytes you | ||
|  | need in the data segment. | ||
|  | 
 | ||
|  | For example, if you want to allow 512MB of memory for Python (this is | ||
|  | enough for the test suite to run without MemoryErrors), you should run | ||
|  | the following command at the end of compilation: | ||
|  | 
 | ||
|  | ldedit -b maxdata:0x20000000 ./python | ||
|  | 
 | ||
|  | You can allow up to 2GB of memory for Python by using the value | ||
|  | 0x80000000 for maxdata. | ||
|  | 
 | ||
|  | It is also possible to go beyond 2GB of memory by activating Large | ||
|  | Page Use. You should consult the IBM documentation if you need to use | ||
|  | this option. You can also follow the discussion of this problem | ||
|  | in issue 11212 at bugs.python.org. | ||
|  | 
 | ||
|  | http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds3/ldedit.htm | ||
|  | 
 | ||
|  | 
 | ||
|  | ====================================================================== | ||
|  | 			     Known issues | ||
|  | ---------------------------------------------------------------------- | ||
|  | 
 | ||
|  | Those issues are currently affecting Python on AIX: | ||
|  | 
 | ||
|  | * Python has not been fully tested on AIX when compiled as a 64 bit | ||
|  |   application. | ||
|  | 
 | ||
|  | * issue 3526: the memory used by a Python process will never be | ||
|  |   released to the system. If you have a Python application on AIX that | ||
|  |   uses a lot of memory, you should read this issue and you may | ||
|  |   consider using the provided patch that implements a custom malloc | ||
|  |   implementation | ||
|  | 
 | ||
|  | * issue 11184: support for large files is currently broken | ||
|  | 
 | ||
|  | * issue 11185: os.wait4 does not behave correctly with option WNOHANG | ||
|  | 
 | ||
|  | * issue 1745108: there may be some problems with curses.panel | ||
|  | 
 | ||
|  | * issue 11192: test_socket fails | ||
|  | 
 | ||
|  | * issue 11190: test_locale fails | ||
|  | 
 | ||
|  | * issue 11193: test_subprocess fails | ||
|  | 
 | ||
|  | * issue 9920: minor arithmetic issues in cmath | ||
|  | 
 | ||
|  | * issue 11215: test_fileio fails | ||
|  | 
 | ||
|  | * issue 11188: test_time fails | ||
|  | 
 | ||
|  | 
 | ||
|  | ====================================================================== | ||
|  | 		Implementation details for developers | ||
|  | ---------------------------------------------------------------------- | ||
|  | 
 | ||
|  | Python and python modules can now be built as shared libraries on AIX | ||
|  | as usual. | ||
|  | 
 | ||
|  | AIX shared libraries require that an "export" and "import" file be | ||
|  | provided at compile time to list all extern symbols which may be | ||
|  | shared between modules.  The "export" file (named python.exp) for the | ||
|  | modules and the libraries that belong to the Python core is created by | ||
|  | the "makexp_aix" script before performing the link of the python | ||
|  | binary. It lists all global symbols (exported during the link) of the | ||
|  | modules and the libraries that make up the python executable. | ||
|  | 
 | ||
|  | When shared library modules (.so files) are made, a second shell | ||
|  | script is invoked.  This script is named "ld_so_aix" and is also | ||
|  | provided with the distribution in the Modules subdirectory.  This | ||
|  | script acts as an "ld" wrapper which hides the explicit management of | ||
|  | "export" and "import" files; it adds the appropriate arguments (in the | ||
|  | appropriate order) to the link command that creates the shared module. | ||
|  | Among other things, it specifies that the "python.exp" file is an | ||
|  | "import" file for the shared module. | ||
|  | 
 | ||
|  | This mechanism should be transparent. |