DJGPP Port of XDelta 1.1.2
~~~~~~~~~~~~~~~~~~~~~~~~~~

Installing the Binary Package
-----------------------------

Unzip the distribution preserving the directory structure - use PKUNZIP's -d
option; use an equivalent option with other unzippers. Unzip into the top
DJGPP installation directory, e.g. c:\djgpp.

XDelta should now be ready for use. A man page for XDelta is provided - use:

    man xdelta

to view it. You will need to have installed the man program from the v2apps/
directory of the DJGPP archive for this to work.

Installing the Source Package
-----------------------------

You should only install the source package if you want to rebuild XDelta from
the sources. To build the port, I used the following packages:

. DJGPP 2.03
. GNU bash 2.04
. GNU gcc 2.95.3
. GNU binutils 2.11.2
. GNU sed 3.02
. GNU awk 3.0.3
. GNU fileutils 4.0
. GNU shellutils 1.12
. GNU textutils 2.0
. glib 1.2.10
. zlib 1.1.3

It may be possible to build XDelta with other versions of each package, but
this has not been tested.

Unzip the distribution preserving the directory structure - use PKUNZIP's -d
option; use an equivalent option with other unzippers. Unzip into the top
DJGPP installation directory, e.g. c:\djgpp.

No changes were needed to XDelta to make it work with DJGPP.

Before building XDelta, it must be configured. This is done from bash
in the source directory using:

    ./configure --disable-shared

The parameter '--disable-shared' is needed to get round a bug in
libtool 1.4. libtool tries to use gcc's '-fPIC' option, which produces
code that binutils does not understand (for DJGPP). '-fPIC' is used
for generating relocatable code for dynamic linking. Since DJGPP does not
support dynamic linking, we can use '--disable-shared' to stop '-fPIC'
from being used.

For more information on the libtool problem, please see the following
post on djgpp-workers:

http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp-workers/2001/06/18/16:32:47

You may wish to install XDelta somewhere else. In that case, use
the '--prefix' option, e.g.

    ./configure --disable-shared --prefix=/where/i/want/xdelta

Once this has compelted, build using:

    make

If these compelte successfully, XDelta and its libraries can be installed
using:

    make install

Some notes on using XDelta
--------------------------

* XDelta is fairly simple - to see what options are available, use:

    xdelta --help

* The '-p' or '--pristine' option prevents XDelta from using gzip
  compression, this avoids creating temporary files.  This option
  is presented because gzip does not support exact re-compression,
  since there is no way to save the configuration used to produce
  a particular gzip file.

* XDelta's buffers are sized (by default) according to the amount of
  free physical memory. It defaults to using 87.5% (7/8) of
  the available memory.

  Under Windows this sometimes does not detect the amount of
  free memory correctly (well, on this author's machine at least).
  Sometimes it was necessary to tell xdelta what amount of memory
  to use:

    xdelta patch --maxmem=32M ...

  NB: More memory means faster patching, with large patches & files.

  It is recommend you run XDelta in verbose mode, to see how much
  memory it is using:

    xdelta patch -V ...

libxdelta and libedsio
----------------------

XDelta is actually just a front-end for two libraries - libxdelta
and libedsio. libxdelta is a library for handling XDelta-format deltas.
libedsio is a library for handling serialised I/O. Both these libraries are
included in the port and can be used in your own programs.

Unfortunately, there is no documentation for these libraries - the only
reference is the source code. If you are interested in libxdelta and libedsio,
please download the source distribution. Please note that I am not familiar
with these libraries and I will not be able to answer any queries on them.

libxdelta and libedsio come with *-config files, which return compilation
and linking parameters. They are similar to glib-config. Example:

    bash-2.04$ xdelta-config --cflags
    -I/dev/env/DJDIR/lib/glib/include -I/dev/env/DJDIR/include
    bash-2.04$ $DJDIR/bin/xdelta-config --libs
    -L/dev/env/DJDIR/lib -lxdelta -ledsio -lglib

Finally
-------

If you have any comments or problems with this port, please feel free to
e-mail me. I hope this port is useful.

Thanks, bye,

Richard Dawe <rich@phekda.freeserve.co.uk> 2001-10-05
