Diff for /books/www/chapters/appa.html between versions 1.5 and 1.6

version 1.5, 2002/12/04 06:07:15 version 1.6, 2002/12/11 18:57:10
Line 1 Line 1
<HTML>    <style type="text/css">
<HEAD><TITLE>Appendix A</TITLE></HEAD><BODY BGCOLOR=WHITE><H2>Appendix A</H2>      div.c2 {font-weight: bold; text-align: center}
<H1><A NAME="90096"></A> Getting and Building the Mozilla Source</H1>      div.c1 {text-align: center}
<P>One of the best things about using Mozilla as an application development framework is that you don't need to get involved with the Mozilla source code to create a Mozilla application. A simple Mozilla binary that you download and install is the only development platform you need. You can create and use most procedures and samples described in this book with a precompiled version of the browser.    </style>
<P>The best way to get a working  <!--INDEX precompiled versions for downloading -->  <!--INDEX downloading:precompiled versions -->  <!--INDEX Mozilla:precompiled versions, downloading --> version of Mozilla quickly is to download a precompiled binary for your platform. If you go to the mozilla.org homepage, you will find links to Mozilla's most recent stable milestone build for each platform and a link to the nightly development snapshot builds. These binaries come as compressed archives or with an installer, and you can use either to run Mozilla on your computer within a few minutes. These binaries don't include the source for Mozilla (unless you count the XUL, CSS, and JavaScript that made up the front end, which are always available), so read on if you want to obtain the code. 
<P>Under the relevant license terms, the Mozilla source code is freely available to anyone who has an Internet connection and a desire to explore. You may want to look at this code out of curiosity or dive into the code as you figure out how it works and can be improved. Whatever your reasons are for looking at the Mozilla source, it is not much more difficult to get the code and build it yourself than it is to download the precompiled binaries. To get started, you need to know a few things about how to get and use the source. 
<H2>Getting the Source Code</H2> 
<P>You can get the Mozilla  <!--INDEX source code:obtaining -->  <!--INDEX Mozilla:source code:obtaining --> source code in a few different  
ways. Depending on what you are interested in doing, one method may work better for you than another. This appendix provides basic  
information about how to get the source, but you can also find information about this topic on the Mozilla site at <A HREF="http://www.mozilla.org/source.html">http://www.mozilla.org/source.html</A><I>.</I> 
<P>If you want to look at the source code and don't intend to recompile it, experiment with it, or update it at all, the best way to get at the source is to browse the Mozilla code base with Mozilla Cross Reference (LXR). As you can see in <A HREF="#73085">Figure A-1</A>, LXR is a web-based source code browsing tool located at <I><A HREF="http://lxr.mozilla.org">http://lxr.mozilla.org</A></I>. LXR is also hooked up to other tools, such as Bonsai (<I><A HREF="http://bonsai.mozilla.org">http://bonsai.mozilla.org</A></I>) and the various tinderboxen (<I><A HREF="http://tinderbox.mozilla.org/showbuilds.cgi">http://tinderbox.mozilla.org/showbuilds.cgi</A></I>). Together, these tools create a powerful code maintenance system that is used widely by Mozilla developers. 
<P><CENTER><IMG SRC="foo.gif"></CENTER> 
<P><I>Figure A-1: <A NAME="73085"></A></I> 
<I>Mozilla Cross Reference code browsing tool</I> 
   
