summaryrefslogtreecommitdiffstats
path: root/Misc/BeOS-NOTES
blob: 0424c4fbe0fa1aedb28882222d350973834d04b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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