]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/INSTALL.texi
Refine test machinery.
[lilypond.git] / Documentation / topdocs / INSTALL.texi
1 \input texinfo @c -*-texinfo-*-
2 @setfilename INSTALL.info
3 @settitle INSTALL - compiling and installing GNU LilyPond
4
5 @documentencoding utf-8
6 @documentlanguage en
7
8 @node Top
9 @top
10
11 @contents
12
13 @chapter Compiling and installing on Unix
14
15
16 @html
17 <a name="download-source">
18 @end html
19
20 @section Downloading
21
22 Even numbered minor versions are `stable' (2.6, 2.8, etc), while odd
23 version are development releases (2.7, 2.9, etc).  Building LilyPond
24 is an involved process.  If possible
25 @uref{http://lilypond.org/install,download a precompiled binary} for
26 your platform.
27
28 @subsection Source code
29
30 Download source
31 @itemize @bullet
32 @item tarballs from
33 @uref{http://lilypond.org/download/} by HTTP.
34 @item tarballs from
35 @uref{http://download.linuxaudio.org/lilypond/} by HTTP.
36 @item 
37 GIT from @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,git.sv.gnu.org}
38 @example
39 git clone git://git.sv.gnu.org/lilypond.git
40 @end example
41
42 The repository does not contain generated files.  To create
43 @file{configure}, run
44 @example
45 ./autogen.sh
46 @end example
47 @end itemize
48
49 For information on packaging, see @uref{http://lilypond.org/devel}.
50
51 @subsection Precompiled binary packages
52
53 Check out @uref{http://lilypond.org/web/install/} for up to date
54 information on binary packages for your platform.
55
56
57 @section Requirements
58
59 @subsection Compilation
60
61 In addition to the packages needed for running Lilypond (see below),
62 you need the following extra packages for building.
63
64 When installing a binary package FOO, you may need to install the
65 FOO-devel, libFOO-dev or FOO-dev package too.
66
67 @itemize
68
69 @item @uref{http://fontforge.sf.net/,FontForge} 20060125 or newer.
70
71 @item New Century Schoolbook fonts, as PFB files. These are shipped
72 with X11 and Ghostscript, and are named @file{c059033l.pfb}
73 @file{c059036l.pfb}, @file{c059013l.pfb} and @file{c059016l.pfb}
74
75 @item @uref{http://www.xs4all.nl/~hanwen/mftrace/,mftrace} (1.1.19 or
76 newer),
77
78 You will need to install some additional packages to get mftrace to
79 work.
80
81 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE}
82 (version 1.8.2 or newer).  If you are installing binary packages, you
83 may need to install guile-devel or guile-dev or libguile-dev too.
84
85 @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.8 or newer).
86
87 @item
88 @uref{http://gcc.gnu.org/, The GNU c++ compiler} (version 4.x or
89 newer). 
90
91 @item @uref{http://www.python.org,Python} (version 2.3 or newer)
92
93 @item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer).
94
95 @item @uref{http://www.gnu.org/software/gettext/gettext.html,gettext}.
96
97 @item @uref{http://www.gnu.org/software/flex/,Flex} 
98
99 @item @uref{http://www.perl.org/,Perl} 
100
101 @item @uref{http://www.gnu.org/software/flex/,GNU Bison} 
102
103 @item All packages required for running, including development packages with
104 header files and libraries.
105
106 @end itemize
107
108 @subsection Running requirements
109
110 Running LilyPond requires proper installation of the following
111 software
112
113 @itemize @bullet
114
115 @item @uref{http://www.freetype.org/,Freetype} (version 2).
116 @item @uref{http://www.freetype.org/,FontConfig} (version 2.2).
117 @item @uref{http://www.pango.org/,Pango} (version 1.12 or newer).
118 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE}
119 (version 1.8.2 or newer), or patch 1.8.x with
120 @uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.8-rational.patch}.
121 @item @uref{http://www.python.org,Python} (version 2.4 or newer).
122 @item @uref{http://www.ghostscript.com,Ghostscript} (version 8.15 or
123 newer. 8.50 recommended)
124 @end itemize
125
126 @subsection Building documentation
127
128 You can view the documentation online at
129 @uref{http://lilypond.org/doc/}, but you can also build it locally.
130 This process requires a successful compile of lilypond.  The
131 documentation is built by issuing
132 @quotation
133 @example
134 make web
135 @end example
136 @end quotation
137
138 Building the website requires some additional tools and packages
139
140 @itemize @bullet
141 @item The @uref{http://netpbm.sourceforge.net/,netpbm utilities}
142 @item ImageMagick
143 @item International fonts (see input/regression/utf-8.ly for hints
144 about which font packages are necessary for your platform)
145 @item Ghostscript, 8.50 with the patch from
146 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688154}
147 and the patch from
148 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}.
149 @end itemize
150
151 The HTML files can be installed into the standard documentation path
152 by issuing
153
154 @quotation
155 @example
156 make out=www web-install
157 @end example
158 @end quotation
159
160 @section Testing LilyPond
161
162 LilyPond comes with an extensive suite that excercises the entire
163 program. This suite can be used to automatically check the impact of a
164 change. This is done as follows
165
166 @example
167   make test-baseline
168   @emph{apply your changes, compile}
169   make check
170 @end example
171
172 This will leave an HTML page @file{out/test-results/index.html}.  This
173 page shows all the important differences that your change introduced,
174 whether in the layout, the MIDI output, or error reporting.  
175
176 To rerun tests, use
177
178 @example
179   make test-clean          @emph{## remove files differing from baseline}
180   make test-real-clean     @emph{## remove all test results}
181 @end example
182
183 @noindent
184 and then run @code{make check} again.
185
186
187 @section Building LilyPond
188
189 To install GNU LilyPond, type
190 @quotation
191 @example
192 gunzip -c lilypond-x.y.z | tar xf -
193 cd lilypond-x.y.z
194 ./configure             # run with --help for applicable options
195 make
196 make install
197 @end example
198 @end quotation
199
200 If you are not root, you should choose a @code{--prefix} argument that
201 points into your home directory, e.g.
202 @quotation
203 @example
204 ./configure --prefix=$HOME/usr
205 @end example
206 @end quotation
207
208
209 @subsection Configuring for multiple platforms
210
211 If you want to build multiple versions of LilyPond with different
212 configuration settings, you can use the @code{--enable-config=CONF}
213 option of configure.  You should use @samp{make conf=CONF} to generate
214 the output in @file{out-CONF}.  Example: Suppose you want to build
215 with and without profiling, then use the following for the normal
216 build
217
218 @quotation
219 @example
220 ./configure --prefix=$HOME/usr/ --enable-checking
221 make
222 make install
223 @end example
224 @end quotation
225
226 and for the profiling version, specify a different configuration
227
228 @quotation
229 @example
230 ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
231 make conf=prof
232 make conf=prof install
233 @end example
234 @end quotation
235
236
237 @section Emacs mode
238
239 An Emacs mode for entering music and running LilyPond is contained in
240 the source archive in the @file{elisp} directory.  Do @command{make
241 install} to install it to @var{elispdir}.  The file @file{lilypond-init.el}
242 should be placed to @var{load-path}@file{/site-start.d/} or appended
243 to your @file{~/.emacs} or @file{~/.emacs.el}.
244
245 As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
246 your @var{load-path} by appending the following line (as modified) to your
247 @file{~/.emacs}
248 @c any reason we do not advise:  (push "~/site-lisp" load-path)
249 @quotation
250 @example
251 (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
252 @end example
253 @end quotation
254
255
256 @section Vim mode
257
258 A Vim mode for entering music and running LilyPond is contained in the
259 source archive in @code{$VIM} directory.
260
261 The LilyPond file type is detected if the file @file{~/.vim/filetype.vim} @c
262 has the following content
263 @quotation
264 @example
265 if exists("did_load_filetypes")
266   finish
267 endif
268 augroup filetypedetect
269   au! BufNewFile,BufRead *.ly           setf lilypond
270 augroup END
271 @end example
272 @end quotation
273
274 Please include this path by appending the following line to your
275 @file{~/.vimrc}
276
277 @quotation
278 @example
279 set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/
280 @end example
281 @end quotation
282
283 @noindent
284 where $@{LILYPOND_VERISON@} is your lilypond version.  If Lilypond was not
285 installed in @file{/usr/local/}, then change this path accordingly.
286
287
288 @section Problems
289
290 For help and questions use @email{lilypond-user@@gnu.org}.  Send bug
291 reports to @email{bug-lilypond@@gnu.org}.
292
293 Bugs that are not fault of LilyPond are documented here.
294
295 @subsection Bison 1.875
296
297 There is a bug in bison-1.875: compilation fails with "parse error
298 before `goto'" in line 4922 due to a bug in bison. To fix, please
299 recompile bison 1.875 with the following fix
300
301 @quotation
302 @example
303 $ cd lily; make out/parser.cc
304 $ vi +4919 out/parser.cc
305 # append a semicolon to the line containing "__attribute__ ((__unused__))
306 # save
307 $ make
308 @end example
309 @end quotation
310
311
312 @unnumberedsubsec MacOS X
313
314 For Fink, use the following command to compile.
315
316 @verbatim
317 export GUILE=guile-1.6
318 export GUILE_CONFIG=guile-1.6-config
319 export PKG_CONFIG_PATH=/sw/lib/freetype219/lib/pkgconfig/:/sw/lib/fontconfig2/lib/pkgconfig/
320 ./configure
321 @end verbatim
322
323 @unnumberedsubsec  Solaris
324
325 @itemize @bullet
326 @item Solaris7, ./configure
327
328 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
329 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
330 is.  Run configure like
331 @quotation
332 @example
333         CONFIG_SHELL=/bin/ksh ksh -c ./configure
334 @end example
335 @end quotation
336 or
337 @quotation
338 @example
339         CONFIG_SHELL=/bin/bash bash -c ./configure
340 @end example
341 @end quotation
342
343 @end itemize
344
345 @bye
346