Mercurial > hg > openjdk > jdk6
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 && <i>gmake</i> + <a href="#gmake"><tt>make</tt></a> sanity && <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 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> - <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 + 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 & 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&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 +