• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1$Id: INSTALL,v 1.36 2010/01/18 23:46:09 yaberauneya Exp $
2
3Requirements
4-------------------
5
61. In order to compile ltp you must have make 3.80+ (make 3.81 preferred).
72. In order to compile and use ltp-scanner (a utility in the pan directory),
8   you must have bison/yacc, and flex installed.
9
10bison can be obtained here:
11- http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz
12
13Berkeley yacc can be obtained here:
14- ftp://invisible-island.net/byacc/byacc.tar.gz
15
16flex can be obtained here:
17- http://downloads.sourceforge.net/project/flex/flex/flex-2.5.33/flex-2.5.33.tar.bz2
18
19make 3.81 can be obtained here:
20- http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2
21
22If 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
38Configuration
39-------------------
40
41Using autoconf (preferred):
42	$ make autotools # This must be run from "$TOP_SRCDIR"!
43	$ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
44	$ cd "$TOP_BUILDDIR" && "$TOP_SRCDIR/configure" \
45	  # [configure args go here, e.g. CC=$CC, LDFLAGS=$LDFLAGS, etc]
46
47Not using autoconf:
48
49	$ test -d "$TOP_BUILDDIR" || mkdir -p "$TOP_BUILDDIR"
50	$ cp "$TOP_SRCDIR/include/config.h.default" \
51	     "$TOP_BUILDDIR/include/config.h"
52	$ cp "$TOP_SRCDIR/include/mk/config.mk.default" \
53	     "$TOP_BUILDDIR/include/mk/config.mk"
54	$ cp "$TOP_SRCDIR/include/mk/features.mk.default" \
55	     "$TOP_BUILDDIR/include/mk/features.mk"
56
57	# Fire up your favorite editor and set each value appropriately in
58	# include/mk/config.mk. Uncomment all values commented out, such as
59	# NUMA_LIBS, etc, but only if you're sure that the libraries exist and
60	# can be linked on your system.
61
62- $TOP_SRCDIR and $TOP_BUILDDIR are the same for in-build-tree scenarios.
63- $TOP_SRCDIR and $TOP_BUILDDIR differ for out-of-build-tree scenarios.
64
65See the In-build-tree and Out-of-build-tree sections below for more details on
66what to do next...
67
68Compiling LTP
69-------------------
70
71"What's in a Path?"
72-------------------
73
74Before getting started, you should make sure that your build directory and
75source directory are as basic as possible: no commas, colons, semicolons,
76spaces, etc. In fact, this is a relatively good rule of thumb when dealing
77with any [Gnu?] make based opensource project.
78
79We won't `fix' the `issues' associated with these particular set of build
80errors resulting from non-sane pathnames, because it would introduce unneeded
81complexity into the build system and would require non-trivial effort to fix
82and validate the third-party packages, and thus wouldn't be a sustainable
83model to follow.
84
85So, we apologize for the inconvenience, but using other characters like
86underscores and dashes should help when disambiguating words between build
87and source pathnames.
88
89In-build-tree
90-------------------
91In-build-tree support is when you build binaries (applications, binary objects)
92in the same directory where the source files reside.
93
94	$ make all
95	$ make \
96	  "DESTDIR=$SYSROOT" \
97	  SKIP_IDCHECK=[0|1] \
98	  install
99
100- Specifying DESTDIR is optional, but required when installing to a non-host
101  sysroot, as opposed to the host system's sysroot.
102- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
103  on the target system's sysroot.
104
105If you get a build error, please report it to ltp@lists.linux.it with
106following information,
107
108 1. The error output before the failure.
109 2. If you used configure:
110	i.   include/config.h
111	ii.  include/mk/config.mk
112	iii. config.log
113
114Out-of-build-tree
115-------------------
116Out-of-build-tree support is when you build binaries (applications, binary
117objects, generated files) outside of the directory where the source files
118reside. This is typically used when cross-compiling for multiple targets.
119
120NOTE: This is by and large correctly implemented, but there are several corner
121cases, where this isn't implemented properly. Please see TODO for a list of
122items which need fixing in the LTP tree.
123
124	$ mkdir "$OUT_OF_BUILD_TREE_DIR"
125	$ make \
126	  -C "$OUT_OF_BUILD_TREE_DIR" \
127	  -f "$TOP_SRCDIR/Makefile" \
128	  "top_srcdir=$TOP_SRCDIR" \
129	  "top_builddir=$OUT_OF_BUILD_TREE_DIR"
130	$ make \
131	  -C "$OUT_OF_BUILD_TREE_DIR" \
132	  -f "$TOP_SRCDIR/Makefile" \
133	  "top_srcdir=$TOP_SRCDIR" \
134	  "top_builddir=$OUT_OF_BUILD_TREE_DIR" \
135	  "DESTDIR=$SYSROOT" \
136	  SKIP_IDCHECK=[0|1]
137	  install
138
139- Specifying DESTDIR is optional, but required when installing to a non-host
140  sysroot, as opposed to the host system's sysroot.
141- Specify SKIP_IDCHECK=1 if and when you don't want to modify /etc/{group,passwd}
142  on the target system's sysroot.
143
144Quick Start
145-----------
146
1471> tar xzf ltp-XXXXXXXX.tar.gz
1482> cd ltp
1493> ./configure
1504> make all
1515> make install
1526> /opt/ltp/runltp
153
154*NOTE:
155- LTP assumes the existence of the nobody, bin, and daemon users and their
156groups.  If these IDs do not exist, certain tests will fail. The respective
157user and group IDs should be the same, i.e. if `nobody's' user ID is 99, then
158its group ID should also be 99. The names of the groups are irrelevant.
159- The installation directory is /opt/ltp by default. Please see
160"Using autoconf" above and specify the appropriate path via --prefix.
161DESTDIR= is also honored for install and will install into $DESTDIR/$prefix,
162if you want to install into a chroot or a rootfs for instance.
163
164Detailed Installation
165---------------------
166
167Beyond the "Quick Start" instructions, there are only a few other things
168that should be done.  The Linux Test Project build process uses a
169minimalist approach.  There is a lot of room for improvement and
170contributions are welcome.
171
1721. Log in as root.
173
1742. Untar the ltp tarball into a spare directory.  There is not a
175   standard location for it yet.  We put it in our home directory
176   while we're working on it.
177   Note that the full path to this location must be accessible for
178   unprivileged users, as some tests are run as a different user than root.
179   Hence /root is not a good choice on several distributions.
180
1813. Build and install everything, as described above. Note the minimum software
182   requirements above before doing so.
183
1844. You can run all of the tests sequentially using the example test script
185   runalltests.sh.  The script is provided to get you started.
186   See ltp-pan(1) for more information on the test driver we have provided.
187   It is simple, but it can do a lot of stuff.
188
189   NOTE: The diskio and network tests will NOT be run by the runltp script;
190   they are separate from the other tests because of additional required setup
191   overhead.
192
1935. The disk I/O tests can be run by executing the diskio.sh script.  In order
194   for these tests to successfully operate a writable high-density 3.5" floppy
195   must be in the disk drive and a CD-ROM with more than 100Mb of data must be
196   in the CD-ROM drive.  The corresponding tests will fail if either disk is
197   missing.
198
1996. The network tests are executed by running the networktests.sh script. The
200   network tests require some configuration for them to work correctly:
201
202     i) First, there MUST be another test machine setup to act as the server
203	to these client side tests.  This machine MUST have the LTP installed
204	in the same exact location, i.e. if the client has /root/ltp, then the
205	server must have /root/ltp.  This is required because certain tests
206	expect to find server files in certain locations.  Make sure to compile
207	the LTP on this server machine also.
208
209    ii) Second, the server must be setup to allow the client to connect using
210	the "r" commands, such as rsh.  This is done by simply creating/editing
211	the ".rhosts" file under /root.  Place the hostname of the client
212	machine in this file to allow root to remotely connect without the use
213	of a password. If server has the PAM system security tool, you need
214	to add the following lines to /etc/securetty:
215		rlogin
216		rsh
217		rexec
218		pts/0
219		pts/1
220		  :
221		pts/9
222
223   iii) Next, certain services must be activated in order for certain tests to
224	execute.  The following services are activated via inetd/xinetd:
225		rlogind
226		ftpd
227		telnetd
228		echo (stream)
229		fingerd
230		rshd
231	 Also, because certain RPC programs are tested, the "portmapper" daemon
232	 MUST be started, as well as NFS server AND lock services.
233
234    iv) Finally, before running the networktests.sh script, two variables must
235	be set within the script file.  The "RHOST" variable should be set to
236	the hostname of the server.  The "PASSWD" variable should be set to
237	root's password on the server machine.  This is necessary for tests
238	such as telnet01 and ftp01.
239
240   You can now successfully execute the networktests.sh script.
241   When you would like to run the whole network tests, specify -w option:
242	# ./networktests.sh -w
243
244   When you would like to run the same tests which networktests.sh ran till
245   2008, specify no option or -d option:
246	# ./networktests.sh
247
248   You can run the test category which you are interested in, -h option shows
249   the list of the test category:
250	# ./netwoktests.sh -h
251
252
253Cross compiling
254---------------
255
256To cross compile, you must specify the correct variables when running configure.
257e.g. CC, CXX, CXXFLAGS, LDFLAGS, etc...
258
259After configure has run, it will generate include/mk/config.mk. You can tweak
260settings in there if need be, but you should not specificy settings on the
261command-line when running make.
262
263uClinux Users
264--------------
265Specify UCLINUX=1 when calling make; -DUCLINUX=1 use is deprecated and highly
266discouraged.
267
268Variables in Makefile
269----------------------
270
271The conventions enforced are standard ones. Here's a quick summary:
272
273CFLAGS   - used when compiling/linking C code, e.g. -D_GNU_SOURCE (no CPPFLAGS!)
274
275CXXFLAGS - used when compiling/linking C++ code (no CPPFLAGS!)
276
277CPPFLAGS - used when preprocessor is run (so C/C++ compiling with $(CPP)
278	   functions, e.g. -I$SYSROOT/usr/include -I$SYSROOT/include -I$SYSROOT
279
280LDFLAGS  - linker flags, e.g. "-L$SYSROOT/usr/lib" "-L$SYSROOT/lib". DO NOT
281	   PUT LIBRARIES IN THIS LIST (see LDLIBS for that).
282
283LDLIBS   - libraries listed after objects during link, e.g. -lc, -lpthread,
284	   -lltp.
285
286See README.mk-devel for a more terse description of what's available.
287
288Common Issues
289----------------------
290
291Issue:    When executing configure it says:
292
293checking for a BSD-compatible install... /usr/bin/install -c
294checking whether build environment is sane... yes
295checking for gawk... gawk
296checking whether make sets $(MAKE)... yes
297configure: error: cannot run /bin/sh ./config.sub
298
299Solution: 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.
300
301Issue:    When executing make [all] it says:
302
303    " *** No rule to make target `/$*', needed by `pan-all'.  Stop."
304
305Solution: You must upgrade to make 3.81. Please see the Requirements section above.
306
307Issue:    When executing make [all] it says something like:
308
309    # ...
310    install -m 00644 "/scratch/ltp-dev2/ltp/include/test.h" "/scratch/ltp-install12/include/test.h"
311    install -m 00644 "/scratch/ltp-dev2/ltp/include/tlibio.h" "/scratch/ltp-install12/include/tlibio.h"
312    install -m 00644 "/scratch/ltp-dev2/ltp/include/usctest.h" "/scratch/ltp-install12/include/usctest.h"
313    install -m 00644 "/scratch/ltp-dev2/ltp/include/write_log.h" "/scratch/ltp-install12/include/write_log.h"
314    make[1]: Leaving directory `/scratch/ltp-dev2/ltp/include'
315    make -C lib -f "/scratch/ltp-dev2/ltp/lib/Makefile" all
316    make[1]: Entering directory `/scratch/ltp-dev2/ltp/lib'
317    " *** No rule to make target `dataascii.o', needed by `libltp.a'.  Stop." # <-- the error
318
319Solution: You cannot build LTP with -r / --no-builtin-rules and/or
320	  -R / --no-builtin-variables specified. LTP relies heavily on built-in
321	  implicit rules and variables to function properly.
322
323Issue:    When executing make (no target, 3.80), it does the following, and doesn't execute all:
324
325    #
326    make -C testcases/realtime autotools
327    make[1]: Entering directory `/scratch/ltp/testcases/realtime'
328    autoheader
329    make[1]: Leaving directory `/scratch/ltp/testcases/realtime'
330