Building(FHist)

NAME
fhist - file history and comparison tools
Copyright (C) Peter Miller

Portions of this program are
Copyright (C) 1990 David I. Bell.

The fhist package is distrributed under the terms of the GNU General Public License, see the LICENSE section, below, for more information.

SPACE REQUIREMENTS
You will need about 600K to unpack and build the fhist package. (This is the worst case seen so far, most systems have binaries about 60% as big as this, 400K is more typical.) Your mileage may vary.

BEFORE YOU START
There are a few pieces of software you may want to fetch and install before you proceed with your installation of cook.

GNU Gettext
    The fhist package has been internationalized. It can now print error messages in any of the supported languages. In order to do this, the GNU Gettext package must be installed before you run the configure script as detailed in the next section. This is because the configure script looks for it. On systems which use the GNU C library, version 2.0 or later, there is no need to explictly do this as GNU Gettext is included. Remember to use the GNU Gettext configure --with-gnu-gettext option if your system has native gettext tools.

GNU Groff
    The documentation for the fhist package was prepared using the GNU Groff package. This distribution includes full documentation, which may be processed into PostScript or DVI files at install time - if GNU Groff has been installed.

Bison
    If your operating system does not have a native yacc(1) you will need to fetch and install GNU Bison in order to build the fhist package.

libexplain
    A library of system call specific strerror replacements.
    http://libexplain.sourceforge.net/

An ANSI C compiler.
    You must have an ANSI C compiler to compile this program. You may also want to consider fetching and installing the GNU C Compiler if you have not done so already.

The GNU FTP archives may be found at prep.ai.mit.edu, and are mirrored around the world.

SITE CONFIGURATION
The fhist package is configured using the configure shell script included in this distribution.

The configure shell script attempts to guess correct values for various system-dependent variables used during compilation, and creates the Makefile and common/config.h files. It also creates a shell script config.status that you can run in the future to recreate the current configuration.

Normally, you just cd to the directory containing fhist's source code and type
    % ./configure
    ...lots of output...
    %
If you're using csh on an old version of System V, you might need to type
    % sh configure
    ...lots of output...
    %
instead to prevent csh from trying to execute configure itself.

Running configure takes a minute or two. While it is running, it prints some messages that tell what it is doing. If you don't want to see the messages, run configure with its standard output redirected to /dev/null; for example,
    % ./configure > /dev/null
    %

By default, configure will arrange for the make install command to install the fhist package's files in /usr/local/bin and /usr/local/man. There are a number of options which control the placement of these files.

--prefix=PATH
    You can specify an installation prefix other than /usr/local by giving configure the option --prefix=PATH.

--exec-prefix=PATH
    You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give configure the option --exec-prefix=PATH the fhist package will use PATH as the prefix for installing programs and libraries. Data files and documentation will still use the regular prefix. Normally, all files are installed using the same prefix.

--bindir=PATH
    This directory contains executable programs. On a network, this directory may be shared between machines with identical hardware and operating systems; it may be mounted read-only. Defaults to ${exec_prefix}/bin unless otherwise specified.

--datadir=PATH
    This directory contains installed data, such as the documentation, reports and shell scripts distributed with Aegis. On a network, this directory may be shared between all machines; it may be mounted read-only. Defaults to ${prefix}/share/aegis unless otherwise specified. An “aegis” directory will be appended if there is none in the specified path.

--libdir=PATH
    This directory contains installed data, such as the error message catalogues. On a network, this directory may be shared between machines with identical hardware and operating systems; it may be mounted read-only. Defaults to ${exec_prefix}/lib/aegis unless otherwise specified. An “aegis” directory will be appended if there is none in the specified path.

--mandir=PATH
    This directory contains the on-line manual entries. On a network, this directory may be shared between all machines; it may be mounted read-only. Defaults to ${prefix}/man unless otherwise specified.

