~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to PC/os2vacpp/readme.txt

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
IBM VisualAge C/C++ for OS/2
 
2
============================
 
3
 
 
4
To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'
 
5
command.  This will build a PYTHON15.DLL containing the set of Python
 
6
modules listed in config.c and a small PYTHON.EXE to start the
 
7
interpreter.
 
8
 
 
9
By changing the C compiler flag /Gd- in the makefile to /Gd+, you can
 
10
reduce the size of these by causing Python to dynamically link to the
 
11
C runtime DLLs instead of including their bulk in your binaries. 
 
12
However, this means that any system on which you run Python must have
 
13
the VAC++ compiler installed in order to have those DLLs available.
 
14
 
 
15
During the build process you may see a couple of harmless warnings:
 
16
 
 
17
  From the C Compiler, "No function prototype given for XXX", which
 
18
  comes from the use of K&R parameters within Python for portability.
 
19
 
 
20
  From the ILIB librarian, "Module Not Found (XXX)", which comes
 
21
  from its attempt to perform the (-+) operation, which removes and
 
22
  then adds a .OBJ to the library.  The first time a build is done,
 
23
  it obviously cannot remove what is not yet built.
 
24
 
 
25
This build includes support for most Python functionality as well as
 
26
TCP/IP sockets.  It omits the Posix ability to 'fork' a process but
 
27
supports threads using OS/2 native capabilities.  I have tried to
 
28
support everything possible but here are a few usage notes.
 
29
 
 
30
 
 
31
-- os.popen() Usage Warnings
 
32
 
 
33
With respect to my implementation of popen() under OS/2:
 
34
 
 
35
    import os
 
36
 
 
37
    fd = os.popen("pkzip.exe -@ junk.zip", 'wb')
 
38
    fd.write("file1.txt\n")
 
39
    fd.write("file2.txt\n")
 
40
    fd.write("file3.txt\n")
 
41
    fd.write("\x1a")  # Should Not Be Necessary But Is
 
42
    fd.close()
 
43
 
 
44
There is a bug, either in the VAC++ compiler or OS/2 itself, where the
 
45
simple closure of the write-side of a pipe -to- a process does not
 
46
send an EOF to that process.  I find I must explicitly write a
 
47
control-Z (EOF) before closing the pipe.  This is not a problem when
 
48
using popen() in read mode.
 
49
 
 
50
One other slight difference with my popen() is that I return None
 
51
from the close(), instead of the Unix convention of the return code
 
52
of the spawned program.  I could find no easy way to do this under
 
53
OS/2.
 
54
 
 
55
 
 
56
-- BEGINLIBPATH/ENDLIBPATH
 
57
 
 
58
With respect to environment variables, this OS/2 port supports the
 
59
special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to
 
60
control where to load conventional DLLs from.  Those names are
 
61
intercepted and converted to calls on the OS/2 kernel APIs and
 
62
are inherited by child processes, whether Python-based or not.
 
63
 
 
64
A few new attributes have been added to the os module:
 
65
 
 
66
    os.meminstalled  # Count of Bytes of RAM Installed on Machine
 
67
    os.memkernel     # Count of Bytes of RAM Reserved (Non-Swappable)
 
68
    os.memvirtual    # Count of Bytes of Virtual RAM Possible
 
69
    os.timeslice     # Duration of Scheduler Timeslice, in Milliseconds
 
70
    os.maxpathlen    # Maximum Length of a Path Specification, in chars
 
71
    os.maxnamelen    # Maximum Length of a Single Dir/File Name, in chars
 
72
    os.version       # Version of OS/2 Being Run e.g. "4.00"
 
73
    os.revision      # Revision of OS/2 Being Run (usually zero)
 
74
    os.bootdrive     # Drive that System Booted From e.g. "C:"
 
75
                     # (useful to find the CONFIG.SYS used to boot with)
 
76
 
 
77
 
 
78
-- Using Python as the Default OS/2 Batch Language
 
79
 
 
80
Note that OS/2 supports the Unix technique of putting the special
 
81
comment line at the time of scripts e.g. "#!/usr/bin/python" in
 
82
a different syntactic form.  To do this, put your script into a file
 
83
with a .CMD extension and added 'extproc' to the top as follows:
 
84
 
 
85
    extproc C:\Python\Python.exe -x
 
86
    import os
 
87
    print "Hello from Python"
 
88
 
 
89
The '-x' option tells Python to skip the first line of the file
 
90
while processing the rest as normal Python source.
 
91
 
 
92
 
 
93
-- Suggested Environment Variable Setup
 
94
 
 
95
With respect to the environment variables for Python, I use the
 
96
following setup:
 
97
 
 
98
    Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs
 
99
    Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \
 
100
                     E:\Tau\Projects\Python\Lib\plat-win
 
101
 
 
102
The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where
 
103
you put any Python extension DLLs you may create/obtain.  There
 
104
are none provided with this release.
 
105
 
 
106
 
 
107
-- Contact Info
 
108
 
 
109
Jeff Rush is no longer supporting the VACPP port :-(
 
110
 
 
111
I don't have the VACPP compiler, so can't reliably maintain this port. 
 
112
 
 
113
Anyone with VACPP who can contribute patches to keep this port buildable
 
114
should upload them to the Python Patch Manager at Sourceforge and 
 
115
assign them to me for review/checkin.
 
116
 
 
117
Andrew MacIntyre
 
118
aimacintyre at users.sourceforge.net
 
119
August 18, 2002.