[Xapian-devel] Available backends in xapian.h

franz.g at tin.it franz.g at tin.it
Wed May 4 00:57:27 BST 2005


Hi Olly,

I tried several times and with different configurations to build on Windows
some of the bindings from the SVN repository. I had to use the latest (release
candidate) tools from MinGW, because the stable ones are far out of date.
Moreover, it's impossible to bootstrap Xapian (xapian-core too) directly
on Windows: the latest unstable automake is 1.8.2 and Xapian requires at
least 1.8.5; however this should not be a problem since stable releases
do not require a bootstrap.

There is also a thing I could not understand: is SWIG 1.3.22 a mandatory
requirement for xapian-bindings? The configure script fails when it finds
SWIG 1.3.24; this is only required for --enable-maintainer-mode anyway,
so it generally falls into the same case as above (the option also breaks
xapian-core builds actually, as it passes -Werror and there are many header
files that generate warnings!).

But there are real problems that, in my opinion, are very difficult to override.
Some are due to the oddness of the Windows platforms, like the use of backslashes
as a delimiter and semicolons to include multiple directories in path environment
variables (like PATH, LD_LIBRARY_PATH and so on). Also, Win32 directory
setup for Python is quite different than for UNIX in the official distribution
(no pythonX.Y subdirectories in the standard include and library path).

I also tried to build bindings for tcl8, which comes with MSYS and has a
more usual setup, from the UNIX point of view. But this also fails, because
of this problem (which also appears at link time in other bindings):

/bin/sh ../libtool --mode=link --tag=CXX g++ -Wall -Wno-unused -Wno-uninitialized
-g -O2 -IC:/Projects/MANAGED/BLEEDING_EDGE/INST/include   -o xapian.la -rpath
C:/Development/mingw-3.1/lib/tcl8.4/../xapian0.8.5.1 -avoid-version -module
xapian_wrap.lo -Wl,--enable-runtime-pseudo-reloc C:/Projects/MANAGED/BLEEDING_EDGE/INST/lib/libxapian.la

libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32
shared libraries

and which causes the "shared object" (a DLL here) not to be generated: the
.libs directory only contains xapian.a, xapian.la, xapian.lai and xapian_wrap.o:
no .dll (or .so). Exactly the same happens for Python.

I don't know if it's worth the effort to investigate for a way to include
Win32 in the supported platforms, although I'll try to continue to. However
the "setup.py" method is usually the preferred one for Python, and it can
probably be considered quite robust. The script I sent is not very elaborate,
but it can be modified to ensure that the module builds without problems
on all supported platforms - possibly invoking xapian-config.

Sorry for the lack of conciseness and cheers,

F.






More information about the Xapian-devel mailing list