--with-nlsdir=PATH
    This directory contains machine specific message catalogues. Defaults to --libdir if not set.

configure ignores any other arguments that you give it.

On systems that require unusual options for compilation or linking that the fhist package's configure script does not know about, you can give configure initial values for variables by setting them in the environment. In Bourne-compatible shells, you can do that on the command line like this:
    $ CC='gcc -traditional' LIBS=-lposix ./configure
    ...lots of output...
    $
Here are the make variables that you might want to override with environment variables when running configure.

Variable: CC
    C compiler program. The default is cc.

Variable: INSTALL
    Program to use to install files. The default is install if you have it, cp otherwise.

Variable: LIBS
    Libraries to link with, in the form -lfoo -lbar. The configure script will append to this, rather than replace it.

Variable: NLSDIR
    This works the same way as the --with-nlsdir option.

If you need to do unusual things to compile the package, the author encourages you to figure out how configure could check whether to do them, and mail diffs or instructions to the author so that they can be included in the next release.

BUILDING FHIST
All you should need to do is use the
    % make
    ...lots of output...
    %
command and wait. When this finishes you should see a directory called bin containing four files: fcomp, fhist, fmerge and txt2c.

fcomp
    The fcomp program is user to compare two text files.

fhist
    The fhist program is used to maintain and edit history of a text file.

fmerge
    The fmerge program is used to merge together edits from two descendants of a file.

txt2c
    The txt2c program is a utility used to build the fhist package; it is not intended for general use and should not be installed.

You can remove the program binaries and object files from the source directory by using the
    % make clean
    ...lots of output...
    %
command. To remove all of the above files, and also remove the Makefile and common/config.h and config.status files, use the
    % make distclean
    ...lots of output...
    %
command.

The file etc/configure.in is used to create configure by a GNU program called autoconf. You only need to know this if you want to regenerate configure using a newer version of autoconf.

TESTING FHIST
The fhist package is accompanied by a test suite. To run this test suite, use the following command:
    % make sure
    ...lots of output...
    %

This is successful if the last line of the test output reads "Passed All Tests".

Please let the author know if any of the tests fail, and why if you can work that out.

INSTALLING FHIST
As explained in the SITE CONFIGURATION section, above, the fhist package is installed under the /usr/local tree by default. Use the --prefix=PATH option to configure if you want some other path.

All that is required to install the fhist package is to use the
    % make install
    ...lots of output...
    %
command. Control of the directories used may be found in the first few lines of the Makefile file if you want to bypass the configure script.

The above procedure assumes that the soelim(1) command is somewhere in the command search PATH. The soelim(1) command is available as part of the GNU Roff package, mentioned previously in the PRINTED MANUALS section. If you don't have it, but you do have the cook package, then a link from roffpp to soelim will also work.

The above procedure also assumes that the $(prefix)/man/man1 and $(prefix)/man/man5 directories already exist. If they do not, you will need to mkdir them manually.

PRINTED MANUALS
The easiest way to get copies of the manuals is to get the fhist..pdf file from the archive site. This is an Adobe AcroRead file containing the Reference Manual, which contains the README file, the BUILDING file and internationalization notes, as well as all of the manual pages for all of the commands.

This distribution contains the sources to all of the documentation for fhist. The author used the GNU groff package and a postscript printer to prepare the documentation. If you do not have this software, you will need to substitute commands appropriate to your site.

If you have the GNU Groff package installed before you run the configure script, the Makefile will contain instructions for constructing the documentation. If you already used the make command, above, this has already been done. The following command
    % make doc
    ...lots of output...
    %
can be used to do this explicitly, if you managed to get to this point without doing it. Please note that there may be some warnings from groff, particularly about missing fonts, particularly for the .txt files; this is normal.

Once the documents have been formatted, you only need to print them. The following command
    % lpr lib/en/reference.ps
    %
will print the English PostScript version of the Reference Manual. Watch the make output to see what other versions are available.