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) 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