| Python for BeOS R5 |
| |
| 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 |
| |
| |
| Using GNU readline: |
| |
| The Python interpreter is much nicer to work with interactively if |
| you've got readline installed. Highly recommended. |
| |
| You can get the original GNU readline 2.2 source code from your |
| favourite GNU software repository, such as |
| ftp://prep.ai.mit.edu/pub/gnu/. |
| |
| You can get the only-slightly-modified-for-BeOS version of GNU |
| readline 2.2 from the GeekGadgets repository; |
| ftp://ftp.ninemoons.com/pub/geekgadgets/. |
| |
| |
| Building libreadline for BeOS hosts: |
| |
| Note that we don't build a shared library version of libreadline and |
| libhistory. That's left as an exercise for the reader. |
| |
| You won't be able to link against libreadline.a using the limited |
| linker. |
| |
| 1) If you're on a PowerPC system, install the POSIX ar from |
| http://www.qnx.com/~chrish/Be/software/index.html#programming |
| (note that it's currently packaged with Python, in the BeOS/ar-1.1 |
| directory). |
| |
| If you're on an x86 system, you can leave out the "AR=ar-posix" |
| part of the following instructions. In fact, you'll have to... |
| |
| 2) For PowerPC, configure with: |
| |
| CC=mwcc CFLAGS="-O7 -i- -I." AR=ar-posix RANLIB=: ./configure --verbose \ |
| --without-gcc --prefix=/boot/home/config powerpc-*-beos |
| |
| For x86, configure with: |
| |
| CC=mwcc CFLAGS="-O2 -i- -I." RANLIB=: ./configure --verbose \ |
| --without-gcc --prefix=/boot/home/config x86-*-beos |
| |
| Don't worry about the warnings/errors configure spews for |
| powerpc-*-beos or x86-*-beos; readline doesn't actually use this host |
| information for anything, although configure will die if you don't |
| specify it. |
| |
| 3) Edit config.h to comment out "#define HAVE_SELECT 1"; select() on |
| BeOS doesn't work on file descriptors (such as stdin). |
| |
| 4) For PowerPC, make with: |
| |
| make AR=ar-posix |
| |
| For x86, make with: |
| |
| make |
| |
| 5) Install with: |
| |
| make install |
| |
| Enjoy! |
| |
| - Chris Herborth (chrish@pobox.com) |
| July 21, 2000 |
| |
| - Donn Cave (donn@oz.net) |
| October 4, 2000 |