symbian-qemu-0.9.1-12/python-2.6.1/PC/os2vacpp/readme.txt
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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.