Completely revamped BeOS notes, by Donn Cave (SF patch 411834).

This commit is contained in:
Guido van Rossum 2001-04-10 21:51:29 +00:00
parent 4611df0ece
commit 13aa70679e
1 changed files with 23 additions and 109 deletions

View File

@ -1,129 +1,43 @@
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) ./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.)
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
[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.
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
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:
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
./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.
- 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