logo  xindy
A Flexible Indexing System Powered by sourceforge.net
  About | Documentation | Download | Community  
About xindy
Open Issues
   » Binary Distribution
   » Sources
   » Download Area
   » CVS
Mailing List
SourceForge Project
Download Source
You are in a maze of twisty little passages, all alike...
-- Adventure

If you are looking for a standard Source distribution with configure; make; make install - this is not your project. But if you are willing to plunge into a challenge, xindy is something for you.

Full source for xindy is available, but currently it is quite hard to build xindy from source. This page was written by Joachim Schrod. It shall report what's available and shall provide information how to create xindy from source.

xindy is written in Common Lisp. CLISP has been used for development.

xindy Structure

xindy consists of (1) a run time engine, made up of a Common Lisp system with xindy-specific plugins, (2) Common Lisp code that makes up the xindy kernel, and (3) xindy modules.

To create the xindy run time engine, one needs to integrate the plugins into a Common Lisp system. We did this for CLISP, the result is in the binary distributions or in the platform-specific archives of older releases.

Then, the xindy kernel source code is compiled, and a final executable is created. In the case of CLISP, the executable consists of two files, a virtual machine and a memory image.

xindy module code is interpreted at run time.


The Download Area is at SourceForge.


  1. xindy-2.1.tar.gz
  2. xindy-clisp-modules-2001-04-10.tar.bz2

That is the kernel source and xindy plugins.

Module sources are in the binary distribution, in the modules subdirectory.

If you want to work on xindy, we recommend the CVS source, though.

CVS: the real source

The real source is available by anonymous CVS, as explained on our SourceForge project CVS page. We welcome new developers and will give out commit rights quickly.

Four top-level CVS modules exist: xindy is the kernel source code, make-rules is used to create xindy language modules, modules are the xindy standard modules, and www is the XML source code for this Web Site.

The CVS module xindy also has source code of the documentation and the reports. The documentation is written in SGML, with linuxdoc. It shall be migrated to DocBook. The reports are written in LaTeX, of course.

Common Lisp plugins

There are two plugins: ordrules which implements string ordering rules, and regexp which implements regular expressions. The plugins have been introduced for reuse (ordrules comes from a predecessor project, International MakeIndex) and for performance reasons (remember, xindy was written in 1995).

The plugin sources are in the CVS module xindy/rx.

Frankly, today I consider the usage of plugins as a very big error. They should be replaced by ``pure'' Lisp solutions as soon as possible - currently, they are the big porting nightmare of xindy.

We use CLISP as the Common Lisp system for development. It is reported that it is not possible any more to build a current CLISP including those plugins. (The current builds use CLISP 2.24, as of March 2000.) Once, I suspected that it's due to a change in the CLISP foreign function interface; but now I assume that it's more a problem of Lisp package definitions. Of course, we would welcome a contribution that improves this situation.

If you're proficient enough in Common Lisp, rewriting the plugins in Lisp might not be difficult, and would be very welcome.

Roger Kehr reported a succesful xindy port to Allegro Common Lisp (ACL) and to CMU Common Lisp. More information on these ports are unknown.

Source access, revisited

Ignore the CVS module xindy/src, that's a relict that is explained below.

xindy was written with the help of noweb, a Literate Programming System. Imake was used for abstract dependency descriptions. The test suite is realized by DejaGnu. You need to get these systems before you start. You need only the imake executable, not the dreaded MIT X configuration files. Use tools/imkmf as command line interface for Imake.

xindy/xindy/intro.nw has an introduction into code structure and conventions.

Ancient version

xindy was written first in 1995, as student project by Roger Kehr, under supervision of Joachim Schrod. The source of this student project is in the CVS module xindy/src. I don't know if this code does still run at all.

Starting in 1996, Roger did a rewrite of the sorting rules, to add support for sorting phases. You'll find more information on this in the technical reports. At this time, he also restructured the source and placed each module in its own directory. Furthermore, he added the test suite.

The ancient version will be relegated to a CVS branch, and shall be removed from the main trunk.

Build recipes

I have found two Web pages with information how to build xindy. Due to the changes in CLISP, the information from these pages does not work any more; but the basic process is described correctly.

» SourceForge Download Area
« Binary Distributions