When I’m testing my stuff I don’t use vanilla IcedTea. The standard debug build is an icedtea-against-icedtea which takes hours and hours to complete. Instead, I have a set of patches which enable assertions and disable optimization int the icedtea-against-ecj build. This builds much faster. If you are working on zero (or something else Hotspot) then you may find them handy:

cd /path/to/icedtea
wget http://inauspicious.org/files/icedtea/mixtec-patches.patch
patch -p1 < mixtec-patches.patch
make clean
make icedtea-against-ecj

Once you have that, you can use make hotspot to rebuild the JVM only, without going all the way into and out of the class library makefiles.

5 thoughts on “

  1. Great to know!

    I have been compiling the vanilla source with zero patches for about 2h now on my 200mhz 64mb ram armv5tejl system.
    Good news are that the compile continues without errors so hopefully i can test some ARM binarys later today or should i break the compile and try again with your patches?

  2. It won’t build, it’ll fail when it reaches Hotspot (if not before) because there’s no arm stuff in icedtea-ports.patch. See this comment for some more details.

    Although… the default case for the build system is x86. ARM is a 32-bit little-endian platform too, right? So maybe just maybe every thing will actually work! I’d be amazed, but it’d be cool ;)

  3. Accurate! After hours and days of compiling i have arrived at the point is due time to fix the OpenJDK makefiles by changing the patchfile patches/icedtea-ports.patch .
    but before that i better hg pull the latest icedtea code from the repository.

    This was my last make throphy!

    make \
    “ALT_JDK_IMPORT_PATH=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.6.0” “ANT_HOME=/usr/share/ant” “BUILD_NUMBER=b24” “JRE_RELEASE_VERSION=1.7.0-b24” “HOTSPOT_RELEASE_VERSION=1.7.0-b24” “LANG=C” “PATH=/usr/bin:/bin:/usr/sbin:/sbin” “ALT_BOOTDIR=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.6.0” “ALT_BINARY_PLUGS_PATH=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.7.0” “BUILD_ARCH_DIR=armv5tejl” “LIBGCJ_JAR=/usr/share/java/libgcj-4.1.2.jar” “ICEDTEA_RT=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar” “ICEDTEA_BUILD_DIR=/usr/src/icedtea-ee668d943e13/openjdk-ecj/build/linux-armv5tejl/” “ICEDTEA_CLS_DIR=/usr/src/icedtea-ee668d943e13/openjdk-ecj/build/linux-armv5tejl/classes” “ICEDTEA_ENDORSED_DIR=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.6.0/lib/endorsed” “ENDORSED=-Djava.endorsed.dirs=/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.6.0/lib/endorsed” “BOOTCLASSPATH_CLS_RT=-bootclasspath /usr/src/icedtea-ee668d943e13/openjdk-ecj/build/linux-armv5tejl/classes:/usr/src/icedtea-ee668d943e13/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar” “BOOTCLASSPATH_CLS=-bootclasspath /usr/src/icedtea-ee668d943e13/openjdk-ecj/build/linux-armv5tejl/classes” “BOOTCLASSPATH_RT_LIBGCJ=-bootclasspath /usr/src/icedtea-ee668d943e13/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar:/usr/share/java/libgcj-4.1.2.jar” “CLASSPATH=” “LD_LIBRARY_PATH=” “GENSRCDIR=/usr/src/icedtea-ee668d943e13/generated” “FREETYPE2_INC_DIR=” “ICEDTEA_CORE_BUILD=” \
    -C openjdk-ecj/
    make[1]: Entering directory `/usr/src/openjdk-3b9a53e0ec3c’
    make[1]: *** No targets specified and no makefile found. Stop.
    make[1]: Leaving directory `/usr/src/openjdk-3b9a53e0ec3c’
    make: *** [stamps/icedtea-ecj.stamp] Error 2
    -bash-3.2#

  4. Suppose i work in the icedtea patchfiles and corrects some of the “patches not reverting correctly bugs” and new arm make targets, do i then need to sign a contributor agreement with redhat or sun in order to push the changes with hg? Will it be suffice for me to publish my patches to the patches with GPL license and put them online on my companys homepage?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.