Start here: @file{make/website.make}
The overall build system begins with @ref{How stepmake works}.
+Summary: when you type @code{make website} this ends up running
+@file{GNUmakefile.in} in the @file{git} directory. Right at the
+bottom, this has the lines:
-However, we do believe that note that *none* of the variables that
+@example
+# we want this separate for security; see CG 4.2. -gp
+website:
+ $(MAKE) config_make=$(config_make) \
+ top-src-dir=$(top-src-dir) \
+ -f $(top-src-dir)/make/website.make \
+ website
+@end example
+
+On my system this expands to:
+
+@example
+make --no-builtin-rules config_make=./config.make \
+ top-src-dir=/home/phil/lilypond-git \
+ -f /home/phil/lilypond-git/make/website.make \
+ website
+@end example
+
+We see that the @code{$(MAKE)} expands to
+@code{make --no-builtin-rules} which is how @code{MAKE} is
+defined higher up the makefile. The -f switch defines the
+makefile to be used - in this case
+@file{git/make/website.make}. That's where all the action
+happens.
+
+We believe that note that *none* of the variables that
are loaded (from depth to version numbers to whatever) are used in
@file{website.make}. Instead, @file{website.make} sets up its own
variables at the top of the file. If you're wondering if there's
some smart reason for this, then the answer is "no". It's because
-I didn't know/trust the original variables when I was writing that
-file.
-
+I (GP) didn't know/trust the original variables when I was writing
+that file.
Website build includes @ref{Building a bibliography}.
make -n website &> my-file.txt
@end example
+to see the full output from the make.
@subsubheading website.make variables
@itemize
+@item
+@code{website:}
+this is the "master" rule. It calls the other rules in order,
+then copies some extra files around - see below for further
+of the process it produces.
+
@item
@code{website-version}:
-this calls python scripts to define teinxfo macros.
+this calls the python scripts below:
@itemize
@item
@item
@code{website-bib:}
-generates the bibliography texinfo files from the .bib files.
+generates the bibliography texinfo files from the .bib files - in
+the case of the website build these are @file{others-did.bib} and
+@file{we-wrote.bib}.
@item
@code{website-texinfo:}
html. It also has a ton of options to texi2html to pass info to
our custom init file.
+The file actually built is called @file{web.texi}, and is either
+in the @file{Documentation} directory, or a sub-directory specific
+to the language.
+
+The options file is @file{/Documentation/lilypond-texi2html.init}.
+This contains *lots* of option and configuration stuff, and also
+includes the line:
+
+@example
+print STDERR "Initializing settings for web site: [$Texi2HTML::THISDOC@{current_lang@}]\n";
+@end example
+
+This is where one of the console messages is generated.
+
We have somewhere between 2-4 different ways "to pass info to our
custom init file". This is highly Not Good (tm), but that's how
things work at the moment.
It also has hard-coded lilypond version numbers, which is Bad
(tm).
-@item
-@code{website:}
-this is the "master" rule. It calls the bits and pieces in order,
-then copies some extra files around.
-
@end itemize
+Here's a summary of what gets called, in what order, when we run
+@code{make website}
+
+@example
+website:
+ website-texinfo:
+ website-version:
+ creates version.itexi and weblinks.itexi
+ website-xrefs:
+ runs extract_texi_filenames.py
+ website-bibs:
+ creates bibliography files, described above
+ website-css:
+ copies css files
+ website-pictures:
+ copies pictures
+ website-examples:
+ copies examples
+ web-post:
+ runs website_post.py
+ Then some file copying
+@end example
@node Building an Ubuntu distro
@section Building an Ubuntu distro
+
+Here's the short instruction on how to create lilybuntu iso image
+(Jonathan Kulp did this on a spare drive,
+but he supposes it can be done in a VM too):
+
@enumerate
+
@item
-Install ubuntu, reboot
+Install ubuntu, reboot.
@item
-Run all updates, reboot if asked
+Run all updates, reboot if asked.
@item
-Enable src repos, refresh package lists
+Enable src repos, refresh package lists.
@item
Install LilyPond build deps:
@example
- sudo apt-get build-dep lilypond
+sudo apt-get build-dep lilypond
@end example
@item
Install git and autoconf:
@example
- sudo apt-get install git-core gitk autoconf
+sudo apt-get install git-core gitk autoconf
@end example
@item
-TEST TO SEE WHETHER EVERYTHING WORKS NOW:
+Test to see whether everything works fine now:
@enumerate
@item
-Use lily-git.tcl to grab source files
+use @command{lily-git.tcl} to grab source files
@item
-Go to source dir and do "./autogen.sh" ; make ; make doc
+go to source dir and do
+@example
+"./autogen.sh" ; make ; make doc
+@end example
@item
-If all compiles, move on to iso creation...
-
+if all compiles, move on to iso creation...
@end enumerate
@item
Download & install "remastersys":
-@example
- http://sourceforge.net/projects/remastersys/
-@end example
-@item
-Copy lily-git.tcl script file into /etc/skel/
+@uref{http://sourceforge.net/projects/remastersys/, http://sourceforge.net/projects/remastersys/}
@item
-Modify /etc/remastersys.conf as desired (change .iso name, default
-live session username, etc)
+Copy @command{lily-git.tcl} script file into @file{/etc/skel/}.
@item
-Remove non-essential desktop software as desired
+Modify @file{/etc/remastersys.conf} as desired (change @code{.iso} name,
+default live session username, etc).
@item
-Create iso: sudo remastersys dist
+Remove non-essential desktop software as desired.
@item
-New iso is in /home/remastersys/remastersys/
+Create iso:
+@example
+sudo remastersys dist
+@end example
+New iso is in @file{/home/remastersys/remastersys/}.
@item
Test iso by installing in VM and repeating steps above for
-getting source files and building lp and docs
-@end enumerate
-
-
+getting source files and building lp and docs.
+@end enumerate