Python for BeOS R5

This directory contains several useful things to help you build your own
version of Python for BeOS.

What's Here?

ar-fake - A shell script that copies around .o files, for the as much
              of the general effect of ar as we need but more fool-proof.
              It also has an "so" command to build the shared library
              that we actually install and use.

linkmodule - A shell script used by the build process to build the
             shared library versions of the standard modules; you'll
             probably need this if you want to build dynamically loaded
             modules from the Python archives.

README - This file (obviously!).

README.readline-2.2 - Instructions for compiling/installing GNU readline 2.2.
                      You'll have to grab the GNU readline source code from
                      prep.ai.mit.edu:/pub/GNU or any other GNU mirror.

                      The Python interpreter is much nicer to work with
                      interactively if you've got readline installed.  Highly
                      recommended.

To build,

   1)  ./configure --prefix=/boot/home/config

   2)  cp Modules/Setup.in Modules/Setup
       edit Modules/Setup
          comment out grp and mmap, and pwd on 4.5 or earlier
          uncomment any modules you want to include in python
          (you can also add them later as shared libraries.)
   3)  make

Test:

   make test

   [Chris Herborth writes:]
   test_popen2 will probably hang; it's deadlocked on a semaphore.  I should
   probably disable popen2 support... it uses fork(), and fork() doesn't mix
   with threads on BeOS.  In *THEORY* you could use it in a single-threaded
   program, but I haven't tried.

   If test_popen2 does hang, you can find the semaphore it's hung on via the
   "ps" command.  Look for python and you'll find something like this:

./python -tt ../src/Lib/test/regrtest.py (team 26922) (uid 0) (gid 0)
  39472               python  sem  10    3785    1500 piperd(360526)
./python -tt ../src/Lib/test/regrtest.py (team 26923) (uid 0) (gid 0)
  39477               python  sem  10      25       4 python lock (1)(360022)
                                                                      ^^^^^^
   That last number is the semaphore the fork()'d python is stuck on
   (see how it's helpfully called "python lock (1)"? :-).  You can unblock
   that semaphore to let the tests continue using the "release" command
   with that semaphore number.  Be _very_ careful with "release" though,
   releasing the wrong semaphore can be hazardous.

   Expect the following errors:

   test * skipped -- an optional feature could not be imported (you'll see
                     quite a few of these, based on what optional modules
                     you've included)

   test test_fork1 skipped -- can't mix os.fork with  threads on BeOS

   test test_select crashed -- select.error : (-2147459072, 'Bad file
                               descriptor')

   test test_socket crashed -- exceptions.AttributeError : SOCK_RAW

   These are all due to either partial support for certain things (like
   sockets), or valid differences between systems.

   test 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

Enjoy!

- Chris Herborth (chrish@pobox.com)
  July 21, 2000

- Donn Cave (donn@oz.net)
  October 4, 2000
