| This file contains some notes about the process of building the full |
| OpenJDK distribution in RedHat Enterprise Linux 4 (Oracle's recommended |
| environment) in VMWare. It also contains some of Matt's recommendations as |
| to when and how OpenJDK builds should be made. |
| |
| =========================================================================== |
| |
| Notes on OpenJDK build process: |
| |
| Sun's "official" build environment (per /README-builds.html#MBE in the |
| source distribution) is RHEL 4. |
| |
| Obtain RHEL 4 via MIT - IS&T offers it to students and faculty via |
| https://web.mit.edu/rhlinux/rhel-4.0. |
| |
| There are three varieties of RHEL 4 - AS, ES, and WS. I used WS, which I |
| believe is for workstations (the others are intended for servers). This |
| requires downloading the WS disc 1 and the AS discs 2 - 4. |
| |
| A single disk of size 8.0 GB was created in VMWare; VMWare's option for |
| using .iso files as optical drives was also used (i.e., didn't need to |
| mount loopback on the host). In retrospect, perhaps a larger disk should be |
| used, as only ~500 MB remains after the JDK build. |
| |
| Default options were chosen for RHEL setup (including automatic |
| partitioning and default packages). In the future, SELinux should be |
| disabled in the installer (it can also be done later, but this will save a |
| step). |
| |
| It seems that RHEL 4 doesn't have yum for package management, and that the |
| "up2date" command should be used instead. up2date doesn't seem to have some |
| way to search packages, though, so I had to google for some of the package |
| names below. Before using up2date, I registered with IS&T (not Red Hat!), |
| which was basically just a certificate check and running a script that they |
| provide. |
| |
| I acquired the following packages: |
| - JDK 6 (Linux x86 RPM version; for bootstrapping) -- |
| http://java.sun.com/javase/downloads/index.jsp |
| - SVN -- "up2date subversion" |
| - JDK 7 -- "svn checkout https://openjdk.dev.java.net/svn/openjdk/jdk/trunk |
| openjdk --username guest" (hit enter for blank password) |
| - JDK 7 binary plugs -- http://download.java.net/openjdk/jdk7/ |
| - ALSA headers -- "up2date alsa-lib-devel" |
| - CUPS headers -- "up2date cups-devel" |
| |
| I installed the JDK 6 package via "rpm -Uvh [package]", and then did |
| "/usr/sbin/alternatives" (apparently the RedHat version of Debian's |
| update-alternatives) to install "java" and "javac" links. JDK 7 was a |
| simple checkout (though it took a while) and the binary plugs were a "java |
| -jar [package]". |
| |
| |
| I set the following environment variables (having checked out the JDK 7 |
| sources into my home directory): |
| |
| export ALT_BOOTDIR=/usr/java/jdk1.6.0_01 |
| export ALT_CLOSED_JDK_IMPORT_PATH=~/openjdk/binary-plugs/jdk1.7.0 |
| export LANG=C # to suppress a sanity check warning |
| |
| |
| I then did the sanity check and build per the /README-build.html |
| instructions. The sanity check took a second or two, and the full build |
| took about 40 minutes. |
| |
| The /control/build/linux-i586 folder contains j2sdk-image, which seems |
| suitable as a binary distribution. I don't think there's a way to create |
| the Oracle version, however (the .bin file that, when executed, prompts you to |
| accept their license and then extracts files). |
| |
| There also doesn't seem to be a way to extract out just the compiler |
| sources. In binary form, the compiler is in j2sdk-image/lib/tools.jar. |
| |
| If "make" is run after a successful build (even if no changes have been |
| made), it takes ~17 minutes to complete. |
| |
| =========================================================================== |
| |
| Matt's Recommendations: |
| |
| The build procedure (in Linux, at least) should not prevent us from |
| releasing a binary JSR 308 OpenJDK package. We may have to figure out how |
| to produce the Oracle package (with the license prompt and executable format) |
| if a .zip is not a sufficient means of distribution. We may need some |
| additional tools and setup for building in Windows. |
| |
| However, the build procedure takes too long (at least 17 minutes per build, |
| vs around 5 seconds for the current compiler-only setup) for doing |
| day-to-day development in this environment. I propose continuing to work |
| with the compiler the way we have it in SVN (which mirrors Oracle's |
| compiler-only distribution) and creating two scripts: one for updating the |
| OpenJDK checkout with our compiler modifications and one for updating our |
| compiler repository with vendor OpenJDK changes. We'd only use the former |
| when doing a JSR 308 release, and only use the latter when Oracle does a |
| release. In this way, we don't have to make any serious modifications (only |
| a couple of additions) to our repositories or build scripts and can keep |
| small build times for daily development. |