emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 'bzr init-repo .' crashes for lack of module bz2. Help, please!


From: David De La Harpe Golden
Subject: Re: 'bzr init-repo .' crashes for lack of module bz2. Help, please!
Date: Thu, 31 Dec 2009 17:04:41 +0000
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20091109)

Alan Mackenzie wrote:
Hi, David,

On Tue, Dec 29, 2009 at 11:49:15PM +0000, David De La Harpe Golden wrote:
Alan Mackenzie wrote:
On Tue, Dec 29, 2009 at 09:19:06PM +0100, Andreas Schwab wrote:
Alan Mackenzie <address@hidden> writes:

The sole "necessary bit" for bz2 appears to be bz2module.c, which
exists in the Python source tree.  It appears not to have been
compiled (there is no bz2module.o).  There is nothing else helpful
in the build procedure's stdout or stderr.  Any ideas?

Most likely you lack bzip2.

No, I have bzip2 (used it this morning on the Python tarball),
including, in particular, /usr/lib/libbz2.so.1.0.2 (with an
appropriate symlink with a truncated name).

Just in case: and the relevant bz2 header /usr/include/bzlib.h  ?
Would probably be in package libbz2-dev in debian.

I was lacking this file, so I downloaded and built the latest version of
bzip2.

And rebuild python against this version, right, with "bz2" absent from
the list of modules that failed to build this time due to failure to "find the necessary bits"? Does the "python" to
get a python repl then "import bz2" test succeed now?

Maybe there's a way to turn on more verbosity during python
building. I can see the relevant bundled extension module building during python "make" output as follows:

...
building 'bz2' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -I/usr/local/src/Python-2.6.4/./Include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/src/Python-2.6.4/Include -I/usr/local/src/Python-2.6.4 -c /usr/local/src/Python-2.6.4/Modules/bz2module.c -o build/temp.linux-x86_64-2.6/usr/local/src/Python-2.6.4/Modules/bz2module.o gcc -pthread -shared build/temp.linux-x86_64-2.6/usr/local/src/Python-2.6.4/Modules/bz2module.o -L/usr/local/lib -lbz2 -o build/lib.linux-x86_64-2.6/bz2.so
building 'pyexpat' extension
...


I still get the same error message, which I don't understand,
namely:

    bzr: ERROR: exceptions.ImportError: failed to load 
bzrlib.repofmt.groupcompress_repo.RepositoryFormat2a: No module named bz2

Presumably "bzrlib.repofmt.groupcompress_repo" means the file
.../bzrlib/repofmt/groupcompress_repo.py, but what, exactly, is a "module
named bz2"?

In this case, it means a python extension "module" being a python binding to libbz2 (*). Such extensions are atypical python modules implemented as C libs rather than python. The C code uses the python C implementation's ("cpython") C API to act like a python module to python code running under that implementation, providing additional python-callable functions and python-usable data types. It's actually a pretty typical way of extending scripting languages implemented in C, though python has now also introduced the more Lisp-conventional "FFI" approach for such things in module "ctypes" (just mentioning for completeness).
http://docs.python.org/extending/index.html
http://docs.python.org/library/ctypes.html

(*) bzr is presumably using bzip2 compression internally.

> What is its filename, where is bzr (or Python?) looking for
it?


python is looking for it, in the python module search path probably, since it's not finding the extension module bz2. But it's IMO pretty
definitely the normal python-bundled extension module bz2 you need.

On a successful python installation, it'll probably be somewhere
like
/usr/local/lib/python2.6/lib-dynload/bz2.so












reply via email to

[Prev in Thread] Current Thread [Next in Thread]