Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(5)

Delta Between Two Patch Sets: PC/os2emx/README.os2emx

Issue 15550: Trailing white spaces
Left Patch Set: Created 7 years, 6 months ago
Right Patch Set: Created 7 years, 6 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « PC/os2emx/python33.def ('k') | PC/os2vacpp/makefile » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 This is a port of Python 2.6 to OS/2 using the EMX development tools 1 This is a port of Python 2.6 to OS/2 using the EMX development tools
2 ========================================================================= 2 =========================================================================
3 3
4 What's new since the previous release 4 What's new since the previous release
5 ------------------------------------- 5 -------------------------------------
6 6
7 Another day, another version... 7 Another day, another version...
8 8
9 9
10 Licenses and info about Python and EMX 10 Licenses and info about Python and EMX
11 -------------------------------------- 11 --------------------------------------
12 12
13 Please read the file README.Python-2.6 included in this package for 13 Please read the file README.Python-2.6 included in this package for
14 information about Python 2.6. This file is the README file from the 14 information about Python 2.6. This file is the README file from the
15 Python 2.6 source distribution available via http://www.python.org/ 15 Python 2.6 source distribution available via http://www.python.org/
16 and its mirrors. The file LICENCE.Python-2.6 is the text of the Licence 16 and its mirrors. The file LICENCE.Python-2.6 is the text of the Licence
17 from the Python 2.6 source distribution. 17 from the Python 2.6 source distribution.
18 18
19 Note that the EMX package that this package depends on is released under 19 Note that the EMX package that this package depends on is released under
20 the GNU General Public Licence. Please refer to the documentation 20 the GNU General Public Licence. Please refer to the documentation
21 accompanying the EMX Runtime libraries for more information about the 21 accompanying the EMX Runtime libraries for more information about the
22 implications of this. A copy of version 2 of the GPL is included as the 22 implications of this. A copy of version 2 of the GPL is included as the
23 file COPYING.gpl2. 23 file COPYING.gpl2.
24 24
25 Readline and GDBM are covered by the GNU General Public Licence. I think 25 Readline and GDBM are covered by the GNU General Public Licence. I think
26 Eberhard Mattes' porting changes to BSD DB v1.85 are also GPL'ed (BSD DB 26 Eberhard Mattes' porting changes to BSD DB v1.85 are also GPL'ed (BSD DB
27 itself is BSD Licenced). ncurses and expat appear to be covered by MIT 27 itself is BSD Licenced). ncurses and expat appear to be covered by MIT
28 style licences - please refer to the source distributions for more detail. 28 style licences - please refer to the source distributions for more detail.
29 zlib is distributable under a very free license. GNU UFC is under the 29 zlib is distributable under a very free license. GNU UFC is under the
30 GNU LGPL (see file COPYING.lib). 30 GNU LGPL (see file COPYING.lib).
31 31
32 My patches to the Python-2.x source distributions, and any other packages 32 My patches to the Python-2.x source distributions, and any other packages
33 used in this port, are placed in the public domain. 33 used in this port, are placed in the public domain.
34 34
35 This software is provided 'as-is', without any express or implied warranty. 35 This software is provided 'as-is', without any express or implied warranty.
36 In no event will the author be held liable for any damages arising from the 36 In no event will the author be held liable for any damages arising from the
37 use of the software. 37 use of the software.
38 38
39 I do hope however that it proves useful to someone. 39 I do hope however that it proves useful to someone.
40 40
41 41
42 Other ports 42 Other ports
43 ----------- 43 -----------
44 44
45 There have been ports of previous versions of Python to OS/2. 45 There have been ports of previous versions of Python to OS/2.
46 46
47 The best known would be that by Jeff Rush, most recently of version 47 The best known would be that by Jeff Rush, most recently of version
48 1.5.2. Jeff used IBM's Visual Age C++ (v3) for his ports, and his 48 1.5.2. Jeff used IBM's Visual Age C++ (v3) for his ports, and his
49 patches have been included in the Python 2.6 source distribution. 49 patches have been included in the Python 2.6 source distribution.
50 50
51 Andy Zabolotny implemented a port of Python v1.5.2 using the EMX 51 Andy Zabolotny implemented a port of Python v1.5.2 using the EMX
52 development tools. His patches against the Python v1.5.2 source 52 development tools. His patches against the Python v1.5.2 source
53 distribution have become the core of this port, and without his efforts 53 distribution have become the core of this port, and without his efforts
54 this port wouldn't exist. Andy's port also appears to have been 54 this port wouldn't exist. Andy's port also appears to have been
55 compiled with his port of gcc 2.95.2 to EMX, which I have but have 55 compiled with his port of gcc 2.95.2 to EMX, which I have but have
56 chosen not to use for the binary distribution of this port (see item 16 56 chosen not to use for the binary distribution of this port (see item 16
57 of the "YOU HAVE BEEN WARNED" section below). 57 of the "YOU HAVE BEEN WARNED" section below).
58 58
59 It is possible to have these earlier ports still usable after installing 59 It is possible to have these earlier ports still usable after installing
60 this port - see the README.os2emx.multiple_versions file, contributed by 60 this port - see the README.os2emx.multiple_versions file, contributed by
61 Dr David Mertz, for a suggested approach to achieving this. 61 Dr David Mertz, for a suggested approach to achieving this.
62 62
63 63
64 Software requirements 64 Software requirements
65 --------------------- 65 ---------------------
66 66
67 This package requires the EMX Runtime package, available from the 67 This package requires the EMX Runtime package, available from the
68 Hobbes (http://hobbes.nmsu.edu/) and LEO (http://archiv.leo.org/) 68 Hobbes (http://hobbes.nmsu.edu/) and LEO (http://archiv.leo.org/)
69 archives of OS/2 software. I have used EMX version 0.9d fix04 in 69 archives of OS/2 software. I have used EMX version 0.9d fix04 in
70 developing this port. 70 developing this port.
71 71
72 My development system is running OS/2 v4 with fixpack 12. 72 My development system is running OS/2 v4 with fixpack 12.
73 73
74 3rd party software which has been linked into dynamically loaded modules: 74 3rd party software which has been linked into dynamically loaded modules:
75 - ncurses (see http://dickey.his.com/ for more info, v5.2) 75 - ncurses (see http://dickey.his.com/ for more info, v5.2)
76 - GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1) 76 - GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
77 - GNU GDBM (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3) 77 - GNU GDBM (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
78 - zlib (derived from Hung-Chi Chu's port of v1.1.3, v1.1.4) 78 - zlib (derived from Hung-Chi Chu's port of v1.1.3, v1.1.4)
79 - expat (distributed with Python, v1.95.6) 79 - expat (distributed with Python, v1.95.6)
80 - GNU UFC (Kai Uwe Rommel's port available from LEO, v2.0.4) 80 - GNU UFC (Kai Uwe Rommel's port available from LEO, v2.0.4)
81 81
82 82
83 About this port 83 About this port
84 --------------- 84 ---------------
85 85
86 I have attempted to make this port as complete and functional as I can, 86 I have attempted to make this port as complete and functional as I can,
87 notwithstanding the issues in the "YOU HAVE BEEN WARNED" section below. 87 notwithstanding the issues in the "YOU HAVE BEEN WARNED" section below.
88 88
89 Core components: 89 Core components:
90 90
91 Python.exe is linked as an a.out executable, ie using EMX method E1 91 Python.exe is linked as an a.out executable, ie using EMX method E1
92 to compile & link the executable. This is so that fork() works (see 92 to compile & link the executable. This is so that fork() works (see
93 "YOU HAVE BEEN WARNED" item 1). 93 "YOU HAVE BEEN WARNED" item 1).
94 94
95 Python26.dll is created as a normal OMF DLL, with an OMF import 95 Python26.dll is created as a normal OMF DLL, with an OMF import
96 library and module definition file. There is also an a.out (.a) import 96 library and module definition file. There is also an a.out (.a) import
97 library to support linking the DLL to a.out executables. The DLL 97 library to support linking the DLL to a.out executables. The DLL
98 requires the EMX runtime DLLs. 98 requires the EMX runtime DLLs.
99 99
100 This port has been built with complete support for multithreading. 100 This port has been built with complete support for multithreading.
101 101
102 Modules: 102 Modules:
103 103
104 With the exception of modules that have a significant code size, or are 104 With the exception of modules that have a significant code size, or are
105 not recommended or desired for normal use, the standard modules are now 105 not recommended or desired for normal use, the standard modules are now
106 built into the core DLL rather than configured as dynamically loadable 106 built into the core DLL rather than configured as dynamically loadable
107 modules. This is for both reasons of performance (startup time) and 107 modules. This is for both reasons of performance (startup time) and
108 memory use (lots of small DLLs fragment the address space). 108 memory use (lots of small DLLs fragment the address space).
109 109
110 I haven't yet changed the building of Python's dynamically loadable 110 I haven't yet changed the building of Python's dynamically loadable
111 modules over to using the DistUtils. 111 modules over to using the DistUtils.
112 112
113 See "YOU HAVE BEEN WARNED" item 3 for notes about the fcntl module, and 113 See "YOU HAVE BEEN WARNED" item 3 for notes about the fcntl module, and
114 "YOU HAVE BEEN WARNED" item 10 for notes about the pwd and grp modules. 114 "YOU HAVE BEEN WARNED" item 10 for notes about the pwd and grp modules.
115 115
116 This port supports case sensitive module import semantics, matching 116 This port supports case sensitive module import semantics, matching
117 the Windows release. This can be deactivated by setting the PYTHONCASEOK 117 the Windows release. This can be deactivated by setting the PYTHONCASEOK
118 environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED" 118 environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED"
119 item 12. 119 item 12.
120 120
121 Optional modules: 121 Optional modules:
122 122
123 Where I've been able to locate the required 3rd party packages already 123 Where I've been able to locate the required 3rd party packages already
124 ported to OS/2, I've built and included them. 124 ported to OS/2, I've built and included them.
125 125
126 These include ncurses (_curses, _curses_panel), 126 These include ncurses (_curses, _curses_panel),
127 GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), and GNU UFC 127 GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), and GNU UFC
128 (crypt). 128 (crypt).
129 129
130 Expat is now included in the Python release sourceball, and the pyexpat 130 Expat is now included in the Python release sourceball, and the pyexpat
131 module is always built. 131 module is always built.
132 132
133 I have built these modules statically linked against the 3rd party 133 I have built these modules statically linked against the 3rd party
134 libraries. Unfortunately my attempts to use the dll version of GNU 134 libraries. Unfortunately my attempts to use the dll version of GNU
135 readline have been a dismal failure, in that when the dynamically 135 readline have been a dismal failure, in that when the dynamically
136 linked readline module is active other modules immediately provoke a 136 linked readline module is active other modules immediately provoke a
137 core dump when imported. 137 core dump when imported.
138 138
139 Only the BSD DB package (part of the BSD package distributed with EMX) 139 Only the BSD DB package (part of the BSD package distributed with EMX)
140 needs source modifications to be used for this port, pertaining to use 140 needs source modifications to be used for this port, pertaining to use
141 of errno with multithreading. 141 of errno with multithreading.
142 142
143 The other packages, except for ncurses and zlib, needed Makefile changes 143 The other packages, except for ncurses and zlib, needed Makefile changes
144 for multithreading support but no source changes. 144 for multithreading support but no source changes.
145 145
146 The _curses_panel module is a potential problem - see "YOU HAVE BEEN 146 The _curses_panel module is a potential problem - see "YOU HAVE BEEN
147 WARNED" item 13. 147 WARNED" item 13.
148 148
149 Upstream source patches: 149 Upstream source patches:
150 150
151 No updates to the Python 2.6 release have become available. 151 No updates to the Python 2.6 release have become available.
152 152
153 Library and other distributed Python code: 153 Library and other distributed Python code:
154 154
155 The Python standard library lives in the Lib directory. All the standard 155 The Python standard library lives in the Lib directory. All the standard
156 library code included with the Python 2.6 source distribution is included 156 library code included with the Python 2.6 source distribution is included
157 in the binary archive, with the exception of the dos-8x3 and tkinter 157 in the binary archive, with the exception of the dos-8x3 and tkinter
158 subdirectories which have been omitted to reduce the size of the binary 158 subdirectories which have been omitted to reduce the size of the binary
159 archive - the dos-8x3 components are unnecessary duplicates and Tkinter 159 archive - the dos-8x3 components are unnecessary duplicates and Tkinter
160 is not supported by this port (yet). All the plat-* subdirectories in the 160 is not supported by this port (yet). All the plat-* subdirectories in the
161 source distribution have also been omitted, except for the plat-os2emx 161 source distribution have also been omitted, except for the plat-os2emx
162 subdirectory. 162 subdirectory.
163 163
164 The Tools and Demo directories contain a collection of Python scripts. 164 The Tools and Demo directories contain a collection of Python scripts.
165 To reduce the size of the binary archive, the Demo/sgi, Demo/Tix, 165 To reduce the size of the binary archive, the Demo/sgi, Demo/Tix,
166 Demo/tkinter, Tools/audiopy and Tools/IDLE subdirectories have been 166 Demo/tkinter, Tools/audiopy and Tools/IDLE subdirectories have been
167 omitted as not being supported by this port. The Misc directory has 167 omitted as not being supported by this port. The Misc directory has
168 also been omitted. 168 also been omitted.
169 169
170 All subdirectories omitted from the binary archive can be reconstituted 170 All subdirectories omitted from the binary archive can be reconstituted
171 from the Python 2.6 source distribution, if desired. 171 from the Python 2.6 source distribution, if desired.
172 172
173 Support for building Python extensions: 173 Support for building Python extensions:
174 174
175 The Config subdirectory contains the files describing the configuration 175 The Config subdirectory contains the files describing the configuration
176 of the interpreter and the Makefile, import libraries for the Python DLL, 176 of the interpreter and the Makefile, import libraries for the Python DLL,
177 and the module definition file used to create the Python DLL. The 177 and the module definition file used to create the Python DLL. The
178 Include subdirectory contains all the standard Python header files 178 Include subdirectory contains all the standard Python header files
179 needed for building extensions. 179 needed for building extensions.
180 180
181 As I don't have the Visual Age C++ compiler, I've made no attempt to 181 As I don't have the Visual Age C++ compiler, I've made no attempt to
182 have this port support extensions built with that compiler. 182 have this port support extensions built with that compiler.
183 183
184 184
185 Packaging 185 Packaging
186 --------- 186 ---------
187 187
188 This port is packaged as follows: 188 This port is packaged as follows:
189 - python-2.6-os2emx-bin-03????.zip (binaries, library modules) 189 - python-2.6-os2emx-bin-03????.zip (binaries, library modules)
190 - python-2.6-os2emx-src-03???? (patches+makefiles for non-Python code) 190 - python-2.6-os2emx-src-03???? (patches+makefiles for non-Python code)
191 191
192 As all the Python specific patches for the port are now part of the 192 As all the Python specific patches for the port are now part of the
193 Python release tarball, only the patches and makefiles involved in 193 Python release tarball, only the patches and makefiles involved in
194 building external libraries for optional extensions are included in 194 building external libraries for optional extensions are included in
195 the source archive. 195 the source archive.
196 196
197 Documentation for the Python language, as well as the Python 2.6 197 Documentation for the Python language, as well as the Python 2.6
198 source distibution, can be obtained from the Python website 198 source distibution, can be obtained from the Python website
199 (http://www.python.org/) or the Python project pages at Sourceforge 199 (http://www.python.org/) or the Python project pages at Sourceforge
200 (http://sf.net/projects/python/). 200 (http://sf.net/projects/python/).
201 201
202 202
203 Installation 203 Installation
204 ------------ 204 ------------
205 205
206 Obtain and install, as per the included instructions, the EMX runtime 206 Obtain and install, as per the included instructions, the EMX runtime
207 package. 207 package.
208 208
209 Unpack this archive, preserving the subdirectories, in the root directory 209 Unpack this archive, preserving the subdirectories, in the root directory
210 of the drive where you want Python to live. 210 of the drive where you want Python to live.
211 211
212 Add the Python directory (eg C:\Python26) to the PATH and LIBPATH 212 Add the Python directory (eg C:\Python26) to the PATH and LIBPATH
213 variables in CONFIG.SYS. 213 variables in CONFIG.SYS.
214 214
215 You should then set the PYTHONHOME and PYTHONPATH environment variables 215 You should then set the PYTHONHOME and PYTHONPATH environment variables
216 in CONFIG.SYS. 216 in CONFIG.SYS.
217 217
218 PYTHONHOME should be set to Python's top level directory. PYTHONPATH 218 PYTHONHOME should be set to Python's top level directory. PYTHONPATH
219 should be set to the semicolon separated list of principal Python library 219 should be set to the semicolon separated list of principal Python library
220 directories. 220 directories.
221 I use: 221 I use:
222 SET PYTHONHOME=F:/Python26 222 SET PYTHONHOME=F:/Python26
223 SET PYTHONPATH=F:/Python26/Lib;F:/Python26/Lib/plat-os2emx; 223 SET PYTHONPATH=F:/Python26/Lib;F:/Python26/Lib/plat-os2emx;
224 F:/Python26/Lib/lib-dynload;F:/Python26/Lib/site-packages 224 F:/Python26/Lib/lib-dynload;F:/Python26/Lib/site-packages
225 225
226 NOTE!: the PYTHONPATH setting above is linewrapped for this document - it 226 NOTE!: the PYTHONPATH setting above is linewrapped for this document - it
227 should all be on one line in CONFIG.SYS! 227 should all be on one line in CONFIG.SYS!
228 228
229 If you wish to use the curses module, you should set the TERM and TERMINFO 229 If you wish to use the curses module, you should set the TERM and TERMINFO
230 environment variables appropriately. 230 environment variables appropriately.
231 231
232 If you don't already have ncurses installed, I have included a copy of the 232 If you don't already have ncurses installed, I have included a copy of the
233 EMX subset of the Terminfo database included with the ncurses-5.2 source 233 EMX subset of the Terminfo database included with the ncurses-5.2 source
234 distribution. This can be used by setting the TERMINFO environment variable 234 distribution. This can be used by setting the TERMINFO environment variable
235 to the path of the Terminfo subdirectory below the Python home directory. 235 to the path of the Terminfo subdirectory below the Python home directory.
236 On my system this looks like: 236 On my system this looks like:
237 SET TERMINFO=F:/Python26/Terminfo 237 SET TERMINFO=F:/Python26/Terminfo
238 238
239 For the TERM environment variable, I would try one of the following: 239 For the TERM environment variable, I would try one of the following:
240 SET TERM=ansi 240 SET TERM=ansi
241 SET TERM=os2 241 SET TERM=os2
242 SET TERM=window 242 SET TERM=window
243 243
244 You will have to reboot your system for these changes to CONFIG.SYS to take 244 You will have to reboot your system for these changes to CONFIG.SYS to take
245 effect. 245 effect.
246 246
247 If you wish to compile all the included Python library modules to bytecode, 247 If you wish to compile all the included Python library modules to bytecode,
248 you can change into the Python home directory and run the COMPILEALL.CMD 248 you can change into the Python home directory and run the COMPILEALL.CMD
249 batch file. 249 batch file.
250 250
251 You can execute the regression tests included with the Python 2.6 source 251 You can execute the regression tests included with the Python 2.6 source
252 distribution by changing to the Python 2.6 home directory and executing the 252 distribution by changing to the Python 2.6 home directory and executing the
253 REGRTEST.CMD batch file. The following tests are known to fail at this 253 REGRTEST.CMD batch file. The following tests are known to fail at this
254 time: 254 time:
255 - test_mhlib (I don't know of any port of MH to OS/2); 255 - test_mhlib (I don't know of any port of MH to OS/2);
256 - test_strptime (see "YOU HAVE BEEN WARNED" item 22); 256 - test_strptime (see "YOU HAVE BEEN WARNED" item 22);
257 - test_time (see "YOU HAVE BEEN WARNED" item 22); 257 - test_time (see "YOU HAVE BEEN WARNED" item 22);
258 - test_posixpath (see "YOU HAVE BEEN WARNED" item 23). 258 - test_posixpath (see "YOU HAVE BEEN WARNED" item 23).
259 259
260 Note that some of the network related tests expect the loopback interface 260 Note that some of the network related tests expect the loopback interface
261 (interface "lo", with IP address 127.0.0.1) to be enabled, which from my 261 (interface "lo", with IP address 127.0.0.1) to be enabled, which from my
262 experience is not the default configuration. Additionally, test_popen2 262 experience is not the default configuration. Additionally, test_popen2
263 expects the "cat" utility (such as found in ports of the GNU tools) to 263 expects the "cat" utility (such as found in ports of the GNU tools) to
264 be installed. 264 be installed.
265 265
266 266
267 Building from source 267 Building from source
268 -------------------- 268 --------------------
269 269
270 With the EMX port now checked into Python's CVS repository, the build 270 With the EMX port now checked into Python's CVS repository, the build
271 infrastructure is part of the Python release sourceball. 271 infrastructure is part of the Python release sourceball.
272 272
273 Prerequisites 273 Prerequisites
274 274
275 First and foremost, you need an operational EMX development installation - 275 First and foremost, you need an operational EMX development installation -
276 EMX v0.9d with fix04 (the latest at time of writing) & the gcc 2.8.1 276 EMX v0.9d with fix04 (the latest at time of writing) & the gcc 2.8.1
277 compiler released by Eberhard Mattes is the recommended setup. 277 compiler released by Eberhard Mattes is the recommended setup.
278 278
279 If you have a different version of gcc installed, see "YOU HAVE BEEN 279 If you have a different version of gcc installed, see "YOU HAVE BEEN
280 WARNED" item 16. 280 WARNED" item 16.
281 281
282 Other items of software required:- 282 Other items of software required:-
283 283
284 - GNU make (I'm using v3.76.1) 284 - GNU make (I'm using v3.76.1)
285 - rm, cp, mkdir from the GNU file utilities package 285 - rm, cp, mkdir from the GNU file utilities package
286 - GNU find 286 - GNU find
287 - GNU sed 287 - GNU sed
288 288
289 Procedure 289 Procedure
290 290
291 0. all changes mentioned apply to files in the PC/os2emx subdirectory 291 0. all changes mentioned apply to files in the PC/os2emx subdirectory
292 of the Python release source tree. make is also executed from this 292 of the Python release source tree. make is also executed from this
293 directory, so change into this directory before proceeding. 293 directory, so change into this directory before proceeding.
294 294
295 1. decide if you need to change the location of the Python installation. 295 1. decide if you need to change the location of the Python installation.
296 If you wish to do this, set the value of the Makefile variable LIB_DIR 296 If you wish to do this, set the value of the Makefile variable LIB_DIR
297 to the directory you wish to use for PYTHONHOME 297 to the directory you wish to use for PYTHONHOME
298 (eg /usr/local/lib/python2.6). 298 (eg /usr/local/lib/python2.6).
299 299
300 If you want Python to find its library without the PYTHONHOME 300 If you want Python to find its library without the PYTHONHOME
301 environment variable set, set the value of the Makefile variable 301 environment variable set, set the value of the Makefile variable
302 FIXED_PYHOME to "yes" (uncomment the appropriate line). 302 FIXED_PYHOME to "yes" (uncomment the appropriate line).
303 303
304 2. If you wish the Python executables (python.exe, pythonpm.exe & pgen.exe) 304 2. If you wish the Python executables (python.exe, pythonpm.exe & pgen.exe)
305 to be installed in a directory other than the PYTHONHOME directory, set 305 to be installed in a directory other than the PYTHONHOME directory, set
306 the value of the Makefile variable EXE_DIR to the appropriate directory. 306 the value of the Makefile variable EXE_DIR to the appropriate directory.
307 307
308 3. If you wish the Python core DLL (python33.dll) to be installed in a 308 3. If you wish the Python core DLL (python33.dll) to be installed in a
309 directory other than the directory in which the Python executables are 309 directory other than the directory in which the Python executables are
310 installed (by default, the PYTHONHOME directory), set the value of the 310 installed (by default, the PYTHONHOME directory), set the value of the
311 Makefile variable DLL_DIR to the appropriate directory. This DLL must 311 Makefile variable DLL_DIR to the appropriate directory. This DLL must
312 be placed in a directory on the system's LIBPATH, or that gets set 312 be placed in a directory on the system's LIBPATH, or that gets set
313 with BEGINLIBPATH or ENDLIBPATH. 313 with BEGINLIBPATH or ENDLIBPATH.
314 314
315 4. If you have installed any of the libraries that can be used to build 315 4. If you have installed any of the libraries that can be used to build
316 optional Python modules, set the value of the relevant HAVE_<package> 316 optional Python modules, set the value of the relevant HAVE_<package>
317 Makefile variable to "yes". The Makefile currently supports: 317 Makefile variable to "yes". The Makefile currently supports:
318 318
319 library Makefile variable 319 library Makefile variable
320 ........................................ 320 ........................................
321 zlib (1.1.4) HAVE_ZLIB 321 zlib (1.1.4) HAVE_ZLIB
322 GNU UltraFast Crypt HAVE_UFC 322 GNU UltraFast Crypt HAVE_UFC
323 Tcl/Tk HAVE_TCLTK (not known to work) 323 Tcl/Tk HAVE_TCLTK (not known to work)
324 GNU Readline HAVE_GREADLINE 324 GNU Readline HAVE_GREADLINE
325 ncurses HAVE_NCURSES 325 ncurses HAVE_NCURSES
326 GNU gdbm HAVE_GDBM 326 GNU gdbm HAVE_GDBM
327 libbz2 HAVE_BZ2 327 libbz2 HAVE_BZ2
328 OpenSSL HAVE_OPENSSL 328 OpenSSL HAVE_OPENSSL
329 329
330 Please note that you need to check that what you have installed 330 Please note that you need to check that what you have installed
331 is compatible with Python's build options. In particular, the 331 is compatible with Python's build options. In particular, the
332 BSD DB v1.85 library needs to be rebuilt with a source patch for 332 BSD DB v1.85 library needs to be rebuilt with a source patch for
333 multithread support (doesn't change the library's reentrant status 333 multithread support (doesn't change the library's reentrant status
334 but allows it to be linked to Python which is multithreaded). 334 but allows it to be linked to Python which is multithreaded).
335 Widely available binary packages of other librarys & DLLs are 335 Widely available binary packages of other librarys & DLLs are
336 not built/linked with multithread support. Beware! 336 not built/linked with multithread support. Beware!
337 337
338 Also note that the Makefile currently expects any libraries to be 338 Also note that the Makefile currently expects any libraries to be
339 found with the default library search path. You may need to add 339 found with the default library search path. You may need to add
340 -L switches to the LDFLAGS Makefile variable if you have installed 340 -L switches to the LDFLAGS Makefile variable if you have installed
341 libraries in directories not in the default search path (which can 341 libraries in directories not in the default search path (which can
342 be controlled by the LIBRARY_PATH environment variable used by EMX). 342 be controlled by the LIBRARY_PATH environment variable used by EMX).
343 343
344 5. make 344 5. make
345 345
346 It is usually a good idea to redirect the stdout and stderr streams 346 It is usually a good idea to redirect the stdout and stderr streams
347 of the make process to log files, so that you can review any messages. 347 of the make process to log files, so that you can review any messages.
348 348
349 6. make test 349 6. make test
350 350
351 This runs the Python regression tests, and completion is a sign of 351 This runs the Python regression tests, and completion is a sign of
352 a usable build. You should check the list of skipped modules to 352 a usable build. You should check the list of skipped modules to
353 ensure that any optional modules you selected have been built; 353 ensure that any optional modules you selected have been built;
354 checking the list of failures against the list of known failures 354 checking the list of failures against the list of known failures
355 elsewhere in this document is also prudent. 355 elsewhere in this document is also prudent.
356 356
357 7. make install 357 7. make install
358 >>>>>> NOT YET COMPLETE <<<<<< 358 >>>>>> NOT YET COMPLETE <<<<<<
359 359
360 8. change to a directory outside the Python source tree and start Python. 360 8. change to a directory outside the Python source tree and start Python.
361 Check the version and build date to confirm satisfactory installation. 361 Check the version and build date to confirm satisfactory installation.
362 362
363 363
364 YOU HAVE BEEN WARNED!! 364 YOU HAVE BEEN WARNED!!
365 ---------------------- 365 ----------------------
366 366
367 I know about a number of nasties in this port. 367 I know about a number of nasties in this port.
368 368
369 1. Eberhard Mattes, author of EMX, writes in his documentation that fork() 369 1. Eberhard Mattes, author of EMX, writes in his documentation that fork()
370 is very inefficient in the OS/2 environment. It also requires that the 370 is very inefficient in the OS/2 environment. It also requires that the
371 executable be linked in a.out format rather than OMF. Use the os.exec 371 executable be linked in a.out format rather than OMF. Use the os.exec
372 and/or the os.spawn family of functions where possible. 372 and/or the os.spawn family of functions where possible.
373 373
374 2. In the absence of GNU Readline, terminating the interpreter requires a 374 2. In the absence of GNU Readline, terminating the interpreter requires a
375 control-Z (^Z) followed by a carriage return. Jeff Rush documented this 375 control-Z (^Z) followed by a carriage return. Jeff Rush documented this
376 problem in his Python 1.5.2 port. With Readline, a control-D (^D) works 376 problem in his Python 1.5.2 port. With Readline, a control-D (^D) works
377 as per the standard Unix environment. 377 as per the standard Unix environment.
378 378
379 3. EMX only has a partial implementation of fcntl(). The fcntl module 379 3. EMX only has a partial implementation of fcntl(). The fcntl module
380 in this port supports what EMX supports. If fcntl is important to you, 380 in this port supports what EMX supports. If fcntl is important to you,
381 please review the EMX C Library Reference (included in .INF format in the 381 please review the EMX C Library Reference (included in .INF format in the
382 EMXVIEW.ZIP archive as part of the complete EMX development tools suite). 382 EMXVIEW.ZIP archive as part of the complete EMX development tools suite).
383 Because of other side-effects I have modified the test_fcntl.py test 383 Because of other side-effects I have modified the test_fcntl.py test
384 script to deactivate the exercising of the missing functionality. 384 script to deactivate the exercising of the missing functionality.
385 385
386 4. The readline module has been linked against ncurses rather than the 386 4. The readline module has been linked against ncurses rather than the
387 termcap library supplied with EMX. 387 termcap library supplied with EMX.
388 388
389 5. I have configured this port to use "/" as the preferred path separator 389 5. I have configured this port to use "/" as the preferred path separator
390 character, rather than "\" ('\\'), in line with the convention supported 390 character, rather than "\" ('\\'), in line with the convention supported
391 by EMX. Backslashes are still supported of course, and still appear in 391 by EMX. Backslashes are still supported of course, and still appear in
392 unexpected places due to outside sources that don't get normalised. 392 unexpected places due to outside sources that don't get normalised.
393 393
394 6. While the DistUtils components are now functional, other 394 6. While the DistUtils components are now functional, other
395 packaging/binary handling tools and utilities such as those included in 395 packaging/binary handling tools and utilities such as those included in
396 the Demo and Tools directories - freeze in particular - are unlikely to 396 the Demo and Tools directories - freeze in particular - are unlikely to
397 work. If you do get them going, I'd like to know about your success. 397 work. If you do get them going, I'd like to know about your success.
398 398
399 7. I haven't set out to support the [BEGIN|END]LIBPATH functionality 399 7. I haven't set out to support the [BEGIN|END]LIBPATH functionality
400 supported by one of the earlier ports (Rush's??). If it works let me know. 400 supported by one of the earlier ports (Rush's??). If it works let me know.
401 401
402 8. As a result of the limitations imposed by EMX's library routines, the 402 8. As a result of the limitations imposed by EMX's library routines, the
403 standard extension module pwd only synthesises a simple passwd database, 403 standard extension module pwd only synthesises a simple passwd database,
404 and the grp module cannot be supported at all. 404 and the grp module cannot be supported at all.
405 405
406 I have written pure Python substitutes for pwd and grp, which can process 406 I have written pure Python substitutes for pwd and grp, which can process
407 real passwd and group files for those applications (such as MailMan) that 407 real passwd and group files for those applications (such as MailMan) that
408 require more than EMX emulates. I have placed pwd.py and grp.py in 408 require more than EMX emulates. I have placed pwd.py and grp.py in
409 Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains 409 Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains
410 pwd.pyd) in the PYTHONPATH. If you have become attached to what pwd.pyd 410 pwd.pyd) in the PYTHONPATH. If you have become attached to what pwd.pyd
411 supports, you can put Lib/lib-dynload before Lib/plat-os2emx in PYTHONPATH 411 supports, you can put Lib/lib-dynload before Lib/plat-os2emx in PYTHONPATH
412 or delete/rename pwd.py & grp.py. 412 or delete/rename pwd.py & grp.py.
413 413
414 pwd.py & grp.py support locating their data files by looking in the 414 pwd.py & grp.py support locating their data files by looking in the
415 environment for them in the following sequence: 415 environment for them in the following sequence:
416 pwd.py: $ETC_PASSWD (%ETC_PASSWD%) 416 pwd.py: $ETC_PASSWD (%ETC_PASSWD%)
417 $ETC/passwd (%ETC%/passwd) 417 $ETC/passwd (%ETC%/passwd)
418 $PYTHONHOME/Etc/passwd (%PYTHONHOME%/Etc/passwd) 418 $PYTHONHOME/Etc/passwd (%PYTHONHOME%/Etc/passwd)
419 grp.py: $ETC_GROUP (%ETC_GROUP%) 419 grp.py: $ETC_GROUP (%ETC_GROUP%)
420 $ETC/group (%ETC%/group) 420 $ETC/group (%ETC%/group)
421 $PYTHONHOME/Etc/group (%PYTHONHOME%/Etc/group) 421 $PYTHONHOME/Etc/group (%PYTHONHOME%/Etc/group)
422 422
423 The ETC_PASSWD and ETC_GROUP environment variables are intended to allow 423 The ETC_PASSWD and ETC_GROUP environment variables are intended to allow
424 support for multiple passwd/grp files, where other applications may not 424 support for multiple passwd/grp files, where other applications may not
425 support as wide a variety of input variations (drive remappings, 425 support as wide a variety of input variations (drive remappings,
426 separators etc). 426 separators etc).
427 427
428 Both modules support using either the ":" character (Unix standard) or 428 Both modules support using either the ":" character (Unix standard) or
429 ";" (OS/2, DOS, Windows standard) field separator character, and pwd.py 429 ";" (OS/2, DOS, Windows standard) field separator character, and pwd.py
430 implements the following drive letter conversions for the home_directory and 430 implements the following drive letter conversions for the home_directory and
431 shell fields (for the ":" separator only): 431 shell fields (for the ":" separator only):
432 $x -> x: 432 $x -> x:
433 x; -> x: 433 x; -> x:
434 434
435 Example versions of passwd and group are in the Etc subdirectory. The 435 Example versions of passwd and group are in the Etc subdirectory. The
436 regression tests (test_pwd and test_grp) will fail if valid password and 436 regression tests (test_pwd and test_grp) will fail if valid password and
437 group files cannot be found, but should pass otherwise. 437 group files cannot be found, but should pass otherwise.
438 438
439 Be aware that Python's pwd & group modules are for reading password and 439 Be aware that Python's pwd & group modules are for reading password and
440 group information only. 440 group information only.
441 441
442 11. EMX's termios routines don't support all of the functionality now 442 11. EMX's termios routines don't support all of the functionality now
443 exposed by the termios module - refer to the EMX documentation to find 443 exposed by the termios module - refer to the EMX documentation to find
444 out what is supported. 444 out what is supported.
445 445
446 12. The case sensitive import semantics introduced in Python 2.1 for other 446 12. The case sensitive import semantics introduced in Python 2.1 for other
447 case insensitive but case preserving file/operating systems (Windows etc), 447 case insensitive but case preserving file/operating systems (Windows etc),
448 have been incorporated into this port, and are active by default. Setting 448 have been incorporated into this port, and are active by default. Setting
449 the PYTHONCASEOK environment variable (to any value) reverts to the 449 the PYTHONCASEOK environment variable (to any value) reverts to the
450 previous (case insensitive) semantics. This can be an issue with some 450 previous (case insensitive) semantics. This can be an issue with some
451 file management utilities that do not preserve the case of file and 451 file management utilities that do not preserve the case of file and
452 directory names. 452 directory names.
453 453
454 13. Because I am statically linking ncurses, the _curses_panel 454 13. Because I am statically linking ncurses, the _curses_panel
455 module has potential problems arising from separate library data areas. 455 module has potential problems arising from separate library data areas.
456 To avoid this, I have configured the _curses_.pyd (imported as 456 To avoid this, I have configured the _curses_.pyd (imported as
457 "_curses_panel") to import the ncurses symbols it needs from _curses.dll 457 "_curses_panel") to import the ncurses symbols it needs from _curses.dll
458 (which is the curses module, but with a .dll extension rather than .pyd 458 (which is the curses module, but with a .dll extension rather than .pyd
459 so that the dynamic loader can actually import the symbols from it as a 459 so that the dynamic loader can actually import the symbols from it as a
460 DLL). 460 DLL).
461 461
462 The site module (Lib/site.py) has code added to tweak BEGINLIBPATH so 462 The site module (Lib/site.py) has code added to tweak BEGINLIBPATH so
463 that _curses.dll is found when _curses_panel is imported. If you have 463 that _curses.dll is found when _curses_panel is imported. If you have
464 problems attempting to use the _curses_panel support please let me know, 464 problems attempting to use the _curses_panel support please let me know,
465 and I'll have another look at this. 465 and I'll have another look at this.
466 466
467 14. sys.platform reports "os2emx" instead of "os2". os.name still 467 14. sys.platform reports "os2emx" instead of "os2". os.name still
468 reports "os2". This change was to make it easier to distinguish between 468 reports "os2". This change was to make it easier to distinguish between
469 the VAC++ build (formerly maintained by Michael Muller) and the EMX build 469 the VAC++ build (formerly maintained by Michael Muller) and the EMX build
470 (this port), principally for DistUtils. 470 (this port), principally for DistUtils.
471 471
472 15. it appears that the %W substitution in the EMX strftime() routine has 472 15. it appears that the %W substitution in the EMX strftime() routine has
473 an off-by-one bug. strftime was listed as passing the regression tests 473 an off-by-one bug. strftime was listed as passing the regression tests
474 in previous releases, but this fact appears to have been an oversight in 474 in previous releases, but this fact appears to have been an oversight in
475 the regression test suite. To fix this really requires a portable 475 the regression test suite. To fix this really requires a portable
476 strftime routine - I'm looking into using one from FreeBSD, but its not 476 strftime routine - I'm looking into using one from FreeBSD, but its not
477 ready yet. 477 ready yet.
478 478
479 16. I have successfully built this port with Andy Zabolotny's ports of 479 16. I have successfully built this port with Andy Zabolotny's ports of
480 pgcc 2.95 and gcc 3.2.1, in addition to EM's gcc 2.8.1. 480 pgcc 2.95 and gcc 3.2.1, in addition to EM's gcc 2.8.1.
481 481
482 I have not attempted to compile Python with any version of gcc prior to 482 I have not attempted to compile Python with any version of gcc prior to
483 v2.8.1. 483 v2.8.1.
484 484
485 This release sees the default optimisation change to 485 This release sees the default optimisation change to
486 "-O3 -fomit-frame-pointer -mprobe". This works fine too for pgcc 2.95 486 "-O3 -fomit-frame-pointer -mprobe". This works fine too for pgcc 2.95
487 but not for gcc 3.2.1. 487 but not for gcc 3.2.1.
488 488
489 With gcc 3.2.1, -O3 causes 2 unexpected test failures: test_format and 489 With gcc 3.2.1, -O3 causes 2 unexpected test failures: test_format and
490 test_unicode. Both these tests pass if -O2 is instead of -O3 with this 490 test_unicode. Both these tests pass if -O2 is instead of -O3 with this
491 compiler, and the performance difference is negligible (in contrast to 491 compiler, and the performance difference is negligible (in contrast to
492 gcc 2.8.1 and pgcc 2.95, where the performance difference between the 492 gcc 2.8.1 and pgcc 2.95, where the performance difference between the
493 2 optimisation settings approaches 10%). 493 2 optimisation settings approaches 10%).
494 494
495 17. os.spawnv() and os.spawnve() expose EMX's library routines rather 495 17. os.spawnv() and os.spawnve() expose EMX's library routines rather
496 than use the emulation in os.py. 496 than use the emulation in os.py.
497 497
498 In order to make use of some of the features this makes available in 498 In order to make use of some of the features this makes available in
499 the OS/2 environment, you should peruse the relevant EMX documentation 499 the OS/2 environment, you should peruse the relevant EMX documentation
500 (EMXLIB.INF in the EMXVIEW.ZIP archive accompanying the EMX archives 500 (EMXLIB.INF in the EMXVIEW.ZIP archive accompanying the EMX archives
501 on Hobbes or LEO). Be aware that I have exposed all the "mode" options 501 on Hobbes or LEO). Be aware that I have exposed all the "mode" options
502 supported by EMX, but there are combinations that either cannot be 502 supported by EMX, but there are combinations that either cannot be
503 practically used by/in Python or have the potential to compromise your 503 practically used by/in Python or have the potential to compromise your
504 system's stability. 504 system's stability.
505 505
506 18. pythonpm.exe used to be just python.exe with the WINDOWAPI linker 506 18. pythonpm.exe used to be just python.exe with the WINDOWAPI linker
507 option set in the pythonpm.def file. In practice, this turns out to do 507 option set in the pythonpm.def file. In practice, this turns out to do
508 nothing useful. 508 nothing useful.
509 509
510 I have written a replacement which wraps the Python DLL in a genuine 510 I have written a replacement which wraps the Python DLL in a genuine
511 Presentation Manager application. This version actually runs the 511 Presentation Manager application. This version actually runs the
512 Python interpreter in a separate thread from the PM shell, in order 512 Python interpreter in a separate thread from the PM shell, in order
513 that PythonPM has a functioning message queue as good PM apps should. 513 that PythonPM has a functioning message queue as good PM apps should.
514 In its current state, PythonPM's window is hidden. It can be displayed, 514 In its current state, PythonPM's window is hidden. It can be displayed,
515 although it will have no content as nothing is ever written to the 515 although it will have no content as nothing is ever written to the
516 window. Only the "hide" button is available. Although the code 516 window. Only the "hide" button is available. Although the code
517 has support for shutting PythonPM down when the Python interpreter is 517 has support for shutting PythonPM down when the Python interpreter is
518 still busy (via the "control" menu), this is not well tested and given 518 still busy (via the "control" menu), this is not well tested and given
519 comments I've come across in EMX documentation suggesting that the 519 comments I've come across in EMX documentation suggesting that the
520 thread killing operation has problems I would suggest caution in 520 thread killing operation has problems I would suggest caution in
521 relying on this capability. 521 relying on this capability.
522 522
523 PythonPM processes commandline parameters normally. The standard input, 523 PythonPM processes commandline parameters normally. The standard input,
524 output and error streams are only useful if redirected, as PythonPM's 524 output and error streams are only useful if redirected, as PythonPM's
525 window is not a console in any form and so cannot accept or display 525 window is not a console in any form and so cannot accept or display
526 anything. This means that the -i option is ineffective. 526 anything. This means that the -i option is ineffective.
527 527
528 Because the Python thread doesn't create its own message queue, creating 528 Because the Python thread doesn't create its own message queue, creating
529 PM Windows and performing most PM operations is not possible from within 529 PM Windows and performing most PM operations is not possible from within
530 this thread. How this will affect supporting PM extensions (such as 530 this thread. How this will affect supporting PM extensions (such as
531 Tkinter using a PM port of Tcl/Tk, or wxPython using the PM port of 531 Tkinter using a PM port of Tcl/Tk, or wxPython using the PM port of
532 WxWindows) is still being researched. 532 WxWindows) is still being researched.
533 533
534 Note that os.fork() _DOES_NOT_WORK_ in PythonPM - SYS3175s are the result 534 Note that os.fork() _DOES_NOT_WORK_ in PythonPM - SYS3175s are the result
535 of trying. os.spawnv() _does_ work. PythonPM passes all regression tests 535 of trying. os.spawnv() _does_ work. PythonPM passes all regression tests
536 that the standard Python interpreter (python.exe) passes, with the exception 536 that the standard Python interpreter (python.exe) passes, with the exception
537 of test_fork1 and test_socket which both attempt to use os.fork(). 537 of test_fork1 and test_socket which both attempt to use os.fork().
538 538
539 I very much want feedback on the performance, behaviour and utility of 539 I very much want feedback on the performance, behaviour and utility of
540 PythonPM. I would like to add a PM console capability to it, but that 540 PythonPM. I would like to add a PM console capability to it, but that
541 will be a non-trivial effort. I may be able to leverage the code in 541 will be a non-trivial effort. I may be able to leverage the code in
542 Illya Vaes' Tcl/Tk port, which would make it easier. 542 Illya Vaes' Tcl/Tk port, which would make it easier.
543 543
544 19. os.chdir() uses EMX's _chdir2(), which supports changing both drive 544 19. os.chdir() uses EMX's _chdir2(), which supports changing both drive
545 and directory at once. Similarly, os.getcwd() uses EMX's _getcwd() 545 and directory at once. Similarly, os.getcwd() uses EMX's _getcwd()
546 which returns drive as well as path. 546 which returns drive as well as path.
547 547
548 20. pyconfig.h is installed in the Include subdirectory with all 548 20. pyconfig.h is installed in the Include subdirectory with all
549 other include files. 549 other include files.
550 550
551 21. the default build explicitly sets the number of file handles 551 21. the default build explicitly sets the number of file handles
552 available to a Python process to 250. EMX default is 40, which is 552 available to a Python process to 250. EMX default is 40, which is
553 insufficient for the tempfile regression test (test_tempfile) which 553 insufficient for the tempfile regression test (test_tempfile) which
554 tries to create 100 temporary files. 554 tries to create 100 temporary files.
555 555
556 This setting can be overridden via the EMXOPT environment variable: 556 This setting can be overridden via the EMXOPT environment variable:
557 set EMXOPT=-h250 557 set EMXOPT=-h250
558 is equivalent to the setting currently used. The emxbind utility (if you 558 is equivalent to the setting currently used. The emxbind utility (if you
559 have it installed) can also be used to permanently change the setting in 559 have it installed) can also be used to permanently change the setting in
560 python.exe - please refer to the EMX documentation for more information. 560 python.exe - please refer to the EMX documentation for more information.
561 561
562 22. a pure python strptime module is now part of the Python standard 562 22. a pure python strptime module is now part of the Python standard
563 library, superceding a platform specific extension module. This module 563 library, superceding a platform specific extension module. This module
564 leverages the strftime module, and as a result test_strptime fails 564 leverages the strftime module, and as a result test_strptime fails
565 due to the EMX strftime bug in item 20 above. 565 due to the EMX strftime bug in item 20 above.
566 566
567 23. test_posixpath attempts to exercise various Posix path related 567 23. test_posixpath attempts to exercise various Posix path related
568 functionality. Most of the sub-tests pass, but the "ismount" and 568 functionality. Most of the sub-tests pass, but the "ismount" and
569 "samestat" subtests fail: 569 "samestat" subtests fail:
570 - EMX provides not satisfactory mount point emulation, so "ismount" 570 - EMX provides not satisfactory mount point emulation, so "ismount"
571 cannot succeed; 571 cannot succeed;
572 - EMX documents that successive stat() calls will produce different 572 - EMX documents that successive stat() calls will produce different
573 results, so "samestat" cannot succeed. 573 results, so "samestat" cannot succeed.
574 574
575 test_posixpath should skip these tests on EMX. 575 test_posixpath should skip these tests on EMX.
576 576
577 24. I have reports of BitTorrent not working. It appears that the 577 24. I have reports of BitTorrent not working. It appears that the
578 EMX select() emulation, possibly in concert with bugs in the TCP/IP 578 EMX select() emulation, possibly in concert with bugs in the TCP/IP
579 stack, runs into problems under the stress imposed by this application. 579 stack, runs into problems under the stress imposed by this application.
580 I think it suffices to say that BitTorrent is a fair stress test of a 580 I think it suffices to say that BitTorrent is a fair stress test of a
581 system's networking capability. 581 system's networking capability.
582 582
583 25. In the absence of an EMX implementation of the link() function, I've 583 25. In the absence of an EMX implementation of the link() function, I've
584 implemented a crude Python emulation, in the file 584 implemented a crude Python emulation, in the file
585 Lib/plat-os2emx/_emx_link.py. This is imported into the os module, and 585 Lib/plat-os2emx/_emx_link.py. This is imported into the os module, and
586 becomes available as os.link() in the normal way. 586 becomes available as os.link() in the normal way.
587 587
588 The emulation copies the source file in binary mode, and will fail if 588 The emulation copies the source file in binary mode, and will fail if
589 disk space is exhausted. The call fails if the target already exists. 589 disk space is exhausted. The call fails if the target already exists.
590 There are no guarantees to thread safety with this emulation - beware! 590 There are no guarantees to thread safety with this emulation - beware!
591 591
592 The emulation was written to support a link() based file locking system 592 The emulation was written to support a link() based file locking system
593 used in GNU Mailman. 593 used in GNU Mailman.
594 594
595 26. AF_UNIX sockets, otherwise known as Unix domain sockets, are now 595 26. AF_UNIX sockets, otherwise known as Unix domain sockets, are now
596 supported. Unfortunately, there are some traps arising from the 596 supported. Unfortunately, there are some traps arising from the
597 implementation in IBM's TCP/IP stack:- 597 implementation in IBM's TCP/IP stack:-
598 - the path name must start with '\\socket\\' ('/socket/' won't work!), 598 - the path name must start with '\\socket\\' ('/socket/' won't work!),
599 with the length of the full path name less than 108 characters; 599 with the length of the full path name less than 108 characters;
600 - unlike Unix, the socket endpoints don't exist in the filesystem; 600 - unlike Unix, the socket endpoints don't exist in the filesystem;
601 - by default, sockets are in binary mode. 601 - by default, sockets are in binary mode.
602 602
603 27. As of Python 2.4, the mpz, rotor and xreadlines modules have been 603 27. As of Python 2.4, the mpz, rotor and xreadlines modules have been
604 dropped from the Python source tree. 604 dropped from the Python source tree.
605 605
606 28. The subprocess module was added to the standard library relatively 606 28. The subprocess module was added to the standard library relatively
607 late in the 2.4 development cycle. Unfortunately I haven't had the 607 late in the 2.4 development cycle. Unfortunately I haven't had the
608 round tuits to adapt the module to the EMX environment yet, and 608 round tuits to adapt the module to the EMX environment yet, and
609 test_subprocess has a number of failures as a result. 609 test_subprocess has a number of failures as a result.
610 610
611 29. The default stack size for threads has been 64k. This is proving 611 29. The default stack size for threads has been 64k. This is proving
612 insufficient for some codebases, such as Zope. The thread stack size 612 insufficient for some codebases, such as Zope. The thread stack size
613 still defaults to 64k, but this can now be increased via the stack_size() 613 still defaults to 64k, but this can now be increased via the stack_size()
614 function exposed by the threading & thread modules as well as by defining 614 function exposed by the threading & thread modules as well as by defining
615 THREAD_STACK_SIZE to an appropriate value in the Makefile (which contains 615 THREAD_STACK_SIZE to an appropriate value in the Makefile (which contains
616 a commented out definition for 128kB thread stacks). I have seen 616 a commented out definition for 128kB thread stacks). I have seen
617 references to heavy Zope/Plone usage requiring 1MB thread stacks on 617 references to heavy Zope/Plone usage requiring 1MB thread stacks on
618 FreeBSD and Linux, but doubt that for most likely usage on OS/2 that 618 FreeBSD and Linux, but doubt that for most likely usage on OS/2 that
619 more than 256kB is necessary. The size of the required stacks (main 619 more than 256kB is necessary. The size of the required stacks (main
620 and thread) can vary significantly depending on which version of gcc 620 and thread) can vary significantly depending on which version of gcc
621 is used along with the compiler optimisations selected. Note that the 621 is used along with the compiler optimisations selected. Note that the
622 main thread stack size is set during linking and is currently 2MB. 622 main thread stack size is set during linking and is currently 2MB.
623 623
624 ... probably other issues that I've not encountered, or don't remember :-( 624 ... probably other issues that I've not encountered, or don't remember :-(
625 625
626 If you encounter other difficulties with this port, which can be 626 If you encounter other difficulties with this port, which can be
627 characterised as peculiar to this port rather than to the Python release, 627 characterised as peculiar to this port rather than to the Python release,
628 I would like to hear about them. However I cannot promise to be able to do 628 I would like to hear about them. However I cannot promise to be able to do
629 anything to resolve such problems. See the Contact section below... 629 anything to resolve such problems. See the Contact section below...
630 630
631 631
632 To do... 632 To do...
633 -------- 633 --------
634 634
635 In no particular order of apparent importance or likelihood... 635 In no particular order of apparent importance or likelihood...
636 636
637 - support Tkinter and/or alternative GUI (wxWindows??) 637 - support Tkinter and/or alternative GUI (wxWindows??)
638 638
639 639
640 Credits 640 Credits
641 ------- 641 -------
642 642
643 In addition to people identified above, I'd like to thank: 643 In addition to people identified above, I'd like to thank:
644 - the BDFL, Guido van Rossum, and crew for Python; 644 - the BDFL, Guido van Rossum, and crew for Python;
645 - Dr David Mertz, for trying out a pre-release of this port; 645 - Dr David Mertz, for trying out a pre-release of this port;
646 - the Python-list/comp.lang.python community; 646 - the Python-list/comp.lang.python community;
647 - John Poltorak, for input about pwd/grp. 647 - John Poltorak, for input about pwd/grp.
648 648
649 Contact 649 Contact
650 ------- 650 -------
651 651
652 Constructive feedback, negative or positive, about this port is welcome 652 Constructive feedback, negative or positive, about this port is welcome
653 and should be addressed to me at the e-mail addresses below. 653 and should be addressed to me at the e-mail addresses below.
654 654
655 I have a private mailing list for announcements of fixes & updates to 655 I have a private mailing list for announcements of fixes & updates to
656 this port. If you wish to receive such e-mail announcments, please send 656 this port. If you wish to receive such e-mail announcments, please send
657 me an e-mail requesting that you be added to this list. 657 me an e-mail requesting that you be added to this list.
658 658
659 Andrew MacIntyre 659 Andrew MacIntyre
660 E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au 660 E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au
661 Web: http://www.andymac.org/ 661 Web: http://www.andymac.org/
662 662
663 28 January, 2008. 663 28 January, 2008.
LEFTRIGHT

RSS Feeds Recent Issues | This issue
This is Rietveld 894c83f36cb7+