]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/topdocs/INSTALL.texi
release: 1.3.92
[lilypond.git] / Documentation / topdocs / INSTALL.texi
index 3ee7823855ccd8921dc36b4a766897d5c9fcf238..c414acdcc574a97a3a210acc966e548ee9c4df01 100644 (file)
 
 @node Top, , , (dir)
 @top
-@menu
-* INSTALL - compiling and installing GNU LilyPond::INSTALL - compiling and installing GNU LilyPond
-@end menu
-
-
-@node INSTALL - compiling and installing GNU LilyPond, abstract, , Top
-@menu
-* abstract::                      abstract
-* obtaining::                     obtaining
-* PREREQUISITES::                 PREREQUISITES
-* running::                       running
-* WEBSITE::                       WEBSITE
-* CONFIGURING and COMPILING::     CONFIGURING and COMPILING
-* CONFIGURING FOR MULTIPLE PLATFORMS::CONFIGURING FOR MULTIPLE PLATFORMS
-* INSTALLING::                    INSTALLING
-* REDHAT LINUX::                  REDHAT LINUX
-* DEBIAN GNU/LINUX::              DEBIAN GNU/LINUX
-* WINDOWS NT/95::                 WINDOWS NT/95
-* w32::                           w32
-* BUGS::                          BUGS
-* AUTHORS::                       AUTHORS
-@end menu
-@chapter INSTALL - compiling and installing GNU LilyPond
-
-
-@node abstract, obtaining, INSTALL - compiling and installing GNU LilyPond, 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.  
+@chapter INSTALL - compiling and installing GNU LilyPond
 
-@node obtaining, PREREQUISITES, abstract, INSTALL - compiling and installing GNU LilyPond
-@section obtaining
+@section Obtaining
 
 You can get the latest version of LilyPond at
-@url{ 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}.
 
-@node PREREQUISITES, running, obtaining, INSTALL - compiling and installing GNU LilyPond
-@section PREREQUISITES
+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 @url{ ftp://ftp.gnu.org/pub/gcc/}
+@item  EGCS 1.1 or newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/}.
 
 @item  Python 1.5,
 Check out
