File: INSTALL

package info (click to toggle)
ltp 20091231%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 55,344 kB
  • ctags: 42,033
  • sloc: ansic: 428,545; sh: 80,565; xml: 8,269; java: 4,742; perl: 4,182; cpp: 4,105; makefile: 3,801; python: 2,151; exp: 1,150; php: 626; lex: 575; pascal: 441; csh: 59; awk: 16; tcl: 11
file content (295 lines) | stat: -rw-r--r-- 11,017 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
$Id: INSTALL,v 1.34 2009/11/12 12:08:09 yaberauneya Exp $

Requirements
-------------------

1. In order to compile ltp you must have make 3.81+.
2. In order to compile and use pan, you must have bison/yacc, and flex installed.

bison can be obtained here:
- http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz

Berkeley yacc can be obtained here:
- ftp://invisible-island.net/byacc/byacc.tar.gz

flex can be obtained here:
- http://downloads.sourceforge.net/project/flex/flex/flex-2.5.33/flex-2.5.33.tar.bz2

make 3.81 can be obtained here:
- http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2

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

automake-1.10.2's sources can be downloaded from:
- ftp://ftp.gnu.org/gnu/automake/automake-1.10.2.tar.bz2
- ftp://ftp.gnu.org/gnu/automake/automake-1.10.2.tar.gz

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

autoconf-2.61 also requires m4-1.4.7+ be installed. Its sources can be
downloaded from:
- http://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.bz2
- http://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.gz

Configuration
-------------------
Using autoconf:
        $ make autotools # This must be run from "$TOP_SRCDIR"!
	$ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
        $ cd "$TOP_BUILDDIR" && "$TOP_SRCDIR/configure" \
	  # [configure args go here, e.g. CC=$CC, LDFLAGS=$LDFLAGS, etc]

Not using autoconf:

	$ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
        $ cp "$TOP_SRCDIR/include/config.h.default" \
	     "$TOP_BUILDDIR/include/config.h"
        $ cp "$TOP_SRCDIR/include/mk/config.mk.default" \
	     "$TOP_BUILDDIR/include/mk/config.mk"

        # Fire up your favorite editor and set each value appropriately in
        # include/mk/config.mk. Uncomment all values commented out, such as
	# NUMA_LIBS, etc, but only if you're sure that the libraries exist and
	# can be linked on your system.

- $TOP_SRCDIR and $TOP_BUILDDIR are the same for in-build-tree scenarios.
- $TOP_SRCDIR and $TOP_BUILDDIR differ for out-of-build-tree scenarios.

See the In-build-tree and Out-of-build-tree sections below for more details on
what to do next...

Compiling LTP
-------------------

In-build-tree
-------------------
In-build-tree support is when you build binaries (applications, binary objects)
in the same directory where the source files reside.

        $ make all
        $ make \
	  "DESTDIR=$SYSROOT" \
	  SKIP_IDCHECK=[0|1] \
	  install

- Specifying DESTDIR is optional, but required when installing to a non-host
  sysroot, as opposed to the host system's sysroot.
- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
  on the target system's sysroot.

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

 1. The error output before the failure.
 2. If you used configure:
 	i.   include/config.h
	ii.  include/mk/config.mk
	iii. config.log

Out-of-build-tree
-------------------
Out-of-build-tree support is when you build binaries (applications, binary
objects, generated files) outside of the directory where the source files
reside. This is typically used when cross-compiling for multiple targets.

NOTE: This is by and large correctly implemented, but there are several corner
case, where this isn't implemented properly. Please see TODO for a list of items
which need fixing in the LTP tree.

	$ mkdir "$OUT_OF_BUILD_TREE_DIR"
	$ make \
	  -C "$OUT_OF_BUILD_TREE_DIR" \
	  -f "$TOP_SRCDIR/Makefile" \
	  "top_srcdir=$TOP_SRCDIR" \
	  "top_builddir=$OUT_OF_BUILD_TREE_DIR"
	$ make \
	  -C "$OUT_OF_BUILD_TREE_DIR" \
	  -f "$TOP_SRCDIR/Makefile" \
	  "top_srcdir=$TOP_SRCDIR" \
	  "top_builddir=$OUT_OF_BUILD_TREE_DIR" \
	  "DESTDIR=$SYSROOT" \
	  SKIP_IDCHECK=[0|1]
	  install

