changeset 70:f30a5896c305

6896934: README: Document how the drop source bundles work for jaxp/jaxws 6896978: README: Updates to openjdk README-builds.html 6903517: README: OpenJDK additions needed - cygwin issues 6903631: README: Build information on Redhat 3.0 builds 7003845: README-builds document proper location of forest extension, provide alternatives Reviewed-by: darcy
author ohair
date Thu, 24 Mar 2011 07:46:40 -0700
parents 2a1d64e9772e
children 68fddc52a231
files README README-builds.html get_source.sh make/scripts/hgforest.sh
diffstat 4 files changed, 950 insertions(+), 550 deletions(-) [+]
line wrap: on
line diff
--- a/README	Thu Mar 24 07:42:37 2011 -0700
+++ b/README	Thu Mar 24 07:46:40 2011 -0700
@@ -1,26 +1,42 @@
 README:
-  This file should be located at the top of the OpenJDK Mercurial repository
-  forest. This top or enclosing repository will include a "make" directory,
-  and a Makefile at the very top of the repository.
-  It should also include the 6 repositories: "jdk", "hotspot", "langtools",
-  "corba", "jaxws"  and "jaxp".
+  This file should be located at the top of the OpenJDK Mercurial root
+  repository. This root repository will include a "make" directory,
+  and a Makefile for building the entire OpenJDK.
+  A full OpenJDK repository set (forest) should also include the following
+  6 nested repositories:
+    "jdk", "hotspot", "langtools", "corba", "jaxws"  and "jaxp".
+  There are also several source downloads for the jax* repositories that
+  will be needed.
+
+  This one root repository can be obtained with something like:
+    hg clone http://hg.openjdk.java.net/jdk6/jdk6 openjdk6
+  To make sure you have all the nested repositories, you can run:
+    cd openjdk6 && sh ./get_source.sh
+  (This is identical to using the Mercurial Forest Extension command
+   'hg fclone http://hg.openjdk.java.net/jdk6/jdk6 openjdk6').
+  People unfamiliar with Mercurial should read the first few chapters of
+  the Mercurial book: http://hgbook.red-bean.com/read/
 
   See http://openjdk.java.net/ for more information about the OpenJDK.
 
 Simple Build Instructions:
 
-  1. Download and install a JDK 6 from
+  0. Get the necessary system software/packages installed on your system, see
+     http://hg.openjdk.java.net/jdk6/build/raw-file/tip/README-builds.html
+
+  1. If you don't have a jdk6 installed, download and install a JDK 6 from
      http://java.sun.com/javase/downloads/index.jsp
-     Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
+     Set the environment variable ALT_BOOTDIR to the location of JDK 6.
 
-  2. Check the sanity of doing a build with the current machine:
-       gnumake sanity
+  2. Check the sanity of doing a build with your current system:
+       make sanity
      See README-builds.html if you run into problems.
