Python for BeOS R5

In Python-2.1, the standard version of the new setup.py program
will not build the full complement of modules on BeOS.  Instead,
please replace it with the special BeOS version in Misc/BeOS-setup.py.

To build,

   1)  cp Misc/BeOS-setup.py setup.py
   2)  ./configure --prefix=/boot/home/config
   3)  make

The modules will all build, except termios which assumes some flags
we don't have.  Put a libreadline.a in /boot/home/config/lib to get
a readline.so for your interactive editing convenience;  NB, not
libreadline.so, you want to link a static readline library into the
dynamically loaded Python module.

Test:

   make test

   The BeOS is Not UNIX category:
 - test_select crashed -- select.error : (-2147459072, 'Bad file descriptor')
 - test_socket crashed -- exceptions.AttributeError : SOCK_RAW
 - test_fcntl crashed -- exceptions.IOError: [Errno -2147483643] Invalid argument

   This one is funny!  BeOS does support large files, and that's why
       we get this error:  the file is too big for my filesystem!
 - test_largefile crashed -- exceptions.IOError: [Errno -2147459065]
       No space left on device

 - test_pickle crashed.  This is apparently a serious problem, "complex"
       number objects reconstructed from a pickle don't compare equal to
       their ancestors.  But it happens on BeOS PPC only, not Intel.

Install:

   make install


Maintainer: None (please volunteer if you would like to see this port continue
to exist!)
