Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 1 | Python 1.5.x (x > 1) for BeOS |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 2 | |
| 3 | This directory contains several useful things to help you build your own |
| 4 | version of Python for BeOS. |
| 5 | |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 6 | What's Here? |
| 7 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 8 | ar-fake - A shell script used by the build process to emulate a "real" |
| 9 | POSIX ar command; helps to build the Python shared library. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 10 | |
| 11 | linkcc - A shell script used by the build process to build the Python |
| 12 | shared library. |
| 13 | |
| 14 | linkmodule - A shell script used by the build process to build the |
| 15 | shared library versions of the standard modules; you'll |
| 16 | probably need this if you want to build dynamically loaded |
| 17 | modules from the Python archives. |
| 18 | |
| 19 | PyImport_BeImageID.html - Documentation for a function added to the |
| 20 | Python interpreter under BeOS; not interesting |
| 21 | unless you're writing your own BeOS-specific |
| 22 | modules for dealing with dynamically-loaded |
| 23 | Python modules. |
| 24 | |
| 25 | README - This file (obviously!). |
| 26 | |
| 27 | README.readline-2.2 - Instructions for compiling/installing GNU readline 2.2. |
| 28 | You'll have to grab the GNU readline source code from |
| 29 | prep.ai.mit.edu:/pub/GNU or any other GNU mirror. |
| 30 | |
| 31 | The Python interpreter is much nicer to work with |
| 32 | interactively if you've got readline installed. Highly |
| 33 | recommended. |
| 34 | |
| 35 | Compiling Your Own Version |
| 36 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 37 | To compile your own version of Python 1.5.x for BeOS (with any luck, |
| 38 | Python 1.5.2 and later will compile "out of the box" on BeOS), try this: |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 39 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 40 | 1) Get the latest Python source code from ftp.python.org. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 41 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 42 | 2) Configure with: |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 43 | |
Guido van Rossum | eb45232 | 1998-12-18 22:00:58 +0000 | [diff] [blame] | 44 | AR=$(pwd)/BeOS/ar-fake RANLIB=: ./configure --verbose \ |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 45 | --prefix=/boot/home/config --with-thread |
Guido van Rossum | eb45232 | 1998-12-18 22:00:58 +0000 | [diff] [blame] | 46 | |
Guido van Rossum | 343848b | 1998-12-22 13:35:29 +0000 | [diff] [blame] | 47 | When configure is done, add this anywhere in config.h: |
Guido van Rossum | eb45232 | 1998-12-18 22:00:58 +0000 | [diff] [blame] | 48 | |
| 49 | #ifndef DL_EXPORT |
| 50 | # define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE |
| 51 | #endif |
| 52 | #ifndef DL_IMPORT |
| 53 | # ifdef USE_DL_EXPORT |
| 54 | # define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE |
| 55 | # else |
| 56 | # define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE |
| 57 | # endif |
| 58 | #endif |
| 59 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 60 | 3) Copy Modules/Setup.in to Modules/Setup. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 61 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 62 | 4) Edit Modules/Setup to turn on all the modules you want built. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 63 | |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 64 | Make sure you use _socket instead of socket for the name of the |
| 65 | socketmodule on BeOS. |
| 66 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 67 | If you want the modules to be built as shared libraries, instead of as |
| 68 | part of the Python shared library, be sure to uncomment the #*shared* |
| 69 | line. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 70 | |
Guido van Rossum | 343848b | 1998-12-22 13:35:29 +0000 | [diff] [blame] | 71 | I've tried the following modules: |
| 72 | |
| 73 | regex pcre posix signal readline array cmath math strop struct time |
| 74 | operator _locale fcntl pwd grp select _socket errno crypt termios |
| 75 | audioop imageop rgbimg md5 timing rotor syslog curses new gdbm soundex |
| 76 | binascii parser cStringIO cPickle zlib |
| 77 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 78 | 5) Make sure Modules/Makefile.pre has REALLIBRARY set to: |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 79 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 80 | REALLIBRARY=../libpython$(VERSION).so |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 81 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 82 | 6) Make: |
| 83 | |
Guido van Rossum | 343848b | 1998-12-22 13:35:29 +0000 | [diff] [blame] | 84 | make OPT=-DUSE_DL_EXPORT CCSHARED=-UUSE_DL_EXPORT MACHDEP=beos |
Guido van Rossum | eb45232 | 1998-12-18 22:00:58 +0000 | [diff] [blame] | 85 | |
| 86 | On PowerPC systems, you'll see lots of warnings about duplicate |
| 87 | symbols when things get linked; don't worry about this, it's |
| 88 | harmless (and should disappear soon). |
| 89 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 90 | 7) Test: |
| 91 | |
Guido van Rossum | f96cff2 | 1998-12-22 13:40:55 +0000 | [diff] [blame^] | 92 | make OPT=-DUSE_DL_EXPORT CCSHARED=-UUSE_DL_EXPORT MACHDEP=beos test |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 93 | |
| 94 | Expect the following errors: |
| 95 | |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 96 | test_grp crashed -- exceptions.KeyError : getgrnam(): name not found |
| 97 | test_pwd failed -- Writing: 'fakename', expected: 'caught e' |
| 98 | test_socket crashed -- exceptions.AttributeError : SOCK_RAW |
| 99 | |
| 100 | These are all due to either partial support for certain things (like |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 101 | sockets), or valid differences between systems. |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 102 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 103 | NOTE: On R4/x86, the pause() function is broken; expect the signal |
| 104 | module test to crash Python! |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 105 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 106 | 8) Install: |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 107 | |
Guido van Rossum | f96cff2 | 1998-12-22 13:40:55 +0000 | [diff] [blame^] | 108 | make OPT=-DUSE_DL_EXPORT CCSHARED=-UUSE_DL_EXPORT MACHDEP=beos nstall |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 109 | |
Guido van Rossum | eb45232 | 1998-12-18 22:00:58 +0000 | [diff] [blame] | 110 | This will fail trying to copy libpython1.5.a; at that point in the |
| 111 | install, everything you "normally" need is installed (all the Python |
| 112 | bits), and the stuff you need for compiling C-based modules is half- |
| 113 | installed. This will be fixed before the 1.5.2 release. |
| 114 | |
Guido van Rossum | fc4966b | 1998-12-17 18:00:33 +0000 | [diff] [blame] | 115 | 9) Enjoy! |
Guido van Rossum | d8eb211 | 1998-08-04 17:57:28 +0000 | [diff] [blame] | 116 | |
| 117 | - Chris Herborth (chrish@qnx.com) |
Guido van Rossum | 343848b | 1998-12-22 13:35:29 +0000 | [diff] [blame] | 118 | December 22, 1998 |