mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	Makefile & config.c:
- restructure build for modules now in Python DLL README.os2emx - clean out old cruft no longer appropriate now that EMX port builds from CVS - reflect move of modules into core DLL - add section on building from source
This commit is contained in:
		
							parent
							
								
									d4c9b16b34
								
							
						
					
					
						commit
						631e87fb3d
					
				
					 3 changed files with 316 additions and 272 deletions
				
			
		| 
						 | 
					@ -264,7 +264,43 @@ SRC.MODULES=	$(addprefix $(TOP), \
 | 
				
			||||||
		Modules/gcmodule.c \
 | 
							Modules/gcmodule.c \
 | 
				
			||||||
		Modules/signalmodule.c \
 | 
							Modules/signalmodule.c \
 | 
				
			||||||
		Modules/posixmodule.c \
 | 
							Modules/posixmodule.c \
 | 
				
			||||||
		Modules/threadmodule.c
 | 
							Modules/threadmodule.c \
 | 
				
			||||||
 | 
							Modules/arraymodule.c \
 | 
				
			||||||
 | 
							Modules/binascii.c \
 | 
				
			||||||
 | 
							Modules/cmathmodule.c \
 | 
				
			||||||
 | 
							Modules/_codecsmodule.c \
 | 
				
			||||||
 | 
							Modules/cPickle.c \
 | 
				
			||||||
 | 
							Modules/cStringIO.c \
 | 
				
			||||||
 | 
							Modules/_csv.c \
 | 
				
			||||||
 | 
							Modules/datetimemodule.c \
 | 
				
			||||||
 | 
							Modules/dlmodule.c \
 | 
				
			||||||
 | 
							Modules/errnomodule.c \
 | 
				
			||||||
 | 
							Modules/fcntlmodule.c \
 | 
				
			||||||
 | 
							Modules/imageop.c \
 | 
				
			||||||
 | 
							Modules/itertoolsmodule.c \
 | 
				
			||||||
 | 
							Modules/_localemodule.c \
 | 
				
			||||||
 | 
							Modules/mathmodule.c \
 | 
				
			||||||
 | 
							Modules/md5c.c \
 | 
				
			||||||
 | 
							Modules/md5module.c \
 | 
				
			||||||
 | 
							Modules/operator.c \
 | 
				
			||||||
 | 
							Modules/pcremodule.c \
 | 
				
			||||||
 | 
							Modules/pypcre.c \
 | 
				
			||||||
 | 
							Modules/_randommodule.c \
 | 
				
			||||||
 | 
							Modules/regexmodule.c \
 | 
				
			||||||
 | 
							Modules/regexpr.c \
 | 
				
			||||||
 | 
							Modules/rgbimgmodule.c \
 | 
				
			||||||
 | 
							Modules/shamodule.c \
 | 
				
			||||||
 | 
							Modules/_sre.c \
 | 
				
			||||||
 | 
							Modules/stropmodule.c \
 | 
				
			||||||
 | 
							Modules/structmodule.c \
 | 
				
			||||||
 | 
							Modules/symtablemodule.c \
 | 
				
			||||||
 | 
							Modules/termios.c \
 | 
				
			||||||
 | 
							Modules/timemodule.c \
 | 
				
			||||||
 | 
							Modules/timingmodule.c \
 | 
				
			||||||
 | 
							Modules/_weakref.c \
 | 
				
			||||||
 | 
							Modules/xreadlinesmodule.c \
 | 
				
			||||||
 | 
							Modules/xxsubtype.c \
 | 
				
			||||||
 | 
							Modules/zipimport.c)
 | 
				
			||||||
