Packaging Xapian

If you're wanting to produce binary packages of Xapian, here are some tips.

  • In 1.0.x, xapian-compact (and some of the other tools in xapian-core) use some private symbols from libxapian which we unfortunately managed to change in incompatible ways between certain 1.0.x releases (note: the public library ABI is compatible for 1.0.1 onwards, it's just some private symbols not available via the public API headers). We strongly recommend that if xapian-compact and libxapian are in different binary packages then there's a dependency so that the user can't accidentally install packages from different versions together.
  • Some of the examples (delve, quest, and copydatabase) are useful tools in their own right, and probably worth packaging. The "simple" examples are intended to be instructive rather than useful tools (so you probably don't want to package these in /usr/bin or the equivalent on your platform).
  • If you're wondering which bindings to package, it seems that Python is the most popular, followed by PHP, Ruby, and Perl, though relative popularity probably varies by platform.
  • 1.0.x is currently the "stable" version. If you package 1.1.x, please be aware that there are very likely to be incompatible ABI changes, and may be incompatible API, database file format, and network protocol changes between releases. We encourage users to try 1.1.x, but they should be aware of its status, so just doing "install xapian" in a package manager shouldn't install 1.1.x.
  • If you find you need to patch Xapian during packaging, please feed the patches back to us. Even if you think the patch isn't the right fix, it's useful to know that there are issues.
  • If you're making packages publicly available, feel free to announce them on xapian-discuss. We can add a link from the download page too.