-@url{ftp://ftp.python.org} or @url{ftp://ftp.cwi.nl/pub/python}.
+@uref{ftp://ftp.python.org} or @uref{ftp://ftp.cwi.nl/pub/python}.
 
-@item  GUILE 1.3,  check out @url{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 @url{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 @url{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 @url{ftp://ftp.gnu.org/bison/}.
+Check out @uref{ftp://ftp.gnu.org/gnu/bison/,ftp://ftp.gnu.org/gnu/bison/}.
 
-@item Texinfo. Check out @url{ftp://ftp.gnu.org/pub/texinfo/}.
+@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 (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.  
 Available at 
-@url{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry}
-or at mirror site @url{ftp://ftp.dante.de}
+@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, 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.
 
-@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.
+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
 
-@node running, WEBSITE, PREREQUISITES, INSTALL - compiling and installing GNU LilyPond
-@section running
+@section Running
 
 GNU LilyPond does use a lot of resources. For operation you need the
 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 @url{http://www.gnu.org/programs/guile.html}
+@item  GUILE 1.3.4, 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.
 
-@node WEBSITE, CONFIGURING and COMPILING, running, INSTALL - compiling and installing GNU LilyPond
-@section WEBSITE
+@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.
@@ -150,70 +136,53 @@ conversion tools.
 @item xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
             users: it is included within the package libgr-progs).
        the original is at
-@url{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz}
+@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
 at
-@url{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz}.i
+@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 
-
-You can then install the new pnmtopng into @file{/usr/local/bin/}
+version of libpng.
 
-@item Bib2html @url{http://pertsserver.cs.uiuc.edu/~hull/bib2html.}
+@item @uref{http://pertsserver.cs.uiuc.edu/~hull/bib2html,Bib2html}.
     Which, in turn depends on man2html for proper installation.
-man2html can be had from @url{http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05}.
+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.
-
 @end itemize
 
-You also have to install @file{buildscripts/out/ps-to-gifs} in a
-directory that is in the path.
-
-@node CONFIGURING and COMPILING, CONFIGURING FOR MULTIPLE PLATFORMS, WEBSITE, INSTALL - compiling and installing GNU LilyPond
-@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
+@example 
+       /usr/local/man/man1/midi2ly.1
+       /usr/local/man/man1/abc2ly.1
+       /usr/local/man/man1/etf2ly.1
        /usr/local/man/man1/convert-mudela.1
        /usr/local/man/man1/mudela-book.1
        /usr/local/man/man1/lilypond.1
        /usr/local/bin/lilypond
-       /usr/local/bin/mi2mu
+       /usr/local/bin/midi2ly
+       /usr/local/bin/convert-mudela
+       /usr/local/bin/mudela-book
+       /usr/local/bin/abc2ly
+       /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 
 
 
@@ -231,8 +200,8 @@ adjust your environment variables to your taste:
 @code{CPPFLAGS} are the preprocessor flags. 
 
 The configure script is Cygnus configure, and it will accept
-@strong{--help}. If you are not root, you will probably have to make it
-with a different @strong{--prefix} option.  Our favourite location is
+@code{--help}. If you are not root, you will probably have to make it
+with a different @code{--prefix} option.  Our favourite location is
 
 @example 
 
@@ -254,20 +223,20 @@ Since GNU LilyPond currently is beta, you are advised to also use
 Options to configure include:
 
 @table @samp
-@item @strong{--enable-printing}
-    Enable debugging print routines (lilypond @strong{-D} option)
-@item @strong{--enable-optimise}
-    Set maximum optimisation: compile with @strong{-O2}.  This can be
+@item @code{--enable-printing}
+    Enable debugging print routines (lilypond @code{-D} option)
+@item @code{--enable-optimise}
+    Set maximum optimisation: compile with @code{-O2}.  This can be
 unreliable on some compiler/platform combinations (eg, DEC Alpha and PPC)
-@item @strong{--enable-profiling}
+@item @code{--enable-profiling}
     Compile with support for profiling.
-@item @strong{--enable-config}
+@item @code{--enable-config}
     Output to a different configuration file.  Needed for multi-platform
     builds
 @end table
 
 All options are documented in the @file{configure} help
-The option @strong{--enable-optimise} is recommended for Real Life usage.
+The option @code{--enable-optimise} is recommended for Real Life usage.
 
 If you do
 
@@ -281,11 +250,10 @@ everything will be compiled, but nothing will be installed.  The
 resulting binaries can be found in the subdirectories @file{out/} (which
 contain all files generated during compilation).
 
-@node CONFIGURING FOR MULTIPLE PLATFORMS, INSTALLING, CONFIGURING and COMPILING, INSTALL - compiling and installing GNU LilyPond
-@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 @strong{--enable-config} option.  Example: suppose I
+then, you can use the @code{--enable-config} option.  Example: suppose I
 want to build with and   without profiling.  Then I'd use the
 following for the normal build, 
 
@@ -301,17 +269,16 @@ and for the profiling version, I specify a different configuration.
 
 @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 
 
 
-@node INSTALLING, REDHAT LINUX, CONFIGURING FOR MULTIPLE PLATFORMS, INSTALL - compiling and installing GNU LilyPond
-@section INSTALLING
+@section Installing
 
-If you have done a successful @code{make}, then a simple
+if you have done a successful @code{make}, then a simple
 
 @example 
 
@@ -325,18 +292,8 @@ If you are doing an upgrade, please remember to remove obsolete
 @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
 
-@node REDHAT LINUX, DEBIAN GNU/LINUX, INSTALLING, INSTALL - compiling and installing GNU LilyPond
-@section REDHAT LINUX
+@section Redhat linux
 
 RedHat Linux users can compile an RPM. A spec file is in
 @file{make/out/lilypond.spec}, it is distributed along with the
@@ -351,8 +308,7 @@ You can make the rpm by issuing
 @end example 
 
 Precompiled i386 RedHat RPMS are available from
-@url{ftp://freshmeat.net/pub/rpms/lilypond/} and
-@url{http://linux.umbc.edu/software/lilypond/rpms/}.
+@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:
@@ -363,39 +319,159 @@ in addition to the those needed for running:
 @item flex
 @item bison
 @item texinfo
+@item tetex-devel
 @end itemize
 
-@node DEBIAN GNU/LINUX, WINDOWS NT/95, REDHAT LINUX, INSTALL - compiling and installing GNU LilyPond
-@section DEBIAN GNU/LINUX
+@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.
 
-@node WINDOWS NT/95, w32, DEBIAN GNU/LINUX, INSTALL - compiling and installing GNU LilyPond
-@section WINDOWS NT/95
-@node w32, BUGS, WINDOWS NT/95, INSTALL - compiling and installing GNU LilyPond
+The build scripts are in the subdirectory @file{debian/}; you can
+make the .deb by doing
 
+@example 
 
-Separate instructions on building for W32 are available
-@url{../../outdir/README-W32.html}.
+       tar xzf lilypond-x.y.z.tar.gz
+       cd lilypond-x.y.z
+       dpkg-buildpackage
+       dpkg -i ../lilypond_x.y.z*deb
+@end example 
 
-@node BUGS, AUTHORS, w32, INSTALL - compiling and installing GNU LilyPond
-@section BUGS
+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
 
-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.
 
-@node AUTHORS, Top, BUGS, INSTALL - compiling and installing GNU LilyPond
-@section AUTHORS
+@section Windows NT/95
 
-@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}
+Separate instructions on building for W32 are available; See the files
+in @file{Documentation/ntweb/}, included with the sources.
 
-@email{janneke@@gnu.org, Jan Nieuwenhuizen}
+@section Problems
 
-In case of problems, please use the mailing list for help.
+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.
+
+
+@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.
+
+Note that this only happens on some computers with the said platform.
+
+@item libg++ 2.7
+
+LilyPond occasionally crashes while parsing the initialisation files.
+This is a very obscure bug, and usually entering the commandline
+differently "fixes" it.
+
+@example
+       lilypond input.ly 
+@end  example
+
+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
+