blob: c97fc803538df81db1ca7b2144efd4feb5496668 [file] [log] [blame]
yaberauneya340292d2010-01-18 23:46:09 +00001$Id: INSTALL,v 1.36 2010/01/18 23:46:09 yaberauneya Exp $
subrata_modakaba85b92008-12-11 10:30:33 +00002
yaberauneya2d8710f2009-10-25 06:35:08 +00003Requirements
subrata_modakaba85b92008-12-11 10:30:33 +00004-------------------
yaberauneyafbc90452009-11-06 18:21:37 +00005
Garrett Cooper525c4d22010-02-22 10:11:46 -080061. In order to compile ltp you must have make 3.80+ (make 3.81 preferred).
yaberauneya340292d2010-01-18 23:46:09 +000072. In order to compile and use ltp-scanner (a utility in the pan directory),
8 you must have bison/yacc, and flex installed.
subrata_modak3960cc82009-01-20 10:47:29 +00009
yaberauneya2d8710f2009-10-25 06:35:08 +000010bison can be obtained here:
11- http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz
subrata_modak16147ad2009-01-21 11:30:52 +000012
yaberauneya2d8710f2009-10-25 06:35:08 +000013Berkeley yacc can be obtained here:
14- ftp://invisible-island.net/byacc/byacc.tar.gz
subrata_modak16147ad2009-01-21 11:30:52 +000015
yaberauneya2d8710f2009-10-25 06:35:08 +000016flex can be obtained here:
17- http://downloads.sourceforge.net/project/flex/flex/flex-2.5.33/flex-2.5.33.tar.bz2
subrata_modak3960cc82009-01-20 10:47:29 +000018
yaberauneya4f493d82009-11-03 16:12:12 +000019make 3.81 can be obtained here:
20- http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2
21
yaberauneya2d8710f2009-10-25 06:35:08 +000022If you want to use auto configuration, be sure autoconf-2.61+ & automake-1.10+
23are installed.
24
25automake-1.10.2's sources can be downloaded from:
26- ftp://ftp.gnu.org/gnu/automake/automake-1.10.2.tar.bz2
27- ftp://ftp.gnu.org/gnu/automake/automake-1.10.2.tar.gz
28
29autoconf-2.61's sources can be downloaded from:
30- ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2
31- ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz
32
33autoconf-2.61 also requires m4-1.4.7+ be installed. Its sources can be
34downloaded from:
35- http://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.bz2
36- http://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.gz
37
yaberauneyabf3aeec2009-11-07 01:30:29 +000038Configuration
yaberauneya2d8710f2009-10-25 06:35:08 +000039-------------------
40Using autoconf:
yaberauneyabf3aeec2009-11-07 01:30:29 +000041 $ make autotools # This must be run from "$TOP_SRCDIR"!
yaberauneya2d8710f2009-10-25 06:35:08 +000042 $ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
43 $ cd "$TOP_BUILDDIR" && "$TOP_SRCDIR/configure" \
44 # [configure args go here, e.g. CC=$CC, LDFLAGS=$LDFLAGS, etc]
45
46Not using autoconf:
47
48 $ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
49 $ cp "$TOP_SRCDIR/include/config.h.default" \
50 "$TOP_BUILDDIR/include/config.h"
51 $ cp "$TOP_SRCDIR/include/mk/config.mk.default" \
52 "$TOP_BUILDDIR/include/mk/config.mk"
53
54 # Fire up your favorite editor and set each value appropriately in
55 # include/mk/config.mk. Uncomment all values commented out, such as
56 # NUMA_LIBS, etc, but only if you're sure that the libraries exist and
57 # can be linked on your system.
58
59- $TOP_SRCDIR and $TOP_BUILDDIR are the same for in-build-tree scenarios.
60- $TOP_SRCDIR and $TOP_BUILDDIR differ for out-of-build-tree scenarios.
61
62See the In-build-tree and Out-of-build-tree sections below for more details on
63what to do next...
64
65Compiling LTP
66-------------------
67
68In-build-tree
69-------------------
70In-build-tree support is when you build binaries (applications, binary objects)
71in the same directory where the source files reside.
72
73 $ make all
74 $ make \
75 "DESTDIR=$SYSROOT" \
76 SKIP_IDCHECK=[0|1] \
77 install
78
79- Specifying DESTDIR is optional, but required when installing to a non-host
80 sysroot, as opposed to the host system's sysroot.
81- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
82 on the target system's sysroot.
subrata_modakaba85b92008-12-11 10:30:33 +000083
subrata_modak40455172009-01-05 08:35:21 +000084If you get a build error, please report it to ltp-list@lists.sf.net with
85following information,
86
yaberauneya2d8710f2009-10-25 06:35:08 +000087 1. The error output before the failure.
88 2. If you used configure:
89 i. include/config.h
90 ii. include/mk/config.mk
91 iii. config.log
subrata_modak40455172009-01-05 08:35:21 +000092
yaberauneya2d8710f2009-10-25 06:35:08 +000093Out-of-build-tree
94-------------------
95Out-of-build-tree support is when you build binaries (applications, binary
96objects, generated files) outside of the directory where the source files
97reside. This is typically used when cross-compiling for multiple targets.
subrata_modak40455172009-01-05 08:35:21 +000098
yaberauneya2d8710f2009-10-25 06:35:08 +000099NOTE: This is by and large correctly implemented, but there are several corner
Garrett Cooperc41bb212010-02-24 13:24:15 -0800100cases, where this isn't implemented properly. Please see TODO for a list of
101items which need fixing in the LTP tree.
subrata_modakaba85b92008-12-11 10:30:33 +0000102
yaberauneya2d8710f2009-10-25 06:35:08 +0000103 $ mkdir "$OUT_OF_BUILD_TREE_DIR"
104 $ make \
105 -C "$OUT_OF_BUILD_TREE_DIR" \
106 -f "$TOP_SRCDIR/Makefile" \
107 "top_srcdir=$TOP_SRCDIR" \
108 "top_builddir=$OUT_OF_BUILD_TREE_DIR"
109 $ make \
110 -C "$OUT_OF_BUILD_TREE_DIR" \
111 -f "$TOP_SRCDIR/Makefile" \
112 "top_srcdir=$TOP_SRCDIR" \
113 "top_builddir=$OUT_OF_BUILD_TREE_DIR" \
114 "DESTDIR=$SYSROOT" \
115 SKIP_IDCHECK=[0|1]
116 install
117
118- Specifying DESTDIR is optional, but required when installing to a non-host
119 sysroot, as opposed to the host system's sysroot.
120- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
121 on the target system's sysroot.
alaffine15dd682000-05-08 20:31:30 +0000122
nstraz0312c252000-09-26 20:59:21 +0000123Quick Start
124-----------
whrb973f2b2000-05-05 19:34:50 +0000125
robbiew57404482001-09-19 16:11:23 +00001261> tar xzf ltp-XXXXXXXX.tar.gz
nstraz0312c252000-09-26 20:59:21 +00001272> cd ltp
yaberauneyabf3aeec2009-11-07 01:30:29 +00001283> ./configure
1294> make all
1305> make install
Garrett Cooperc41bb212010-02-24 13:24:15 -08001316> /opt/ltp/runltp
whrb973f2b2000-05-05 19:34:50 +0000132
yaberauneya934df0e2010-01-07 10:43:24 +0000133*NOTE:
134- LTP assumes the existence of the nobody, bin, and daemon users and their
Garrett Cooperc41bb212010-02-24 13:24:15 -0800135groups. If these IDs do not exist, certain tests will fail. The respective
136user and group IDs should be the same, i.e. if `nobody's' user ID is 99, then
137its group ID should also be 99. The names of the groups are irrelevant.
138- The installation directory is /opt/ltp by default. Please see
139"Using autoconf" above and specify the appropriate path via --prefix.
140DESTDIR= is also honored for install and will install into $DESTDIR/$prefix,
141if you want to install into a chroot or a rootfs for instance.
whrb973f2b2000-05-05 19:34:50 +0000142
nstraz0312c252000-09-26 20:59:21 +0000143Detailed Installation
144---------------------
145
146Beyond the "Quick Start" instructions, there are only a few other things
147that should be done. The Linux Test Project build process uses a
148minimalist approach. There is a lot of room for improvement and
149contributions are welcome.
150
robbiewb6c5fe72001-09-18 20:44:30 +00001511. Log in as root.
152
1532. Untar the ltp tarball into a spare directory. There is not a
robbiewfc0708b2004-03-01 22:16:02 +0000154 standard location for it yet. We put it in our home directory
robbiew0eea3522004-02-05 17:33:10 +0000155 while we're working on it.
subrata_modakf43b3802009-08-28 05:33:40 +0000156 Note that the full path to this location must be accessible for
157 unprivileged users, as some tests are run as a different user than root.
158 Hence /root is not a good choice on several distributions.
nstraz0312c252000-09-26 20:59:21 +0000159
yaberauneya2d8710f2009-10-25 06:35:08 +00001603. Build and install everything, as described above. Note the minimum software
161 requirements above before doing so.
nstraz0312c252000-09-26 20:59:21 +0000162
yaberauneya2d8710f2009-10-25 06:35:08 +00001634. You can run all of the tests sequentially using the example test script
164 runalltests.sh. The script is provided to get you started.
subrata_modakdddeb902009-05-29 10:06:08 +0000165 See ltp-pan(1) for more information on the test driver we have provided.
robbiew0eea3522004-02-05 17:33:10 +0000166 It is simple, but it can do a lot of stuff.
robbiewb6c5fe72001-09-18 20:44:30 +0000167
Garrett Cooperc41bb212010-02-24 13:24:15 -0800168 NOTE: The diskio and network tests will NOT be run by the runltp script;
169 they are separate from the other tests because of additional required setup
170 overhead.
nstraz0312c252000-09-26 20:59:21 +0000171
yaberauneya2d8710f2009-10-25 06:35:08 +00001725. The disk I/O tests can be run by executing the diskio.sh script. In order
robbiewba422042001-09-19 15:25:43 +0000173 for these tests to successfully operate a writable high-density 3.5" floppy
174 must be in the disk drive and a CD-ROM with more than 100Mb of data must be
175 in the CD-ROM drive. The corresponding tests will fail if either disk is
176 missing.
nstraz0312c252000-09-26 20:59:21 +0000177
robbiewba422042001-09-19 15:25:43 +00001786. The network tests are executed by running the networktests.sh script. The
179 network tests require some configuration for them to work correctly:
180
181 i) First, there MUST be another test machine setup to act as the server
182 to these client side tests. This machine MUST have the LTP installed
183 in the same exact location, i.e. if the client has /root/ltp, then the
184 server must have /root/ltp. This is required because certain tests
185 expect to find server files in certain locations. Make sure to compile
186 the LTP on this server machine also.
187
robbiew0eea3522004-02-05 17:33:10 +0000188 ii) Second, the server must be setup to allow the client to connect using
subrata_modak08978d22008-12-18 04:58:57 +0000189 the "r" commands, such as rsh. This is done by simply creating/editing
190 the ".rhosts" file under /root. Place the hostname of the client
191 machine in this file to allow root to remotely connect without the use
192 of a password. If server has the PAM system security tool, you need
193 to add the following lines to /etc/securetty:
194 rlogin
195 rsh
196 rexec
197 pts/0
198 pts/1
199 :
200 pts/9
robbiewba422042001-09-19 15:25:43 +0000201
robbiew0eea3522004-02-05 17:33:10 +0000202 iii) Next, certain services must be activated in order for certain tests to
robbiewba422042001-09-19 15:25:43 +0000203 execute. The following services are activated via inetd/xinetd:
204 rlogind
205 ftpd
206 telnetd
207 echo (stream)
208 fingerd
209 rshd
subrata_modak08978d22008-12-18 04:58:57 +0000210 Also, because certain RPC programs are tested, the "portmapper" daemon
211 MUST be started, as well as NFS server AND lock services.
robbiewba422042001-09-19 15:25:43 +0000212
robbiew0eea3522004-02-05 17:33:10 +0000213 iv) Finally, before running the networktests.sh script, two variables must
subrata_modak08978d22008-12-18 04:58:57 +0000214 be set within the script file. The "RHOST" variable should be set to
215 the hostname of the server. The "PASSWD" variable should be set to
216 root's password on the server machine. This is necessary for tests
217 such as telnet01 and ftp01.
robbiewba422042001-09-19 15:25:43 +0000218
219 You can now successfully execute the networktests.sh script.
subrata_modak08978d22008-12-18 04:58:57 +0000220 When you would like to run the whole network tests, specify -w option:
221 # ./networktests.sh -w
222
223 When you would like to run the same tests which networktests.sh ran till
224 2008, specify no option or -d option:
225 # ./networktests.sh
226
227 You can run the test category which you are interested in, -h option shows
228 the list of the test category:
229 # ./netwoktests.sh -h
vapier36ab22f2009-01-19 03:37:35 +0000230
231
232Cross compiling
233---------------
234
yaberauneya2d8710f2009-10-25 06:35:08 +0000235To cross compile, you must specify the correct variables:
vapier36ab22f2009-01-19 03:37:35 +0000236
yaberauneya2d8710f2009-10-25 06:35:08 +00002371. When running configure (CC, CXX, CXXFLAGS, LDLIBS, etc).
2382. Manually edit include/mk/config.mk, as described in Configuration.
vapier36ab22f2009-01-19 03:37:35 +0000239
yaberauneya2d8710f2009-10-25 06:35:08 +0000240Note: Do not specify variables on the command-line. Use config.mk instead.
vapier36ab22f2009-01-19 03:37:35 +0000241
yaberauneya2d8710f2009-10-25 06:35:08 +0000242uClinux Users
243--------------
244Specify UCLINUX=1 when calling make; -DUCLINUX=1 use is deprecated and highly
245discouraged.
vapier36ab22f2009-01-19 03:37:35 +0000246
247Variables in Makefile
248----------------------
249
yaberauneya2d8710f2009-10-25 06:35:08 +0000250The conventions enforced are standard ones. Here's a quick summary:
vapier36ab22f2009-01-19 03:37:35 +0000251
yaberauneya2d8710f2009-10-25 06:35:08 +0000252CFLAGS - used when compiling/linking C code, e.g. -D_GNU_SOURCE (no CPPFLAGS!)
vapier36ab22f2009-01-19 03:37:35 +0000253
254CXXFLAGS - used when compiling/linking C++ code (no CPPFLAGS!)
255
yaberauneya2d8710f2009-10-25 06:35:08 +0000256CPPFLAGS - used when preprocessor is run (so C/C++ compiling with $(CPP)
257 functions, e.g. -I$SYSROOT/usr/include -I$SYSROOT/include -I$SYSROOT
vapier36ab22f2009-01-19 03:37:35 +0000258
yaberauneya2d8710f2009-10-25 06:35:08 +0000259LDFLAGS - linker flags, e.g. "-L$SYSROOT/usr/lib" "-L$SYSROOT/lib". DO NOT
260 PUT LIBRARIES IN THIS LIST (see LDLIBS for that).
vapier36ab22f2009-01-19 03:37:35 +0000261
yaberauneya2d8710f2009-10-25 06:35:08 +0000262LDLIBS - libraries listed after objects during link, e.g. -lc, -lpthread,
263 -lltp.
vapier36ab22f2009-01-19 03:37:35 +0000264
yaberauneya2d8710f2009-10-25 06:35:08 +0000265See README.mk-devel for a more terse description of what's available.
yaberauneya9079a9f2009-11-05 08:38:40 +0000266
267Common Issues
268----------------------
269
yaberauneyacef79622009-11-12 11:57:37 +0000270Issue: When executing configure it says:
271
272checking for a BSD-compatible install... /usr/bin/install -c
273checking whether build environment is sane... yes
274checking for gawk... gawk
275checking whether make sets $(MAKE)... yes
276configure: error: cannot run /bin/sh ./config.sub
277
yaberauneya44cac8e2009-11-12 12:08:09 +0000278Solution: 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.
yaberauneyacef79622009-11-12 11:57:37 +0000279
yaberauneya9079a9f2009-11-05 08:38:40 +0000280Issue: When executing make [all] it says:
281
282 " *** No rule to make target `/$*', needed by `pan-all'. Stop."
283
284Solution: You must upgrade to make 3.81. Please see the Requirements section above.
285
286Issue: When executing make [all] it says something like:
287
288 # ...
289 install -m 00644 "/scratch/ltp-dev2/ltp/include/test.h" "/scratch/ltp-install12/include/test.h"
290 install -m 00644 "/scratch/ltp-dev2/ltp/include/tlibio.h" "/scratch/ltp-install12/include/tlibio.h"
291 install -m 00644 "/scratch/ltp-dev2/ltp/include/usctest.h" "/scratch/ltp-install12/include/usctest.h"
292 install -m 00644 "/scratch/ltp-dev2/ltp/include/write_log.h" "/scratch/ltp-install12/include/write_log.h"
293 make[1]: Leaving directory `/scratch/ltp-dev2/ltp/include'
294 make -C lib -f "/scratch/ltp-dev2/ltp/lib/Makefile" all
295 make[1]: Entering directory `/scratch/ltp-dev2/ltp/lib'
296 " *** No rule to make target `dataascii.o', needed by `libltp.a'. Stop." # <-- the error
297
298Solution: You cannot build LTP with -r / --no-builtin-rules and/or
299 -R / --no-builtin-variables specified. LTP relies heavily on built-in
300 implicit rules and variables to function properly.
yaberauneya340292d2010-01-18 23:46:09 +0000301
302Issue: When executing make (no target, 3.80), it does the following, and doesn't execute all:
303
304 #
305 make -C testcases/realtime autotools
306 make[1]: Entering directory `/scratch/ltp/testcases/realtime'
307 autoheader
308 make[1]: Leaving directory `/scratch/ltp/testcases/realtime'