SRC.PARSE1=	$(addprefix $(TOP), \
 | 
					SRC.PARSE1=	$(addprefix $(TOP), \
 | 
				
			||||||
		Parser/acceler.c \
 | 
							Parser/acceler.c \
 | 
				
			||||||
		Parser/grammar1.c \
 | 
							Parser/grammar1.c \
 | 
				
			||||||
| 
						 | 
					@ -376,53 +412,20 @@ SRC.PMEXE=	pythonpm.c
 | 
				
			||||||
#   2) use the standard module naming convention
 | 
					#   2) use the standard module naming convention
 | 
				
			||||||
#      (the 'module' in ?????module.c is assumed)
 | 
					#      (the 'module' in ?????module.c is assumed)
 | 
				
			||||||
# - these can be built with implicit rules
 | 
					# - these can be built with implicit rules
 | 
				
			||||||
EASYEXTMODULES=	array \
 | 
					EASYEXTMODULES=	fpectl \
 | 
				
			||||||
		cmath \
 | 
					 | 
				
			||||||
		_codecs \
 | 
					 | 
				
			||||||
		datetime \
 | 
					 | 
				
			||||||
		dl \
 | 
					 | 
				
			||||||
		errno \
 | 
					 | 
				
			||||||
		fcntl \
 | 
					 | 
				
			||||||
		fpectl \
 | 
					 | 
				
			||||||
		fpetest \
 | 
							fpetest \
 | 
				
			||||||
		_locale \
 | 
					 | 
				
			||||||
		math \
 | 
					 | 
				
			||||||
		parser \
 | 
							parser \
 | 
				
			||||||
		pwd \
 | 
							pwd \
 | 
				
			||||||
		_random \
 | 
					 | 
				
			||||||
		rgbimg \
 | 
					 | 
				
			||||||
		rotor \
 | 
							rotor \
 | 
				
			||||||
		select \
 | 
							select 
 | 
				
			||||||
		sha \
 | 
					 | 
				
			||||||
		strop \
 | 
					 | 
				
			||||||
		struct \
 | 
					 | 
				
			||||||
		time \
 | 
					 | 
				
			||||||
		timing
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Python modules to be dynamically loaded that need explicit build rules
 | 
					# Python modules to be dynamically loaded that need explicit build rules
 | 
				
			||||||
#  (either multiple source files and/or non-standard module naming)
 | 
					#  (either multiple source files and/or non-standard module naming)
 | 
				
			||||||
#  (NOTE: use shortened names for modules affected by 8 char name limit)
 | 
					#  (NOTE: use shortened names for modules affected by 8 char name limit)
 | 
				
			||||||
HARDEXTMODULES=	binascii \
 | 
					HARDEXTMODULES=	_hotshot \
 | 
				
			||||||
		cPickle \
 | 
					 | 
				
			||||||
		cStringI \
 | 
					 | 
				
			||||||
		_csv \
 | 
					 | 
				
			||||||
		_hotshot \
 | 
					 | 
				
			||||||
		imageop \
 | 
					 | 
				
			||||||
		itertool \
 | 
					 | 
				
			||||||
		md5 \
 | 
					 | 
				
			||||||
		operator \
 | 
					 | 
				
			||||||
		pcre \
 | 
					 | 
				
			||||||
		regex \
 | 
					 | 
				
			||||||
		_socket \
 | 
							_socket \
 | 
				
			||||||
		_sre \
 | 
					 | 
				
			||||||
		_symtabl \
 | 
					 | 
				
			||||||
		termios \
 | 
					 | 
				
			||||||
		_testcap \
 | 
							_testcap \
 | 
				
			||||||
		unicoded \
 | 
							unicoded
 | 
				
			||||||
		_weakref \
 | 
					 | 
				
			||||||
		xreadlin \
 | 
					 | 
				
			||||||
		xxsubtyp \
 | 
					 | 
				
			||||||
		zipimpor
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Python external ($(MODULE.EXT)) modules - can be EASY or HARD
 | 
					# Python external ($(MODULE.EXT)) modules - can be EASY or HARD
 | 
				
			||||||
ifeq ($(HAVE_ZLIB),yes)
 | 
					ifeq ($(HAVE_ZLIB),yes)
 | 
				
			||||||
| 
						 | 
					@ -528,63 +531,13 @@ $(PGEN.EXE): $(OBJ.PGEN) $(OUT)pgen.def
 | 
				
			||||||
# Explicit building instructions for those external modules that require 
 | 
					# Explicit building instructions for those external modules that require 
 | 
				
			||||||
# awkward handling (due e.g. to non-std naming, or multiple source files)
 | 
					# awkward handling (due e.g. to non-std naming, or multiple source files)
 | 
				
			||||||
# - standard modules
 | 
					# - standard modules
 | 
				
			||||||
binascii$(MODULE.EXT): $(OUT)binascii$O $(OUT)binascii_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cPickle$(MODULE.EXT): $(OUT)cPickle$O $(OUT)cPickle_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# cStringIO needs to be renamed to be useful (8 char DLL name limit)
 | 
					 | 
				
			||||||
cStringIO$(MODULE.EXT): $(OUT)cStringIO$O $(OUT)cStringIO_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cStringI$(MODULE.EXT): cStringIO$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_csv$(MODULE.EXT): $(OUT)_csv$O $(OUT)_csv_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
_hotshot$(MODULE.EXT): $(OUT)_hotshot$O $(OUT)_hotshot_m.def $(PYTHON.IMPLIB)
 | 
					_hotshot$(MODULE.EXT): $(OUT)_hotshot$O $(OUT)_hotshot_m.def $(PYTHON.IMPLIB)
 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
						$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
imageop$(MODULE.EXT): $(OUT)imageop$O $(OUT)imageop_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# itertools needs to be renamed to be useful
 | 
					 | 
				
			||||||
itertools$(MODULE.EXT): $(OUT)itertoolsmodule$O $(OUT)itertools_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
itertool$(MODULE.EXT): itertools$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
md5$(MODULE.EXT): $(OUT)md5module$O $(OUT)md5c$O $(OUT)md5_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
operator$(MODULE.EXT): $(OUT)operator$O $(OUT)operator_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pcre$(MODULE.EXT): $(OUT)pcremodule$O $(OUT)pypcre$O $(OUT)pcre_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
regex$(MODULE.EXT): $(OUT)regexmodule$O $(OUT)regexpr$O $(OUT)regex_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_socket$(MODULE.EXT): $(OUT)socketmodule$O $(OUT)_socket_m.def $(PYTHON.IMPLIB)
 | 
					_socket$(MODULE.EXT): $(OUT)socketmodule$O $(OUT)_socket_m.def $(PYTHON.IMPLIB)
 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
						$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_sre$(MODULE.EXT): $(OUT)_sre$O $(OUT)_sre_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# _symtable needs to be renamed to be useful
 | 
					 | 
				
			||||||
_symtable$(MODULE.EXT): $(OUT)symtablemodule$O $(OUT)_symtable_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_symtabl$(MODULE.EXT): _symtable$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
termios$(MODULE.EXT): $(OUT)termios$O $(OUT)termios_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# _testcapi needs to be renamed to be useful
 | 
					# _testcapi needs to be renamed to be useful
 | 
				
			||||||
_testcapi$(MODULE.EXT): $(OUT)_testcapimodule$O $(OUT)_testcapi_m.def $(PYTHON.IMPLIB)
 | 
					_testcapi$(MODULE.EXT): $(OUT)_testcapimodule$O $(OUT)_testcapi_m.def $(PYTHON.IMPLIB)
 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
						$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
				
			||||||
| 
						 | 
					@ -599,30 +552,6 @@ unicodedata$(MODULE.EXT): $(OUT)unicodedata$O $(OUT)unicodedata_m.def $(PYTHON.I
 | 
				
			||||||
unicoded$(MODULE.EXT): unicodedata$(MODULE.EXT)
 | 
					unicoded$(MODULE.EXT): unicodedata$(MODULE.EXT)
 | 
				
			||||||
	cp $^ $@
 | 
						cp $^ $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_weakref$(MODULE.EXT): $(OUT)_weakref$O $(OUT)_weakref_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# xreadlines needs to be renamed to be useful
 | 
					 | 
				
			||||||
xreadlines$(MODULE.EXT): $(OUT)xreadlinesmodule$O $(OUT)xreadlines_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
xreadlin$(MODULE.EXT): xreadlines$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# xxsubtype needs to be renamed to be useful
 | 
					 | 
				
			||||||
xxsubtype$(MODULE.EXT): $(OUT)xxsubtype$O $(OUT)xxsubtype_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
xxsubtyp$(MODULE.EXT): xxsubtype$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# zipimport needs to be renamed to be useful
 | 
					 | 
				
			||||||
zipimport$(MODULE.EXT): $(OUT)zipimport$O $(OUT)zipimport_m.def $(PYTHON.IMPLIB)
 | 
					 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zipimpor$(MODULE.EXT): zipimport$(MODULE.EXT)
 | 
					 | 
				
			||||||
	cp $^ $@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# - optional modules (requiring other software to be installed)
 | 
					# - optional modules (requiring other software to be installed)
 | 
				
			||||||
bsddb185$(MODULE.EXT): $(OUT)bsddbmodule$O $(OUT)bsddb185_m.def $(PYTHON.IMPLIB)
 | 
					bsddb185$(MODULE.EXT): $(OUT)bsddbmodule$O $(OUT)bsddb185_m.def $(PYTHON.IMPLIB)
 | 
				
			||||||
	$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) -ldb $(LIBS)
 | 
						$(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) -ldb $(LIBS)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,15 @@ October 24, 2002 release of the Python 2.2.2 port:
 | 
				
			||||||
- now setting higher number of file handles (250).
 | 
					- now setting higher number of file handles (250).
 | 
				
			||||||
- defaults to building with PyMalloc enabled (Python 2.3 default).
 | 
					- defaults to building with PyMalloc enabled (Python 2.3 default).
 | 
				
			||||||
- the port is now maintained in the Python CVS repository.
 | 
					- the port is now maintained in the Python CVS repository.
 | 
				
			||||||
 | 
					- most standard modules are now built into the core Python DLL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Python 2.3 incorporates several changes which have resolved the 
 | 
					Python 2.3 incorporates several changes which have resolved the 
 | 
				
			||||||
longstanding problems the EMX port has had with test_longexp (used 
 | 
					longstanding problems the EMX port has had with test_longexp.
 | 
				
			||||||
to be "YOU HAVE BEEN WARNED" item 1).
 | 
					
 | 
				
			||||||
 | 
					Python 2.3 introduces changes to the Berkeley DB support, as a result of
 | 
				
			||||||
 | 
					the PyBSDDB3 module (for the Sleepycat DB 3.3.x/4.0.x/4.1.x library)
 | 
				
			||||||
 | 
					being imported into Python's standard library - see "YOU HAVE BEEN WARNED"
 | 
				
			||||||
 | 
					items 4 & 5 for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Licenses and info about Python and EMX
 | 
					Licenses and info about Python and EMX
 | 
				
			||||||
| 
						 | 
					@ -58,10 +63,10 @@ The best known would be that by Jeff Rush, most recently of version
 | 
				
			||||||
1.5.2.  Jeff used IBM's Visual Age C++ (v3) for his ports, and his 
 | 
					1.5.2.  Jeff used IBM's Visual Age C++ (v3) for his ports, and his 
 | 
				
			||||||
patches have been included in the Python 2.3 source distribution.
 | 
					patches have been included in the Python 2.3 source distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Andrew Zabolotny implemented a port of Python v1.5.2 using the EMX 
 | 
					Andy Zabolotny implemented a port of Python v1.5.2 using the EMX 
 | 
				
			||||||
development tools.  His patches against the Python v1.5.2 source 
 | 
					development tools.  His patches against the Python v1.5.2 source 
 | 
				
			||||||
distribution have become the core of this port, and without his efforts 
 | 
					distribution have become the core of this port, and without his efforts 
 | 
				
			||||||
this port wouldn't exist.  Andrew's port also appears to have been 
 | 
					this port wouldn't exist.  Andy's port also appears to have been 
 | 
				
			||||||
compiled with his port of gcc 2.95.2 to EMX, which I have but have 
 | 
					compiled with his port of gcc 2.95.2 to EMX, which I have but have 
 | 
				
			||||||
chosen not to use for the binary distribution of this port (see item 21 
 | 
					chosen not to use for the binary distribution of this port (see item 21 
 | 
				
			||||||
of the "YOU HAVE BEEN WARNED" section below).
 | 
					of the "YOU HAVE BEEN WARNED" section below).
 | 
				
			||||||
| 
						 | 
					@ -78,7 +83,7 @@ Previous Python port releases by me:-
 | 
				
			||||||
 - v2.2c1 on December 16, 2001 (not uploaded to archive sites);
 | 
					 - v2.2c1 on December 16, 2001 (not uploaded to archive sites);
 | 
				
			||||||
 - v2.2 on December 24, 2001;
 | 
					 - v2.2 on December 24, 2001;
 | 
				
			||||||
 - v2.2.1c2 on March 31, 2002 (not uploaded to archive sites);
 | 
					 - v2.2.1c2 on March 31, 2002 (not uploaded to archive sites);
 | 
				
			||||||
 - v2.2.1 on April 14, 2002.
 | 
					 - v2.2.1 on April 14, 2002;
 | 
				
			||||||
 - v2.2.2 on October 24, 2002.
 | 
					 - v2.2.2 on October 24, 2002.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
It is possible to have these earlier ports still usable after installing 
 | 
					It is possible to have these earlier ports still usable after installing 
 | 
				
			||||||
| 
						 | 
					@ -100,14 +105,11 @@ My development system is running OS/2 v4 with fixpack 12.
 | 
				
			||||||
- ncurses      (see http://dickey.his.com/ for more info, v5.2)
 | 
					- ncurses      (see http://dickey.his.com/ for more info, v5.2)
 | 
				
			||||||
- GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
 | 
					- GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
 | 
				
			||||||
- GNU GDBM     (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
 | 
					- GNU GDBM     (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
 | 
				
			||||||
- zlib         (Hung-Chi Chu's port available from Hobbes or LEO, v1.1.3)
 | 
					- zlib         (derived from Hung-Chi Chu's port of v1.1.3, v1.1.4)
 | 
				
			||||||
- expat        (distributed with Python, v1.95.2)
 | 
					- expat        (distributed with Python, v1.95.6)
 | 
				
			||||||
- GNU MP       (Peter Meerwald's port available from LEO, v2.0.2)
 | 
					- GNU MP       (Peter Meerwald's port available from LEO, v2.0.2)
 | 
				
			||||||
- GNU UFC      (Kai Uwe Rommel's port available from LEO, v2.0.4)
 | 
					- GNU UFC      (Kai Uwe Rommel's port available from LEO, v2.0.4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The zlib module requires the Z.DLL to be installed - see the Installation 
 | 
					 | 
				
			||||||
section and item 12 of the "YOU HAVE BEEN WARNED" section for more 
 | 
					 | 
				
			||||||
information.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
About this port
 | 
					About this port
 | 
				
			||||||
---------------
 | 
					---------------
 | 
				
			||||||
| 
						 | 
					@ -119,7 +121,7 @@ Core components:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Python.exe is linked as an a.out executable, ie using EMX method E1 
 | 
					Python.exe is linked as an a.out executable, ie using EMX method E1 
 | 
				
			||||||
to compile & link the executable.  This is so that fork() works (see 
 | 
					to compile & link the executable.  This is so that fork() works (see 
 | 
				
			||||||
"YOU HAVE BEEN WARNED" item 2).
 | 
					"YOU HAVE BEEN WARNED" item 1).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Python23.dll is created as a normal OMF DLL, with an OMF import 
 | 
					Python23.dll is created as a normal OMF DLL, with an OMF import 
 | 
				
			||||||
library and module definition file.  There is also an a.out (.a) import 
 | 
					library and module definition file.  There is also an a.out (.a) import 
 | 
				
			||||||
| 
						 | 
					@ -130,42 +132,50 @@ This port has been built with complete support for multithreading.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Modules:
 | 
					Modules:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
As far as possible, extension modules have been made dynamically loadable 
 | 
					With the exception of modules that have a significant code size, or are 
 | 
				
			||||||
when the module is intended to be built this way.  I haven't yet changed 
 | 
					not recommended or desired for normal use, the standard modules are now 
 | 
				
			||||||
the building of Python's standard modules over to using the DistUtils.
 | 
					built into the core DLL rather than configured as dynamically loadable 
 | 
				
			||||||
 | 
					modules.  This is for both reasons of performance (startup time) and 
 | 
				
			||||||
 | 
					memory use (lots of small DLLs fragment the address space).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See "YOU HAVE BEEN WARNED" item 5 for notes about the fcntl module, and 
 | 
					I haven't yet changed the building of Python's dynamically loadable 
 | 
				
			||||||
"YOU HAVE BEEN WARNED" item 14 for notes about the pwd and grp modules.
 | 
					modules over to using the DistUtils.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See "YOU HAVE BEEN WARNED" item 3 for notes about the fcntl module, and 
 | 
				
			||||||
 | 
					"YOU HAVE BEEN WARNED" item 10 for notes about the pwd and grp modules.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Support for case sensitive module import semantics has been added to match 
 | 
					Support for case sensitive module import semantics has been added to match 
 | 
				
			||||||
the Windows release.  This can be deactivated by setting the PYTHONCASEOK 
 | 
					the Windows release.  This can be deactivated by setting the PYTHONCASEOK 
 | 
				
			||||||
environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED" 
 | 
					environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED" 
 | 
				
			||||||
item 16.
 | 
					item 12.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Optional modules:
 | 
					Optional modules:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Where I've been able to locate the required 3rd party packages already 
 | 
					Where I've been able to locate the required 3rd party packages already 
 | 
				
			||||||
ported to OS/2, I've built and included them.
 | 
					ported to OS/2, I've built and included them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These include ncurses (_curses, _curses_panel), BSD DB (bsddb), 
 | 
					These include ncurses (_curses, _curses_panel), BSD DB (bsddb185), 
 | 
				
			||||||
GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), expat 
 | 
					GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), GNU MP (mpz) 
 | 
				
			||||||
(pyexpat), GNU MP (mpz) and GNU UFC (crypt).
 | 
					and GNU UFC (crypt).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Expat is now included in the Python release sourceball, and is always 
 | 
				
			||||||
 | 
					built.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I have built these modules statically linked against the 3rd party 
 | 
					I have built these modules statically linked against the 3rd party 
 | 
				
			||||||
libraries, with the exception of zlib.  Unfortunately my attempts to use 
 | 
					libraries.  Unfortunately my attempts to use the dll version of GNU 
 | 
				
			||||||
the dll version of GNU readline have been a dismal failure, in that when 
 | 
					readline have been a dismal failure, in that when the dynamically 
 | 
				
			||||||
the dynamically linked readline module is active other modules 
 | 
					linked readline module is active other modules immediately provoke a 
 | 
				
			||||||
immediately provoke a core dump when imported.
 | 
					core dump when imported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Only the BSD DB package (part of the BSD package distributed with EMX) 
 | 
					Only the BSD DB package (part of the BSD package distributed with EMX) 
 | 
				
			||||||
needed source modifications to be used for this port, pertaining to use 
 | 
					needs source modifications to be used for this port, pertaining to use 
 | 
				
			||||||
of errno with multithreading.
 | 
					of errno with multithreading.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The other packages, except for ncurses and zlib, needed Makefile changes 
 | 
					The other packages, except for ncurses and zlib, needed Makefile changes 
 | 
				
			||||||
for multithreading support but no source changes.
 | 
					for multithreading support but no source changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The _curses_panel module is a potential problem - see "YOU HAVE BEEN 
 | 
					The _curses_panel module is a potential problem - see "YOU HAVE BEEN 
 | 
				
			||||||
WARNED" item 17.
 | 
					WARNED" item 13.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Upstream source patches:
 | 
					Upstream source patches:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -210,9 +220,14 @@ have this port support extensions built with that compiler.
 | 
				
			||||||
Packaging
 | 
					Packaging
 | 
				
			||||||
---------
 | 
					---------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This port is packaged into several archives:
 | 
					This port is packaged as follows:
 | 
				
			||||||
- python-2.3-os2emx-bin-02????.zip   (binaries, library modules)
 | 
					- python-2.3-os2emx-bin-03????.zip  (binaries, library modules)
 | 
				
			||||||
- python-2.3-os2emx-src-03????.zip   (source patches and makefiles)
 | 
					- python-2.3-os2emx-src-03????      (patches+makefiles for non-Python code)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As all the Python specific patches for the port are now part of the 
 | 
				
			||||||
 | 
					Python release tarball, only the patches and makefiles involved in 
 | 
				
			||||||
 | 
					building external libraries for optional extensions are included in 
 | 
				
			||||||
 | 
					the source archive.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Documentation for the Python language, as well as the Python 2.3 
 | 
					Documentation for the Python language, as well as the Python 2.3 
 | 
				
			||||||
source distibution, can be obtained from the Python website 
 | 
					source distibution, can be obtained from the Python website 
 | 
				
			||||||
| 
						 | 
					@ -226,10 +241,6 @@ Installation
 | 
				
			||||||
Obtain and install, as per the included instructions, the EMX runtime 
 | 
					Obtain and install, as per the included instructions, the EMX runtime 
 | 
				
			||||||
package.
 | 
					package.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you wish to use the zlib module, you will need to obtain and install 
 | 
					 | 
				
			||||||
the Z.DLL from Hung-Chi Chu's port of zlib v1.1.3 (zlib113.zip).  See also 
 | 
					 | 
				
			||||||
"YOU HAVE BEEN WARNED" item 12 below.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Unpack this archive, preserving the subdirectories, in the root directory 
 | 
					Unpack this archive, preserving the subdirectories, in the root directory 
 | 
				
			||||||
of the drive where you want Python to live.
 | 
					of the drive where you want Python to live.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -276,12 +287,116 @@ You can execute the regression tests included with the Python 2.3 source
 | 
				
			||||||
distribution by changing to the Python 2.3 home directory and executing the 
 | 
					distribution by changing to the Python 2.3 home directory and executing the 
 | 
				
			||||||
REGRTEST.CMD batch file.  The following tests are known to fail at this 
 | 
					REGRTEST.CMD batch file.  The following tests are known to fail at this 
 | 
				
			||||||
time:
 | 
					time:
 | 
				
			||||||
- test_longexp (see "YOU HAVE BEEN WARNED" item 1);
 | 
					 | 
				
			||||||
- test_mhlib (I don't know of any port of MH to OS/2);
 | 
					- test_mhlib (I don't know of any port of MH to OS/2);
 | 
				
			||||||
- test_pwd (see "YOU HAVE BEEN WARNED" item 14, probably a bug in my code);
 | 
					- test_pwd (see "YOU HAVE BEEN WARNED" item 10, probably a bug in my code);
 | 
				
			||||||
- test_grp (as per test_pwd);
 | 
					- test_grp (as per test_pwd);
 | 
				
			||||||
- test_strftime (see "YOU HAVE BEEN WARNED" item 20);
 | 
					- test_strftime (see "YOU HAVE BEEN WARNED" item 15);
 | 
				
			||||||
- test_socketserver (fork() related, see "YOU HAVE BEEN WARNED" item 2).
 | 
					- test_strptime (see "YOU HAVE BEEN WARNED" item 22);
 | 
				
			||||||
 | 
					- test_whichdb (see "YOU HAVE BEEN WARNED" item 5).
 | 
				
			||||||
 | 
					- test_socketserver (fork() related, see "YOU HAVE BEEN WARNED" item 1).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that some of the network related tests expect the loopback interface
 | 
				
			||||||
 | 
					(interface "lo", with IP address 127.0.0.1) to be enabled, which from my
 | 
				
			||||||
 | 
					experience is not the default configuration.  Additionally, test_popen2
 | 
				
			||||||
 | 
					expects the "cat" utility (such as found in ports of the GNU tools) to
 | 
				
			||||||
 | 
					be installed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Building from source
 | 
				
			||||||
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					With the EMX port now checked into Python's CVS repository, the build 
 | 
				
			||||||
 | 
					infrastructure is part of the Python release sourceball.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Prerequisites
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					First and foremost, you need an operational EMX development installation - 
 | 
				
			||||||
 | 
					EMX v0.9d with fix04 (the latest at time of writing) & the gcc 2.8.1 
 | 
				
			||||||
 | 
					compiler released by Eberhard Mattes is the recommended setup.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you have a different version of gcc installed, see "YOU HAVE BEEN 
 | 
				
			||||||
 | 
					WARNED" item 16.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other items of software required:-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- GNU make (I'm using v3.76.1)
 | 
				
			||||||
 | 
					- rm, cp, mkdir from the GNU file utilities package
 | 
				
			||||||
 | 
					- GNU find
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Procedure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					0. all changes mentioned apply to files in the PC/os2emx subdirectory 
 | 
				
			||||||
 | 
					   of the Python release source tree.  make is also executed from this 
 | 
				
			||||||
 | 
					   directory, so change into this directory before proceeding.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. decide if you need to change the location of the Python installation.
 | 
				
			||||||
 | 
					   If you wish to do this, set the value of the Makefile variable LIB_DIR 
 | 
				
			||||||
 | 
					   to the directory you wish to use for PYTHONHOME 
 | 
				
			||||||
 | 
					   (eg /usr/local/lib/python2.3).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   If you want Python to find its library without the PYTHONHOME 
 | 
				
			||||||
 | 
					   environment variable set, set the value of the Makefile variable 
 | 
				
			||||||
 | 
					   FIXED_PYHOME to "yes" (uncomment the appropriate line).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. If you wish the Python executables (python.exe, pythonpm.exe & pgen.exe) 
 | 
				
			||||||
 | 
					   to be installed in a directory other than the PYTHONHOME directory, set 
 | 
				
			||||||
 | 
					   the value of the Makefile variable EXE_DIR to the appropriate directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. If you wish the Python core DLL (python23.dll) to be installed in a 
 | 
				
			||||||
 | 
					   directory other than the directory in which the Python executables are 
 | 
				
			||||||
 | 
					   installed (by default, the PYTHONHOME directory), set the value of the 
 | 
				
			||||||
 | 
					   Makefile variable DLL_DIR to the appropriate directory.  This DLL must 
 | 
				
			||||||
 | 
					   be placed in a directory on the system's LIBPATH, or that gets set 
 | 
				
			||||||
 | 
					   with BEGINLIBPATH or ENDLIBPATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4. If you have installed any of the libraries that can be used to build 
 | 
				
			||||||
 | 
					   optional Python modules, set the value of the relevant HAVE_<package> 
 | 
				
			||||||
 | 
					   Makefile variable to "yes".  The Makefile currently supports:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   library               Makefile variable
 | 
				
			||||||
 | 
					   ........................................
 | 
				
			||||||
 | 
					   zlib (1.1.4)          HAVE_ZLIB
 | 
				
			||||||
 | 
					   GNU UltraFast Crypt   HAVE_UFC
 | 
				
			||||||
 | 
					   Tcl/Tk                HAVE_TCLTK (not known to work)
 | 
				
			||||||
 | 
					   GNU MP                HAVE_GMPZ
 | 
				
			||||||
 | 
					   GNU Readline          HAVE_GREADLINE
 | 
				
			||||||
 | 
					   BSD DB (v1.85)        HAVE_BSDDB
 | 
				
			||||||
 | 
					   ncurses               HAVE_NCURSES
 | 
				
			||||||
 | 
					   GNU gdbm              HAVE_GDBM
 | 
				
			||||||
 | 
					   libbz2                HAVE_BZ2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Please note that you need to check that what you have installed 
 | 
				
			||||||
 | 
					   is compatible with Python's build options.  In particular, the 
 | 
				
			||||||
 | 
					   BSD DB v1.85 library needs to be rebuilt with a source patch for 
 | 
				
			||||||
 | 
					   multithread support (doesn't change the library's reentrant status 
 | 
				
			||||||
 | 
					   but allows it to be linked to Python which is multithreaded).  
 | 
				
			||||||
 | 
					   Widely available binary packages of other librarys & DLLs are 
 | 
				
			||||||
 | 
					   not built/linked with multithread support.  Beware!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Also note that the Makefile currently expects any libraries to be 
 | 
				
			||||||
 | 
					   found with the default library search path.  You may need to add 
 | 
				
			||||||
 | 
					   -L switches to the LDFLAGS Makefile variable if you have installed 
 | 
				
			||||||
 | 
					   libraries in directories not in the default search path (which can 
 | 
				
			||||||
 | 
					   be controlled by the LIBRARY_PATH environment variable used by EMX).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					5. make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   It is usually a good idea to redirect the stdout and stderr streams 
 | 
				
			||||||
 | 
					   of the make process to log files, so that you can review any messages. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6. make test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This runs the Python regression tests, and completion is a sign of 
 | 
				
			||||||
 | 
					   a usable build.  You should check the list of skipped modules to 
 | 
				
			||||||
 | 
					   ensure that any optional modules you selected have been built; 
 | 
				
			||||||
 | 
					   checking the list of failures against the list of known failures 
 | 
				
			||||||
 | 
					   elsewhere in this document is also prudent.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					7. make install
 | 
				
			||||||
 | 
					   >>>>>> NOT YET COMPLETE <<<<<< 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					8. change to a directory outside the Python source tree and start Python. 
 | 
				
			||||||
 | 
					   Check the version and build date to confirm satisfactory installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
YOU HAVE BEEN WARNED!!
 | 
					YOU HAVE BEEN WARNED!!
 | 
				
			||||||
| 
						 | 
					@ -289,65 +404,77 @@ YOU HAVE BEEN WARNED!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I know about a number of nasties in this port.
 | 
					I know about a number of nasties in this port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{1.  Issue resolved...}
 | 
					1.  Eberhard Mattes, author of EMX, writes in his documentation that fork() 
 | 
				
			||||||
 | 
					 | 
				
			||||||
2.  Eberhard Mattes, author of EMX, writes in his documentation that fork() 
 | 
					 | 
				
			||||||
is very inefficient in the OS/2 environment.  It also requires that the 
 | 
					is very inefficient in the OS/2 environment.  It also requires that the 
 | 
				
			||||||
executable be linked in a.out format rather than OMF.  Use the os.exec 
 | 
					executable be linked in a.out format rather than OMF.  Use the os.exec 
 | 
				
			||||||
and/or the os.spawn family of functions where possible.
 | 
					and/or the os.spawn family of functions where possible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{3.  Issue resolved...}
 | 
					2.  In the absence of GNU Readline, terminating the interpreter requires a 
 | 
				
			||||||
 | 
					 | 
				
			||||||
4.  In the absence of GNU Readline, terminating the interpreter requires a 
 | 
					 | 
				
			||||||
control-Z (^Z) followed by a carriage return.  Jeff Rush documented this 
 | 
					control-Z (^Z) followed by a carriage return.  Jeff Rush documented this 
 | 
				
			||||||
problem in his Python 1.5.2 port.  With Readline, a control-D (^D) works 
 | 
					problem in his Python 1.5.2 port.  With Readline, a control-D (^D) works 
 | 
				
			||||||
as per the standard Unix environment.
 | 
					as per the standard Unix environment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
5.  EMX only has a partial implementation of fcntl().  The fcntl module 
 | 
					3.  EMX only has a partial implementation of fcntl().  The fcntl module 
 | 
				
			||||||
in this port supports what EMX supports.  If fcntl is important to you, 
 | 
					in this port supports what EMX supports.  If fcntl is important to you, 
 | 
				
			||||||
please review the EMX C Library Reference (included in .INF format in the 
 | 
					please review the EMX C Library Reference (included in .INF format in the 
 | 
				
			||||||
EMXVIEW.ZIP archive as part of the complete EMX development tools suite).
 | 
					EMXVIEW.ZIP archive as part of the complete EMX development tools suite).
 | 
				
			||||||
Because of other side-effects I have modified the test_fcntl.py test 
 | 
					Because of other side-effects I have modified the test_fcntl.py test 
 | 
				
			||||||
script to deactivate the exercising of the missing functionality.
 | 
					script to deactivate the exercising of the missing functionality.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
6.  The BSD DB module is linked against DB v1.85.  This version is widely 
 | 
					4.  the PyBSDDB3 module has been imported into the Python standard
 | 
				
			||||||
known to have bugs, although some patches have become available (and are 
 | 
					library, with the intent of superceding the BSDDB 1.85 module (bsddb).
 | 
				
			||||||
incorporated into the included bsddb module).  Unless you have problems 
 | 
					As I don't yet have a satisfactory port of Sleepcat's more recent DB
 | 
				
			||||||
with software licenses which would rule out GDBM (and the dbm module 
 | 
					library (3.3.x/4.0.x/4.1.x), I haven't included a binary of this
 | 
				
			||||||
because it is linked against the GDBM library) or need it for file format 
 | 
					module.  I have left the Python part of the PyBSDDB package in this
 | 
				
			||||||
compatibility, you may be better off deleting it and relying on GDBM.  I 
 | 
					distribution for completeness.
 | 
				
			||||||
haven't looked at porting the version of the module supporting the later 
 | 
					 | 
				
			||||||
SleepyCat releases of BSD DB, which would also require a port of the 
 | 
					 | 
				
			||||||
SleepyCat DB package.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
7.  The readline module has been linked against ncurses rather than the 
 | 
					5.  As a consequence of the PyBSDDB3 module being imported, the former 
 | 
				
			||||||
 | 
					BSD DB (bsddb) module, linked against the DB v1.85 library from EMX, 
 | 
				
			||||||
 | 
					has been renamed bsddb185.  The bsddb185 module will not be built by 
 | 
				
			||||||
 | 
					default on most platforms, but in the absence of a PyBSDDB3 module I 
 | 
				
			||||||
 | 
					have retained it in the EMX port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Version 1.85 of the DB library is widely known to have bugs, although 
 | 
				
			||||||
 | 
					some patches have become available (and are incorporated into the 
 | 
				
			||||||
 | 
					included bsddb185 module).  Unless you have problems with software 
 | 
				
			||||||
 | 
					licenses which would rule out GDBM (and the dbm module because it is 
 | 
				
			||||||
 | 
					linked against the GDBM library) or need it for file format compatibility, 
 | 
				
			||||||
 | 
					you may be better off deleting it and relying on GDBM.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Any code you have which uses the bsddb module can be modified to use the 
 | 
				
			||||||
 | 
					renamed module by changing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  import bsddb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  import bsddb185 as bsddb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A side effect of these changes is that the test_whichdb regression test
 | 
				
			||||||
 | 
					fails.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6.  The readline module has been linked against ncurses rather than the 
 | 
				
			||||||
termcap library supplied with EMX.
 | 
					termcap library supplied with EMX.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{8.  Workaround implemented}
 | 
					7.  I have configured this port to use "/" as the preferred path separator 
 | 
				
			||||||
 | 
					 | 
				
			||||||
9.  I have configured this port to use "/" as the preferred path separator 
 | 
					 | 
				
			||||||
character, rather than "\" ('\\'), in line with the convention supported 
 | 
					character, rather than "\" ('\\'), in line with the convention supported 
 | 
				
			||||||
by EMX.  Backslashes are still supported of course, and still appear in 
 | 
					by EMX.  Backslashes are still supported of course, and still appear in 
 | 
				
			||||||
unexpected places due to outside sources that don't get normalised.
 | 
					unexpected places due to outside sources that don't get normalised.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
10. While the DistUtils components are now functional, other 
 | 
					8.  While the DistUtils components are now functional, other 
 | 
				
			||||||
packaging/binary handling tools and utilities such as those included in
 | 
					packaging/binary handling tools and utilities such as those included in
 | 
				
			||||||
the Demo and Tools directories - freeze in particular - are unlikely to 
 | 
					the Demo and Tools directories - freeze in particular - are unlikely to 
 | 
				
			||||||
work.  If you do get them going, I'd like to know about your success.
 | 
					work.  If you do get them going, I'd like to know about your success.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
11. I haven't set out to support the [BEGIN|END]LIBPATH functionality 
 | 
					9.  I haven't set out to support the [BEGIN|END]LIBPATH functionality 
 | 
				
			||||||
supported by one of the earlier ports (Rush's??).  If it works let me know.
 | 
					supported by one of the earlier ports (Rush's??).  If it works let me know.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
12. There appear to be several versions of Z.DLL floating around - the one 
 | 
					10. As a result of the limitations imposed by EMX's library routines, the 
 | 
				
			||||||
I have is 45061 bytes and dated January 22, 1999.  I have a report that 
 | 
					 | 
				
			||||||
another version causes SYS3175s when the zlib module is imported.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
14. As a result of the limitations imposed by EMX's library routines, the 
 | 
					 | 
				
			||||||
standard extension module pwd only synthesises a simple passwd database, 
 | 
					standard extension module pwd only synthesises a simple passwd database, 
 | 
				
			||||||
and the grp module cannot be supported at all.
 | 
					and the grp module cannot be supported at all.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I have written substitutes, in Python naturally, which can process real 
 | 
					I have written pure Python substitutes for pwd and grp, which can process 
 | 
				
			||||||
passwd and group files for those applications (such as MailMan) that 
 | 
					real passwd and group files for those applications (such as MailMan) that 
 | 
				
			||||||
require more than EMX emulates.  I have placed pwd.py and grp.py in 
 | 
					require more than EMX emulates.  I have placed pwd.py and grp.py in 
 | 
				
			||||||
Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains 
 | 
					Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains 
 | 
				
			||||||
pwd.pyd) in the PYTHONPATH.  If you have become attached to what pwd.pyd 
 | 
					pwd.pyd) in the PYTHONPATH.  If you have become attached to what pwd.pyd 
 | 
				
			||||||
| 
						 | 
					@ -374,19 +501,20 @@ Example versions of passwd and group are in the Etc subdirectory.  Note
 | 
				
			||||||
that as of this release, this code fails the regression test.  I'm looking 
 | 
					that as of this release, this code fails the regression test.  I'm looking 
 | 
				
			||||||
into why, and hope to have this fixed.
 | 
					into why, and hope to have this fixed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
15. As of Python 2.1, termios support has mutated.  There is no longer a 
 | 
					Be aware that Python's pwd & group modules are for reading password and 
 | 
				
			||||||
platform specific TERMIOS.py containing the symbolic constants - these 
 | 
					group information only.
 | 
				
			||||||
now live in the termios module.  EMX's termios routines don't support all 
 | 
					 | 
				
			||||||
of the functionality now exposed by the termios module - refer to the EMX 
 | 
					 | 
				
			||||||
documentation to find out what is supported.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
16. The case sensitive import semantics introduced in Python 2.1 for other 
 | 
					11. EMX's termios routines don't support all of the functionality now 
 | 
				
			||||||
 | 
					exposed by the termios module - refer to the EMX documentation to find 
 | 
				
			||||||
 | 
					out what is supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					12. The case sensitive import semantics introduced in Python 2.1 for other 
 | 
				
			||||||
case insensitive but case preserving file/operating systems (Windows etc), 
 | 
					case insensitive but case preserving file/operating systems (Windows etc), 
 | 
				
			||||||
have been incorporated into this port, and are active by default.  Setting 
 | 
					have been incorporated into this port, and are active by default.  Setting 
 | 
				
			||||||
the PYTHONCASEOK environment variable (to any value) reverts to the 
 | 
					the PYTHONCASEOK environment variable (to any value) reverts to the 
 | 
				
			||||||
previous (case insensitive) semantics.
 | 
					previous (case insensitive) semantics.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
17. Because I am statically linking ncurses, the _curses_panel 
 | 
					13. Because I am statically linking ncurses, the _curses_panel 
 | 
				
			||||||
module has potential problems arising from separate library data areas.
 | 
					module has potential problems arising from separate library data areas.
 | 
				
			||||||
To avoid this, I have configured the _curses_.pyd (imported as 
 | 
					To avoid this, I have configured the _curses_.pyd (imported as 
 | 
				
			||||||
"_curses_panel") to import the ncurses symbols it needs from _curses.pyd. 
 | 
					"_curses_panel") to import the ncurses symbols it needs from _curses.pyd. 
 | 
				
			||||||
| 
						 | 
					@ -395,49 +523,43 @@ module.  As far as I can tell, the modules in the curses package do this.
 | 
				
			||||||
If you have problems attempting to use the _curses_panel support please 
 | 
					If you have problems attempting to use the _curses_panel support please 
 | 
				
			||||||
let me know, and I'll look into an alternative solution.
 | 
					let me know, and I'll look into an alternative solution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
18. I tried enabling the Python Object Allocator (PYMALLOC) code.  While 
 | 
					14. sys.platform reports "os2emx" instead of "os2".  os.name still 
 | 
				
			||||||
the port built this way passes the regression test, the Numpy extension 
 | 
					 | 
				
			||||||
(I tested v19.0.0) as built with with the port's DistUtils code doesn't 
 | 
					 | 
				
			||||||
work.  Specifically, attempting to "import Numeric" provokes a core dump.  
 | 
					 | 
				
			||||||
Supposedly Numpy v20.1.0 contains a fix for this, but for reason outlined 
 | 
					 | 
				
			||||||
in item 1 above, PYMALLOC is not enabled in this release.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
19. sys.platform now reports "os2emx" instead of "os2".  os.name still 
 | 
					 | 
				
			||||||
reports "os2".  This change was to make it easier to distinguish between 
 | 
					reports "os2".  This change was to make it easier to distinguish between 
 | 
				
			||||||
the VAC++ build (being maintained by Michael Muller) and the EMX build 
 | 
					the VAC++ build (formerly maintained by Michael Muller) and the EMX build 
 | 
				
			||||||
(this port), principally for DistUtils.
 | 
					(this port), principally for DistUtils.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
20. it appears that the %W substitution in the EMX strftime() routine has 
 | 
					15. it appears that the %W substitution in the EMX strftime() routine has 
 | 
				
			||||||
an off-by-one bug.  strftime was listed as passing the regression tests 
 | 
					an off-by-one bug.  strftime was listed as passing the regression tests 
 | 
				
			||||||
in previous releases, but this fact appears to have been an oversight in 
 | 
					in previous releases, but this fact appears to have been an oversight in 
 | 
				
			||||||
the regression test suite.  To fix this really requires a portable 
 | 
					the regression test suite.  To fix this really requires a portable 
 | 
				
			||||||
strftime routine - I'm looking into using one from FreeBSD, but its not 
 | 
					strftime routine - I'm looking into using one from FreeBSD, but its not 
 | 
				
			||||||
ready yet.
 | 
					ready yet.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
21. previous releases of my Python ports have used the GCC optimisations 
 | 
					16. I have successfully built this port with Andy Zabolotny's ports of 
 | 
				
			||||||
"-O2 -fomit-frame-pointer".  After experimenting with various optimisation 
 | 
					pgcc 2.95 and gcc 3.2.1, in addition to EM's gcc 2.8.1.  To use the 
 | 
				
			||||||
settings, including deactivating assert()ions, I have concluded that "-O2" 
 | 
					bsddb185 module with the gcc 3.2.1 build, I had to recompile the DB library 
 | 
				
			||||||
appears the best compromise for GCC 2.8.1 on my hardware.  Curiously, 
 | 
					with gcc 3.2.1 - I don't know why, but trying to import the module built 
 | 
				
			||||||
deactivating assert() (via defining NDEBUG) _negatively_ impacts 
 | 
					against a DB library compiled with gcc 2.8.1 would result in a SYS3175 
 | 
				
			||||||
performance, allbeit only slightly, so I've chosen to leave the assert()s 
 | 
					error.
 | 
				
			||||||
active.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
I did try using Andrew Zabolotny's (p)gcc 2.95.2 compiler, and in 
 | 
					I have not attempted to compile Python with any version of gcc prior to 
 | 
				
			||||||
general concluded that it produced larger objects that ran slower 
 | 
					v2.8.1.
 | 
				
			||||||
than Mattes' gcc 2.8.1 compiler.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pystone ratings varied from just over 2000/s (no optimisation at all) 
 | 
					If you compile Python with pgcc 2.95, changing the optimisation from -O2 to 
 | 
				
			||||||
to just under 3300/s (gcc 2.8.1, -O2) on my K6/2-300 system, for 
 | 
					-O3 is worthwhile.  While more aggressive optimisation is supported by gcc, 
 | 
				
			||||||
100,000 iterations per run (rather than the default 10000).
 | 
					a lot of benchmarking indicates that Python's performance is impeded by 
 | 
				
			||||||
 | 
					optimisation settings beyond just -O2 (-O3 for pgcc 2.95), at least on my 
 | 
				
			||||||
 | 
					hardware (AMD Athlon 1.4GHz, VIA C3 800MHz). 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
As a result of the optimisation change, the Python DLL is about 10% 
 | 
					If you wish to compile Python with gcc 3.2.1, you will need to modify the 
 | 
				
			||||||
smaller than in the 2.1 release, and many of the dynamically loadable 
 | 
					Makefile to compile Modules/_sre.c with either the -Os (recommended) or 
 | 
				
			||||||
modules are smaller too.
 | 
					-O options, with the global optimisation set to -O2 or -O3 (not much 
 | 
				
			||||||
 | 
					difference between these with this compiler).  Alternatively, you could 
 | 
				
			||||||
 | 
					change the global optimisation instead with a performance drop of 6-7% 
 | 
				
			||||||
 | 
					compared to the special-case approach.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[2001/08/12]
 | 
					17.  os.spawnv() and os.spawnve() expose EMX's library routines rather 
 | 
				
			||||||
 | 
					than use the emulation in os.py.
 | 
				
			||||||
22.  As of this release, os.spawnv() and os.spawnve() now expose EMX's 
 | 
					 | 
				
			||||||
library routines rather than use the emulation in os.py.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
In order to make use of some of the features this makes available in 
 | 
					In order to make use of some of the features this makes available in 
 | 
				
			||||||
the OS/2 environment, you should peruse the relevant EMX documentation 
 | 
					the OS/2 environment, you should peruse the relevant EMX documentation 
 | 
				
			||||||
| 
						 | 
					@ -447,9 +569,9 @@ supported by EMX, but there are combinations that either cannot be
 | 
				
			||||||
practically used by/in Python or have the potential to compromise your 
 | 
					practically used by/in Python or have the potential to compromise your 
 | 
				
			||||||
system's stability.
 | 
					system's stability.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
23.  pythonpm.exe in previous releases was just python.exe with the 
 | 
					18.  pythonpm.exe used to be just python.exe with the WINDOWAPI linker 
 | 
				
			||||||
WINDOWAPI linker option set in the pythonpm.def file.  In practice, 
 | 
					option set in the pythonpm.def file.  In practice, this turns out to do 
 | 
				
			||||||
this turns out to do nothing useful.
 | 
					nothing useful.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I have written a replacement which wraps the Python DLL in a genuine 
 | 
					I have written a replacement which wraps the Python DLL in a genuine 
 | 
				
			||||||
Presentation Manager application.  This version actually runs the 
 | 
					Presentation Manager application.  This version actually runs the 
 | 
				
			||||||
| 
						 | 
					@ -485,31 +607,17 @@ PythonPM.  I would like to add a PM console capability to it, but that
 | 
				
			||||||
will be a non-trivial effort.  I may be able to leverage the code in 
 | 
					will be a non-trivial effort.  I may be able to leverage the code in 
 | 
				
			||||||
Illya Vaes' Tcl/Tk port, which would make it easier.
 | 
					Illya Vaes' Tcl/Tk port, which would make it easier.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[2001/08/14]
 | 
					19.  os.chdir() uses EMX's _chdir2(), which supports changing both drive 
 | 
				
			||||||
 | 
					and directory at once.  Similarly, os.getcwd() uses EMX's _getcwd() 
 | 
				
			||||||
 | 
					which returns drive as well as path.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
24.  os.chdir() now uses EMX's _chdir2(), which supports changing 
 | 
					20.  pyconfig.h is installed in the Include subdirectory with all 
 | 
				
			||||||
both drive and directory at once.  Similarly, os.getcwd() now uses 
 | 
					other include files.
 | 
				
			||||||
EMX's _getcwd() which returns drive as well as path.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[2001/12/08] - 2.2 Beta 2
 | 
					21.  the default build explicitly sets the number of file handles 
 | 
				
			||||||
 | 
					available to a Python process to 250.  EMX default is 40, which is 
 | 
				
			||||||
25.  pyconfig.h (previously known as config.h) is now located in the 
 | 
					insufficient for the tempfile regression test (test_tempfile) which 
 | 
				
			||||||
Include subdirectory with all other include files.
 | 
					tries to create 100 temporary files.
 | 
				
			||||||
 | 
					 | 
				
			||||||
[2001/12/16] - 2.2 Release Candidate 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[2001/12/08] - 2.2 Final
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[2002/03/31] - 2.2.1 Release Candidate 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[2002/04/14] - 2.2.1 Final
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[2002/8/18]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
26.  now explicitly set the number of file handles available to a 
 | 
					 | 
				
			||||||
Python process to 250.  EMX default is 40, which is insufficient for the 
 | 
					 | 
				
			||||||
recently checked in security improvments to the tempfile regression 
 | 
					 | 
				
			||||||
test (test_tempfile) which tries to create 100 temporary files.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
This setting can be overridden via the EMXOPT environment variable:
 | 
					This setting can be overridden via the EMXOPT environment variable:
 | 
				
			||||||
  set EMXOPT=-h250
 | 
					  set EMXOPT=-h250
 | 
				
			||||||
| 
						 | 
					@ -517,6 +625,11 @@ is equivalent to the setting currently used.  The emxbind utility (if you
 | 
				
			||||||
have it installed) can also be used to permanently change the setting in 
 | 
					have it installed) can also be used to permanently change the setting in 
 | 
				
			||||||
python.exe - please refer to the EMX documentation for more information.
 | 
					python.exe - please refer to the EMX documentation for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					22.  a pure python strptime module is now part of the Python standard
 | 
				
			||||||
 | 
					library, superceding a platform specific extension module. This module
 | 
				
			||||||
 | 
					leverages the strftime module, and as a result test_strptime fails
 | 
				
			||||||
 | 
					due to the EMX strftime bug in item 20 above.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
... probably other issues that I've not encountered, or don't remember :-(
 | 
					... probably other issues that I've not encountered, or don't remember :-(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you encounter other difficulties with this port, which can be 
 | 
					If you encounter other difficulties with this port, which can be 
 | 
				
			||||||
| 
						 | 
					@ -548,12 +661,12 @@ Contact
 | 
				
			||||||
Constructive feedback, negative or positive, about this port is welcome 
 | 
					Constructive feedback, negative or positive, about this port is welcome 
 | 
				
			||||||
and should be addressed to me at the e-mail addresses below.
 | 
					and should be addressed to me at the e-mail addresses below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I intend creating a private mailing list for announcements of fixes & 
 | 
					I have a private mailing list for announcements of fixes & updates to 
 | 
				
			||||||
updates to this port.  If you wish to receive such e-mail announcments, 
 | 
					this port.  If you wish to receive such e-mail announcments, please send 
 | 
				
			||||||
please send me an e-mail requesting that you be added to this list.
 | 
					me an e-mail requesting that you be added to this list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Andrew MacIntyre
 | 
					Andrew MacIntyre
 | 
				
			||||||
E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au
 | 
					E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au
 | 
				
			||||||
Web:    http://www.andymac.org/
 | 
					Web:    http://www.andymac.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
18 August, 2001.
 | 
					18 April, 2003.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,21 +41,15 @@ extern void initsignal();
 | 
				
			||||||
#ifdef WITH_THREAD
 | 
					#ifdef WITH_THREAD
 | 
				
			||||||
extern void initthread();
 | 
					extern void initthread();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !HAVE_DYNAMIC_LOADING
 | 
					 | 
				
			||||||
extern void init_codecs();
 | 
					extern void init_codecs();
 | 
				
			||||||
extern void init_curses();
 | 
					extern void init_csv();
 | 
				
			||||||
extern void init_curses_panel();
 | 
					 | 
				
			||||||
extern void init_hotshot();
 | 
					 | 
				
			||||||
extern void init_locale();
 | 
					extern void init_locale();
 | 
				
			||||||
extern void init_random();
 | 
					extern void init_random();
 | 
				
			||||||
extern void init_sre();
 | 
					extern void init_sre();
 | 
				
			||||||
extern void init_symtable();
 | 
					extern void init_symtable();
 | 
				
			||||||
extern void init_testcapi();
 | 
					 | 
				
			||||||
extern void init_weakref();
 | 
					extern void init_weakref();
 | 
				
			||||||
extern void initarray();
 | 
					extern void initarray();
 | 
				
			||||||
extern void initbinascii();
 | 
					extern void initbinascii();
 | 
				
			||||||
extern void initbsddb185();
 | 
					 | 
				
			||||||
extern void initbz2();
 | 
					 | 
				
			||||||
extern void initcPickle();
 | 
					extern void initcPickle();
 | 
				
			||||||
extern void initcStringIO();
 | 
					extern void initcStringIO();
 | 
				
			||||||
extern void initcmath();
 | 
					extern void initcmath();
 | 
				
			||||||
| 
						 | 
					@ -63,29 +57,36 @@ extern void initdatetime();
 | 
				
			||||||
extern void initdl();
 | 
					extern void initdl();
 | 
				
			||||||
extern void initerrno();
 | 
					extern void initerrno();
 | 
				
			||||||
extern void initfcntl();
 | 
					extern void initfcntl();
 | 
				
			||||||
extern void initfpectl();
 | 
					 | 
				
			||||||
extern void initfpetest();
 | 
					 | 
				
			||||||
extern void initimageop();
 | 
					extern void initimageop();
 | 
				
			||||||
extern void inititertools();
 | 
					extern void inititertools();
 | 
				
			||||||
extern void initmath();
 | 
					extern void initmath();
 | 
				
			||||||
extern void initmd5();
 | 
					extern void initmd5();
 | 
				
			||||||
extern void initoperator();
 | 
					extern void initoperator();
 | 
				
			||||||
extern void initparser();
 | 
					 | 
				
			||||||
extern void initpcre();
 | 
					extern void initpcre();
 | 
				
			||||||
extern void initpwd();
 | 
					 | 
				
			||||||
extern void initregex();
 | 
					extern void initregex();
 | 
				
			||||||
extern void initrgbimg();
 | 
					extern void initrgbimg();
 | 
				
			||||||
extern void initrotor();
 | 
					 | 
				
			||||||
extern void initsha();
 | 
					extern void initsha();
 | 
				
			||||||
extern void initstrop();
 | 
					extern void initstrop();
 | 
				
			||||||
extern void initstruct();
 | 
					extern void initstruct();
 | 
				
			||||||
extern void inittermios();
 | 
					extern void inittermios();
 | 
				
			||||||
extern void inittime();
 | 
					extern void inittime();
 | 
				
			||||||
extern void inittiming();
 | 
					extern void inittiming();
 | 
				
			||||||
extern void initunicodedata();
 | 
					 | 
				
			||||||
extern void initxreadlines();
 | 
					extern void initxreadlines();
 | 
				
			||||||
extern void initxxsubtype();
 | 
					extern void initxxsubtype();
 | 
				
			||||||
extern void initzipimport();
 | 
					extern void initzipimport();
 | 
				
			||||||
 | 
					#if !HAVE_DYNAMIC_LOADING
 | 
				
			||||||
 | 
					extern void init_curses();
 | 
				
			||||||
 | 
					extern void init_curses_panel();
 | 
				
			||||||
 | 
					extern void init_hotshot();
 | 
				
			||||||
 | 
					extern void init_testcapi();
 | 
				
			||||||
 | 
					extern void initbsddb185();
 | 
				
			||||||
 | 
					extern void initbz2();
 | 
				
			||||||
 | 
					extern void initfpectl();
 | 
				
			||||||
 | 
					extern void initfpetest();
 | 
				
			||||||
 | 
					extern void initparser();
 | 
				
			||||||
 | 
					extern void initpwd();
 | 
				
			||||||
 | 
					extern void initrotor();
 | 
				
			||||||
 | 
					extern void initunicodedata();
 | 
				
			||||||
extern void initzlib();
 | 
					extern void initzlib();
 | 
				
			||||||
#ifdef USE_SOCKET
 | 
					#ifdef USE_SOCKET
 | 
				
			||||||
extern void init_socket();
 | 
					extern void init_socket();
 | 
				
			||||||
| 
						 | 
					@ -105,21 +106,15 @@ struct _inittab _PyImport_Inittab[] = {
 | 
				
			||||||
#ifdef WITH_THREAD
 | 
					#ifdef WITH_THREAD
 | 
				
			||||||
	{"thread", initthread},
 | 
						{"thread", initthread},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !HAVE_DYNAMIC_LOADING
 | 
					 | 
				
			||||||
	{"_codecs", init_codecs},
 | 
						{"_codecs", init_codecs},
 | 
				
			||||||
	{"_curses", init_curses},
 | 
						{"_csv", init_codecs},
 | 
				
			||||||
	{"_curses_panel", init_curses_panel},
 | 
					 | 
				
			||||||
	{"_hotshot", init_hotshot},
 | 
					 | 
				
			||||||
	{"_locale", init_locale},
 | 
						{"_locale", init_locale},
 | 
				
			||||||
	{"_random", init_random},
 | 
						{"_random", init_random},
 | 
				
			||||||
	{"_sre", init_sre},
 | 
						{"_sre", init_sre},
 | 
				
			||||||
	{"_symtable", init_symtable},
 | 
						{"_symtable", init_symtable},
 | 
				
			||||||
	{"_testcapi", init_testcapi},
 | 
					 | 
				
			||||||
	{"_weakref", init_weakref},
 | 
						{"_weakref", init_weakref},
 | 
				
			||||||
	{"array", initarray},
 | 
						{"array", initarray},
 | 
				
			||||||
	{"binascii", initbinascii},
 | 
						{"binascii", initbinascii},
 | 
				
			||||||
	{"bsddb185", initbsddb185},
 | 
					 | 
				
			||||||
	{"bz2", initbz2},
 | 
					 | 
				
			||||||
	{"cPickle", initcPickle},
 | 
						{"cPickle", initcPickle},
 | 
				
			||||||
	{"cStringIO", initcStringIO},
 | 
						{"cStringIO", initcStringIO},
 | 
				
			||||||
	{"cmath", initcmath},
 | 
						{"cmath", initcmath},
 | 
				
			||||||
| 
						 | 
					@ -127,29 +122,36 @@ struct _inittab _PyImport_Inittab[] = {
 | 
				
			||||||
	{"dl", initdl},
 | 
						{"dl", initdl},
 | 
				
			||||||
	{"errno", initerrno},
 | 
						{"errno", initerrno},
 | 
				
			||||||
	{"fcntl", initfcntl},
 | 
						{"fcntl", initfcntl},
 | 
				
			||||||
	{"fpectl", initfpectl},
 | 
					 | 
				
			||||||
	{"fpetest", initfpetest},
 | 
					 | 
				
			||||||
	{"imageop", initimageop},
 | 
						{"imageop", initimageop},
 | 
				
			||||||
	{"itertools", inititertools},
 | 
						{"itertools", inititertools},
 | 
				
			||||||
	{"math", initmath},
 | 
						{"math", initmath},
 | 
				
			||||||
	{"md5", initmd5},
 | 
						{"md5", initmd5},
 | 
				
			||||||
	{"operator", initoperator},
 | 
						{"operator", initoperator},
 | 
				
			||||||
	{"parser", initparser},
 | 
					 | 
				
			||||||
	{"pcre", initpcre},
 | 
						{"pcre", initpcre},
 | 
				
			||||||
	{"pwd", initpwd},
 | 
					 | 
				
			||||||
	{"regex", initregex},
 | 
						{"regex", initregex},
 | 
				
			||||||
	{"rgbimg", initrgbimg},
 | 
						{"rgbimg", initrgbimg},
 | 
				
			||||||
	{"rotor", initrotor},
 | 
					 | 
				
			||||||
	{"sha", initsha},
 | 
						{"sha", initsha},
 | 
				
			||||||
	{"strop", initstrop},
 | 
						{"strop", initstrop},
 | 
				
			||||||
	{"struct", initstruct},
 | 
						{"struct", initstruct},
 | 
				
			||||||
	{"termios", inittermios},
 | 
						{"termios", inittermios},
 | 
				
			||||||
	{"time", inittime},
 | 
						{"time", inittime},
 | 
				
			||||||
	{"timing", inittiming},
 | 
						{"timing", inittiming},
 | 
				
			||||||
	{"unicodedata", initunicodedata},
 | 
					 | 
				
			||||||
	{"xreadlines", initxreadlines},
 | 
						{"xreadlines", initxreadlines},
 | 
				
			||||||
	{"xxsubtype", initxxsubtype},
 | 
						{"xxsubtype", initxxsubtype},
 | 
				
			||||||
	{"zipimport", initzipimport},
 | 
						{"zipimport", initzipimport},
 | 
				
			||||||
 | 
					#if !HAVE_DYNAMIC_LOADING
 | 
				
			||||||
 | 
						{"_curses", init_curses},
 | 
				
			||||||
 | 
						{"_curses_panel", init_curses_panel},
 | 
				
			||||||
 | 
						{"_hotshot", init_hotshot},
 | 
				
			||||||
 | 
						{"_testcapi", init_testcapi},
 | 
				
			||||||
 | 
						{"bsddb185", initbsddb185},
 | 
				
			||||||
 | 
						{"bz2", initbz2},
 | 
				
			||||||
 | 
						{"fpectl", initfpectl},
 | 
				
			||||||
 | 
						{"fpetest", initfpetest},
 | 
				
			||||||
 | 
						{"parser", initparser},
 | 
				
			||||||
 | 
						{"pwd", initpwd},
 | 
				
			||||||
 | 
						{"rotor", initrotor},
 | 
				
			||||||
 | 
						{"unicodedata", initunicodedata},
 | 
				
			||||||
	{"zlib", initzlib},
 | 
						{"zlib", initzlib},
 | 
				
			||||||
#ifdef USE_SOCKET
 | 
					#ifdef USE_SOCKET
 | 
				
			||||||
	{"_socket", init_socket},
 | 
						{"_socket", init_socket},
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue