]> granicus.if.org Git - python/commitdiff
Chris Herborth <chrish@pobox.com>:
authorFred Drake <fdrake@acm.org>
Tue, 15 Aug 2000 18:52:33 +0000 (18:52 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 15 Aug 2000 18:52:33 +0000 (18:52 +0000)
Minor updates for BeOS R5.

Use of OSError in test.test_fork1 changed to TestSkipped, with corresponding
change in BeOS/README (by Fred).

This closes SourceForge patch #100978.

BeOS/README
BeOS/linkmodule
Lib/test/test_fork1.py
Modules/posixmodule.c
Modules/pwdmodule.c
Modules/timemodule.c

index 989995ad6ebca1b364ab6cb9f7b0c2e1ea3ebd1e..9b270debd5cdd7188f1566e7a3590b138b09d1b1 100644 (file)
@@ -1,4 +1,4 @@
-Python 1.5.x (x > 1) for BeOS
+Python for BeOS R5
 
 This directory contains several useful things to help you build your own
 version of Python for BeOS.
@@ -45,23 +45,25 @@ Python 1.5.2 and later will compile "out of the box" on BeOS), try this:
 4) Edit Modules/Setup to turn on all the modules you want built.
 
    Make sure you use _socket instead of socket for the name of the
-   socketmodule on BeOS.
+   socketmodule on BeOS (at least, until we get the new BONE networking).
 
    If you want the modules to be built as shared libraries, instead of as
    part of the Python shared library, be sure to uncomment the #*shared*
-   line.
+   line.  I haven't done much testing with static linking, it's not as
+   interesting.
 
    I've tried the following modules:
 
-   regex pcre posix signal readline array cmath math strop struct time
-   operator _locale fcntl pwd grp select _socket errno crypt termios
-   audioop imageop rgbimg md5 timing rotor syslog curses new gdbm soundex
-   binascii parser cStringIO cPickle zlib
+   array audioop binascii cmath _codecs cPickle crypt cStringIO _curses
+   errno fcntl gdbm grp imageop _locale math md5 new operator parser
+   pcre posix pwd pyexpat readline regex rgbimg rotor select sha signal
+   _socket soundex _sre strop struct syslog termios time timing ucnhash
+   unicodedata zlib
    
-   Note that some of these (readline, curses, gdbm, and zlib) require extra
-   libraries that aren't supplied with Python.  If you don't have the extra
-   libs (you can probably get them from GeekGadgets), don't try to use
-   these modules; they won't compile.
+   Note that some of these require extra libraries that aren't supplied 
+   with Python.  If you don't have the extra libs (you can probably get 
+   them from GeekGadgets), don't try to use these modules; they won't 
+   compile.
 
 5) Make:
 
@@ -71,17 +73,45 @@ Python 1.5.2 and later will compile "out of the box" on BeOS), try this:
 
    make test
 
+   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_grp crashed -- exceptions.KeyError : getgrnam(): name not found
-   test_pwd failed -- Writing: 'fakename', expected: 'caught e'
-   test_socket crashed -- exceptions.AttributeError : SOCK_RAW
+   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_re failed -- Writing: '=== Failed incorrectly', expected: 
+                          "('abc', 'abc', 0, 'fou"
+
+   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.
 
-   NOTE: On R4/x86, the pause() function is broken; expect the signal
-         module test to crash Python!
+   That test_re failure is a little worrysome though.
 
 7) Install:
 
@@ -89,5 +119,5 @@ Python 1.5.2 and later will compile "out of the box" on BeOS), try this:
 
 8) Enjoy!
 
-- Chris Herborth (chrish@beoscentral.com)
-  January 12, 1999
+- Chris Herborth (chrish@pobox.com)
+  July 21, 2000
index 103882a7204a4f28e98c264515da67e337dab095..7e0b5b9b9c73f63b4951555914e5983aea3180fe 100755 (executable)
@@ -46,7 +46,7 @@ fi
 # The shared libraries and glue objects we need to link against; these
 # libs are overkill for most of the standard modules, but it makes life
 # in this shell script easier.
-LIBS="-L.. -lpython1.5 -lbe -lnet -lroot"
+LIBS="-L.. -lpython$VERSION -lbe -lnet -lroot"
 
 case $BE_HOST_CPU in
        ppc)
index 8804392fe041bafa023f6a56c21cd5f54adcd641..4fd2662ca1a8e9f65476faec31d3b3e620d9ea1e 100644 (file)
@@ -6,11 +6,20 @@ child after a fork().
 On some systems (e.g. Solaris without posix threads) we find that all
 active threads survive in the child after a fork(); this is an error.
 
+On BeOS, you CANNOT mix threads and fork(), the behaviour is undefined.
+That's OK, fork() is a grotesque hack anyway. ;-) [cjh]
+
 """
 
 import os, sys, time, thread
 from test_support import TestSkipped
 
+try:
+    if os.uname()[0] == "BeOS":
+        raise TestSkipped, "can't mix os.fork with threads on BeOS"
+except AttributeError:
+    pass
+
 try:
     os.fork
 except AttributeError:
index d7755bf95ee802600196c69b4ce128c037a568c9..d5290f6e84d31eff864943062a29a7bab8fae705 100644 (file)
@@ -3620,11 +3620,6 @@ static char posix_putenv__doc__[] =
 "putenv(key, value) -> None\n\
 Change or add an environment variable.";
 
-#ifdef __BEOS__
-/* We have putenv(), but not in the headers (as of PR2). - [cjh] */
-int putenv( const char *str );
-#endif
-
 /* Save putenv() parameters as values here, so we can collect them when they
  * get re-set with another call for the same key. */
 static PyObject *posix_putenv_garbage;
index 1efe81ade87f5ecf19aeda513ab38b1dc0b17535..7f58ed34087bb278d0ff91a286e5292717d8263a 100644 (file)
@@ -29,13 +29,6 @@ exception is raised if the entry asked for cannot be found.";
 static PyObject *
 mkpwent(struct passwd *p)
 {
-#ifdef __BEOS__
-       /* For faking the GECOS field. - [cjh] */
-       char *be_user = NULL;
-
-       be_user = getenv( "USER" );
-#endif
-
        return Py_BuildValue(
                "(ssllsss)",
                p->pw_name,
@@ -49,12 +42,7 @@ mkpwent(struct passwd *p)
                (long)p->pw_uid,
                (long)p->pw_gid,
 #endif
-#ifdef __BEOS__
-/* BeOS doesn't have a GECOS field, oddly enough. - [cjh] */
-               be_user ? be_user : "baron",
-#else
                p->pw_gecos,
-#endif
                p->pw_dir,
                p->pw_shell);
 }
index fa40762582bb3c0062747f0a60b0b2ee98ee20a3..8cb7484984055b16e9b419de8d46c0adde3779ea 100644 (file)
@@ -70,13 +70,10 @@ extern int ftime(struct timeb *);
 #endif
 
 #ifdef __BEOS__
+#include <time.h>
 /* For bigtime_t, snooze(). - [cjh] */
 #include <support/SupportDefs.h>
 #include <kernel/OS.h>
-#ifndef CLOCKS_PER_SEC
-/* C'mon, fix the bloody headers... - [cjh] */
-#define CLOCKS_PER_SEC 1000
-#endif
 #endif
 
 /* Forward declarations */