141 lines
5.1 KiB
Plaintext
141 lines
5.1 KiB
Plaintext
|
Python 1.5.1 for BeOS
|
||
|
|
||
|
This directory contains several useful things to help you build your own
|
||
|
version of Python for BeOS.
|
||
|
|
||
|
At this time, Python only supports BeOS on the PowerPC platform; if you'd
|
||
|
like to help me port it to the x86 platform, please let me know (I only
|
||
|
have limited access to BeOS on an x86 system). If you'd like to lend
|
||
|
me an x86 laptop running BeOS to do the port, _definitely_ let me know! :-)
|
||
|
I'll even give it back when I'm done.
|
||
|
|
||
|
What's Here?
|
||
|
|
||
|
ar-1.1 - An "ar" command with a POSIX 1003.2 interface; you'll need
|
||
|
this for building the Python libraries under BeOS
|
||
|
(/bin/ar just won't cut it).
|
||
|
|
||
|
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.
|
||
|
|
||
|
PyImport_BeImageID.html - Documentation for a function added to the
|
||
|
Python interpreter under BeOS; not interesting
|
||
|
unless you're writing your own BeOS-specific
|
||
|
modules for dealing with dynamically-loaded
|
||
|
Python modules.
|
||
|
|
||
|
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.1 for BeOS (with any luck,
|
||
|
Python 1.6 will compile "out of the box" on BeOS), try this:
|
||
|
|
||
|
1) Get the Python 1.5.1 source code from ftp.python.org.
|
||
|
|
||
|
2) Get the Python 1.5.1 diffs from my web pages
|
||
|
(http://www.qnx.com/~chrish/Be/software/); if you can't get them through
|
||
|
a web browser, send me email and I'll mail them back to you. These
|
||
|
diffs should also be available at ftp.python.org along with the BeOS
|
||
|
binary archive.
|
||
|
|
||
|
Run autoconf. If you don't have autoconf, you can get a precompiled
|
||
|
version from GeekGadgets (ftp://ftp.ninemoons.com/pub/geekgadgets/...).
|
||
|
|
||
|
3) Compile and install the POSIX ar from the ar-1.1 directory; see the
|
||
|
README in there for details.
|
||
|
|
||
|
4) Configure with:
|
||
|
|
||
|
AR=ar-posix RANLIB=: ./configure --verbose --without-gcc \
|
||
|
--prefix=/boot/home/config --with-thread
|
||
|
|
||
|
The only strange thing that happens during the configure is that
|
||
|
we fail the "genuine getopt()" test; this is odd because we've got
|
||
|
a real live GNU getopt() in the system libs. Other packages built
|
||
|
using configure (such as all of the goodies in GeekGadgets) suffer
|
||
|
the same fate though, so it's not a Python problem.
|
||
|
|
||
|
5) Copy Modules/Setup.in to Modules/Setup.
|
||
|
|
||
|
6) Edit Modules/Setup to turn on all the modules you want built. I've
|
||
|
personally built the following modules:
|
||
|
|
||
|
array, audioop, binascii, cPickle, cStringIO, cmath, crypt, curses,
|
||
|
errno, fcntl, gdbm, grp, imageop, math, md5, new, operator, parser,
|
||
|
pcre, posix, pwd, readline, regex, reop, rgbimg, rotor, select,
|
||
|
signal, socket, soundex, strop, struct, syslog, termios, thread,
|
||
|
time, timing, zlib
|
||
|
|
||
|
Newly compiled/tested with 1.5.1:
|
||
|
|
||
|
_locale
|
||
|
|
||
|
You can get precompiled gdbm, ncurses, and zlib libraries from the
|
||
|
GeekGadgets repository (ftp://ftp.ninemoons.com/pub/geekgadgets/...).
|
||
|
|
||
|
Make sure you use _socket instead of socket for the name of the
|
||
|
socketmodule on BeOS.
|
||
|
|
||
|
7) Make:
|
||
|
|
||
|
make
|
||
|
|
||
|
or, if you feel the need for speed:
|
||
|
|
||
|
make OPT="-O7 -opt schedule604"
|
||
|
|
||
|
You can safely ignore any warnings you see during the build (and you'll
|
||
|
see several if you use full warnings; I compiled the distribution with
|
||
|
-w9 -ansi strict and cleaned up any errors...).
|
||
|
|
||
|
8) Test:
|
||
|
|
||
|
make test
|
||
|
|
||
|
Expect the following errors:
|
||
|
|
||
|
test_builtin failed -- round(1000000000.0)
|
||
|
test_fcntl skipped -- an optional feature could not be imported
|
||
|
test_grp crashed -- exceptions.KeyError : getgrnam(): name not found
|
||
|
test_pwd failed -- Writing: 'fakename', expected: 'caught e'
|
||
|
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 (like the round()
|
||
|
error; different CPUs represent floating point numbers differently,
|
||
|
which can cause minor rounding errors).
|
||
|
|
||
|
9) Install:
|
||
|
|
||
|
make install
|
||
|
|
||
|
10) Enjoy!
|
||
|
|
||
|
NOTE
|
||
|
|
||
|
If you're going to build your own C/C++-based Python modules, link them
|
||
|
against the libpython1.5.so shared library (in /boot/home/config/lib)
|
||
|
instead of the libpython1.5.a (in /boot/home/config/lib/python1.5/config),
|
||
|
unless you're building a statically-linked python interpreter (then you
|
||
|
could try linking against _APP_ instead).
|
||
|
|
||
|
Mixing modules linked against the shared library with a statically-linked
|
||
|
interpreter is a bad idea (and it'll fail in _interesting_ ways).
|
||
|
|
||
|
- Chris Herborth (chrish@qnx.com)
|
||
|
April 25, 1998
|