@node Top, , , (dir)
@top
-@menu
-* INSTALL - compiling and installing GNU LilyPond::INSTALL - compiling and installing GNU LilyPond
-@end menu
-
@chapter INSTALL - compiling and installing GNU LilyPond
-
-@section Abstract
-
-TODO: document xdeltas
-
-This document explains what you need to install LilyPond, and what you
-should do. If you are going to compile and install LilyPond often,
-e.g. when doing development, you might want to check out the
-@file{buildscripts/set-lily.sh} script. It sets some environment
-variables and symlinks, which comes in handly when you have to compile
-LilyPond more often.
-
@section Obtaining
You can get the latest version of LilyPond at
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}. Refer to the links
-document for mirror sites.
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,
+ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.
+
@emph{If you upgrade by patching do remember to rerun autoconf after
applying the patch}.
+If you do not want to download the entire archive for each version, the
+safest method for upgrading is to use @file{xdelta}, see
+@uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/}.
+
+The following command produces @file{lilypond-1.1.55.tar.gz} from
+@file{lilypond-1.1.54} identical (up to compression dates) to the .55 on
+the FTP site.
+@example
+ xdelta patch lilypond-1.1.54-1.1.55.xd lilypond-1.1.54.tar.gz
+@end example
+
@section Prerequisites
For compilation you need:
@itemize @bullet
@item A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
(PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
-Solaris.
+ Solaris.
@item Lots of disk space: LilyPond takes between 30 and 100 mb to
compile if you use debugging information. If you are short on
disk-space run configure with @code{--disable-debugging}.
+@item
Although we recommend to use Unix, LilyPond is known to run on Windows
-NT/95/98 as well. See Section @xref{w32}.
+NT/95/98 as well. See Section Windows NT/95,es.
-@item EGCS 1.1 or newer. Check out @uref{ ftp://ftp.gnu.org/pub/gcc/, ftp://ftp.gnu.org/pub/gcc/}
+@item A reasonable C++ compiler: EGCS 1.1, GCC 2.95.2 or newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/}.
@item Python 1.5,
-Check out
-@uref{ftp://ftp.python.org,ftp://ftp.python.org} or @uref{ftp://ftp.cwi.nl/pub/python,ftp://ftp.cwi.nl/pub/python}.
+Check out @uref{ftp://ftp.python.org} or
+@uref{ftp://ftp.cwi.nl/pub/python}.
-@item GUILE 1.3, check out @uref{http://www.gnu.org/software/guile/guile.html,http://www.gnu.org/software/guile/guile.html}.
+@item GUILE 1.3.4 or newer, check out
+@uref{http://www.gnu.org/software/guile/guile.html,http://www.gnu.org/software/guile/guile.html}.
+Version 1.4 is recommended for better performance.
-@item GNU make.
-Check out @uref{ftp://ftp.gnu.org/make/,ftp://ftp.gnu.org/make/}.
+@item GNU Make.
+Check out
+@uref{ftp://ftp.gnu.org/gnu/make/,ftp://ftp.gnu.org/gnu/make/}.
-@item Flex (version 2.5.4 or newer).
-Check out @uref{ftp://ftp.gnu.org/flex/,ftp://ftp.gnu.org/flex/}.
+@item Flex (version 2.5.4a or newer).
+Check out @uref{ftp://ftp.gnu.org/gnu/flex/,ftp://ftp.gnu.org/gnu/flex/}.
@item Bison (version 1.25 or newer).
-Check out @uref{ftp://ftp.gnu.org/bison/,ftp://ftp.gnu.org/bison/}.
+Check out @uref{ftp://ftp.gnu.org/gnu/bison/,ftp://ftp.gnu.org/gnu/bison/}.
+
+@item TeX. If you want LilyPond to use kpathsea support (recommended),
+make sure you have tetex 1.0 or newer (1.0.6 is known to work). You may
+need to install a tetex-devel or tetex-dev package too.
-@item Texinfo. Check out @uref{ftp://ftp.gnu.org/pub/texinfo/,ftp://ftp.gnu.org/pub/texinfo/}.
+@item Texinfo (version 4.0 or newer).
+Check out @uref{ftp://ftp.gnu.org/gnu/texinfo/,ftp://ftp.gnu.org/gnu/texinfo/}.
Most documentation is in texinfo.
@item The geometry package for LaTeX is needed to use ly2dvi.
@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry}
or at mirror site @uref{ftp://ftp.dante.de,ftp://ftp.dante.de}
-@item MetaPost, if you want to use direct PostScript output. Please
-note that tetex-0.4pl8 (included with Redhat 5.x) does not include
-@file{mfplain.mp}, which is needed for producing the scaleable font files.
+@item MetaPost, needed for generating PostScript fonts. Please
+note that tetex-0.4pl8 (included with Redhat 5.x) does not include
+@file{mfplain.mp}, which is needed for producing the scalable font
+files.
+
+If you do not want to use PostScript output, edit @file{mf/GNUmakefile},
+removing the line saying @code{PFA_FILES=}
+
+@item kpathsea, a library for searching (TeX) files. @code{kpathsea} is
+usually included with your installation of TeX.
@end itemize
following software
@itemize @bullet
-@item TeX
+@item TeX.
@item A PostScript printer and/or viewer (such as Ghostscript) is strongly
recommended. Xdvi will show all embedded PostScript too if you have
Ghostscript installed.
-@item GUILE 1.3, check out @uref{http://www.gnu.org/programs/guile.html,http://www.gnu.org/programs/guile.html}
+@item GUILE 1.3.4, or newer. Check out @uref{http://www.gnu.org/programs/guile.html,http://www.gnu.org/software/guile/}
@end itemize
-For running LilyPond successfully you have to help TeX and MetaFont
-find various files. The recommended way of doing so is adjusting the
-environment variables in the start-up scripts of your shell. An
-example is given here for the Bourne shell:
-@example
-export MFINPUTS="/usr/local/share/lilypond/mf:"
-export TEXINPUTS="/usr/local/share/lilypond/tex:/usr/local/share/lilypond/ps:"
-
-@end example
+For running LilyPond successfully you have to help TeX and MetaFont find
+various files. The recommended way of doing so is adjusting the
+environment variables in the start-up scripts of your shell. Appropriate
+Csh and sh scripts are left in @file{buildscripts/out/lilypond-profile}
+and @file{buildscripts/out/lilypond-login} after compilation.
-The empty path component
-represents TeX and MetaFont's default search paths. Scripts with
-the proper paths for the bourne and C-shell respectively are generated in
-@file{buildscripts/out/lilypond-profile} and
-@file{buildscripts/out/lilypond-login} during compilation.
+The empty path component represents TeX and MetaFont's default search
+paths. Scripts with the proper paths for the bourne and C-shell
+respectively are generated in @file{buildscripts/out/lilypond-profile}
+and @file{buildscripts/out/lilypond-login} during compilation.
-LilyPond is a hiddeously big, slow and bloated program. A fast CPU
-and plenty of RAM is recommended for comfortable use.
+LilyPond is a big and slow program. A fast CPU and plenty of RAM is
+recommended for comfortable use.
@section Website
The website is the most convenient form to use for reading the
documentation on-line documentation. It is made by entering @example
- make website
+ make htmldoc
@end example
-This does require a fully functioning
+This does require a functioning LilyPond. The binary doesn't have to
+be installed.
If you want to auto-generate Lily's website, you'll need some additional
conversion tools.
@itemize @bullet
-@item xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
+@item xpmtoppm (from the netpbm package: the Portable Bitmap Utilities) (For RedHat Linux
users: it is included within the package libgr-progs).
the original is at
@uref{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz,ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz}
-@item pnmtopng, which is also in libgr-progs for RedHat. The original is
+@item pnmtopng (also in libgr-progs for RedHat). The original is
at
@uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz}.i
The version of @file{pnmtopng} that is distributed with RedHat 5.1 and
5.2 contains a bug: pnmtopng is dynamically linked to the wrong
-version of libpng, which results in cropped images. Recompile it from
-source, and make sure that the pnmtopng binary is linked statically to
-the libpng that is included in libgr. RedHat 6.0 does not have this
-problem.
-
-@example
- tar xzf libgr-2.0.13.tar.gz
- make
- cd png
- rm libpng.so*
- make pnmtopng
-
-@end example
+version of libpng.
-You can then install the new pnmtopng into @file{/usr/local/bin/}
-
-@item Bib2html @uref{http://pertsserver.cs.uiuc.edu/~hull/bib2html.,http://pertsserver.cs.uiuc.edu/~hull/bib2html.}
- Which, in turn depends on man2html for proper installation.
+@item @uref{http://www.lri.fr/~filliatr/ftp/bibtex2html/, Bibtex2html}, or
+@uref{http://www.uni-koblenz.de/ag-ki/ftp/bib2html/, Bib2html}.
+Bibtex2html is available in debian, while bib2html is in some rpm based
+distributions.
+Bib2html, in turn depends on man2html for proper installation.
man2html can be had from @uref{http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05,http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05}.
-The website will build without this utility, but you will not see our
-hypertextified bibliography.
-
-@item Doc++ (optional) to read the source code.
+The website will build without bib converter utility, but you will not
+see our hypertextified bibliography.
@end itemize
-You also have to install @file{buildscripts/out/ps-to-gifs} in a
-directory that is in the path.
-
-@section configuring and compiling
+@section Configuring and compiling
to install GNU LilyPond, simply type:
@example
-
gunzip -c lilypond-x.y.z | tar xf -
cd lilypond-x.y.z
./configure # fill in your standard prefix with --prefix
make
make install
-
@end example
This will install a number of files, something close to:
-@example
- /usr/local/man/man1/mi2mu.1
- /usr/local/man/man1/convert-mudela.1
- /usr/local/man/man1/mudela-book.1
+@example
+ /usr/local/man/man1/midi2ly.1
+ /usr/local/man/man1/abc2ly.1
+ /usr/local/man/man1/etf2ly.1
+ /usr/local/man/man1/convert-ly.1
+ /usr/local/man/man1/lilypond-book.1
/usr/local/man/man1/lilypond.1
/usr/local/bin/lilypond
- /usr/local/bin/mi2mu
+ /usr/local/bin/midi2ly
+ /usr/local/bin/convert-ly
+ /usr/local/bin/lilypond-book
+ /usr/local/bin/abc2ly
+ /usr/local/bin/pmx2ly
+ /usr/local/bin/musedata2ly
+ /usr/local/bin/etf2ly
/usr/local/share/lilypond/*
- /usr/local/share/locale/@{it,nl@}/LC_MESSAGES/lilypond.mo
-
+ /usr/local/share/locale/@{....@}/LC_MESSAGES/lilypond.mo
@end example
resulting binaries can be found in the subdirectories @file{out/} (which
contain all files generated during compilation).
-@section configuring for multiple platforms
+@section Configuring for multiple platforms
If you want to compile LilyPond with different configuration settings,
then, you can use the @code{--enable-config} option. Example: suppose I
@example
- ./configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
- make config=optprof
- make config=optprof install
+ ./configure --prefix=~ --enable-profiling --enable-config=prof --enable-optimise --disable-checking
+ make config=prof
+ make config=prof install
@end example
@file{.pk} and @file{.tfm} files of the fonts. A script has been
provided to do the work for you, see @file{bin/clean-fonts.sh}.
-@unnumberedsec CAVEATS
-
-
-@itemize @bullet
-@item The -O2 option triggers bugs on various platforms (PowerPC, Alpha).
- If you experience problems, you should first try turning off
- this.
-@item On PPC you need at least EGCS-1.1.2f.
-@end itemize
@section Redhat linux
@end example
-Precompiled i386 RedHat RPMS are available from
-@uref{ftp://freshmeat.net/pub/rpms/lilypond/,ftp://freshmeat.net/pub/rpms/lilypond/} and
-@uref{http://linux.umbc.edu/software/lilypond/rpms/,http://linux.umbc.edu/software/lilypond/rpms/}.
+Precompiled RedHat-7.0 i386 RPMS are available from
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/}.
For compilation on a RedHat system you need these packages,
in addition to the those needed for running:
@item flex
@item bison
@item texinfo
+@item tetex-devel
@end itemize
@section Debian GNU/linux
-A Debian package is also available; contact Anthony Fok
-@email{foka@@debian.org}. The build scripts are in the subdirectory
-@file{debian/}.
+A Debian package is also available; see
+@uref{http://packages.debian.org/lilypond,http://packages.debian.org/lilypond}
+or contact Anthony Fok @email{foka@@debian.org} for more information.
+
+The build scripts are in the subdirectory @file{debian/}; you can
+make the .deb by doing
+
+@example
+
+ tar xzf lilypond-x.y.z.tar.gz
+ cd lilypond-x.y.z
+ dpkg-buildpackage
+ dpkg -i ../lilypond_x.y.z*deb
+
+@end example
+
+For compilation on a Debian GNU/Linux system you need these packages,
+in addition to the those needed for running:
+@itemize @bullet
+@item libc6-dev
+@item libstdc++<your-libstdc++-version-here>-dev
+@item libguile<your-libguile-version-here>-dev
+@item flex
+@item bison
+@item gettext
+@item texinfo
+@item tetex-dev
+@item debhelper
+@end itemize
+
@section Windows NT/95
+Separate instructions on building for W32 are available; See the files
+in @file{Documentation/ntweb/}, included with the sources.
+
+@section Problems
+
+For help and questions use @email{help-gnu-music@@gnu.org} and
+@email{gnu-music-discuss@@gnu.org}. Please consult the faq before
+mailing your problems.
+
+If you find bugs, please send bug reports to
+@email{bug-gnu-music@@gnu.org}.
+
+Bugs that are LilyPond's fault are listed in our TODO list on the
+web, or demonstrated in @file{input/bugs/}.
+
+Bugs that are not LilyPond's fault are documented here.
-Separate instructions on building for W32 are available
-@uref{../../outdir/README-W32.html,README-W32}.
-@section Bugs
+@unnumbered LinuxPPC Bugs:
+
+@itemize @bullet
+@item egcs-1.1.2-12c (stock LinuxPPC R5) has a serious bug, upgrade to
+fixed in egcs-1.1.2-12f or gcc-2.95-0a, @uref{ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/}
+
+@item egcs-1.0.2 (LinuxPPC R4):
+all compiling with @code{-O2} is suspect, in particular guile-1.3, and
+Lily herself will break.
+@end itemize
+
+
+
+@unnumbered Linux-i386
+
+@itemize @bullet
+@item SuSE6.2 and similar platforms (glibc 2.1, libstdc++ 2.9.0)
+
+Lily will crash during parsing (which suggests a C++ library
+incompatibility). Precise cause, precise platform description or
+solution are not known.
-Send bug reports to bug-gnu-music@@gnu.org. For help and questions use
-help-gnu-music@@gnu.org and gnu-music-discuss@@gnu.org. Please consult
-the faq before mailing your problems.
+Note that this only happens on some computers with the said platform.
-@section Authors
+@item libg++ 2.7
-@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}
+LilyPond occasionally crashes while parsing the initialisation files.
+This is a very obscure bug, and usually entering the commandline
+differently "fixes" it.
-@email{janneke@@gnu.org, Jan Nieuwenhuizen}
+@example
+ lilypond input.ly
+@end example
-In case of problems, please use the mailing list for help.
+and
+@example
+ lilypond -I. ./input.ly
+@end example
+makes a difference
+
+Typical stacktrace:
+@example
+ SIGSEGV
+ __libc_malloc (bytes=16384)
+ ?? ()
+ yyFlexLexer::yy_create_buffer ()
+ Includable_lexer::new_input (this=0x8209a00, s=@{strh_ = @{
+@end example
+
+This behaviour has been observed with machines that have old libg++
+versions (LinuxPPC feb '98, RedHat 4.x).
+@end itemize
+
+
+
+
+@unnumbered Solaris:
+
+@itemize @bullet
+@item Sparc64/Solaris 2.6, GNU make-3.77
+
+GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or newer.
+
+
+@item Sparc64/Solaris 2.6, ld
+
+Not yet resolved.
+@end itemize
+
+
+@unnumbered AIX
+
+@itemize @bullet
+@item AIX 4.3 ld
+
+The following is from the gcc install/SPECIFIC file.
+@quotation
+ Some versions of the AIX binder (linker) can fail with a relocation
+ overflow severe error when the -bbigtoc option is used to link
+ GCC-produced object files into an executable that overflows the TOC. A
+ fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND
+ -BBIGTOC) is available from IBM Customer Support and from its
+ 27service.boulder.ibm.com website as PTF U455193.
+
+ Binutils does not support AIX 4.3 (at least through release 2.9). GNU
+ as and GNU ld will not work properly and one should not configure GCC
+ to use those GNU utilities. Use the native AIX tools which do
+ interoperate with GCC.
+@end quotation
+
+add -Wl,-bbigtoc to USER_LDFLAGS, ie:
+@example
+ LDFLAGS='-Wl,-bbigtoc' ./configure
+@end example
+
+@end itemize
-Have fun!
@bye
+