-  
-  3. Do a complete build of the jdk:
-       gnumake all
+
+  3. Do a complete build of the OpenJDK:
+       make all
      The resulting JDK image should be found in build/*/j2sdk-image
 
-where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux and
-/usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris.
+where make is GNU make 3.81 or newer, /usr/bin/make on Linux usually
+is 3.81 or newer.
 
+Complete details are available in README-builds.html.
--- a/README-builds.html	Thu Mar 24 07:42:37 2011 -0700
+++ b/README-builds.html	Thu Mar 24 07:46:40 2011 -0700
@@ -29,13 +29,13 @@
         <h2><a name="introduction">Introduction</a></h2>
         <blockquote>
             <p>
-            This README file contains build instructions for the 
-            <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
-            Building the source code for the 
-            OpenJDK
-            requires
-            a certain degree of technical expertise.
-            <!-- OpenJDK 6 Specific -->
+                This README file contains build instructions for the
+                <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
+                Building the source code for the
+                OpenJDK
+                requires
+                a certain degree of technical expertise.
+                <!-- OpenJDK 6 Specific -->
             <blockquote style="background-color:white">
                 This document is specific to OpenJDK 6, which has some
                 very minor differences in the build requirements over
@@ -51,59 +51,69 @@
         <blockquote>
             <ul>
                 <li><a href="#introduction">Introduction</a></li>
+                <li><a href="#hg">Use of Mercurial</a>
+                    <ul>
+                        <li><a href="#get_source">Getting the Source</a></li>
+                    </ul>
+                </li>
                 <li><a href="#MBE">Minimum Build Environments</a></li>
                 <li><a href="#SDBE">Specific Developer Build Environments</a>
                     <ul>
-		        <li><a href="#fedora">Fedora</a></li>
-		        <li><a href="#debian">Debian</a></li>
-		        <li><a href="#ubuntu">Ubuntu</a></li>
-		        <li><a href="#opensuse">OpenSUSE</a></li>
-		        <li><a href="#mandriva">Mandriva</a></li>
-		        <li><a href="#opensolaris">OpenSolaris</a></li>
-		    </ul>
-		</li>
-                <li><a href="#directories">Source Directory Structure</a> </li>
+                        <li><a href="#fedora">Fedora</a></li>
+                        <li><a href="#debian">Debian</a></li>
+                        <li><a href="#ubuntu">Ubuntu</a></li>
+                        <li><a href="#opensuse">OpenSUSE</a></li>
+                        <li><a href="#mandriva">Mandriva</a></li>
+                        <li><a href="#opensolaris">OpenSolaris</a></li>
+                    </ul>
+                </li>
+                <li><a href="#directories">Source Directory Structure</a>
+                    <ul>
+                        <li><a href="#drops">Managing the Source Drops</a></li>
+                    </ul>
+                </li>
                 <li><a href="#building">Build Information</a>
                     <ul>
                         <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
                         <li><a href="#linux">Basic Linux System Setup</a> </li>
                         <li><a href="#solaris">Basic Solaris System Setup</a> </li>
                         <li><a href="#windows">Basic Windows System Setup</a> </li>
-                        <li><a href="#dependencies">Build Dependencies</a> </li>
-                        <ul>
-                            <li><a href="#bootjdk">Bootstrap JDK</a> </li>
-                            <li><a href="#importjdk">Optional Import JDK</a> </li>
-                            <li><a href="#ant">Ant</a> </li>
-                            <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
-                            <li><a href="#compilers">Compilers</a> 
-                                <ul>
-                                    <li><a href="#msvc">Microsoft Visual Studio</a> </li>
-                                    <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
-                                    <li><a href="#gcc">Linux gcc/binutils</a> </li>
-                                    <li><a href="#studio">Sun Studio</a> </li>
-                                </ul>
-                            </li>
-                            <li><a href="#zip">Zip and Unzip</a> </li>
-                            <li><a href="#freetype">FreeType2 Fonts</a> </li>
-                            <li>Linux and Solaris:
-                                <ul>
-                                    <!-- OpenJDK 6 Specific -->
-                                    <li style="background-color:white"><a href="#motif">Motif</a> </li>
-                                    <li><a href="#cups">CUPS Include files</a> </li>
-                                </ul>
-                            </li>
-                            <li>Linux only:
-                                <ul>
-                                    <li><a href="#alsa">ALSA files</a> </li>
-                                </ul>
-                            </li>
-                            <li>Windows only:
-                                <ul>
-                                    <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
-                                    <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
-                                </ul>
-                            </li>
-                        </ul>
+                        <li><a href="#dependencies">Build Dependencies</a>
+                            <ul>
+                                <li><a href="#bootjdk">Bootstrap JDK</a> </li>
+                                <li><a href="#importjdk">Optional Import JDK</a> </li>
+                                <li><a href="#ant">Ant 1.7.1</a> </li>
+                                <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
+                                <li><a href="#compilers">Compilers</a>
+                                    <ul>
+                                        <li><a href="#msvc">Microsoft Visual Studio</a> </li>
+                                        <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
+                                        <li><a href="#gcc">Linux gcc/binutils</a> </li>
+                                        <li><a href="#studio">Sun Studio</a> </li>
+                                    </ul>
+                                </li>
+                                <li><a href="#zip">Zip and Unzip</a> </li>
+                                <li><a href="#freetype">FreeType2 Fonts</a> </li>
+                                <li>Linux and Solaris:
+                                    <ul>
+                                        <!-- OpenJDK 6 Specific -->
+                                        <li style="background-color:white"><a href="#motif">Motif</a> </li>
+                                        <li><a href="#cups">CUPS Include files</a> </li>
+                                    </ul>
+                                </li>
+                                <li>Linux only:
+                                    <ul>
+                                        <li><a href="#alsa">ALSA files</a> </li>
+                                    </ul>
+                                </li>
+                                <li>Windows only:
+                                    <ul>
+                                        <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
+                                        <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
+                                    </ul>
+                                </li>
+                            </ul>
+                        </li>
                     </ul>
                 </li>
                 <li><a href="#creating">Creating the Build</a> </li>
@@ -112,6 +122,76 @@
                 <li><a href="#troubleshooting">Troubleshooting</a></li>
             </ul>
         </blockquote>
+
+        <!-- ------------------------------------------------------ -->
+        <hr>
+        <h2><a name="hg">Use of Mercurial</a></h2>
+        <blockquote>
+            The OpenJDK sources are maintained with the revision control system
+            <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.
+            If you are new to Mercurial, please see the
+            <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a>
+            or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>.
+            The first few chapters of the book provide an excellent overview of
+            Mercurial, what it is and how it works.
+            <br>
+            For using Mercurial with the OpenJDK refer to the
+            <a href="http://openjdk.java.net/guide/repositories.html#installConfig">
+                Developer Guide: Installing and Configuring Mercurial</a>
+            section for more information.
+            The Forest Extension is not part of the Mercurial install,
+            and is optional,
+            but can be obtained with the following commands:
+            <blockquote>
+                <tt>
+                    hg clone https://bitbucket.org/pmezard/hgforest-crew/overview/ <i>YourHgForest</i>
+                </tt>
+            </blockquote>
+            Once you have the file <tt>forest.py</tt>, you need to add these
+            lines to your <tt>${HOME}/.hgrc</tt> file:
+            <blockquote>
+                <tt>
+                    [extensions]
+                    <br>forest = <i>YourHgForest</i>/forest.py
+                </tt>
+            </blockquote>
+
+            <!-- ------------------------------------------------------ -->
+            <h3><a name="get_source">Getting the Source</a></h3>
+            <blockquote>
+                To get the entire set of OpenJDK Mercurial repositories
+                using the Forest Extension:
+                <blockquote>
+                    <tt>
+                        hg fclone http://hg.openjdk.java.net/jdk6/jdk6 <i>YourOpenJDK</i>
+                    </tt>
+                </blockquote>
+                To get the entire set of OpenJDK Mercurial repositories
+                without using the Forest Extension:
+                <blockquote>
+                    <tt>
+                        hg clone http://hg.openjdk.java.net/jdk6/jdk6 <i>YourOpenJDK</i>
+                        <br>cd <i>YourOpenJDK</i>
+                        <br>sh ./get_source.sh
+                    </tt>
+                </blockquote>
+                Once you have all the repositories, the
+                script <tt>make/scripts/hgforest.sh</tt>
+                can be used to repeat the same <tt>hg</tt>
+                command on every repository in the forest, e.g.
+                <blockquote>
+                    <tt>
+                        cd <i>YourOpenJDK</i>
+                        <br>sh ./make/scripts/hgforest.sh pull -u
+                    </tt>
+                </blockquote>
+                You may find this script <tt>make/scripts/hgforest.sh</tt> faster
+                than the <tt>hg</tt> forest commands provided by the
+                Forest Extension.
+            </blockquote>
+
+        </blockquote>
+
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="MBE">Minimum Build Environments</a></h2>
@@ -128,8 +208,8 @@
             specific platforms, and in fact creating these specific platforms
             may be difficult due to the age of some of this software.
             <p>
-            The minimum OS and C/C++ compiler versions needed for building the
-            OpenJDK:
+                The minimum OS and C/C++ compiler versions needed for building the
+                OpenJDK6:
             <p>
             <table border="1">
                 <thead>
@@ -137,6 +217,7 @@
                         <th>Base OS and Architecture</th>
                         <th>OS</th>
                         <th>C/C++ Compiler</th>
+                        <th>BOOT JDK</th>
                     </tr>
                 </thead>
                 <tbody>
@@ -144,72 +225,61 @@
                         <td>Linux X86 (32bit)</td>
                         <td>Fedora 9</td>
                         <td>gcc 4 </td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
                         <td>Linux X64 (64bit)</td>
                         <td>Fedora 9</td>
                         <td>gcc 4 </td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
-                        <td>Solaris SPARC (32bit)</td>
-                        <!-- OpenJDK 6 Specific -->
-                        <td>Solaris 8 + patches 
-                            <br>
-                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
-                        </td>
-                        <td>Sun Studio 11 </td>
+                        <td>Solaris SPARC (32-bit)</td>
+                        <td>Solaris 10 Update 6</td>
+                        <td>Sun Studio 11</td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
-                        <td>Solaris SPARCV9 (64bit)</td>
-                        <!-- OpenJDK 6 Specific -->
-                        <td>Solaris 8 + patches
-                            <br>
-                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
-                        </td>
+                        <td>Solaris SPARCV9 (64-bit)</td>
+                        <td>Solaris 10 Update 6</td>
                         <td>Sun Studio 11</td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
-                        <td>Solaris X86 (32bit)</td>
-                        <!-- OpenJDK 6 Specific -->
-                        <td>Solaris 8 + patches
-                            <br>
-                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
-                        </td>
+                        <td>Solaris X86 (32-bit)</td>
+                        <td>Solaris 10 Update 6</td>
                         <td>Sun Studio 11</td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
-                        <td>Solaris X64 (64bit)</td>
-                        <td>Solaris 10 + patches
-                            <br>
-                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
-                        </td>
+                        <td>Solaris X64 (64-bit)</td>
+                        <td>Solaris 10 Update 6</td>
                         <td>Sun Studio 11</td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
                         <td>Windows X86 (32bit)</td>
                         <!-- OpenJDK 6 Specific -->
                         <td>Windows 2000</td>
                         <td>Microsoft Visual Studio .NET 2003 Professional</td>
+                        <td>JDK 6u18</td>
                     </tr>
                     <tr>
                         <td>Windows X64 (64bit)</td>
                         <td>Windows Server 2003 - Enterprise x64 Edition</td>
                         <td>Microsoft Platform SDK - April 2005</td>
+                        <td>JDK 6u18</td>
                     </tr>
                 </tbody>
             </table>
-	    <p>
+            <p>
 	    These same sources do indeed build on many more systems than the
 	    above older generation systems, again the above is just a minimum.
-	    <p>
+            <p>
 	    Compilation problems with newer or different C/C++ compilers is a
 	    common problem.
 	    Similarly, compilation problems related to changes to the
-	    <tt>/usr/include</tt> or system header files is also a
+                <tt>/usr/include</tt> or system header files is also a
 	    common problem with newer or unreleased OS versions.
 	    Please report these types of problems as bugs so that they
 	    can be dealt with accordingly.
@@ -224,264 +294,355 @@
         <!-- ====================================================== -->
         <h3><a name="fedora">Fedora</a></h3>
         <blockquote>
-	  <h4>Fedora 9</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 9 
+            <h4>Fedora 9</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 9
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-1.6.0-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-1.6.0-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
-	  <h4>Fedora 10</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 10 
+            <h4>Fedora 10</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 10
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-1.6.0-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-1.6.0-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
-	  <h4>Fedora 11</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 11 
+            <h4>Fedora 11</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 11
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-1.6.0-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-1.6.0-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
-	</blockquote>
+        </blockquote>
         <!-- ====================================================== -->
         <h3><a name="debian">Debian</a></h3>
         <blockquote>
             <h4>Debian 5.0 (Lenny)</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://debian.org">Debian</a> 5 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands as user <tt>root</tt>:
-		<p/>
-		<code>aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>aptitude install openjdk-6-jdk</code>
+                <p/>
+                <code>aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>aptitude install openjdk-6-jdk</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">aptitude install libmotif-dev</code>
-		<p/>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-	      </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
         <h3><a name="ubuntu">Ubuntu</a></h3>
         <blockquote>
             <h4>Ubuntu 8.04</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 
 		you need to install several build dependencies. 
-		<p/>
+                <p/>
 		First, you need to enable the universe repository in the 
 		Software Sources application and reload the repository 
 		information. The Software Sources application is available 
 		under the System/Administration menu. 
-		<p/>
+                <p/>
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk</code>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">sudo aptitude install libmotif-dev</code>
-		<p/>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-              </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
             <h4>Ubuntu 8.10</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 
 		you need to install several build dependencies. The simplest
 		way to do it is to execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk gcc-4.2 g++-4.2</code>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk gcc-4.2 g++-4.2</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">sudo aptitude install libmotif-dev</code>
-		<p/>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+                <p/>
 		Then, calling <tt>make</tt> in the top level OpenJDK source 
 		code directory with the following parameters results in a 
 		working build:
-		<p/>
-		<code>make all CC=gcc-4.2 CPP=g++-4.2</code>
-              </blockquote>
+                <p/>
+                <code>make all CC=gcc-4.2 CPP=g++-4.2</code>
+            </blockquote>
             <h4>Ubuntu 9.04</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 
 		you need to install several build dependencies. The simplest
 		way to do it is to execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk gcc-4.2 g++-4.2</code>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk gcc-4.2 g++-4.2</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">sudo aptitude install libmotif-dev</code>
-		<p/>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+                <p/>
 		Then, calling <tt>make</tt> in the top level OpenJDK source 
 		code directory with the following parameters results in a 
 		working build:
-		<p/>
-		<code>make all CC=gcc-4.2 CPP=g++-4.2</code>
-              </blockquote>
+                <p/>
+                <code>make all CC=gcc-4.2 CPP=g++-4.2</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
         <h3><a name="opensuse">OpenSUSE</a></h3>
         <blockquote>
             <h4>OpenSUSE 11.1</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>sudo zypper source-install -d java-1_6_0-openjdk</code>
-		<p/>
-		<code>sudo zypper install make</code>
-		<p/>
+                <p/>
+                <code>sudo zypper source-install -d java-1_6_0-openjdk</code>
+                <p/>
+                <code>sudo zypper install make</code>
+                <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
+                <p/>
 		Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
-		<p/>
-		<code>export -n JAVA_HOME</code>
-	      </blockquote>
-	</blockquote>
+                <p/>
+                <code>export -n JAVA_HOME</code>
+            </blockquote>
+        </blockquote>
         <!-- ====================================================== -->
         <h3><a name="mandriva">Mandriva</a></h3>
         <blockquote>
             <h4>Mandriva Linux One 2009 Spring</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands as user <tt>root</tt>:
-		<p/>
-		<code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
+                <p/>
+                <code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">urpmi libopenmotif-devel</code>
-		<p/>
+                <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
-	      </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
         <h3><a name="opensolaris">OpenSolaris</a></h3>
         <blockquote>
             <h4>OpenSolaris 2009.06</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
+                <p/>
+                <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
                 <p/>
                 <!-- OpenJDK 6 Specific -->
                 <code style="background-color:white">pfexec pkg install SUNWmfrun</code>
-		<p/>
+                <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
+                <p/>
 		Finally, you need to make sure that the build process can find the Sun Studio compilers:
-		<p/>
-		<code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
-	      </blockquote>
+                <p/>
+                <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
+            </blockquote>
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="directories">Source Directory Structure</a></h2>
         <blockquote>
             <p>
-            The source code for the OpenJDK is delivered in a set of
-            directories:
-            <tt>hotspot</tt>, 
-            <tt>langtools</tt>, 
-            <tt>corba</tt>, 
-            <tt>jaxws</tt>, 
-            <tt>jaxp</tt>, 
-            and
-            <tt>jdk</tt>.
-            The <tt>hotspot</tt> directory contains the source code and make
-            files for building the OpenJDK Hotspot Virtual Machine. 
-            The <tt>langtools</tt> directory contains the source code and make
-            files for building the OpenJDK javac and language tools.
-            The <tt>corba</tt> directory contains the source code and make
-            files for building the OpenJDK Corba files.
-            The <tt>jaxws</tt> directory contains the source code and make
-            files for building the OpenJDK JAXWS files.
-            The <tt>jaxp</tt> directory contains the source code and make
-            files for building the OpenJDK JAXP files.
-            The <tt>jdk</tt> directory contains the source code and make files for
-            building the OpenJDK runtime libraries and misc files.
-            The top level <tt>Makefile</tt>
-            is used to build the entire OpenJDK.
+                The source code for the OpenJDK is delivered in a set of
+                directories:
+                <tt>hotspot</tt>,
+                <tt>langtools</tt>,
+                <tt>corba</tt>,
+                <tt>jaxws</tt>,
+                <tt>jaxp</tt>,
+                and
+                <tt>jdk</tt>.
+                The <tt>hotspot</tt> directory contains the source code and make
+                files for building the OpenJDK Hotspot Virtual Machine.
+                The <tt>langtools</tt> directory contains the source code and make
+                files for building the OpenJDK javac and language tools.
+                The <tt>corba</tt> directory contains the source code and make
+                files for building the OpenJDK Corba files.
+                The <tt>jaxws</tt> directory contains the source code and make
+                files for building the OpenJDK JAXWS files.
+                The <tt>jaxp</tt> directory contains the source code and make
+                files for building the OpenJDK JAXP files.
+                The <tt>jdk</tt> directory contains the source code and make files for
+                building the OpenJDK runtime libraries and misc files.
+                The top level <tt>Makefile</tt>
+                is used to build the entire OpenJDK.
+            </p>
+
+            <h3><a name="drops">Managing the Source Drops</a></h3>
+            <blockquote>
+                <p>
+                    The repositories <tt>jaxp</tt> and <tt>jaxws</tt> actually
+                    do not contain the sources for JAXP or JAX-WS.
+                    These products have their own open source procedures at their
+                    <a href="http://jaxp.java.net/">JAXP</a> and
+                    <a href="http://jax-ws.java.net/">JAX-WS</a> home pages.
+                    The OpenJDK project does need access to these sources to build
+                    a complete JDK image because JAXP and JAX-WS are part of the JDK.
+                    The current process for delivery of the JAXP and JAX-WS sources
+                    involves so called "source drop bundles" downloaded from a public
+                    website.
+                    There are many reasons for this current mechanism, and it is
+                    understood that this is not ideal for the open source community.
+                    It is possible this process could change in the future.
+                    <br>
+                    <b>NOTE:</b> The <a href="http://download.java.net/openjdk/jdk6/">
+                        Complete OpenJDK Source Bundles</a> <u>will</u> contain the JAXP and
+                    JAX-WS sources.
+                </p>
+
+                <h4><a name="dropcreation">Creation of New Source Drop Bundles</a></h4>
+                <blockquote>
+                    <ol>
+                        <li>
+                            The JAXP or JAX-WS team prepares a new zip bundle,
+                            places a copy in a public download area on java.net,
+                            sends us a link and a list of CRs (Change Request Numbers).
+                            The older download bundles should not be deleted.
+                            It is the responsibility of the JAXP and JAX-WS team to
+                            place the proper GPL legal notices on the sources
+                            and do any filtering or java re-packaging for the
+                            OpenJDK instances of these classes.
+                        </li>
+                        <li>
+                            The OpenJDK team copies this new bundle into shared
+                            area (e.g. <tt>/java/devtools/share/jdk6-drops</tt>).
+                            Older bundles are never deleted so we retain the history.
+                        </li>
+                        <li>
+                            The OpenJDK team edits the ant property file
+                            <tt>jaxp/jaxp.properties</tt> or
+                            <tt>jaxws/jaxws.properties</tt> to update the
+                            base URL, the zip bundle name, and the MD5 checksum
+                            of the zip bundle
+                            (on Solaris: <tt>sum -c md5 <i>bundlename</i></tt>)
+                        </li>
+                        <li>
+                            OpenJDK team reviews and commits those changes with the
+                            given CRs.
+                        </li>
+                    </ol>
+                </blockquote>
+
+                <h4><a name="dropusage">Using Source Drop Bundles</a></h4>
+                <blockquote>
+                    <p>
+                        The ant scripts that build <tt>jaxp</tt> and <tt>jaxws</tt>
+                        will attempt to locate these zip bundles from the directory
+                        in the environment variable
+                        <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt>.
+                        The checksums protect from getting the wrong, corrupted, or
+                        improperly modified sources.
+                        Once the sources are made available, the population will not
+                        happen again unless a <tt>make clobber</tt> is requested
+                        or the <tt>jaxp/drop/</tt> or <tt>jaxws/drop/</tt>
+                        directory is explicitly deleted.
+                        <br>
+                        <b>NOTE:</b> The default Makefile and ant script behavior
+                        is to NOT download these bundles from the public http site.
+                        In general, doing downloads
+                        during the build process is not advised, it creates too much
+                        unpredictability in the build process.
+                        However, you can use <tt>make ALLOW_DOWNLOADS=true</tt> to
+                        tell the ant script that the download of the zip bundle is
+                        acceptable.
+                    </p>
+                    <p>
+                        The recommended procedure for keeping a cache of these
+                        source bundles would be to download them once, place them
+                        in a directory outside the repositories, and then set
+                        <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> to refer
+                        to that directory.
+                        These drop bundles do change occasionally, so the newer
+                        bundles may need to be added to this area from time to time.
+                    </p>
+                </blockquote>
+            </blockquote>
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="building">Build Information</a></h2>
         <blockquote>
             Building the OpenJDK
-            is done with a <tt><i>gmake</i></tt>
-            command line and various
+            is done with a <a href="#gmake">GNU <tt>make</tt></a> command line
+            and various
             environment or make variable settings that direct the make rules
             to where various components have been installed.
             Where possible the makefiles will attempt to located the various
@@ -492,86 +653,129 @@
             <tt>ALT_*</tt> variables (alternates)
             can be used to help the makefiles locate components.
             <p>
-            Refer to the bash/sh/ksh setup file
-            <tt>jdk/make/jdk_generic_profile.sh</tt>
-            if you need help in setting up your environment variables.
-            A build could be as simple as:
+                Refer to the bash/sh/ksh setup file
+                <tt>jdk/make/jdk_generic_profile.sh</tt>
+                if you need help in setting up your environment variables.
+                A build could be as simple as:
             <blockquote>
                 <pre><tt>
                 bash
                 . jdk/make/jdk_generic_profile.sh
-                <i>gmake</i> sanity &amp;&amp; <i>gmake</i>
+                <a href="#gmake"><tt>make</tt></a> sanity &amp;&amp; <a href="#gmake"><tt>make</tt></a>
                 </tt></pre>
             </blockquote>
             <p>
-            Of course ksh or sh would work too.
-            But some customization will probably be necessary.
-            The <tt>sanity</tt> rule will make some basic checks on build
-            dependencies and generate appropriate warning messages
-            regarding missing, out of date, or newer than expected components
-            found on your system.
+                Of course ksh or sh would work too.
+                But some customization will probably be necessary.
+                The <tt>sanity</tt> rule will make some basic checks on build
+                dependencies and generate appropriate warning messages
+                regarding missing, out of date, or newer than expected components
+                found on your system.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
         <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
         <blockquote>
-            The Makefiles in the OpenJDK are only valid when used with the 
+            The Makefiles in the OpenJDK are only valid when used with the
             GNU version of the utility command <tt>make</tt>
             (<tt><i>gmake</i></tt>).
             A few notes about using GNU make:
             <ul>
                 <li>
-                    In general, you need GNU make version 3.78.1 or newer.
+                    You need GNU make version 3.81 or newer.
                 </li>
                 <li>
-                    Place the location of the GNU make binary in the <tt>PATH</tt>. 
+                    Place the location of the GNU make binary in the <tt>PATH</tt>.
                 </li>
                 <li>
                     <strong>Linux:</strong>
-                    The <tt>/usr/bin/make</tt> command should work fine for you.
+                    The <tt>/usr/bin/make</tt> should be 3.81 or newer
+                    and should work fine for you.
+                    If this version is not 3.81 or newer,
+                    see the <a href="#buildgmake">"Building GNU make"</a> section.
                 </li>
                 <li>
                     <strong>Solaris:</strong>
                     Do NOT use <tt>/usr/bin/make</tt> on Solaris.
                     If your Solaris system has the software
-                    from the Solaris Companion CD installed, 
-                    you should use <tt>gmake</tt>
-                    which will be located in either the <tt>/opt/sfw/bin</tt> or 
+                    from the Solaris Companion CD installed,
+                    you should try and use <tt>gmake</tt>
+                    which will be located in either the <tt>/opt/sfw/bin</tt> or
                     <tt>/usr/sfw/bin</tt> directory.
+                    In more recent versions of Solaris GNU make might be found
+                    at <tt>/usr/bin/gmake</tt>.<br>
+                    <b>NOTE:</b> It is very likely that this <tt>gmake</tt>
+                    could be 3.80, you need 3.81, in which case,
+                    see the <a href="#buildgmake">"Building GNU make"</a> section.
                 </li>
                 <li>
                     <strong>Windows:</strong>
                     Make sure you start your build inside a bash/sh/ksh shell
-		    and are using a <tt>make.exe</tt> utility built for that
-		    environment (a cygwin <tt>make.exe</tt> is not the same
-		    as a <tt>make.exe</tt> built for something like
-		    <a href="http://www.mkssoftware.com/">MKS</a>).
+                    and are using a <tt>make.exe</tt> utility built for that
+                    environment (a cygwin <tt>make.exe</tt> is not the same
+                    as a <tt>make.exe</tt> built for something like
+                    <a href="http://www.mkssoftware.com/">MKS</a>).
                     <br>
-                    <b>WARNING:</b> Watch out for make version 3.81, it may
-                    not work due to a lack of support for drive letter paths
-                    like <tt>C:/</tt>. See
-                    <a href="#gmake">section on gmake</a>.
-                    Use a 3.80 version, or find a newer
-                    version that has this problem fixed.
-                    The older 3.80 version of make.exe can be downloaded with this
-                    <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
-                    link</a>.
-                    Also see the
+                    <b>WARNING:</b> Watch out on some make 3.81 versions, it may
+                    not work due to a lack of support for MS-DOS drive letter paths
+                    like <tt>C:/</tt> or <tt>C:\</tt>.
+                    <br>
+                    You may be able to use the information at the
                     <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
-                    mozilla developer center</a>
+                        mozilla developer center</a>
                     on this topic.
+                    <br>
+                    It's hoped that when make 3.82 starts shipping in a future cygwin
+                    release that this MS-DOS path issue will be fixed.
+                    <br>
+                    It may be possible to download the version at
+                    <a href="http://www.cmake.org/files/cygwin/make.exe">
+                        www.cmake.org make.exe</a>.
+                    <br>
+                    It might be necessary for you to build your own GNU make 3.81,
+                    see the <a href="#buildgmake">"Building GNU make"</a> section
+                    in that case.
                 </li>
             </ul>
             <p>
-            Information on GNU make, and access to ftp download sites, are
-            available on the
-            <a href="http://www.gnu.org/software/make/make.html" target="_blank">
-                GNU make web site
-            </a>.
-            The latest source to GNU make is available at
-            <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
-            ftp.gnu.org/pub/gnu/make/</a>.
+                Information on GNU make, and access to ftp download sites, are
+                available on the
+                <a href="http://www.gnu.org/software/make/make.html" target="_blank">
+                    GNU make web site
+                </a>.
+                The latest source to GNU make is available at
+                <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
+                    ftp.gnu.org/pub/gnu/make/</a>.
+            </p>
+            <!-- ------------------------------------------------------ -->
+            <h4><a name="buildgmake">Building GNU make</a></h4>
+            <blockquote>
+                First step is to get the GNU make 3.81 source from
+                <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
+                    ftp.gnu.org/pub/gnu/make/</a>.
+                Building is a little different depending on the OS and unix toolset
+                on Windows:
+                <ul>
+                    <li>
+                        <strong>Linux:</strong>
+                        <tt>./configure && make</tt>
+                    </li>
+                    <li>
+                        <strong>Solaris:</strong>
+                        <tt>./configure && gmake CC=gcc</tt>
+                    </li>
+                    <li>
+                        <strong>Windows for CYGWIN:</strong>
+                        <tt>./configure && make</tt>
+                    </li>
+                    <li>
+                        <strong>Windows for MKS: (CYGWIN is recommended)</strong>
+                        <tt>./configure && make -f Makefile.win32</tt>
+                    </li>
+                </ul>
+            </blockquote>
         </blockquote>
+
         <!-- ------------------------------------------------------ -->
         <hr>
         <h3><a name="linux">Basic Linux System Setup</a></h3>
@@ -581,27 +785,27 @@
             is a Pentium class processor or better, at least 256 MB of RAM, and
             approximately 1.5 GB of free disk space.
             <p> 
-            <strong>X64 only:</strong>
-            The minimum recommended hardware for building the Linux
-            version is an AMD Opteron class processor, at least 512 MB of RAM, and
-            approximately 4 GB of free disk space.
+                <strong>X64 only:</strong>
+                The minimum recommended hardware for building the Linux
+                version is an AMD Opteron class processor, at least 512 MB of RAM, and
+                approximately 4 GB of free disk space.
             <p> 
-            The build will use the tools contained in 
-            <tt>/bin</tt> and 
-            <tt>/usr/bin</tt>
-            of a standard installation of the Linux operating environment. 
-            You should ensure that these directories are in your 
-            <tt>PATH</tt>.
+                The build will use the tools contained in
+                <tt>/bin</tt> and
+                <tt>/usr/bin</tt>
+                of a standard installation of the Linux operating environment.
+                You should ensure that these directories are in your
+                <tt>PATH</tt>.
             <p>
-            Note that some Linux systems have a habit of pre-populating
-            your environment variables for you, for example <tt>JAVA_HOME</tt>
-            might get pre-defined for you to refer to the JDK installed on
-            your Linux system. 
-            You will need to unset <tt>JAVA_HOME</tt>.
-            It's a good idea to run <tt>env</tt> and verify the
-            environment variables you are getting from the default system
-            settings make sense for building the 
-            OpenJDK.
+                Note that some Linux systems have a habit of pre-populating
+                your environment variables for you, for example <tt>JAVA_HOME</tt>
+                might get pre-defined for you to refer to the JDK installed on
+                your Linux system.
+                You will need to unset <tt>JAVA_HOME</tt>.
+                It's a good idea to run <tt>env</tt> and verify the
+                environment variables you are getting from the default system
+                settings make sense for building the
+                OpenJDK.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
@@ -617,19 +821,19 @@
                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                 </li>
                 <li>
-                  Install or upgrade the <a href="#freetype">FreeType development
-                    package</a>.
+                    Install or upgrade the <a href="#freetype">FreeType development
+                        package</a>.
                 </li>
                 <li>
                     Install
-                    <a href="#ant">Ant</a>, 
+                    <a href="#ant">Ant 1.7.1 or newer</a>,
                     make sure it is in your PATH.
                 </li>
                 <li style="background-color:white">
-                  <!-- OpenJDK 6 Specific -->
-                  Install the
-                  <a href="#motif">Motif header files</a>, set
-                  <tt><a href="#ALT_MOTIF_DIR">ALT_MOTIF_DIR</a></tt>.
+                    <!-- OpenJDK 6 Specific -->
+                    Install the
+                    <a href="#motif">Motif header files</a>, set
+                    <tt><a href="#ALT_MOTIF_DIR">ALT_MOTIF_DIR</a></tt>.
                 </li>
             </ol>
         </blockquote>
@@ -645,23 +849,23 @@
             Approximately 1.4 GB of free disk
             space is needed for a 32-bit build.
             <p>
-            If you are building the 64bit version, you should
-            run the command "isainfo -v" to verify that you have a
-            64-bit installation, it should say <tt>sparcv9</tt> or
-            <tt>amd64</tt>.
-            An additional 7 GB of free disk space is needed
-            for a 64-bit build.
+                If you are building the 64bit version, you should
+                run the command "isainfo -v" to verify that you have a
+                64-bit installation, it should say <tt>sparcv9</tt> or
+                <tt>amd64</tt>.
+                An additional 7 GB of free disk space is needed
+                for a 64-bit build.
             <p> 
-            The build uses the tools contained in <tt>/usr/ccs/bin</tt>
-            and <tt>/usr/bin</tt> of a standard developer or full installation of
-            the Solaris operating environment.
+                The build uses the tools contained in <tt>/usr/ccs/bin</tt>
+                and <tt>/usr/bin</tt> of a standard developer or full installation of
+                the Solaris operating environment.
             <p> 
-            Solaris patches specific to the JDK can be downloaded from the 
-            <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
-            SunSolve JDK Solaris patches download page</a>.
-            You should ensure that the latest patch cluster for
-            your version of the Solaris operating environment has also
-            been installed.
+                Solaris patches specific to the JDK can be downloaded from the
+                <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
+                    SunSolve JDK Solaris patches download page</a>.
+                You should ensure that the latest patch cluster for
+                your version of the Solaris operating environment has also
+                been installed.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
@@ -688,7 +892,7 @@
                 </li>
                 <li>
                     Install
-                    <a href="#ant">Ant</a>, 
+                    <a href="#ant">Ant 1.7.1 or newer</a>,
                     make sure it is in your PATH.
                 </li>
             </ol>
@@ -708,10 +912,10 @@
                 because FAT32 doesn't support case-sensitivity in file names.
             </strong>
             <p> 
-            <strong>X64 only:</strong>
-            The minimum recommended hardware for building
-            the Windows X64 version is an AMD Opteron class processor, at least 1
-            GB of RAM, and approximately 10 GB of free disk space.
+                <strong>X64 only:</strong>
+                The minimum recommended hardware for building
+                the Windows X64 version is an AMD Opteron class processor, at least 1
+                GB of RAM, and approximately 10 GB of free disk space.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="paths">Windows Paths</a></h4>
@@ -730,18 +934,18 @@
             (called 'mixed'), e.g.
             <tt>cygpath -s -m "<i>path</i>"</tt>.
             <p>
-            The makefiles will try to translate any pathnames supplied
-            to it into the <tt>C:/</tt> style automatically.
+                The makefiles will try to translate any pathnames supplied
+                to it into the <tt>C:/</tt> style automatically.
             <p>
-            Note that use of CYGWIN creates a unique problem with regards to
-            setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
-            the <tt>PATH</tt> variable contains directories
-            separated with the ";" character (Solaris and Linux uses ":").
-            With CYGWIN, it uses ":", but that means that paths like "C:/path"
-            cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
-            instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
-            which CYGWIN understands, but only CYGWIN understands.
-            So be careful with paths on Windows.
+                Note that use of CYGWIN creates a unique problem with regards to
+                setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
+                the <tt>PATH</tt> variable contains directories
+                separated with the ";" character (Solaris and Linux uses ":").
+                With CYGWIN, it uses ":", but that means that paths like "C:/path"
+                cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
+                instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
+                which CYGWIN understands, but only CYGWIN understands.
+                So be careful with paths on Windows.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
@@ -775,7 +979,7 @@
                 </li>
                 <li>
                     Install
-                    <a href="#ant">Ant</a>, 
+                    <a href="#ant">Ant 1.7.1 or newer,</a>,
                     make sure it is in your PATH and set
                     <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
                 </li>
@@ -808,7 +1012,8 @@
                     dependencies in some of the sources.
                 </blockquote>
                 The JDK 6 binaries can be downloaded from Sun's 
-                <a href="http://java.sun.com/javase/1.6.0/download.html" target="_blank">JDK 6 download site</a>.
+                <a href="http://java.sun.com/javase/1.6.0/download.html" target="_blank">
+                    JDK 6 download site</a>.
                 For build performance reasons
                 is very important that this bootstrap JDK be made available on the
                 local disk of the machine doing the build.
@@ -821,18 +1026,18 @@
                 in the <tt>PATH</tt> environment variable, although it's
                 not required.
                 <p>
-                <strong>Solaris:</strong>
-                Some pre-installed JDK images may be available to you in the
-                directory <tt>/usr/jdk/instances</tt>.
-                If you don't set
-                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
-                The makefiles will look in that location for a JDK it can use.
-		<p>
-		<strong>Linux:</strong>
+                    <strong>Solaris:</strong>
+                    Some pre-installed JDK images may be available to you in the
+                    directory <tt>/usr/jdk/instances</tt>.
+                    If you don't set
+                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
+                    The makefiles will look in that location for a JDK it can use.
+                <p>
+                    <strong>Linux:</strong>
 		Many GNU/Linux distributions already include OpenJDK 6. OpenJDK 6
 		can be used to bootstrap itself, so installing the corresponding
 		distribution package is sufficient. You'll still need to set
-                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>, though.
+                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>, though.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="importjdk">Optional Import JDK</a></h4>
@@ -847,22 +1052,28 @@
             <!-- ------------------------------------------------------ -->
             <h4><a name="ant">Ant</a></h4>
             <blockquote>
-                All OpenJDK builds require access to least Ant 1.6.5.
-                The Ant tool is available from the 
-                <a href="http://ant.apache.org" target="_blank">
-                Ant download site</a>.
+                All OpenJDK builds require access to least Ant 1.7.1.
+                The Ant 1.7.1 tool is available from the
+                <a href="http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip" target="_blank">
+                    Ant 1.7.1 archive download site</a>.
                 You should always make sure <tt>ant</tt> is in your PATH, and
                 on Windows you may also need to set 
                 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
                 to point to the location of
                 the Ant installation, this is the directory pathname
                 that contains a <tt>bin and lib</tt>.
+                <br>
+                <b>WARNING:</b> Ant versions used from IDE tools like NetBeans
+                or installed via system packages may not operate the same
+                as the one obtained from the Ant download bundles.
+                These system and IDE installers sometimes choose to change
+                the ant installation enough to cause differences.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
             <blockquote>
                 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
-                http://en.wikipedia.org/wiki/Certificate_Authority</a>
+                    http://en.wikipedia.org/wiki/Certificate_Authority</a>
                 for a better understanding of the Certificate Authority (CA).
                 A certificates file named "cacerts"
                 represents a system-wide keystore with CA certificates. 
@@ -896,22 +1107,22 @@
                 <blockquote>
                     At a minimum, the
                     <a href="http://developers.sun.com/sunstudio/index.jsp" target="_blank">
-                    Sun Studio 11 Compilers</a>
+                        Sun Studio 11 Compilers</a>
                     (containing version 5.8 of the C and C++ compilers) is required,
                     with patches from the
                     <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access" target="_blank">
-                    SunSolve web site</a>.
+                        SunSolve web site</a>.
                     <p> 
-                    Set 
-                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
-                    to point to the location of
-                    the compiler binaries, and place this location in the <tt>PATH</tt>.
+                        Set
+                        <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
+                        to point to the location of
+                        the compiler binaries, and place this location in the <tt>PATH</tt>.
                     <p>
-                    The Sun Studio Express compilers at:
-                    <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
-                    Sun Studio Express Download site</a>
-                    are also an option, although these compilers have not
-                    been extensively used yet.
+                        The Sun Studio Express compilers at:
+                        <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
+                            Sun Studio Express Download site</a>
+                        are also an option, although these compilers have not
+                        been extensively used yet.
                 </blockquote>
                 <strong><a name="msvc">Windows i586: Microsoft Visual Studio .NET 2003 Professional</a></strong>
                 <blockquote>
@@ -922,20 +1133,28 @@
                     in the location defined by the variable <tt>VS71COMNTOOLS</tt> which
                     is set by the Microsoft Visual Studio .NET installer.
                     <p> 
-                    Once the compiler is installed, 
-                    it is recommended that you run <tt>VCVARS32.BAT</tt> 
-                    to set the compiler environment variables
-                    <tt>MSVCDIR</tt>, 
-                    <tt>INCLUDE</tt>,
-                    <tt>LIB</tt>, and
-                    <tt>PATH</tt> 
-                    prior to building the 
-                    OpenJDK.
-                    The above environment variables <b>MUST</b> be set.
+                        Once the compiler is installed,
+                        it is recommended that you run <tt>VCVARS32.BAT</tt>
+                        to set the compiler environment variables
+                        <tt>MSVCDIR</tt>,
+                        <tt>INCLUDE</tt>,
+                        <tt>LIB</tt>, and
+                        <tt>PATH</tt>
+                        prior to building the
+                        OpenJDK.
+                        The above environment variables <b>MUST</b> be set.
                     <p>
-                    The Microsoft Visual Studio .NET 2005 (VS2005) compiler
-                    will not work at this time due to the new runtime dll
-                    and the manifest requirements.
+                        These bat files are not easy to use from a shell environment.
+                        There is a script placed in the root jdk6 repository called
+                        vsvars.sh that can help, it should only be done once in a shell
+                        that will be doing the build, e.g.<br>
+                        <tt>sh ./make/scripts/vsvars.sh -v7 > settings<br>
+                            eval `cat settings`</tt><br>
+                        Or just <tt>eval `sh ./make/scripts/vsvars.sh -v7`</tt>.
+                    <p>
+                        The Microsoft Visual Studio .NET 2005 (VS2005) compiler
+                        will not work at this time due to the new runtime dll
+                        and the manifest requirements.
                 </blockquote>
                 <strong><a name="mssdk">Windows X64: Microsoft Platform SDK April 2005</a></strong>
                 <blockquote>
@@ -946,22 +1165,22 @@
                     You will need to minimally install the Core SDK and
                     the MDAC SDK features of this compiler.
                     <p>
-                    Once the Platform SDK is installed,
-                    it is recommended that you run <tt>SetEnv.Cmd /X64</tt> 
-                    to set the compiler environment variables
-                    <tt>MSSDK</tt>, 
-                    <tt>MSTOOLS</tt>,
-                    <tt>INCLUDE</tt>,
-                    <tt>LIB</tt>, and
-                    <tt>PATH</tt> 
-                    prior to building the 
-                    OpenJDK.
-                    The above environment variables <b>MUST</b> be set.
+                        Once the Platform SDK is installed,
+                        it is recommended that you run <tt>SetEnv.Cmd /X64</tt>
+                        to set the compiler environment variables
+                        <tt>MSSDK</tt>,
+                        <tt>MSTOOLS</tt>,
+                        <tt>INCLUDE</tt>,
+                        <tt>LIB</tt>, and
+                        <tt>PATH</tt>
+                        prior to building the
+                        OpenJDK.
+                        The above environment variables <b>MUST</b> be set.
                     <p>
-                    Note that this compiler may say it's version is a
-                    Microsoft Visual Studio .NET 2005 (VS2005), but be careful,
-                    it will not match the official VS2005 product.
-                    This Platform SDK compiler is only used on X64 builds.
+                        Note that this compiler may say it's version is a
+                        Microsoft Visual Studio .NET 2005 (VS2005), but be careful,
+                        it will not match the official VS2005 product.
+                        This Platform SDK compiler is only used on X64 builds.
                 </blockquote>
             </blockquote>
             <!-- ------------------------------------------------------ --> 
@@ -988,20 +1207,20 @@
                 Companion CD/DVD, these often will be installed into 
                 <tt>/opt/sfw/cups</tt>.
                 <p>
-                <strong>Linux:</strong>
-                CUPS header files are required for building the 
-                OpenJDK on Linux.
-                The Linux header files are usually available from a "cups"
-                development package, it's recommended that you try and use
-                the package provided by the particular version of Linux that
-                you are using.
+                    <strong>Linux:</strong>
+                    CUPS header files are required for building the
+                    OpenJDK on Linux.
+                    The Linux header files are usually available from a "cups"
+                    development package, it's recommended that you try and use
+                    the package provided by the particular version of Linux that
+                    you are using.
                 <p>
-                The CUPS header files can always be downloaded from 
-                <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
-                The variable 
-                <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
-                can be used to override the default location of the
-                CUPS Header files.
+                    The CUPS header files can always be downloaded from
+                    <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
+                    The variable
+                    <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
+                    can be used to override the default location of the
+                    CUPS Header files.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="motif">Motif Headers (Solaris &amp; Linux)</a></h4>
@@ -1010,25 +1229,25 @@
                 Motif headers (not libraries) are required for building the 
                 OpenJDK 6.
                 <p>
-                <strong>Solaris:</strong>
-                Normally these files can be found on Solaris systems
-                at /usr/include/Xm, so on Solaris systems no further downloads
-                should be needed.
+                    <strong>Solaris:</strong>
+                    Normally these files can be found on Solaris systems
+                    at /usr/include/Xm, so on Solaris systems no further downloads
+                    should be needed.
                 <p>
-                <strong>Linux:</strong>
-                On Linux, your particular Linux distribution may provide a
-                "motif" development package you can install. If this package
-                installs the files into /usr/include/Xm, no further action should
-                be needed.
-                An acceptable version of these Motif header files are
-                available in the source bundle
-                <a href="http://www.openbsd.org/3.9_packages/hppa/openmotif-2.1.30.5p1.tgz-long.html">
-                openmotif-2.1.30.5p1.tgz</a>
-                from
-                <a href="http://www.openbsd.org/">www.openbsd.org</a>.
-                You would need to install the package and set the environment variable
-                <tt><a href="#ALT_MOTIF_DIR">ALT_MOTIF_DIR</a></tt>
-                to refer to the top of this installation.
+                    <strong>Linux:</strong>
+                    On Linux, your particular Linux distribution may provide a
+                    "motif" development package you can install. If this package
+                    installs the files into /usr/include/Xm, no further action should
+                    be needed.
+                    An acceptable version of these Motif header files are
+                    available in the source bundle
+                    <a href="http://www.openbsd.org/3.9_packages/hppa/openmotif-2.1.30.5p1.tgz-long.html">
+                        openmotif-2.1.30.5p1.tgz</a>
+                    from
+                    <a href="http://www.openbsd.org/">www.openbsd.org</a>.
+                    You would need to install the package and set the environment variable
+                    <tt><a href="#ALT_MOTIF_DIR">ALT_MOTIF_DIR</a></tt>
+                    to refer to the top of this installation.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="freetype">FreeType 2</a></h4>
@@ -1039,16 +1258,16 @@
                 Note that you need development version of package that 
                 includes both FreeType library and header files.
                 <p>
-                You can always download latest FreeType version from the
-                <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
+                    You can always download latest FreeType version from the
+                    <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
                 <p>
-                Makefiles will try to pick FreeType from /usr/lib and /usr/include.
-                In case it is installed elsewhere you will need to set environment
-                variables 
-                <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
-                and 
-                <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
-                to refer to place where library and header files are installed.
+                    Makefiles will try to pick FreeType from /usr/lib and /usr/include.
+                    In case it is installed elsewhere you will need to set environment
+                    variables
+                    <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
+                    and
+                    <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
+                    to refer to place where library and header files are installed.
             </blockquote>    
             <!-- ------------------------------------------------------ -->
             <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
@@ -1064,25 +1283,25 @@
                 The makefiles will check this emit a sanity error if it is
                 missing or the wrong version.
                 <p>
-                In particular, older Linux systems will likely not have the
-                right version of ALSA installed, for example
-                Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently 
-                recent ALSA distribution.
-                On rpm-based systems, you can see if ALSA is installed by 
-                running this command:
+                    In particular, older Linux systems will likely not have the
+                    right version of ALSA installed, for example
+                    Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
+                    recent ALSA distribution.
+                    On rpm-based systems, you can see if ALSA is installed by
+                    running this command:
                 <pre>
                     <tt>rpm -qa | grep alsa</tt>
                 </pre>
                 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
                 <p> 
-                If your distribution does not come with ALSA, and you can't
-                find ALSA packages built for your particular system,
-                you can try to install the pre-built ALSA rpm packages from
-                <a href="http://www.freshrpms.net/" target="_blank">
-                <tt>www.freshrpms.net</tt></a>. 
-                Note that installing a newer ALSA could
-                break sound output if an older version of ALSA was previously
-                installed on the system, but it will enable JDK compilation.
+                    If your distribution does not come with ALSA, and you can't
+                    find ALSA packages built for your particular system,
+                    you can try to install the pre-built ALSA rpm packages from
+                    <a href="http://www.freshrpms.net/" target="_blank">
+                        <tt>www.freshrpms.net</tt></a>.
+                    Note that installing a newer ALSA could
+                    break sound output if an older version of ALSA was previously
+                    installed on the system, but it will enable JDK compilation.
                 <blockquote>
                     Installation: execute as root<br>
                     [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
@@ -1097,7 +1316,7 @@
                 </blockquote>
                 As a last resort you can go to the
                 <a href="http://www.alsa-project.org" target="_blank">
-                Advanced Linux Sound Architecture Site</a> and build it from
+                    Advanced Linux Sound Architecture Site</a> and build it from
                 source.
                 <blockquote>
                     Download driver and library
@@ -1125,9 +1344,9 @@
                 building the JDK platform. To actually use ALSA sound drivers, more
                 steps are necessary as outlined in the documentation on ALSA's homepage.
                 <p>
-                ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
-                the <tt>alsa-lib-0.9.1</tt> directory and then in 
-                <tt>alsa-driver-0.9.1</tt>.
+                    ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
+                    the <tt>alsa-lib-0.9.1</tt> directory and then in
+                    <tt>alsa-driver-0.9.1</tt>.
             </blockquote>
             There are no ALT* variables to change the assumed locations of ALSA,
             the makefiles will expect to find the ALSA include files and library at:
@@ -1142,15 +1361,15 @@
                 on Windows which can be supplied by 
                 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 
                 <p>
-                The OpenJDK build requires CYGWIN version 1.5.12 or newer. 
-                Information about CYGWIN can
-                be obtained from the CYGWIN website at 
-                <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 
+                    The OpenJDK build requires CYGWIN version 1.5.12 or newer.
+                    Information about CYGWIN can
+                    be obtained from the CYGWIN website at
+                    <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
                 <p>
-                By default CYGWIN doesn't install all the tools required for building
-                the OpenJDK.
-                Along with the default installation, you need to install
-                the following tools.
+                    By default CYGWIN doesn't install all the tools required for building
+                    the OpenJDK.
+                    Along with the default installation, you need to install
+                    the following tools.
                 <blockquote>
                     <table border="1">
                         <thead>
@@ -1165,7 +1384,7 @@
                                 <td>ar.exe</td>
                                 <td>Devel</td>
                                 <td>binutils: The GNU assembler, linker and binary
-                                utilities</td>
+                                    utilities</td>
                             </tr>
                             <tr>
                                 <td>make.exe</td>
@@ -1176,7 +1395,7 @@
                                 <td>m4.exe</td>
                                 <td>Interpreters</td>
                                 <td>m4: GNU implementation of the traditional Unix macro
-                                processor</td>
+                                    processor</td>
                             </tr>
                             <tr>
                                 <td>cpio.exe</td>
@@ -1212,14 +1431,14 @@
                     </table>
                 </blockquote>
                 <p>
-                Note that the CYGWIN software can conflict with other non-CYGWIN
-                software on your Windows system.
-                CYGWIN provides a
-                <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
-                known issues and problems, of particular interest is the
-                section on
-                <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
-                BLODA (applications that interfere with CYGWIN)</a>.
+                    Note that the CYGWIN software can conflict with other non-CYGWIN
+                    software on your Windows system.
+                    CYGWIN provides a
+                    <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
+                    known issues and problems, of particular interest is the
+                    section on
+                    <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
+                        BLODA (applications that interfere with CYGWIN)</a>.
             </blockquote>
             <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
             <blockquote>
@@ -1228,7 +1447,7 @@
                 OpenJDK.
                 This SDK can be downloaded from 
                 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
-                Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
+                    Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
                 If the link above becomes obsolete, the SDK can be found from 
                 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
                 (search with "DirectX 9.0 SDK Update Summer 2004"). 
@@ -1247,15 +1466,15 @@
                 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
                 variable to the location.
                 <p> 
-                <strong>X64 only:</strong>
-                The OpenJDK 64bit build requires access to
-                <tt>MSVCRT.DLL</tt> version 7.0.3790.0 or newer, which is
-                usually supplied by the
-                <a href="#mssdk">Platform SDK</a>.
-                If it is not available from the Platform SDK,
-                set the 
-                <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
-                variable to the location.
+                    <strong>X64 only:</strong>
+                    The OpenJDK 64bit build requires access to
+                    <tt>MSVCRT.DLL</tt> version 7.0.3790.0 or newer, which is
+                    usually supplied by the
+                    <a href="#mssdk">Platform SDK</a>.
+                    If it is not available from the Platform SDK,
+                    set the
+                    <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
+                    variable to the location.
             </blockquote>
             <strong><tt><a name="msvcr71">MSVCR71.DLL</a></tt></strong>
             <blockquote>
@@ -1306,14 +1525,14 @@
                 </li>
             </ol>
             <p>
-            <strong>Solaris:</strong>
-            Note that ARCH_DATA_MODEL is really only needed on Solaris to
-            indicate you want to built the 64-bit version.
-            And before the Solaris 64-bit binaries can be used, they
-            must be merged with the binaries from a separate 32-bit build. 
-            The merged binaries may then be used in either 32-bit or 64-bit mode, with
-            the selection occurring at runtime 
-            with the <tt>-d32</tt> or <tt>-d64</tt> options. 
+                <strong>Solaris:</strong>
+                Note that ARCH_DATA_MODEL is really only needed on Solaris to
+                indicate you want to built the 64-bit version.
+                And before the Solaris 64-bit binaries can be used, they
+                must be merged with the binaries from a separate 32-bit build.
+                The merged binaries may then be used in either 32-bit or 64-bit mode, with
+                the selection occurring at runtime
+                with the <tt>-d32</tt> or <tt>-d64</tt> options.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -1325,37 +1544,37 @@
             The default output directory is
             <tt>build/<i>platform</i></tt>,
             where <tt><i>platform</i></tt> is one of
-            <tt><ul>
-                    <li>solaris-sparc</li>
-                    <li>solaris-sparcv9</li>
-                    <li>solaris-i586</li>
-                    <li>solaris-amd64</li>
-                    <li>linux-i586</li>
-                    <li>linux-amd64</li>
-                    <li>windows-i586</li>
-                    <li>windows-amd64</li>
-            </ul></tt>
+            <ul>
+                <li><tt>solaris-sparc</tt></li>
+                <li><tt>solaris-sparcv9</tt></li>
+                <li><tt>solaris-i586</tt></li>
+                <li><tt>solaris-amd64</tt></li>
+                <li><tt>linux-i586</tt></li>
+                <li><tt>linux-amd64</tt></li>
+                <li><tt>windows-i586</tt></li>
+                <li><tt>windows-amd64</tt></li>
+            </ul>
             In particular, the 
             <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
             directory should contain executables for the 
             OpenJDK tools and utilities.
             <p>
-            You can test that the build completed properly by using the build
-            to run the various demos that you will find in the 
-            <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
-            directory.
+                You can test that the build completed properly by using the build
+                to run the various demos that you will find in the
+                <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
+                directory.
             <p>
-            The provided regression tests can be run with the <tt>jtreg</tt>
-            utility from 
-            <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
+                The provided regression tests can be run with the <tt>jtreg</tt>
+                utility from
+                <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="variables">Environment/Make Variables</a></h2>
         <p>
-        Some of the
-        environment or make variables (just called <b>variables</b> in this
-        document) that can impact the build are:
+            Some of the
+            environment or make variables (just called <b>variables</b> in this
+            document) that can impact the build are:
         <blockquote>
             <dl>
                 <dt><a name="path"><tt>PATH</tt></a> </dt>
@@ -1363,11 +1582,11 @@
                     <ul>
                         <li>The location of the GNU make binary</li>
                         <li>The location of the Bootstrap JDK <tt>java</tt> 
-                        (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
+                            (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
                         <li>The location of the C/C++ compilers 
-                        (see <a href="#compilers"><tt>compilers</tt></a>)</li>
+                            (see <a href="#compilers"><tt>compilers</tt></a>)</li>
                         <li>The location or locations for the Unix command utilities
-                        (e.g. <tt>/usr/bin</tt>)</li>
+                            (e.g. <tt>/usr/bin</tt>)</li>
                     </ul>
                 </dd>
                 <dt><tt>MILESTONE</tt> </dt>
@@ -1467,6 +1686,13 @@
                     and on Windows with CYGWIN
                     <tt>/usr/bin</tt>.
                 </dd>
+                <dt><tt><a name="ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> </dt>
+                <dd>
+                    The location of any source drop bundles
+                    (see <a href="#drops">Managing the Source Drops</a>).
+                    The default will be
+                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/share/jdk6-drops</tt>.
+                </dd>
                 <dt><a name="ALT_UNIXCOMMAND_PATH"><tt>ALT_UNIXCOMMAND_PATH</tt></a> </dt>
                 <dd>
                     An override for specifying where the
@@ -1570,19 +1796,32 @@
             Look for the check list of the platform you are building on in the
             <a href="#contents">Table of Contents</a>.
             <p>
-            You can validate your build environment by using the <tt>sanity</tt>
-            target.
-            Any errors listed
-            will stop the build from starting, and any warnings may result in
-            a flawed product build.
-            We strongly encourage you to evaluate every
-            sanity check warning and fix it if required, before you proceed
-            further with your build.
+                You can validate your build environment by using the <tt>sanity</tt>
+                target.
+                Any errors listed
+                will stop the build from starting, and any warnings may result in
+                a flawed product build.
+                We strongly encourage you to evaluate every
+                sanity check warning and fix it if required, before you proceed
+                further with your build.
             <p>
-            Some of the more common problems with builds are briefly described
-            below, with suggestions for remedies.
+                Some of the more common problems with builds are briefly described
+                below, with suggestions for remedies.
             <ul>
                 <li>
+                    <b>Corrupted Bundles on Windows:</b>
+                    <blockquote>
+                        Some virus scanning software has been known to corrupt the
+                        downloading of zip bundles.
+                        It may be necessary to disable the 'on access' or 'real time'
+                        virus scanning features to prevent this corruption.
+                        This type of "real time" virus scanning can also slow down the
+                        build process significantly.
+                        Temporarily disabling the feature, or excluding the build
+                        output directory may be necessary to get correct and faster builds.
+                    </blockquote>
+                </li>
+                <li>
                     <b>Slow Builds:</b>
                     <blockquote>
                         If your build machine seems to be overloaded from too many
@@ -1591,15 +1830,15 @@
                         machine, setting it to more than the the number of CPUs is probably
                         not a good idea).
                         <p>
-                        Creating the javadocs can be very slow, if you are running
-                        javadoc, consider skipping that step.
+                            Creating the javadocs can be very slow, if you are running
+                            javadoc, consider skipping that step.
                         <p>
-                        Faster hardware and more RAM always helps too.
-                        The VM build tends to be CPU intensive (many C++ compiles),
-                        and the rest of the JDK will often be disk intensive.
+                            Faster hardware and more RAM always helps too.
+                            The VM build tends to be CPU intensive (many C++ compiles),
+                            and the rest of the JDK will often be disk intensive.
                         <p>
-                        Faster compiles are possible using a tool called
-                        <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
+                            Faster compiles are possible using a tool called
+                            <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
                     </blockquote>
                 </li>
                 <li>
@@ -1608,10 +1847,10 @@
                         If you see warnings that refer to file time stamps, e.g.
                         <blockquote>
                             <i>Warning message:</i><tt> File `xxx' has modification time in
-                            the future.</tt>
+                                the future.</tt>
                             <br>
                             <i>Warning message:</i> <tt> Clock skew detected. Your build may
-                            be incomplete.</tt> 
+                                be incomplete.</tt>
                         </blockquote>
                         These warnings can occur when the clock on the build machine is out of
                         sync with the timestamps on the source files. Other errors, apparently
@@ -1623,9 +1862,9 @@
                         when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
                         in the 1.4 source code.
                         <p>
-                        If you see these warnings, reset the clock on the build
-                        machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
-                        containing the build output, and restart the build from the beginning.
+                            If you see these warnings, reset the clock on the build
+                            machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
+                            containing the build output, and restart the build from the beginning.
                     </blockquote>
                 </li>
                 <li>
@@ -1652,41 +1891,49 @@
                     <blockquote>
                         This is probably an issue with SELinux (See
                         <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
-                        http://en.wikipedia.org/wiki/SELinux</a>).
+                            http://en.wikipedia.org/wiki/SELinux</a>).
                         Parts of the VM is built without the <tt>-fPIC</tt> for
                         performance reasons.
                         <p>
-                        To completely disable SELinux:
-                        <tt>
-                            <ol>
-                                <li>$ su root</li>
-                                <li># system-config-securitylevel</li>
-                                <li>In the window that appears, select the SELinux tab</li>
-                                <li>Disable SELinux</li>
-                            </ol>
-                        </tt>
+                            To completely disable SELinux:
+                        <ol>
+                            <li><tt>$ su root</tt></li>
+                            <li><tt># system-config-securitylevel</tt></li>
+                            <li><tt>In the window that appears, select the SELinux tab</tt></li>
+                            <li><tt>Disable SELinux</tt></li>
+                        </ol>
                         <p>
-                        Alternatively, instead of completely disabling it you could
-                        disable just this one check.
-                        <tt>
-                            <ol>
-                                <li>Select System->Administration->SELinux Management</li>
-                                <li>In the SELinux Management Tool which appears, 
-                                select "Boolean" from the menu on the left</li>
-                                <li>Expand the "Memory Protection" group</li>
-                                <li>Check the first item, labeled
-                                "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
-                            </ol>
-                        </tt>
+                            Alternatively, instead of completely disabling it you could
+                            disable just this one check.
+                        <ol>
+                            <li>
+                                Select <tt>System->Administration->SELinux Management</tt>
+                            </li>
+                            <li>
+                                In the SELinux Management Tool which appears,
+                                select "<tt>Boolean</tt>" from the menu on the left
+                            </li>
+                            <li>
+                                Expand the "<tt>Memory Protection</tt>" group
+                            </li>
+                            <li>
+                                Check the first item, labeled
+                                "<tt>Allow all unconfined executables to use libraries requiring text relocation ...</tt>"
+                            </li>
+                        </ol>
                     </blockquote>
                 </li>
                 <li>
-                    <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b>
+                    <b>Windows Error Messages:</b><br>
+                    <tt>*** fatal error - couldn't allocate heap, ... </tt><br>
+                    <tt>rm fails with "Directory not empty"</tt><br>
+                    <tt>unzip fails with "cannot create ... Permission denied"</tt><br>
+                    <tt>unzip fails with "cannot create ... Error 50"</tt><br>
                     <blockquote>
                         The CYGWIN software can conflict with other non-CYGWIN
                         software. See the CYGWIN FAQ section on
                         <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
-                        BLODA (applications that interfere with CYGWIN)</a>.
+                            BLODA (applications that interfere with CYGWIN)</a>.
                     </blockquote>
                 </li>
                 <li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_source.sh	Thu Mar 24 07:46:40 2011 -0700
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Get clones of all nested repositories
+sh ./make/scripts/hgforest.sh clone
+
+# Update all existing repositories to the latest sources
+sh ./make/scripts/hgforest.sh pull -u
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/scripts/hgforest.sh	Thu Mar 24 07:46:40 2011 -0700
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Shell script for a fast parallel forest command
+
+tmp=/tmp/forest.$$
+rm -f -r ${tmp}
+mkdir -p ${tmp}
+
+# Remove tmp area on A. B. Normal termination
+trap 'rm -f -r ${tmp}' KILL
+trap 'rm -f -r ${tmp}' EXIT
+
+# Only look in specific locations for possible forests (avoids long searches)
+pull_default=""
+if [ "$1" = "clone" -o "$1" = "fclone" ] ; then
+  subrepos="corba jaxp jaxws langtools jdk hotspot"
+  if [ -f .hg/hgrc ] ; then
+    pull_default=`hg paths default`
+  fi
+  if [ "${pull_default}" = "" ] ; then
+    echo "ERROR: Need initial clone with 'hg paths default' defined"
+    exit 1
+  fi
+  repos=""
+  for i in ${subrepos} ; do
+    if [ ! -f ${i}/.hg/hgrc ] ; then
+      repos="${repos} ${i}"
+    fi
+  done
+  at_a_time=2
+else
+  hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
+  # Derive repository names from the .hg directory locations
+  repos=""
+  for i in ${hgdirs} ; do
+    repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
+  done
+  at_a_time=8
+fi
+
+# Any repos to deal with?
+if [ "${repos}" = "" ] ; then
+  echo "No repositories to process."
+  exit
+fi
+
+# Echo out what repositories we will process
+echo "# Repos: ${repos}"
+
+# Run the supplied command on all repos in parallel, save output until end
+n=0
+for i in ${repos} ; do
+  echo "Starting on ${i}"
+  n=`expr ${n} '+' 1`
+  (
+    (
+      if [ "$1" = "clone" -o "$1" = "fclone" ] ; then
+        cline="hg $* ${pull_default}/${i} ${i}"
+        echo "# ${cline}"
+        ( eval "${cline}" )
+      else
+        cline="hg $*"
+        echo "# cd ${i} && ${cline}"
+        ( cd ${i} && eval "${cline}" )
+      fi
+      echo "# exit code $?"
+    ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
+  if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
+    sleep 5
+  fi
+done
+
+# Wait for all hg commands to complete
+wait
+
+# Cleanup
+rm -f -r ${tmp}
+
+# Terminate with exit 0 all the time (hard to know when to say "failed")
+exit 0
+