For users of --with-openjdk

Dr Andrew John Hughes ahughes at
Wed Aug 11 11:11:12 PDT 2010

On 00:28 Wed 11 Aug     , DJ Lucas wrote:
> Hash: SHA1
> On 08/10/2010 06:16 AM, Dr Andrew John Hughes wrote:
> > This option has now been removed from IcedTea6 HEAD in line with the
> > changes made to IcedTea7 a year ago:
> > 
> >
> > 
> > To do a quick non-bootstrap build, the option is now --disable-bootstrap.
> > To specify an explicit jdk, use --with-jdk-home=<path>.
> > 
> > Both options were previously merged together under --with-openjdk and are now
> > available separately.
> > --
> > Andrew :)
> > 
> Andrew, sorry that I haven't gotten back to you on this from the
> previous messages, but I've got a pretty good excuse!

No worries, hope everything is okay for you now.

>  Initial test
> against the 1.9 branch point (I had it handy) is the same as what I had
> locally last week when using icedtea6-1.8.1 as the bootstrap jdk for 1.9
> (or likely 1.10).  I worked around this in the patch I sent offline for
> 1.8.1 (
> ) by copying tools.jar from the host's JDK.  Unfortunately, that hack
> will only work with same versions (something to the effect of
> conflicting types IIRC).  I've been away for the past 6 days, so I
> haven't had time to investigate just yet as to how gets
> pulled in with gcj and why it does not with a real jdk handy.

Could you elaborate on what you mean by 'conflicting types'?

I didn't try the bootstrap-with-icedtea option myself so far, just the
existing options (bootstrap-with-gcj, no-bootstrap-with-icedtea) to
make sure we didn't regress.  I left out the tools.jar chunk of the
patch because I wasn't sure about it.

There's a bit of history to the whole tools.jar situation.  The ecj
build originally created a tools.jar as well (in a similar way to the
current rt.stamp target and friends) but it resulted in a lot of
additional confusion and duplication of compilation with little
benefit.  So the bootstrap was changed to pack all the bootstrap
classes in an updated rt.jar from the system jdk.  tools.jar only
actually needs to exist for an existence check by HotSpot.  IcedTea6
currently satifies that by a symlink to rt.jar, as you've seen, but I
think I'll switch it to patching HotSpot during bootstrap as I've done
in IcedTea7.

This works fine for the existing configurations but breaks with
bootstrapping with IcedTea.  Why? Well...

1.  The necessary sun.* classes are built in the rt.stamp stage.  However,
this only happens if sun.awt.Toolkit is not found (which is used to signify
that the bootstrap JDK has Sun classes).  See
> checking if sun.awt.SunToolkit is missing... no
in your output.

2.  Of course those classes are available in your JDK but in tools.jar not
rt.jar.  The javac invocation looks at tools.jar but because we don't symlink
the whole system JDK to bootstrap/jdk1.6.0 (as in the second stage), it's
not accessible from the build.

Thus, your fix seems appropriate and I'll add the symlink to tools.jar
if it exists.  I'd be very interested to know what issues you had with
doing this.

If you're wondering why the bootstrap build doesn't just link the system
JDK, it's so we can override its javac with the Perl script used by IcedTea
which contains a number of workarounds to make ecj look like javac.