- Specifying DESTDIR is optional, but required when installing to a non-host
  sysroot, as opposed to the host system's sysroot.
- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
  on the target system's sysroot.

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

1> tar xzf ltp-XXXXXXXX.tar.gz
2> cd ltp
3> ./configure
4> make all
5> make install
6> ./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.
   Note that the full path to this location must be accessible for
   unprivileged users, as some tests are run as a different user than root.
   Hence /root is not a good choice on several distributions.

3. Build and install everything, as described above. Note the minimum software
   requirements above before doing so.

4. You can run all of the tests sequentially using the example test script
   runalltests.sh.  The script is provided 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. They are separate from the other tests because of the additional
   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, you must specify the correct variables:

1. When running configure (CC, CXX, CXXFLAGS, LDLIBS, etc).
2. Manually edit include/mk/config.mk, as described in Configuration.

Note: Do not specify variables on the command-line. Use config.mk instead. 

uClinux Users
--------------
Specify UCLINUX=1 when calling make; -DUCLINUX=1 use is deprecated and highly
discouraged.

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

The conventions enforced are standard ones. Here's a quick summary:

CFLAGS   - used when compiling/linking C code, e.g. -D_GNU_SOURCE (no CPPFLAGS!)

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

CPPFLAGS - used when preprocessor is run (so C/C++ compiling with $(CPP)
           functions, e.g. -I$SYSROOT/usr/include -I$SYSROOT/include -I$SYSROOT

LDFLAGS  - linker flags, e.g. "-L$SYSROOT/usr/lib" "-L$SYSROOT/lib". DO NOT
           PUT LIBRARIES IN THIS LIST (see LDLIBS for that).

LDLIBS   - libraries listed after objects during link, e.g. -lc, -lpthread,
           -lltp.

See README.mk-devel for a more terse description of what's available.

Common Issues
----------------------

Issue:    When executing configure it says:

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: error: cannot run /bin/sh ./config.sub

Solution: You must upgrade autoconf to 0.10.2+ and m4 to 1.4.7+; config.guess and config.sub aren't necessarily generated with older revisions of the Gnu autotools chain.

Issue:    When executing make [all] it says:

    " *** No rule to make target `/$*', needed by `pan-all'.  Stop."

Solution: You must upgrade to make 3.81. Please see the Requirements section above.

Issue:    When executing make [all] it says something like:

    # ...
    install -m 00644 "/scratch/ltp-dev2/ltp/include/test.h" "/scratch/ltp-install12/include/test.h"
    install -m 00644 "/scratch/ltp-dev2/ltp/include/tlibio.h" "/scratch/ltp-install12/include/tlibio.h"
    install -m 00644 "/scratch/ltp-dev2/ltp/include/usctest.h" "/scratch/ltp-install12/include/usctest.h"
    install -m 00644 "/scratch/ltp-dev2/ltp/include/write_log.h" "/scratch/ltp-install12/include/write_log.h"
    make[1]: Leaving directory `/scratch/ltp-dev2/ltp/include'
    make -C lib -f "/scratch/ltp-dev2/ltp/lib/Makefile" all 
    make[1]: Entering directory `/scratch/ltp-dev2/ltp/lib'
    " *** No rule to make target `dataascii.o', needed by `libltp.a'.  Stop." # <-- the error

Solution: You cannot build LTP with -r / --no-builtin-rules and/or
          -R / --no-builtin-variables specified. LTP relies heavily on built-in
          implicit rules and variables to function properly.