<H3>Downloading the Source with FTP</H3>    <h2>Appendix A</h2>
<P>If you would <!--INDEX source code:downloading with FTP -->  <!--INDEX Mozilla:source code:downloading with FTP -->  like to get your hands on the code directly, use either File Transfer Protocol (FTP) or Concurrent Versioning System (CVS) to grab the source from the Mozilla site. Many people prefer to start by grabbing an archive of the source code by FTP and then working with CVS as they modify the code.    <h1><a name="90096"></a> Getting and Building the Mozilla
<P>If you're sure you won't check your work back into Mozilla and you just want to get the source, using FTP is the easiest way to do so. The main FTP server is at <I><A HREF="ftp://ftp.mozilla.org/">ftp://ftp.mozilla.org/</A></I> (a list of FTP mirrors is available on the mozilla.org site). To download a particular version of Mozilla, go to either <I>/pub/mozilla/nightly/latest/</I> or <I>/pub/mozilla/releases/</I>, depending on which build you would like to have.    Source</h1>
<P>When you download the source from the releases directory, you get the code for the most recent Mozilla milestone. These releases are versions of Mozilla that have been tested and approved by developers at mozilla.org. Milestones come out about once a month and have some implied stability. The code in the "latest" directory is for the version of Mozilla currently under development. This code is not tested and stability is not guaranteed. In fact, the latest code may not even work if something that was checked in recently breaks Mozilla.    <p>One of the best things about using Mozilla as an application
<H3>Downloading the Source with CVS</H3>    development framework is that you don't need to get involved
<P>Grabbing the  <!--INDEX source code:downloading with CVS -->  <!--INDEX Mozilla:source code:downloading with CVS --> source with CVS requires additional steps to get things set up properly, but for many, it's worth the effort. If you would like to contribute your own changes back to the community, you must understand how CVS works. Pulling the source in this manner is a good way to start learning about Mozilla development.    with the Mozilla source code to create a Mozilla application. A
<P>For a quick understanding of CVS, you can obtain a copy of the <I>CVS Pocket Reference</I> (O'Reilly). To pick up a binary distribution of CVS if it isn't already installed, go to <I><A HREF="http://www.cvshome.org/downloads.html">http://www.cvshome.org/downloads.html</A></I>, where you'll also find links to documentation.    simple Mozilla binary that you download and install is the only
<P>Using CVS requires logging into the Mozilla site by using a CVS client, checking out the source code, modifying the source code locally, and then checking the code back into the tree. Anyone is free to check out the code, but you need special permission to check in the changes you make to the source. This chapter discusses only how to check out the source with CVS.    development platform you need. You can create and use most
<P>You first need a CVS client. Free CVS clients are available for most operating systems, including WinCVS on Windows and MacCVS for the Mac. Linux has a command-line CVS client that should come standard on most Linux distributions. Here are instructions for using the Linux command-line client to check out the source code:    procedures and samples described in this book with a
<OL><P><LI>Set the <I>CVSROOT</I> variable:    precompiled version of the browser.</p>
<PRE>$ setenv CVSROOT :pserver:<A HREF="MAILTO:anonymous@cvs-mirror.mozilla.org:/cvsroot">anonymous@cvs-mirror.mozilla.org:/cvsroot</A></PRE>    <p>The best way to get a working 
<LI>Log in as <I><A HREF="MAILTO:anonymous@cvs-mirror.mozilla.org">anonymous@cvs-mirror.mozilla.org</A></I> using the password "anonymous":<P>    <!--INDEX precompiled versions for downloading --> 
<PRE>$ cvs login    <!--INDEX downloading:precompiled versions --> 
CVS password: anonymous</PRE>    <!--INDEX Mozilla:precompiled versions, downloading --> version
<P><LI>Check out the build Makefile:<P>    of Mozilla quickly is to download a precompiled binary for your
<PRE>$ cvs checkout mozilla/client.mk    platform. If you go to the mozilla.org homepage, you will find
U mozilla/client.mk</PRE>    links to Mozilla's most recent stable milestone build for each
<P><LI>Run the Makefile script to get the files:<P>    platform and a link to the nightly development snapshot builds.
<PRE>$ cd mozilla    These binaries come as compressed archives or with an
$ make -f client.mk checkout</PRE>    installer, and you can use either to run Mozilla on your
</OL>    computer within a few minutes. These binaries don't include the
<P>On Windows, the command-line interface used to obtain the Mozilla source is very similar. You just need to make a few small changes to the steps above for a Windows install. Here are the steps listed for comparison:    source for Mozilla (unless you count the XUL, CSS, and
<OL><P><LI>Set the <I>CVSROOT</I> variable:<P>    JavaScript that made up the front end, which are always
<PRE>&gt; set CVSROOT :pserver:<A HREF="MAILTO:anonymous@cvs-mirror.mozilla.org:/cvsroot">anonymous@cvs-mirror.mozilla.org:/cvsroot</A></PRE>    available), so read on if you want to obtain the code.</p>
<P><LI>Log in as <I><A HREF="MAILTO:anonymous@cvs-mirror.mozilla.org">anonymous@cvs-mirror.mozilla.org</A></I> using the password "anonymous":<P>    <p>Under the relevant license terms, the Mozilla source code is
<PRE>&gt; cvs login    freely available to anyone who has an Internet connection and a
CVS password: anonymous</PRE>    desire to explore. You may want to look at this code out of
<P><LI>Check out the build Makefile:<P>    curiosity or dive into the code as you figure out how it works
<PRE>&gt; cvs checkout mozilla/client.mk    and can be improved. Whatever your reasons are for looking at
U mozilla/client.mk</PRE>    the Mozilla source, it is not much more difficult to get the
<P><LI>Run the Makefile script to get the files:<P>    code and build it yourself than it is to download the
<PRE>&gt; cd mozilla    precompiled binaries. To get started, you need to know a few
&gt; make -f client.mk checkout</PRE>    things about how to get and use the source.</p>
</OL>    <h2>Getting the Source Code</h2>
<P>In Step 1, set the <I>CVSROOT</I> environment variable using the <TT>set</TT> command. Use the GNU <I>make</I> utility (<I>make</I>) on Windows just as you would on Unix.    <p>You can get the Mozilla <!--INDEX source code:obtaining --> 
<BLOCKQUOTE><CENTER><B>NOTE</B></CENTER></BLOCKQUOTE>    <!--INDEX Mozilla:source code:obtaining --> source code in a
<BLOCKQUOTE><P>Building using nmake is no longer supported on the Mozilla development trunk, though there is a document describing this process for developers using older branches at <I><A HREF="http://www.mozilla.org/build/win32-nmake.html">http://www.mozilla.org/build/win32-nmake.html</A></I>.<P></BLOCKQUOTE>    few different ways. Depending on what you are interested in
<P>Before you pull the source code, check the tree status in the relevant Tinderbox. Grab the source only if the tree is green (success) or yellow (building). Do not pull the source on red, which indicates that the build is broken.    doing, one method may work better for you than another. This
<P>To pull the Mozilla source code on  <!--INDEX STARTRANGE--Macintosh:source installation --> Macintosh, use a client like MacCVS, which automates much of the CVS process for you. Mac OSX users can use the standard command-line CVS client and pull the source using a method similar to checking out the source in a Unix environment. Also be sure to include the required resources-XML Perl modules, MacPerl, or the CodeWarrior development environment--which are all listed later in <A HREF="#96292">Table A-1</A>.    appendix provides basic information about how to get the
<P>The MacCVS client works with session files, which have all the information and settings you need to pull Mozilla. The settings are listed on the mozilla.org Mac build page, which even has a ready-made session file that you can download into the client. Once you set your tools up and configure your session file for MacCVS, you can pull the Mozilla source by choosing "Check Out Default Module" from the MacCVS Action menu. Like the Macintosh build process, pulling the source on Macintosh involves the interaction of a series of Perl scripts. The <I>PullMozilla.pl</I> script, located with the other Macintosh build scripts in <I>mozilla/build/mac/build_scripts</I>, can drive your MacCVS client-starting it up and pointing to the right source, setting the proper variables, and so on. For more information on the  <!--INDEX ENDRANGE--Macintosh:source installation --> Macintosh build scripts, see <I><A HREF="http://www.mozilla.org/build/mac-build-system.html">http://www.mozilla.org/build/mac-build-system.html</A></I>.    source, but you can also find information about this topic on
<H3>Working with Branching</H3>    the Mozilla site at <a href=
<P>Branches are  <!--INDEX source code:branching -->  <!--INDEX Mozilla:source code:branching --> distinct Mozilla source code trees that are "cut" to carry out a specific purpose or used for a milestone release. Developers cut branches when making large architectural changes that could make the main tree unstable. Branches in this context allow freer changing and testing off the main trunk. To work with branches, set the <I>MOZ_BRANCH</I> environment variable:    "http://www.mozilla.org/source.html">http://www.mozilla.org/source.html</a><i>
<PRE>&gt; setenv MOZ_BRANCH=MOZILLA_1_0_BRANCH</PRE>    .</i></p>
<P>The value changes according to the repository with which you work. All other steps can remain the same in the process.    <p>If you want to look at the source code and don't intend to
<P>To find out more about using CVS to get Mozilla source and to learn about what else you can do with CVS, go to <I><A HREF="http://www.mozilla.org/cvs.html">http://www.mozilla.org/cvs.html</A></I>.    recompile it, experiment with it, or update it at all, the best
<H2>Building the Source Code</H2>    way to get at the source is to browse the Mozilla code base
<P>Now that you <!--INDEX source code:building -->  <!--INDEX Mozilla:source code:building -->  have the Mozilla source code, what do you do with it? Unlike the Mozilla binaries that are available for download, you can not start using Mozilla once you have all the source code on your computer. Before you can start using the source, you need to set up your working environment and then build Mozilla.    with Mozilla Cross Reference (LXR). As you can see in <a href=
<P>For the Mozilla source to compile on your computer properly, two main aspects of your build environment must be set up. These aspects are the necessary tools and the proper environment variables. You would expect such a large code base to require a large number of tools, but there aren't so many. <A HREF="#96292">Table A-1</A> lists the tools you need to build and run the source code. All information here is presented in more detail at <I><A HREF="http://www.mozilla.org/build/">http://www.mozilla.org/build/</A></I>, including links for getting the tools.    "#73085">Figure A-1</a>, LXR is a web-based source code
    browsing tool located at <i><a href=
<P><I>Table A-1: <A NAME="96292"></A></I>    "http://lxr.mozilla.org">http://lxr.mozilla.org</a></i>. LXR is
<I>Platform tools used to build the Mozilla source code</I>    also hooked up to other tools, such as Bonsai (<i><a href=
<TABLE WIDTH=100% BORDER=1><TR><TD><B>  Linux</B></TD> <TD><B>  Windows</B></TD> <TD><B>  Macintosh</B></TD></TR>    "http://bonsai.mozilla.org">http://bonsai.mozilla.org</a></i>)
<TR><TD>  egcs 1.0.3 (or higher), gcc 2.95.2</TD>     <TD>  Microsoft Visual C++ Version 6.0 or later (with service pack 3)</TD>     <TD>  Code Warrior Pro 7 (including Plugin SDK)</TD></TR>    and the various tinderboxen (<i><a href=
<TR><TD>  GTK+ / Glib 1.2.0</TD>     <TD>  Cygnus toolkit for Windows (the build page lists the specific components)</TD>     <TD>  Menu Sharing Toolkit 1.4</TD></TR>    "http://tinderbox.mozilla.org/showbuilds.cgi">http://tinderbox.mozilla.org/showbuilds.cgi</a></i>).
<TR><TD>  GNU make 3.74</TD>     <TD>  Netscape Wintools (modified versions of gmake, shmsdos, and uname)</TD>     <TD>  ToolServer</TD></TR>    Together, these tools create a powerful code maintenance system
<TR><TD>  Perl 5.005 (or higher)</TD>     <TD>  Perl5 for Win32</TD>     <TD>  MacPerl</TD></TR>    that is used widely by Mozilla developers.</p>
<TR><TD>  cpan-mac distribution</TD></TR>    <div class="c1">
<TR><TD>  Perl AppleEvents module</TD></TR>      <img src="foo.gif">
<TR><TD>  Perl Launch module</TD></TR>    </div>
<TR><TD>  zip 2.3 (or higher)</TD>     <TD>  Zip for Win32</TD>     <TD>  Compress:Zlib module</TD></TR>    <p><i>Figure A-1: <a name="73085"></a></i> <i>Mozilla Cross
<TR><TD>  Archive::Zip module</TD></TR>    Reference code browsing tool</i></p>
<TR><TD>  LibIDL 0.6.3 (or higher)</TD>             <TD>  (Required for static build)</TD></TR>    <h3>Downloading the Source with FTP</h3>
<TR><TD>  XML::RegExp</TD></TR>    <p>If you would <!--INDEX source code:downloading with FTP --> 
<TR><TD>  XML::Parser</TD></TR>    <!--INDEX Mozilla:source code:downloading with FTP --> like to
<TR><TD>  XML::DOM</TD></TR>    get your hands on the code directly, use either File Transfer
<TR><TD>  Autoconf 2.12 (optional)</TD>             </TR></TABLE>    Protocol (FTP) or Concurrent Versioning System (CVS) to grab
    the source from the Mozilla site. Many people prefer to start
<P>The Linux environment is usually set up by default with all the tools listed for that platform; it therefore requires less time to retrieve and set up programs. Linux distributions usually come with a native compiler that is compatible with the Mozilla build system. Most build time is used compiling the C++ source code-the language most files are written in. Therefore, the compiler is the central component of the build system. Linux uses egcs or gcc, Windows uses Microsoft Visual C++, and Macintosh uses Metroworks Code Warrior. The latest version of CVS for each platform accompanies all tools listed in <A HREF="#96292">Table A-1</A>.    by grabbing an archive of the source code by FTP and then
<P>You can set various environment settings for each platform to configure and optimize your build environment. Most settings are optional and some are essential. One essential is the <I>CVSROOT</I> variable, which tells the CVS server where to look for the tree's home or root. The next section looks at the differences between the Unix, Windows, and Macintosh platforms.    working with CVS as they modify the code.</p>
<H3>Unix Environment</H3>    <p>If you're sure you won't check your work back into Mozilla
<P>Unix is <!--INDEX source code:building:Unix -->  <!--INDEX Mozilla:source code:building in Unix -->  probably the easiest platform to configure. In fact, because it's a developer's platform, it is designed to work with little or no user interaction. In the source tree, script is provided to do all the work for you. To run it, you need only the following steps:    and you just want to get the source, using FTP is the easiest
<PRE>&gt; cd mozilla    way to do so. The main FTP server is at <i><a href=
&gt; ./configure</PRE>    "ftp://ftp.mozilla.org/">ftp://ftp.mozilla.org/</a></i> (a list
<P>Running this command gathers all necessary system information and the list of Makefiles needed to compile the source. This command needs to be run only when a Makefile is added or removed from the tree. After this, it is sufficient to compile Mozilla by launching gmake with no arguments.    of FTP mirrors is available on the mozilla.org site). To
<P>Alternatively, you can use the Unix Build Configurator, an online tool (<I><A HREF="http://webtools.mozilla.org/build/config.cgi">http://webtools.mozilla.org/build/config.cgi</A></I>) that lets you change certain settings if you run into any obstacles when building. It allows setting external package configuration, a choice of Mozilla components, and debugging and optimization options. Once this setting is made, let Mozilla take over via the <TT>client.mk</TT> script:    download a particular version of Mozilla, go to either
<PRE>&gt; gmake -f client.mk</PRE>    <i>/pub/mozilla/nightly/latest/</i> or
<P>One useful post-build setting is the ability to run Mozilla from any directory (rather than just dist/bin<I>)</I>. To test this option, use MOZILLA_FIVE_HOME to point to the full path, to the <I>dist/bin</I>, or wherever your executable resides.    <i>/pub/mozilla/releases/</i>, depending on which build you
<H3>Windows Environment</H3>    would like to have.</p>
<P>The setup is <!--INDEX source code:building:Windows -->  <!--INDEX Mozilla:source code:building in Windows -->  different on Windows and requires more interaction on the user's part, mostly in setting up environment variables. <A HREF="#52766">Table A-2</A> lists these variables and expected values. Note that some values are optional.    <p>When you download the source from the releases directory,
    you get the code for the most recent Mozilla milestone. These
<P><I>Table A-2: <A NAME="52766"></A></I>    releases are versions of Mozilla that have been tested and
<I>Windows environment variables used to build Mozilla</I>    approved by developers at mozilla.org. Milestones come out
<TABLE WIDTH=100% BORDER=1><TR><TD><B>  Variable</B></TD> <TD><B>  Value</B></TD> <TD><B>  Description</B></TD></TR>    about once a month and have some implied stability. The code in
<TR><TD>  MOZ_BITS</TD>     <TD>  32</TD>     <TD>  Specifies whether you use a 16-bit or 32-bit operating system.</TD></TR>    the "latest" directory is for the version of Mozilla currently
<TR><TD>  MOZ_DEBUG</TD>     <TD>  1 (optional)</TD>     <TD>  Set only if you want a build with debug information. Remove this variable to enable it by default.</TD></TR>    under development. This code is not tested and stability is not
<TR><TD>  MOZ_SRC</TD>     <TD>  &lt;path to top of source tree&gt;</TD>     <TD>  The directory into which you uncompress or check out the Mozilla source. Ensure that the path does not end with a trailing slash (</TD><TT>\</TT>).</TR>    guaranteed. In fact, the latest code may not even work if
<TR><TD>  MOZ_TOOLS</TD>     <TD>  &lt;usually the Cygwin root directory&gt;</TD>     <TD>  The directory where gmake is installed, usually placed there by the wintools.zip package (refer to <A HREF="#96292">Table A-1</A>).</TD></TR>    something that was checked in recently breaks Mozilla.</p>
<TR><TD>  WINOS</TD>     <TD>  %OS_TARGET% (see the OS_TARGET variable)</TD>     <TD>  An abbreviation for the operating system that is also used internally by the OS. Windows 2000 takes a value of WINNT. It matches the top-level directory on the filesystem that contains all OS files.</TD></TR>    <h3>Downloading the Source with CVS</h3>
<TR><TD>  OS_TARGET</TD>     <TD>  WINNT (or WIN95)</TD>     <TD>  A Mozilla representation of the </TD><TT>OS_TARGET</TT> variable</TR>    <p>Grabbing the <!--INDEX source code:downloading with CVS --> 
<TR><TD>  _MSC_VER</TD>     <TD>  1200 (or 1100 for VC++ 5)</TD>     <TD>  The version of the Microsoft Visual C++ runtime environment running on your machine. The value of 1200 is Version 6, the most reliable version.</TD></TR>    <!--INDEX Mozilla:source code:downloading with CVS --> source
<TR><TD>  DISABLE_TESTS</TD>     <TD>  1 (Optional)</TD>     <TD>  Set only if you do not want to build test directories and binaries. Remove this variable to leave it enabled by default.</TD></TR>    with CVS requires additional steps to get things set up
<TR><TD>  MOZ_DISABLE_JAR_PACKAGING</TD>     <TD>  1 (Optional)</TD>     <TD>  Set only if you want to turn off compression into the chrome structure's JAR files. Remove this variable to leave it enabled by default.</TD></TR>    properly, but for many, it's worth the effort. If you would
<TR><TD>  MOZ_CONFIG</TD>     <TD> &lt;path to config file&gt;</TD>     <TD>  This variable is required only for gmake builds.</TD></TR>    like to contribute your own changes back to the community, you
<TR><TD>  PATH</TD>     <TD> %PATH%;%MOZ_TOOLS%\bin;c:\cygwin</TD>     <TD>  The </TD><TT>PATH</TT> variable is an existing variable that needs the Cygwin root and binary directories appended. The operating system looks at this variable when looking for program executables and DLLs.</TR></TABLE>    must understand how CVS works. Pulling the source in this
    manner is a good way to start learning about Mozilla
<P>You can set these variables either by using the <TT>set</TT> command for per session variables or the System &gt; Advanced &gt; Environment Variable panel in Control Panel to set them more permanently.    development.</p>
<BLOCKQUOTE><CENTER><B>NOTE</B></CENTER></BLOCKQUOTE>    <p>For a quick understanding of CVS, you can obtain a copy of
<BLOCKQUOTE><P>Once your environment is set and the tools are in place, you can begin the build. Go to the <I>mozilla</I> directory in the source code and from there, run the make script (<I>client.mk</I>) with the necessary arguments:<P></BLOCKQUOTE>    the <i>CVS Pocket Reference</i> (O'Reilly). To pick up a binary
&gt;make -f client.mk build_all    distribution of CVS if it isn't already installed, go to <i><a
<P>Once your environment is set and the tools are in place, building can begin. Go to the <I>mozilla</I> directory in the source code and from there, run the make script (<I>client.mak</I>) with the necessary arguments:    href=
<PRE>&gt; nmake -f client.mak build_all</PRE>    "http://www.cvshome.org/downloads.html">http://www.cvshome.org/downloads.html</a></i>,
<P><A HREF="#33735">Table A-3</A> lists these arguments and what they do. Leaving out this compile flag starts an incremental build or a fresh build if there is no previous build available.    where you'll also find links to documentation.</p>
<P>When building incrementally, try to use the provided make script instead of the <TT>cvs</TT> checkout and build_all commands. The latter command can lead to inconsistencies in file versions and may re-download files that you do not even need to your tree.    <p>Using CVS requires logging into the Mozilla site by using a
    CVS client, checking out the source code, modifying the source
<P><I>Table A-3: <A NAME="33735"></A></I>    code locally, and then checking the code back into the tree.
<I>Make flags</I>    Anyone is free to check out the code, but you need special
<TABLE WIDTH=100% BORDER=1><TR><TD><B>  Flag</B></TD> <TD><B>  Function</B></TD></TR>    permission to check in the changes you make to the source. This
<TR><TD>  pull_all</TD>     <TD>  Gets only the source code.</TD></TR>    chapter discusses only how to check out the source with
<TR><TD>  build_all</TD>     <TD>  Builds only the existing source code.</TD></TR>    CVS.</p>
<TR><TD>  pull_and_build_all</TD>     <TD>  Retrieves the source code and then builds it.</TD></TR>    <p>You first need a CVS client. Free CVS clients are available
<TR><TD>  pull_and_build_all_dep</TD>     <TD>  Does a dependent build after retrieving the source code. The source tree is not accessed in a dependent build.</TD></TR>    for most operating systems, including WinCVS on Windows and
<TR><TD>  pull_ clientmak</TD>     <TD>  Pulls only the latest version of the build file </TD><I>client.mak</I>.</TR>    MacCVS for the Mac. Linux has a command-line CVS client that
<TR><TD>  clobber_all</TD>     <TD>  Deletes all files produced from a previous build to enable a completely fresh build.</TD></TR>    should come standard on most Linux distributions. Here are
<TR><TD>  Pull_xpconnect</TD>     <TD>  Retrieves the XPConnect module. You can retrieve other modules this way, including </TD><I>nspr</I> and <I>psm</I>.</TR></TABLE>    instructions for using the Linux command-line client to check
    out the source code:</p>
<P>To rebuild without pulling the tree, use:    <ol>
<PRE>&gt; make -f client.mk build_all_depend</PRE>      <li>
<P>To get or update the source code and not build, use:        Set the <i>CVSROOT</i> variable: 
<PRE>&gt; make -f client.mk checkout</PRE><pre>
<H3>Macintosh Environment</H3>$ setenv CVSROOT :pserver:<a href=
<P>In terms of  <!--INDEX source code:building:Macintosh OS -->  <!--INDEX Mozilla:source code:building in Macintosh OS --> environment setup, necessary resources, and actual compile time, the Mac OS is the least straightforward of the three major platforms Mozilla builds on. There are several different kinds of Mac builds at mozilla.org, but this section focuses on just two: the Classic Mac OS 9's standard build, which has been the default for a long time, and Mac OS X's Code Fragment Manager (CFM)."MAILTO:anonymous@cvs-mirror.mozilla.org:/cvsroot">anonymous@cvs-mirror.mozilla.org:/cvsroot</a>
<P>Mac OS X builds are becoming more popular as the platform is adopted more widely. Better performance and native Unix build system tools have boosted developer support for Mozilla on Mac OS X. However, the Macintosh is by far the most resource hungry of all platforms Mozilla builds on. The minimum specification includes 1 GB of disk space and 128 MB of memory, but you will probably need even more in reality.</pre>
<P>To compile the source, check out the module <I>mozilla/build/mac/build_scripts</I>. Once the download is complete, go to the folder and run <I>BuildMozilla.pl</I> for an optimized build or <I>BuildMozillaDebug.pl</I> for a debug build. Running the CodeWarrior environment during or before running build scripts is useful. When you run the build script, you will be asked for the location of CodeWarrior, if it is not already running. You can change some build options through a local preferences file, which can be found in the system preferences folder for system variables or at the root of the Mozilla tree for tree-specific variables. You can find more information on fine-tuning the build at <I><A HREF="http://www.mozilla.org/build/mac-build-system.html">http://www.mozilla.org/build/mac-build-system.html</A></I>.      </li>
<P>When the compile is complete, you need to take an extra step to start it. Mozilla needs certain things set properly so it can gather the information it needs at runtime. Traditional Mac OS systems have no concept of environment variables per se, but one alternative is to use a startup file called <I>NSPR Logging</I> that comes with Mozilla in the same directory as the application. Its lines are in the following format:      <li>
<PRE>ENV:NSPR_LOG_MODULES=nsComponentManager:5        Log in as <i><a href=
ENV:NSPR_LOG_FILE=xpcom.log</PRE>        "MAILTO:anonymous@cvs-mirror.mozilla.org">anonymous@cvs-mirror.mozilla.org</a></i>
<P>Dragging this file onto Mozilla starts the application with those settings. You can edit this file by adding or changing the <TT>ENV</TT> lines or make another file. This modification method is useful for single session settings. For more permanent settings, you can create a file called <I>ENVIRONMENT</I> and put it in the same folder as Mozilla. Mozilla picks up the environment variables in the <I>ENVIRONMENT</I> file when it runs. The file contents look something like:        using the password "anonymous":
<PRE>NSPR_LOG_MODULES=nsComponentManager:5<pre>
NSPR_LOG_FILE=xpcom.log</PRE>$ cvs login
<P>The Mac OS X CFM version uses the same build system as OS 9. If you build, you need to adjust the following setting in order to build with Carbon, which is a set of APIs that transition developers from OS9 and earlier releases to the new OS X system architecture:CVS password: anonymous
<P>In your <I>Prefs</I> folder, add the following line to the Mozilla[debug/opt] build prefs file:</pre>
<PRE>options carbon 1</PRE>      </li>
<P>For more information on pulling the Mozilla source on OS X, the OS X build process, and other OSX Mozilla resources, see <I><A HREF="http://www.mozilla.org/ports/fizzilla/">http://www.mozilla.org/ports/fizzilla/</A>.</I>      <li>
<HR>        Check out the build Makefile:
<!-- ?php require(NOTES); ? --><pre>
<?php $post_to_list=NO; require(ANNOTATE); ?>$ cvs checkout mozilla/client.mk
</BODY>U mozilla/client.mk
</HTML></pre>
       </li>
       <li>
         Run the Makefile script to get the files:
 <pre>
 $ cd mozilla
 $ make -f client.mk checkout
 </pre>
       </li>
     </ol>
     <p>On Windows, the command-line interface used to obtain the
     Mozilla source is very similar. You just need to make a few
     small changes to the steps above for a Windows install. Here
     are the steps listed for comparison:</p>
     <ol>
       <li>
         Set the <i>CVSROOT</i> variable:
 <pre>
 &gt; set CVSROOT :pserver:<a href=
 "MAILTO:anonymous@cvs-mirror.mozilla.org:/cvsroot">anonymous@cvs-mirror.mozilla.org:/cvsroot</a>
 </pre>
       </li>
       <li>
         Log in as <i><a href=
         "MAILTO:anonymous@cvs-mirror.mozilla.org">anonymous@cvs-mirror.mozilla.org</a></i>
         using the password "anonymous":
 <pre>
 &gt; cvs login
 CVS password: anonymous
 </pre>
       </li>
       <li>
         Check out the build Makefile:
 <pre>
 &gt; cvs checkout mozilla/client.mk
 U mozilla/client.mk
 </pre>
       </li>
       <li>
         Run the Makefile script to get the files:
 <pre>
 &gt; cd mozilla
 &gt; make -f client.mk checkout
 </pre>
       </li>
     </ol>
     <p>In Step 1, set the <i>CVSROOT</i> environment variable using
     the <tt>set</tt> command. Use the GNU <i>make</i> utility
     (<i>make</i>) on Windows just as you would on Unix.</p>
     <blockquote>
       <div class="c2">
         NOTE
       </div>
     </blockquote>
     <blockquote>
       <p>Building using nmake is no longer supported on the Mozilla
       development trunk, though there is a document describing this
       process for developers using older branches at <i><a href=
       "http://www.mozilla.org/build/win32-nmake.html">http://www.mozilla.org/build/win32-nmake.html</a></i>.</p>
     </blockquote>
     <p>Before you pull the source code, check the tree status in
     the relevant Tinderbox. Grab the source only if the tree is
     green (success) or yellow (building). Do not pull the source on
     red, which indicates that the build is broken.</p>
     <p>To pull the Mozilla source code on 
     <!--INDEX STARTRANGE==Macintosh:source installation -->
     Macintosh, use a client like MacCVS, which automates much of
     the CVS process for you. Mac OSX users can use the standard
     command-line CVS client and pull the source using a method
     similar to checking out the source in a Unix environment. Also
     be sure to include the required resources-XML Perl modules,
     MacPerl, or the CodeWarrior development environment--which are
     all listed later in <a href="#96292">Table A-1</a>.</p>
     <p>The MacCVS client works with session files, which have all
     the information and settings you need to pull Mozilla. The
     settings are listed on the mozilla.org Mac build page, which
     even has a ready-made session file that you can download into
     the client. Once you set your tools up and configure your
     session file for MacCVS, you can pull the Mozilla source by
     choosing "Check Out Default Module" from the MacCVS Action
     menu. Like the Macintosh build process, pulling the source on
     Macintosh involves the interaction of a series of Perl scripts.
     The <i>PullMozilla.pl</i> script, located with the other
     Macintosh build scripts in
     <i>mozilla/build/mac/build_scripts</i>, can drive your MacCVS
     client-starting it up and pointing to the right source, setting
     the proper variables, and so on. For more information on the 
     <!--INDEX ENDRANGE==Macintosh:source installation --> Macintosh
     build scripts, see <i><a href=
     "http://www.mozilla.org/build/mac-build-system.html">http://www.mozilla.org/build/mac-build-system.html</a></i>.</p>
     <h3>Working with Branching</h3>
     <p>Branches are <!--INDEX source code:branching --> 
     <!--INDEX Mozilla:source code:branching --> distinct Mozilla
     source code trees that are "cut" to carry out a specific
     purpose or used for a milestone release. Developers cut
     branches when making large architectural changes that could
     make the main tree unstable. Branches in this context allow
     freer changing and testing off the main trunk. To work with
     branches, set the <i>MOZ_BRANCH</i> environment variable:</p>
 <pre>
 &gt; setenv MOZ_BRANCH=MOZILLA_1_0_BRANCH
 </pre>
     <p>The value changes according to the repository with which you
     work. All other steps can remain the same in the process.</p>
     <p>To find out more about using CVS to get Mozilla source and
     to learn about what else you can do with CVS, go to <i><a href=
     "http://www.mozilla.org/cvs.html">http://www.mozilla.org/cvs.html</a></i>.</p>
     <h2>Building the Source Code</h2>
     <p>Now that you <!--INDEX source code:building --> 
     <!--INDEX Mozilla:source code:building --> have the Mozilla
     source code, what do you do with it? Unlike the Mozilla
     binaries that are available for download, you can not start
     using Mozilla once you have all the source code on your
     computer. Before you can start using the source, you need to
     set up your working environment and then build Mozilla.</p>
     <p>For the Mozilla source to compile on your computer properly,
     two main aspects of your build environment must be set up.
     These aspects are the necessary tools and the proper
     environment variables. You would expect such a large code base
     to require a large number of tools, but there aren't so many.
     <a href="#96292">Table A-1</a> lists the tools you need to
     build and run the source code. All information here is
     presented in more detail at <i><a href=
     "http://www.mozilla.org/build/">http://www.mozilla.org/build/</a></i>,
     including links for getting the tools.</p>
     <p><i>Table A-1: <a name="96292"></a></i> <i>Platform tools
     used to build the Mozilla source code</i></p>
     <table width="100%" border="1">
       <tr>
         <td><b>Linux</b></td>
         <td><b>Windows</b></td>
         <td><b>Macintosh</b></td>
       </tr>
       <tr>
         <td>egcs 1.0.3 (or higher), gcc 2.95.2</td>
         <td>Microsoft Visual C++ Version 6.0 or later (with service
         pack 3)</td>
         <td>Code Warrior Pro 7 (including Plugin SDK)</td>
       </tr>
       <tr>
         <td>GTK+ / Glib 1.2.0</td>
         <td>Cygnus toolkit for Windows (the build page lists the
         specific components)</td>
         <td>Menu Sharing Toolkit 1.4</td>
       </tr>
       <tr>
         <td>GNU make 3.74</td>
         <td>Netscape Wintools (modified versions of gmake, shmsdos,
         and uname)</td>
         <td>ToolServer</td>
       </tr>
       <tr>
         <td>Perl 5.005 (or higher)</td>
         <td>Perl5 for Win32</td>
         <td>MacPerl</td>
       </tr>
       <tr>
         <td>cpan-mac distribution</td>
       </tr>
       <tr>
         <td>Perl AppleEvents module</td>
       </tr>
       <tr>
         <td>Perl Launch module</td>
       </tr>
       <tr>
         <td>zip 2.3 (or higher)</td>
         <td>Zip for Win32</td>
         <td>Compress:Zlib module</td>
       </tr>
       <tr>
         <td>Archive::Zip module</td>
       </tr>
       <tr>
         <td>LibIDL 0.6.3 (or higher)</td>
         <td>(Required for static build)</td>
       </tr>
       <tr>
         <td>XML::RegExp</td>
       </tr>
       <tr>
         <td>XML::Parser</td>
       </tr>
       <tr>
         <td>XML::DOM</td>
       </tr>
       <tr>
         <td>Autoconf 2.12 (optional)</td>
       </tr>
     </table>
     <p>The Linux environment is usually set up by default with all
     the tools listed for that platform; it therefore requires less
     time to retrieve and set up programs. Linux distributions
     usually come with a native compiler that is compatible with the
     Mozilla build system. Most build time is used compiling the C++
     source code-the language most files are written in. Therefore,
     the compiler is the central component of the build system.
     Linux uses egcs or gcc, Windows uses Microsoft Visual C++, and
     Macintosh uses Metroworks Code Warrior. The latest version of
     CVS for each platform accompanies all tools listed in <a href=
     "#96292">Table A-1</a>.</p>
     <p>You can set various environment settings for each platform
     to configure and optimize your build environment. Most settings
     are optional and some are essential. One essential is the
     <i>CVSROOT</i> variable, which tells the CVS server where to
     look for the tree's home or root. The next section looks at the
     differences between the Unix, Windows, and Macintosh
     platforms.</p>
     <h3>Unix Environment</h3>
     <p>Unix is <!--INDEX source code:building:Unix --> 
     <!--INDEX Mozilla:source code:building in Unix --> probably the
     easiest platform to configure. In fact, because it's a
     developer's platform, it is designed to work with little or no
     user interaction. In the source tree, script is provided to do
     all the work for you. To run it, you need only the following
     steps:</p>
 <pre>
 &gt; cd mozilla
 &gt; ./configure
 </pre>
     <p>Running this command gathers all necessary system
     information and the list of Makefiles needed to compile the
     source. This command needs to be run only when a Makefile is
     added or removed from the tree. After this, it is sufficient to
     compile Mozilla by launching gmake with no arguments.</p>
     <p>Alternatively, you can use the Unix Build Configurator, an
     online tool (<i><a href=
     "http://webtools.mozilla.org/build/config.cgi">http://webtools.mozilla.org/build/config.cgi</a></i>)
     that lets you change certain settings if you run into any
     obstacles when building. It allows setting external package
     configuration, a choice of Mozilla components, and debugging
     and optimization options. Once this setting is made, let
     Mozilla take over via the <tt>client.mk</tt> script:</p>
 <pre>
 &gt; gmake -f client.mk
 </pre>
     <p>One useful post-build setting is the ability to run Mozilla
     from any directory (rather than just dist/bin<i>)</i>. To test
     this option, use MOZILLA_FIVE_HOME to point to the full path,
     to the <i>dist/bin</i>, or wherever your executable
     resides.</p>
     <h3>Windows Environment</h3>
     <p>The setup is <!--INDEX source code:building:Windows --> 
     <!--INDEX Mozilla:source code:building in Windows --> different
     on Windows and requires more interaction on the user's part,
     mostly in setting up environment variables. <a href=
     "#52766">Table A-2</a> lists these variables and expected
     values. Note that some values are optional.</p>
     <p><i>Table A-2: <a name="52766"></a></i> <i>Windows
     environment variables used to build Mozilla</i></p>
     <tt>\</tt>).<tt>OS_TARGET</tt>variable<tt>PATH</tt>variable is
     an existing variable that needs the Cygwin root and binary
     directories appended. The operating system looks at this
     variable when looking for program executables and DLLs.
     <table width="100%" border="1">
       <tr>
         <td><b>Variable</b></td>
         <td><b>Value</b></td>
         <td><b>Description</b></td>
       </tr>
       <tr>
         <td>MOZ_BITS</td>
         <td>32</td>
         <td>Specifies whether you use a 16-bit or 32-bit operating
         system.</td>
       </tr>
       <tr>
         <td>MOZ_DEBUG</td>
         <td>1 (optional)</td>
         <td>Set only if you want a build with debug information.
         Remove this variable to enable it by default.</td>
       </tr>
       <tr>
         <td>MOZ_SRC</td>
         <td>&lt;path to top of source tree&gt;</td>
         <td>The directory into which you uncompress or check out
         the Mozilla source. Ensure that the path does not end with
         a trailing slash (</td>
       </tr>
       <tr>
         <td>MOZ_TOOLS</td>
         <td>&lt;usually the Cygwin root directory&gt;</td>
         <td>The directory where gmake is installed, usually placed
         there by the wintools.zip package (refer to <a href=
         "#96292">Table A-1</a>).</td>
       </tr>
       <tr>
         <td>WINOS</td>
         <td>%OS_TARGET% (see the OS_TARGET variable)</td>
         <td>An abbreviation for the operating system that is also
         used internally by the OS. Windows 2000 takes a value of
         WINNT. It matches the top-level directory on the filesystem
         that contains all OS files.</td>
       </tr>
       <tr>
         <td>OS_TARGET</td>
         <td>WINNT (or WIN95)</td>
         <td>A Mozilla representation of the</td>
       </tr>
       <tr>
         <td>_MSC_VER</td>
         <td>1200 (or 1100 for VC++ 5)</td>
         <td>The version of the Microsoft Visual C++ runtime
         environment running on your machine. The value of 1200 is
         Version 6, the most reliable version.</td>
       </tr>
       <tr>
         <td>DISABLE_TESTS</td>
         <td>1 (Optional)</td>
         <td>Set only if you do not want to build test directories
         and binaries. Remove this variable to leave it enabled by
         default.</td>
       </tr>
       <tr>
         <td>MOZ_DISABLE_JAR_PACKAGING</td>
         <td>1 (Optional)</td>
         <td>Set only if you want to turn off compression into the
         chrome structure's JAR files. Remove this variable to leave
         it enabled by default.</td>
       </tr>
       <tr>
         <td>MOZ_CONFIG</td>
         <td>&lt;path to config file&gt;</td>
         <td>This variable is required only for gmake builds.</td>
       </tr>
       <tr>
         <td>PATH</td>
         <td>%PATH%;%MOZ_TOOLS%\bin;c:\cygwin</td>
         <td>The</td>
       </tr>
     </table>
     <p>You can set these variables either by using the <tt>set</tt>
     command for per session variables or the System &gt; Advanced
     &gt; Environment Variable panel in Control Panel to set them
     more permanently.</p>
     <blockquote>
       <div class="c2">
         NOTE
       </div>
     </blockquote>
     <blockquote>
       <p>Once your environment is set and the tools are in place,
       you can begin the build. Go to the <i>mozilla</i> directory
       in the source code and from there, run the make script
       (<i>client.mk</i>) with the necessary arguments:</p>
     </blockquote>
     &gt;make -f client.mk build_all 
     <p>Once your environment is set and the tools are in place,
     building can begin. Go to the <i>mozilla</i> directory in the
     source code and from there, run the make script
     (<i>client.mak</i>) with the necessary arguments:</p>
 <pre>
 &gt; nmake -f client.mak build_all
 </pre>
     <p><a href="#33735">Table A-3</a> lists these arguments and
     what they do. Leaving out this compile flag starts an
     incremental build or a fresh build if there is no previous
     build available.</p>
     <p>When building incrementally, try to use the provided make
     script instead of the <tt>cvs</tt> checkout and build_all
     commands. The latter command can lead to inconsistencies in
     file versions and may re-download files that you do not even
     need to your tree.</p>
     <p><i>Table A-3: <a name="33735"></a></i> <i>Make flags</i></p>
     <i>client.mak</i>.<i>nspr</i>and <i>psm</i>.
     <table width="100%" border="1">
       <tr>
         <td><b>Flag</b></td>
         <td><b>Function</b></td>
       </tr>
       <tr>
         <td>pull_all</td>
         <td>Gets only the source code.</td>
       </tr>
       <tr>
         <td>build_all</td>
         <td>Builds only the existing source code.</td>
       </tr>
       <tr>
         <td>pull_and_build_all</td>
         <td>Retrieves the source code and then builds it.</td>
       </tr>
       <tr>
         <td>pull_and_build_all_dep</td>
         <td>Does a dependent build after retrieving the source
         code. The source tree is not accessed in a dependent
         build.</td>
       </tr>
       <tr>
         <td>pull_ clientmak</td>
         <td>Pulls only the latest version of the build file</td>
       </tr>
       <tr>
         <td>clobber_all</td>
         <td>Deletes all files produced from a previous build to
         enable a completely fresh build.</td>
       </tr>
       <tr>
         <td>Pull_xpconnect</td>
         <td>Retrieves the XPConnect module. You can retrieve other
         modules this way, including</td>
       </tr>
     </table>
     <p>To rebuild without pulling the tree, use:</p>
 <pre>
 &gt; make -f client.mk build_all_depend
 </pre>
     <p>To get or update the source code and not build, use:</p>
 <pre>
 &gt; make -f client.mk checkout
 </pre>
     <h3>Macintosh Environment</h3>
     <p>In terms of <!--INDEX source code:building:Macintosh OS --> 
     <!--INDEX Mozilla:source code:building in Macintosh OS -->
     environment setup, necessary resources, and actual compile
     time, the Mac OS is the least straightforward of the three
     major platforms Mozilla builds on. There are several different
     kinds of Mac builds at mozilla.org, but this section focuses on
     just two: the Classic Mac OS 9's standard build, which has been
     the default for a long time, and Mac OS X's Code Fragment
     Manager (CFM).</p>
     <p>Mac OS X builds are becoming more popular as the platform is
     adopted more widely. Better performance and native Unix build
     system tools have boosted developer support for Mozilla on Mac
     OS X. However, the Macintosh is by far the most resource hungry
     of all platforms Mozilla builds on. The minimum specification
     includes 1 GB of disk space and 128 MB of memory, but you will
     probably need even more in reality.</p>
     <p>To compile the source, check out the module
     <i>mozilla/build/mac/build_scripts</i>. Once the download is
     complete, go to the folder and run <i>BuildMozilla.pl</i> for
     an optimized build or <i>BuildMozillaDebug.pl</i> for a debug
     build. Running the CodeWarrior environment during or before
     running build scripts is useful. When you run the build script,
     you will be asked for the location of CodeWarrior, if it is not
     already running. You can change some build options through a
     local preferences file, which can be found in the system
     preferences folder for system variables or at the root of the
     Mozilla tree for tree-specific variables. You can find more
     information on fine-tuning the build at <i><a href=
     "http://www.mozilla.org/build/mac-build-system.html">http://www.mozilla.org/build/mac-build-system.html</a></i>.</p>
     <p>When the compile is complete, you need to take an extra step
     to start it. Mozilla needs certain things set properly so it
     can gather the information it needs at runtime. Traditional Mac
     OS systems have no concept of environment variables per se, but
     one alternative is to use a startup file called <i>NSPR
     Logging</i> that comes with Mozilla in the same directory as
     the application. Its lines are in the following format:</p>
 <pre>
 ENV:NSPR_LOG_MODULES=nsComponentManager:5
 ENV:NSPR_LOG_FILE=xpcom.log
 </pre>
     <p>Dragging this file onto Mozilla starts the application with
     those settings. You can edit this file by adding or changing
     the <tt>ENV</tt> lines or make another file. This modification
     method is useful for single session settings. For more
     permanent settings, you can create a file called
     <i>ENVIRONMENT</i> and put it in the same folder as Mozilla.
     Mozilla picks up the environment variables in the
     <i>ENVIRONMENT</i> file when it runs. The file contents look
     something like:</p>
 <pre>
 NSPR_LOG_MODULES=nsComponentManager:5
 NSPR_LOG_FILE=xpcom.log
 </pre>
     <p>The Mac OS X CFM version uses the same build system as OS 9.
     If you build, you need to adjust the following setting in order
     to build with Carbon, which is a set of APIs that transition
     developers from OS9 and earlier releases to the new OS X system
     architecture:</p>
     <p>In your <i>Prefs</i> folder, add the following line to the
     Mozilla[debug/opt] build prefs file:</p>
 <pre>
 options carbon 1
 </pre>
     <p>For more information on pulling the Mozilla source on OS X,
     the OS X build process, and other OSX Mozilla resources, see
     <i><a href=
     "http://www.mozilla.org/ports/fizzilla/">http://www.mozilla.org/ports/fizzilla/</a>.</i></p>
     <hr>
     <!-- ?php require(NOTES); ? -->
     <?php $post_to_list=NO; require(ANNOTATE); ?>

Removed from v.1.5  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>