$Id: INSTALL,v 1.23 2009/01/21 11:30:52 subrata_modak Exp $

About configuration
-------------------
If you want to use auto configuration, be sure autoconf-2.61 & automake-1.10 are installed.

(Latest automake sources can be downloaded from:
ftp://ftp.gnu.org/gnu/automake/automake-1.10.2.tar.gz,

Latest autoconf sources can be downloaded from:
ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz,
ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2,

Autoconf also requires certain higher version(s) of m4, which can be found from:
http://ftp.gnu.org/gnu/m4/,
http://ftp.gnu.org/gnu/m4/m4-1.4.12.tar.bz2).

Then run: 
        $ make autotools 
        $ ./configure   
        $ make all      
        $ make install

If you get a build error, please report it to ltp-list@lists.sf.net with
following information,

 1. the error output of build tools(make, gcc, etc...)
 2. the output of ./configure 
 3. include/config.h
 4. config.mk
 5. config.log


If you want to use default configuration, autoconf is not needed. Just run:          
        $ touch include/config.h.default 
        $ make config.h                  
        $ make all                       

If make all is failed even if you use the auto configuration, please, report it to  
ltp developers with config.log, generated by running the configure script.          

Quick Start
-----------

1> tar xzf ltp-XXXXXXXX.tar.gz
2> cd ltp
3> make
4> make install
5> ./runalltests.sh

*NOTE: The LTP assumes the existence of the nobody, bin, and daemon users and
their groups.  If these IDs do not exist, certain tests will fail. The users
and groups IDs should be the same, i.e. if user "nobody" is 99, then it's
group should also be "99". The names of the groups are irrelevant.


Detailed Installation
---------------------

Beyond the "Quick Start" instructions, there are only a few other things
that should be done.  The Linux Test Project build process uses a
minimalist approach.  There is a lot of room for improvement and
contributions are welcome.

1. Log in as root.

2. Untar the ltp tarball into a spare directory.  There is not a
   standard location for it yet.  We put it in our home directory
   while we're working on it.

3. Run "make" to build everything.
   *NOTE: Some of the Makefiles (example: pan/Makefile) require the lex (or
   flex) package to be installed.

4. You can run all of the tests sequentially by using the example test
   script runalltests.sh.  The script is there just to get you started.
   See pan(1) for more information on the test driver we have provided.
   It is simple, but it can do a lot of stuff.

   NOTE: The diskio and network tests will NOT be run by the runalltests.sh
   script.  We chose to separate these tests because of their required setup
   overhead.

5. The disk i/o tests can be run by executing the diskio.sh script.  In order
   for these tests to successfully operate a writable high-density 3.5" floppy
   must be in the disk drive and a CD-ROM with more than 100Mb of data must be
   in the CD-ROM drive.  The corresponding tests will fail if either disk is
   missing.

6. The network tests are executed by running the networktests.sh script. The
   network tests require some configuration for them to work correctly:

     i) First, there MUST be another test machine setup to act as the server
	to these client side tests.  This machine MUST have the LTP installed
	in the same exact location, i.e. if the client has /root/ltp, then the
	server must have /root/ltp.  This is required because certain tests
	expect to find server files in certain locations.  Make sure to compile
	the LTP on this server machine also.

    ii) Second, the server must be setup to allow the client to connect using
	the "r" commands, such as rsh.  This is done by simply creating/editing
	the ".rhosts" file under /root.  Place the hostname of the client
	machine in this file to allow root to remotely connect without the use
	of a password. If server has the PAM system security tool, you need
	to add the following lines to /etc/securetty:
		rlogin
		rsh
		rexec
		pts/0
		pts/1
		  :
		pts/9

   iii) Next, certain services must be activated in order for certain tests to
	execute.  The following services are activated via inetd/xinetd:
		rlogind
		ftpd
		telnetd
		echo (stream)
		fingerd
		rshd
	 Also, because certain RPC programs are tested, the "portmapper" daemon
	 MUST be started, as well as NFS server AND lock services.

    iv) Finally, before running the networktests.sh script, two variables must
	be set within the script file.  The "RHOST" variable should be set to
	the hostname of the server.  The "PASSWD" variable should be set to
	root's password on the server machine.  This is necessary for tests
	such as telnet01 and ftp01.

   You can now successfully execute the networktests.sh script.
   When you would like to run the whole network tests, specify -w option:
   	# ./networktests.sh -w

   When you would like to run the same tests which networktests.sh ran till
   2008, specify no option or -d option:
   	# ./networktests.sh

   You can run the test category which you are interested in, -h option shows
   the list of the test category:
   	# ./netwoktests.sh -h


Cross compiling
---------------

To cross compile, override one or more of CC, AR, CROSS_CFLAGS,
LOADLIBES, LDFLAGS, & LIB_DIR and be sure to always build from the top level.

To override them from the make commandline, do something like this:
$ CROSS_COMPILER=/opt/cegl-1.4/hardhat/devkit/ppc/405/bin/powerpc-linux-
$ make \
    CROSS_CFLAGS="-mcpu=403 -D__PPC405__" \
    LDFLAGS=-static \
    LOADLIBES="-lpthread -lc -lresolv -lnss_dns -lnss_files -lm -lc"

Alternately, to override them by editing this file, uncomment the 
following lines:
  CROSS_COMPILER=/opt/ppc64/powerpc64-linux/bin/powerpc64-linux-
  CROSS_CFLAGS= -mpowerpc64
  LDFLAGS=-static 
  LOADLIBES=-lpthread -lc -lresolv -lnss_dns -lnss_files -lm -lc
  LIB_DIR=/lib64
  export LOADLIBES LIB_DIR

Or, you can save all your settings into the local 'config.mk' file.
The defaults will not be usable in that case; you will need to
override things explicitly.

uClinux Users: make sure you add -DUCLINUX to your CFLAGS

Note: If you override a variable from the commandline all
assignments to it in the Makefiles will be ignored. To set it both 
in the commandline and in the Makefiles use a dummy variable like in
CFLAGS.

Variables in Makefile
----------------------

The conventions enforced are the standard ones.  LTP isnt redefining any
of the flags from their normal meaning.  here's a quick summary:

CFLAGS   - used when compiling/linking C code (no CPPFLAGS!)

CXXFLAGS - used when compiling/linking C++ code (no CPPFLAGS!)

CPPFLAGS - used when preprocessor is run (so C/C++ compiling an $(CPP)
           checks) 

LDFLAGS  - linker flags (no libraries) used when linking

LDLIBS   - libraries listed after objects during link

Above list is ideal: Many codes in LTP violates above list especially
about CPPFLAGS. e.g. -I and -D are passed to CFLAGS.

Currently the violation isn't critical. However, it should be fixed.
Patches are welcome.
