$Id: INSTALL,v 1.24 2009/05/29 10:06:08 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 ltp-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.
