summaryrefslogtreecommitdiffstats
path: root/BeOS/README
diff options
context:
space:
mode:
Diffstat (limited to 'BeOS/README')
-rw-r--r--BeOS/README140
1 files changed, 140 insertions, 0 deletions
diff --git a/BeOS/README b/BeOS/README
new file mode 100644
index 0000000..c801afb
--- /dev/null
+++ b/BeOS/README
@@ -0,0 +1,140 @@
+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