> Here is the relevant part of the build log for reference:
> >>>Recursively making rmic build @ Wed Aug 11 00:03:19 CDT 2010 ...
> make[6]: Entering directory
> `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj/corba/make/sun/rmi/rmic'
> # Java sources to be compiled: (listed in file
> /home/dj/icedtea6-cb463b94b82d/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> ../../../../src/share/classes/sun/rmi/rmic/iiop/
> # Running javac:
> /home/dj/icedtea6-cb463b94b82d/bootstrap/jdk1.6.0/bin/javac
> - -J-XX:ThreadStackSize=768 -J-client -J-Xmx896m -J-Xms128m
> - -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -g -XDignore.symbol.file=true
> - -source 1.5 -target 5 -encoding ascii -classpath
> /home/dj/icedtea6-cb463b94b82d/bootstrap/jdk1.6.0/lib/tools.jar
> - -bootclasspath
> /home/dj/icedtea6-cb463b94b82d/bootstrap/jdk1.6.0/jre/lib/rt.jar:/home/dj/icedtea6-cb463b94b82d/
> - -sourcepath
> /home/dj/icedtea6-cb463b94b82d/generated:../../../../src/share/classes
> - -d /home/dj/icedtea6-cb463b94b82d/
> @/home/dj/icedtea6-cb463b94b82d/
> - ----------
> 1. ERROR in
> ../../../../src/share/classes/sun/rmi/rmic/iiop/ (at
> line 36)
>         import;
>                ^^^^^^^^^^^^^^
> The import cannot be resolved
> - ----------
> <Snip next 729 related errors>
> 730 problems (730 errors)make[6]: *** [.compile.classlist] Error 255
> make[6]: Leaving directory
> `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj/corba/make/sun/rmi/rmic'
> make[5]: *** [build] Error 1
> make[5]: Leaving directory
> `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj/corba/make/sun/rmi'
> make[4]: *** [build] Error 1
> make[4]: Leaving directory
> `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj/corba/make/sun'
> make[3]: *** [build] Error 1
> make[3]: Leaving directory
> `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj/corba/make'
> make[2]: *** [corba-build] Error 2
> make[2]: Leaving directory `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj'
> make[1]: *** [build_product_image] Error 2
> make[1]: Leaving directory `/home/dj/icedtea6-cb463b94b82d/openjdk-ecj'
> make: *** [stamps/icedtea-ecj.stamp] Error 2
> For reference (these should be the only relevant parts as my env output
> is not pretty).
> dj [ ~/icedtea6-cb463b94b82d ]$ echo $PATH
> /usr/bin:/bin:/opt/gnome/bin:/opt/X11/bin:/opt/icedtea6-1.8.1-bin/bin
> dj [ ~/icedtea6-cb463b94b82d ]$ echo $ANT_HOME
> /opt/ant
> dj [ ~/icedtea6-cb463b94b82d ]$ echo $JAVA_HOME
> dj [ ~/icedtea6-cb463b94b82d ]$ echo $CLASSPATH
> dj [ ~/icedtea6-cb463b94b82d ]$ ./configure
> - --with-jdk-home=/opt/icedtea6-1.8.1-bin
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking how to create a pax tar archive... gnutar
> checking build system type... i686-pc-linux-gnu
> checking host system type... i686-pc-linux-gnu
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking for style of include used by make... GNU
> checking dependency style of gcc... none
> checking for g++... g++
> checking whether we are using the GNU C++ compiler... yes
> checking whether g++ accepts -g... yes
> checking dependency style of g++... none
> checking for make... /usr/bin/make
> checking for gzip... /bin/gzip
> checking for ant... /usr/bin/ant
> checking for find... /usr/bin/find
> checking for patch... /usr/bin/patch
> checking for tar... /bin/tar
> checking for chmod... /bin/chmod
> checking for md5sum... /usr/bin/md5sum
> checking for sha256sum... /usr/bin/sha256sum
> checking for wget... /usr/bin/wget
> checking for zip... /usr/bin/zip
> checking for unzip... /usr/bin/unzip
> checking for cpio... /bin/cpio
> checking for file... /usr/bin/file
> checking for fastjar... no
> checking for jar... jar
> checking for ldd... ldd
> checking for gawk... /usr/bin/gawk
> checking for hg... no
> checking for an OpenJDK source directory...
> /home/dj/icedtea6-cb463b94b82d/openjdk
> checking for lsb_release... no
> checking whether to compile ecj natively... no
> checking which HotSpot build to use... original
> checking for linux32... /usr/bin/linux32
> checking version of GCC... 4.4.3 (major version 4, minor version 4)
> checking for getconf... /usr/bin/getconf
> checking the number of online processors... 2
> checking how many parallel build jobs to execute... 2
> checking if cp supports --reflink... yes
> checking if we can hard link rather than copy from
> /home/dj/icedtea6-cb463b94b82d... yes
> checking if a PaX-enabled kernel is running... no
> checking for an Ant home directory... /usr/share/ant
> checking whether to include PulseAudio support... no
> checking whether to build documentation... yes
> checking whether to enable experimental OpenJDK cross-compilation
> support... no
> checking whether to include the XRender pipeline... yes
> checking whether to include NIO2 support... no
> checking whether to include SystemTap tracing support... no
> checking for system library directory...
> checking for pkg-config... /usr/bin/pkg-config
> checking pkg-config is at least version 0.9.0... yes
> checking for NSS... yes
> checking whether to include the NSS-based security provider... disabled
> by default (edit to enable)
> checking for distribution package version... none
> checking build identification... Custom build (Wed Aug 11 00:19:35 CDT 2010)
> checking whether to build a bootstrap version first... yes
> checking for a JDK home directory... /opt/icedtea6-1.8.1-bin
> checking for java... /opt/icedtea6-1.8.1-bin/bin/java
> checking for javac... /opt/icedtea6-1.8.1-bin/bin/javac
> checking for ecj... no
> checking for ecj-3.1... no
> checking for ecj-3.2... no
> checking for ecj-3.3... no
> checking for javah... /opt/icedtea6-1.8.1-bin/bin/javah
> checking for jar... /opt/icedtea6-1.8.1-bin/bin/jar
> checking whether jar supports @<file> argument... yes
> checking whether jar supports stdin file arguments... no
> checking whether jar supports -J options at the end... yes
> checking for rmic... /opt/icedtea6-1.8.1-bin/bin/rmic
> checking for an ecj JAR file... /usr/share/java/ecj.jar
> checking for a xalan2 jar... /usr/share/java/xalan2.jar
> checking for a xalan2 serializer jar... /usr/share/java/serializer.jar
> checking for a xerces2 jar... /usr/share/java/xercesImpl.jar
> checking whether to include Javascript support via Rhino...
> /usr/share/java/js.jar
> checking for an OpenJDK source zip... not specified
> checking for a HotSpot source zip... not specified
> checking for an alternate jar command... not specified
> checking for a JAXP drop zip... not specified
> checking for a JAF drop zip... not specified
> checking for a JAXWS drop zip... not specified
> checking whether to use CACAO as VM... no
> checking for a CACAO home directory... $(abs_top_builddir)/cacao/install
> checking for a CACAO source zip... not specified
> checking for a CACAO source directory... not specified
> checking whether to disable optimizations and build with -O0 -g... no
> checking whether to use the Shark JIT... no
> checking how to run the C preprocessor... gcc -E
> checking for grep that handles long lines and -e... /bin/grep
> checking for egrep... /bin/grep -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking whether to use the zero-assembler port... no
> checking whether byte ordering is bigendian... no
> checking for additional virtual machines to build... none
> checking whether to retrieve the source code from Mercurial... no
> checking which Mercurial revision to use... tip
> checking which Java timezone data directory to use... /usr/share/javazi
> checking if sun.awt.SunToolkit is missing... no
> checking if wrongly
> returns a QName... no
> checking whether to build the browser plugin... yes
> checking for GTK... yes
> checking for GLIB... yes
> checking for MOZILLA... yes
> checking for xulrunner version... 1090206
> checking cups/cups.h usability... yes
> checking cups/cups.h presence... yes
> checking for cups/cups.h... yes
> checking cups/ppd.h usability... yes
> checking cups/ppd.h presence... yes
> checking for cups/ppd.h... yes
> checking X11/X.h usability... yes
> checking X11/X.h presence... yes
> checking for X11/X.h... yes
> checking for main in -ljpeg... yes
> checking for main in -lgif... yes
> checking for main in -lz... yes
> checking for XPROTO... yes
> checking for XT... yes
> checking for XP... yes
> checking for X11... yes
> checking for XINERAMA... yes
> checking for XRENDER... yes
> checking for LIBPNG... yes
> checking for XTST... yes
> checking for FREETYPE2... yes
> checking for ALSA... yes
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: creating nss.cfg
> config.status: creating javac
> config.status: creating javap
> config.status: creating jvm.cfg
> config.status: creating ergo.c
> config.status: creating
> config.status: executing depfiles commands
> dj [ ~/icedtea6-cb463b94b82d ]$
> Entire build log is available here if it is needed for anything:
> As I've just returned home from the hospital (for my son, all is well
> now BTW), and I'm only vaguely familiar with the icedtea build/directory
> layout so far, so I am going to crash for a bit.  I will look into it
> sometime over the next couple of days (if somebody doesn't beat me to it).
> Thank you for getting on this so quickly.
> - -- DJ Lucas
> Version: GnuPG v2.0.15 (GNU/Linux)
> K8alO9T3+I0d2o4me5booAaD6GYw94nXs4Ni4NieXvkWcnzP1xBPeCQXsaWLY0JY
> DyXbtv5gOrKsWY9wUel07dLSd4CzLJUKuota8iD4Y7zbHtM16xDCSGwB7cb7y3t5
> qFhqr+g8bDHtDVxQRMNJ2OhE4AHypAquJ/fRBBAa8e6uLq9KvTQ6n5U/gGof/4uh
> Du4gBdukxNDYRka3PMYCWkyxHtQmeEz4zIknSIOSVsMRkmX87aU9kOq2mWwQbq0D
> m2n2wrZ9eNjRFEjkx9Q6+GJp0U9hkjNLoc8CtcFDGvaowC0VbIc9QBqUxVbTgnj9
> /jqP/vXOAb0sJlPirxFu4+zH7AG2NI3EM2qeMFUPX/5k7xCPVdUCi+8f7bx0Ho8a
> MSipamh0ZfYpqUXGBBhCsXsEOKkMqUSImV6Jp65fRZJmKfCoOfGqmaG+WhC04Q87
> UOy9OxRUhvxwwL+T5+YmwPv+jWiupCBR63oHYvpuJD1jhMewGXTzJgS+ZcwQSTU0
> 91boFHsQWPLkDVv1yUHVR/aW+od8TNCropRKLm7uwsxa2HPTIVIqdY4srXI/rxyj
> oApNYHTrtqbTPApCU/0sfZrUbGaqOBeg/qs0bhP1fzNAXaudlu8Q0FX+dMJxQ+Td
> nbBoF47RkGqLIrxkS7wU
> =pZHp
> -- 
> This message has been scanned for viruses and
> dangerous content, and is believed to be clean.

Andrew :)

Free Java Software Engineer
Red Hat, Inc. (

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
PGP Key: 94EFD9D8 (
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

More information about the distro-pkg-dev mailing list