Yet another OpenJDK7/Windows build story

Raffaello Giulietti raffaello.giulietti at gmail.com
Sun May 9 14:58:13 UTC 2010


This was the easy part, even if it took much too much time.

Now begins the hard part: applying the patches from the Multi Language
Virtual Machine project and trying to build it on Windows. I've done
this some time ago on OpenSolaris and Linux. It was a pain, but somehow
simpler than building the pure OpenJDK on Windows.

Although I fully understand that OpenJDK is a really complex project,
I'm still a little bit disappointed about how hard it is to build it on
supported platforms. It would be instructive to know how many man-hours
have been spent around the globe just for setting up the right
environment for a successful build. It took some days to me and I was
lucky to have many useful inputs from blogs and other people.

In other words, there must be a better way...

To conclude, many thanks to everybody that helped me on this focused
mailing list, a truly great resource with excellent posts and very few
noise (perhaps even none).

Raffaello



On 2010-05-09 16:24, Lussier, Denis wrote:
> I have to jump thru most all of those same hoops building OpenJDK 6 on
> Win2k with VS2003.  Note that building on Linux is much easier and the
> build takes less than 20% of the time on the same machine.  Also, in
> my experience the Bootstrap jdk must be 1.6.0 Update 10.  I was
> originally trying with Update 16 and it errors out building CORBA.
> 
> On 5/9/10, Raffaello Giulietti <raffaello.giulietti at gmail.com> wrote:
>> I'm on Windows Vista 32-bit, SP2, Visual Studio 2008 Professional.
>> I'm building OpenJDK7 b92.
>>
>>
>> Mercurial
>> ---------
>> Mercurial for Windows in its .msi form is self-contained and doesn't
>> require an additional Python installation. I've also added the
>> installation folder to my Windows PATH.
>>
>> Download the forest extensions from
>> http://bitbucket.org/pmezard/hgforest-crew/
>> as explained there.
>> Do *not* download from
>> http://mercurial.selenic.com/wiki/ForestExtension
>> this simply does not work.
>> Copy hgforest-crew\forest.py to library.zip\hgext
>> Add the following Mercurial.ini to the Mercurial installation directory
>> --------
>> [extensions]
>> hgext.forest=
>> --------
>>
>>
>> FreeType2
>> ---------
>> From
>> http://gnuwin32.sourceforge.net/packages/freetype.htm
>> download the *-bin.zip and *-dep.zip and unzip them.
>>
>> OpenJDK erroneously expects a freetype.dll in the freetype lib folder.
>> To prevent complains during the build, hold your nose and copy
>> bin\freetype6.dll to lib\freetype.dll.
>>
>>
>> Ant and JAVA_HOME
>> -----------------
>> I've installed Ant 1.8.0.
>>
>> OpenJDK can't tolerate JAVA_HOME being set. Ant uses the registry entry
>> if JAVA_HOME is unset, but expects a full JDK. Hence, check the Windows
>> regisitry to ensure that the appropriate key in
>> HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment refers to
>> a JRE that's *inside* a JDK.
>>
>>
>> SDK and PATH
>> ------------
>> Although the SKD will be on the PATH before starting the build, for some
>> obscure reason OpenJDK searches for rc.exe and mt.exe in VC\bin rather
>> than on the PATH. Again, hold your nose, close your eyes and copy them
>> in VC\bin.
>>
>>
>> Cygwin
>> ------
>> I've installed cygwin 1.7.5 with the additions mentioned in the OpenJDK
>> Build README. I've also installed libintl-2 and vim via normal cygwin
>> setup. I don't remember if I've installed wget explicitly or if it came
>> with the default installation.
>>
>>
>> Make
>> ----
>> I downloaded make 3.80 from one of the sites mentioned in
>> http://www.filewatcher.com/m/make-3.80-1.tar.bz2.286814.0.0.html
>> and installed it in cygwin with
>> tar xjf <yourDownloadsFolder>/make-3.80-1.tar.bz2
>>
>>
>> Other issues
>> ------------
>> Apply the patch mentioned in
>> http://mail.openjdk.java.net/pipermail/build-dev/2010-May/002945.html
>> which certainly helps with b92 but which will be obsolete any time soon.
>>
>>
>> Getting the repository
>> ----------------------
>> In a cygwin shell, cd to a folder of your choice (BUILD_HOME) and do
>>
>> mkdir jdk7
>> hg fclone http://hg.openjdk.java.net/jdk7/jdk7/ jdk7
>> wget
>> http://www.java.net/download/openjdk/jdk7/promoted/b92/jdk-7-ea-plug-b92-windows-i586-06_may_2010.jar
>> java -jar jdk-7-ea-plug-b92-windows-i586-06_may_2010.jar
>>
>> and install the binary plugs in BUILD_HOME
>>
>>
>> Environment variables
>> ---------------------
>> Copy the following in cygwin's $HOME/env.bat
>> --------
>> call "%VS90COMNTOOLS%\vsvars32.bat"
>> bash
>> --------
>>
>> Copy and adapt the following in cygwin's $HOME/env.sh (pay attention to
>> line breaks due to emailers)
>> --------
>> #!/usr/bin/bash
>>
>> unset CLASSPATH
>> unset JAVA_HOME
>>
>> CYGPATH=/usr/bin/cygpath
>> BUILD_HOME=$HOME
>> FREETYPE_HOME="C:\Downloads\FreeType"
>>
>> export ANT_HOME=$(${CYGPATH} -u "C:\Downloads\Apache\apache-ant-1.8.0")
>>
>> export PATH=$PATH:$(${CYGPATH} -u
>> "$FREETYPE_HOME\freetype-2.3.5-1-bin\bin"):$(${CYGPATH} -u
>> "$FREETYPE_HOME\freetype-2.3.5-1-dep\bin")
>>
>> export ALT_BINARY_PLUGS_PATH="$BUILD_HOME/openjdk-binary-plugs"
>> export ALT_BOOTDIR=$(${CYGPATH} -s -m "C:\Program Files\Java\jdk1.6.0_18")
>> export ALT_COMPILER_PATH=$(${CYGPATH} -s -m "C:\Program Files\Microsoft
>> Visual Studio 9.0\VC\BIN")
>> export ALT_FREETYPE_LIB_PATH=$(${CYGPATH} -s -m
>> "$FREETYPE_HOME\freetype-2.3.5-1-bin\lib")
>> export ALT_FREETYPE_HEADERS_PATH=$(${CYGPATH} -s -m
>> "$FREETYPE_HOME\freetype-2.3.5-1-bin\include")
>> export ALT_DXSDK_PATH=$(${CYGPATH} -s -m "$DXSDK_DIR")
>>
>> export OPENJDK=true
>> --------
>>
>>
>> Building
>> --------
>> WARNING: As unbelievable as it might sound, you need to be online to
>> build OpenJDK! During the build, some files are downloaded from the net.
>>
>> In a cygwin shell do the following to set the VisualStudio vars, the
>> environment and to start the build.
>>
>> ./env.bat
>> . ./env.sh
>> cd $BUILD_HOME/jdk7
>> make sanity
>> make
>>
>> On my three years old laptop the build proper takes about 2:30 hours.
>>




More information about the build-dev mailing list