| 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 used by the build process to emulate a "real" |
| POSIX ar command; helps to build the Python shared library. |
| |
| dl_export.h - A header defining the evil magic declaration decorations |
| required for dynamic loading. |
| |
| linkcc - A shell script used by the build process to build the Python |
| shared library. |
| |
| 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. |
| |
| Compiling Your Own Version |
| |
| To compile your own version of Python 1.5.x for BeOS (with any luck, |
| Python 1.5.2 and later will compile "out of the box" on BeOS), try this: |
| |
| 1) Get the latest Python source code from ftp.python.org. |
| |
| 2) Configure with: |
| |
| ./configure --verbose --prefix=/boot/home/config --with-thread |
| |
| 3) Copy Modules/Setup.in to Modules/Setup. |
| |
| 4) Edit Modules/Setup to turn on all the modules you want built. |
| |
| Make sure you use _socket instead of socket for the name of the |
| socketmodule on BeOS (at least, until we get the new BONE networking). |
| |
| If you want the modules to be built as shared libraries, instead of as |
| part of the Python shared library, be sure to uncomment the #*shared* |
| line. I haven't done much testing with static linking, it's not as |
| interesting. |
| |
| I've tried the following modules: |
| |
| array audioop binascii cmath _codecs cPickle crypt cStringIO _curses |
| errno fcntl gdbm grp imageop _locale math md5 new operator parser |
| pcre posix pwd pyexpat readline regex rgbimg rotor select sha signal |
| _socket soundex _sre strop struct syslog termios time timing ucnhash |
| unicodedata zlib |
| |
| Note that some of these require extra libraries that aren't supplied |
| with Python. If you don't have the extra libs (you can probably get |
| them from GeekGadgets), don't try to use these modules; they won't |
| compile. |
| |
| 5) Make: |
| |
| make |
| |
| 6) Test: |
| |
| make test |
| |
| 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_re failed -- Writing: '=== Failed incorrectly', expected: |
| "('abc', 'abc', 0, 'fou" |
| |
| 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. |
| |
| That test_re failure is a little worrysome though. |
| |
| 7) Install: |
| |
| make install |
| |
| 8) Enjoy! |
| |
| - Chris Herborth (chrish@pobox.com) |
| July 21, 2000 |