]> granicus.if.org Git - python/commitdiff
Merged Misc/AtheOS-NOTES into the platform-specific section. Rewrote the
authorSkip Montanaro <skip@pobox.com>
Sat, 4 Jan 2003 04:05:51 +0000 (04:05 +0000)
committerSkip Montanaro <skip@pobox.com>
Sat, 4 Jan 2003 04:05:51 +0000 (04:05 +0000)
bsddb module build note to reflect the inclusion of bsddb3 and the demotion
of the old bsddb module.

README

diff --git a/README b/README
index 293f9890bf7040261acf7adbb5141b15f88cce6e..47925ecee175453298e1469a2dc7a46916977b4b 100644 (file)
--- a/README
+++ b/README
@@ -594,48 +594,88 @@ Cygwin: With recent (relative to the time of writing, 2001-12-19)
         News regarding these platforms with more recent Cygwin
         versions would be appreciated!
 
+AtheOS: From Octavian Cerna <tavy at ylabs.com>:
+
+       Before building:
+
+           Make sure you have shared versions of the libraries you
+           want to use with Python. You will have to compile them
+           yourself, or download precompiled packages.
+
+           Recommended libraries:
+
+               ncurses-4.2
+               readline-4.2a
+               zlib-1.1.4
+
+       Build:
+
+           $ ./configure --prefix=/usr/python
+           $ make
+
+           Python is always built as a shared library, otherwise
+           dynamic loading would not work.
+
+       Testing:
+
+           $ make test
+
+       Install:
+
+           # make install
+           # pkgmanager -a /usr/python
+
+
+       AtheOS issues:
+
+           - large file support: due to a stdio bug in glibc/libio,
+             access to large files may not work correctly.  fseeko()
+             tries to seek to a negative offset.  ftello() returns a
+             negative offset, it looks like a 32->64bit
+             sign-extension issue.  The lowlevel functions (open,
+             lseek, etc) are OK.
+           - sockets: AF_UNIX is defined in the C library and in
+             Python, but not implemented in the system.
+           - select: poll is available in the C library, but does not
+             work (It does not return POLLNVAL for bad fds and
+             hangs).
+           - posix: statvfs and fstatvfs always return ENOSYS.
+           - disabled modules:
+               - mmap: not yet implemented in AtheOS
+               - nis: broken (on an unconfigured system
+                 yp_get_default_domain() returns junk instead of
+                 error)
+               - dl: dynamic loading doesn't work via dlopen()
+               - resource: getrimit and setrlimit are not yet
+                 implemented
+
+           - if you are getting segmentation faults, you probably are
+             low on memory.  AtheOS doesn't handle very well an
+             out-of-memory condition and simply SEGVs the process.
+
+       Tested on:
+
+           AtheOS-0.3.7
+           gcc-2.95
+           binutils-2.10
+           make-3.78
+
+
 Configuring the bsddb and dbm modules
 -------------------------------------
 
-XXX Shouldn't this section be rewritten now that we use Sleepycat's
-BSDDB 4.0?
-
-Configuring the bsddb module can sometimes be a bit tricky.  This module
-provides a Python interface to the Berkeley DB library.  As of this writing
-several versions of the underlying library are in common use (versions 1.85,
-2.x, 3.x, and 4.x).  The file formats across the various versions tend to be
-incompatible.  Some Linux distributions install multiple versions by
-default.  It is important that compatible versions of header files and
-libraries are used when building bsddb.  To make matters worse, version 1.85
-of Berkeley DB has known bugs in its hash file implementation, but is still
-the most widely available version of the library.  Many people build bsddb
-with version 1.85 but aren't aware of the bugs.  This affects people using
-the anydbm and dbhash modules because they are both use Berkeley DB's hash
-file format as a side effect of calling bsddb.hashopen.
-
-To try and remedy this problem, beginning with Python version 2.3 a number
-of changes to the bsddb build process were made.  First, and most important,
-the bsddb module will not be built with version 1.85 unless the relevant
-lines in setup.py are uncommented first and no other higher-numbered
-versions are found.  Second, matching versions of the library and include
-files must be found.  Third, searching is performed in order, starting from
-version 4 and proceeding to version 2 (or version 1 if it is enabled).
-Version-independent libraries and header files (e.g. /usr/lib/libdb.a and
-/usr/include/db.h) are never considered.  They must be in version-specific
-directories or have version-specific filenames (e.g. /usr/lib/libdb-3.2.so
-and /usr/include/db3/db_185.h).
-
-Since the bsddb module is programmed using the Berkeley DB version 1 API,
-the underlying library must be configured with the --enable-compat185 flag.
-Most vendor-provided distributions are so-configured.  This is generally
-only an issue if you build Berkeley DB from source.
-
-All this affects the dbm module as well.  There are several dbm-compliant
-APIs provided by different libraries, including ndbm, gdbm and Berkeley DB.
-The build process for dbm would previously use the version 1.85 library,
-thus extending the potential hash file corruption to the dbm module as well.
-The dbm module will use the library and include files found for the bsddb
-module if neither ndbm nor gdbm libraries are found.
+Beginning with Python version 2.3, the PyBsddb package
+<http://pybsddb.sf.net/> was adopted into Python as the bsddb package,
+exposing a set of package-level functions which provide
+backwards-compatible behavior.  Only versions 3.1 through 4.1 of
+Sleepycat's libraries provide the necessary API, so older versions
+aren't supported through this interface.  The old bsddb module has
+been retained as bsddb185, though it is not built by default.  Users
+wishing to use it will have to tweak Modules/Setup to build it.  The
+dbm module will still be built against the Sleepycat libraries if
+other preferred alternatives (ndbm, gdbm) are not found, though
+versions of the Sleepycat library prior to 3.1 are not considered.
+
 
 Configuring threads
 -------------------