Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

build.sh

Code Block
#!/bin/bash
unset CLASSPATH
unset JAVA_HOME
env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \
 CC=gcc-4.0 \
 CXX=g++-4.0 \
 LANG=C \
 make \
 ALLOW_DOWNLOADS=true \
 ALT_BOOTDIR=/usr/local/soylatte16-i386-1.0.3 \
 ALT_JDK_IMPORT_PATH=/usr/local/soylatte16-i386-1.0.3 \
 ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \
 ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \
 ALT_CUPS_HEADERS_PATH=/usr/include \
 ANT_HOME=/usr/share/ant \
 CC=gcc-4.0 \
 CXX=g++-4.0 \
 LANG=C \
 NO_DOCS=true

Notes: 

NO_DOCS=true

Notes: 

  • JiBX was required previously, but JiBX was required previously, but is no longer required. If you are building an older version of OpenJDK you will need to download JiBX and add the following to your build script:
    Code Block
    ALT_JIBX_LIBS_PATH=/Users/jyeary/Library/Java/PrivateExtensions/jibx-1.1.5/lib \
    

...

build64.sh

Code Block
#!/bin/bash
unset CLASSPATH
unset JAVA_HOME
env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \
 LANG=C \
 CC=gcc-4.0 \
 CXX=g++-4.0 \
 make \
 ALT_BOOTDIR=/usr/local/soylatte16-i386-1.0.3/ \
 ALT_JDK_IMPORT_PATH=/usr/local/soylatte16-i386-1.0.3/ \
 ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \
 ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \
 ALT_CUPS_HEADERS_PATH=/usr/include \
 ALLOW_DOWNLOADS=true \
 ARCH_DATA_MODEL=64 \
 ANT_HOME=/usr/share/ant \
 NO_DOCS=true \
 HOTSPOT_BUILD_JOBS=1

...

I am not sure what can be done about this. My build.sh script has "ALT_FREETYPE_HEADERS_PATH=/opt/local/include/freetype2 ALT_FREETYPE_LIB_PATH=/opt/local/lib" and these seem to be where the headers and libraries are located....

Code Block

WARNING: This build does not include running javadoc.\n
ERROR: FreeType version  2.3.0  or higher is required. \n /bin/mkdir -p /Users/ray/Projects/OpenJDK/bsd-port/build/bsd-i586/btbins
rm -f /Users/ray/Projects/OpenJDK/bsd-port/build/bsd-i586/btbins/freetype_versioncheck
Failed to build freetypecheck.  \n
Exiting because of the above error(s). \n
make: *** [post-sanity] Error 1

X11 is needed for build.

If you have not installed this with Mac OS X, or have deleted it, you need to install it. A copy can be obtained from http://xquartz.macosforge.org/trac/wiki/X112.4.0.

...

Then, see how to switch java versions on Mac OS X.

Using Hudson for Continuous Build.

Hudson will perfectly fit to set a continuous build system. You could find a more complete article with screenshot on my blog

You'll need :

  • an OS/X box, under Snow Leopard, 32 and 64bits mode should works
  • Mercurial with hgforest extension

Hudson jobs.

Defined 2 free-style software project jobs, one for building 32 bits JVM, openjdk-1.7-i586, the other to build 64 bits JVM, openjdk-1.7-x86_64.

Each one will use self sufficient script, these will download soylatte JVMs (i386/amd64) and jaxp, jaf and jaxws2 since these are not available from the url defined in ant build scripts.

Execute shell for openjdk-1.7-i586

Code Block

#!/bin/sh
#

if [ ! -z "$HUDSON_HOME" ]; then
  DROP_DIR=$HUDSON_HOME/DROP_DIR
else
  DROP_DIR=`pwd/DROP_DIR`
fi

DROP_DIR=$HUDSON_HOME/DROP_DIR

if [ ! -d $DROP_DIR ]; then
  echo "creating DROP_DIR"
  mkdir -p DROP_DIR
fi

SOYLATTE=$DROP_DIR/soylatte16-i386-1.0.3

if [ ! -d $SOYLATTE ]; then

  if [ ! -f $DROP_DIR/soylatte16-i386-1.0.3.tar.bz2 ]; then
    echo "downloading soylatte16-i386-1.0.3 into DROP_DIR"
    curl --user jrl:"I am a Licensee in good standing" http://hg.bikemonkey.org/archive/javasrc_1_6_jrl_darwin/soylatte16-i386-1.0.3.tar.bz2 -o $DROP_DIR/soylatte16-i386-1.0.3.tar.bz2
  fi

  pushd $DROP_DIR
  tar xjf $DROP_DIR/soylatte16-i386-1.0.3.tar.bz2 
  popd
fi

if [ ! -f $DROP_DIR/jaxp-1_4_4.zip ]; then
  echo "downloading jaxp-1_4_4.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jaxp-1_4_4.zip -o $DROP_DIR/jaxp-1_4_4.zip
fi

if [ ! -f $DROP_DIR/jdk7-jaf-2010_08_19.zip ]; then
  echo "downloading jdk7-jaf-2010_08_19.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jdk7-jaf-2010_08_19.zip -o $DROP_DIR/jdk7-jaf-2010_08_19.zip
fi

if [ ! -f $DROP_DIR/jdk7-jaxws2_2-2010_08_19.zip ]; then
  echo "downloading jdk7-jaxws2_2-2010_08_19.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jdk7-jaxws2_2-2010_08_19.zip -o $DROP_DIR/jdk7-jaxws2_2-2010_08_19.zip
fi

if [ ! -d ALT_COMPILER_PATH ]; then
  echo "setup compiler dirs"
  mkdir ALT_COMPILER_PATH
  pushd ALT_COMPILER_PATH
  ln -s /usr/bin .SOURCE
  ln -s .SOURCE/g++-4.0 g++
  ln -s .SOURCE/gcc-4.0 gcc
  popd
fi

echo "cleaning previous build"

rm -rf build

unset CLASSPATH
unset JAVA_HOME
unset LD_LIBRARY_PATH

# patching defs.make for build on 64bits machine if required
grep -q x86_64 hotspot/make/bsd/makefiles/defs.make
if [ $? -eq 1 ] ; then
echo "patching defs.make for build on 64bits machine"
patch -p0 <<EOF
--- hotspot/make/bsd/makefiles/defs.make.orig   2010-11-20 16:09:49.000000000 +0100
+++ hotspot/make/bsd/makefiles/defs.make        2010-11-20 16:10:29.000000000 +0100
@@ -90,6 +90,24 @@
   endif
 endif
 
+# x86_64 OS/X
+ifeq (\$(ARCH), x86_64)
+  ifeq (\$(ARCH_DATA_MODEL), 64)
+    ARCH_DATA_MODEL = 64
+    MAKE_ARGS       += LP64=1
+    PLATFORM        = bsd-amd64
+    VM_PLATFORM     = bsd_amd64
+    HS_ARCH         = x86
+  else
+    ARCH_DATA_MODEL = 32
+    PLATFORM        = bsd-i586
+    VM_PLATFORM     = bsd_i486
+    HS_ARCH         = x86
+    # We have to reset ARCH to i386 since SRCARCH relies on it
+    ARCH            = i386
+  endif
+endif
+
 # i386
 ifeq (\$(ARCH), i386)
   ifeq (\$(ARCH_DATA_MODEL), 64)
EOF
fi

# patching Platform.gmk for 32bits VM build on 64bits machine
grep -q "force i586 if 32bits VM asked" jdk/make/common/shared/Platform.gmk
if [ $? -eq 1 ] ; then
echo "patching Platform.gmk for 32bits VM on 64bits machine"
patch -p0 <<EOF1
--- jdk/make/common/shared/Platform.gmk.orig	2010-11-20 19:33:19.000000000 +0100
+++ jdk/make/common/shared/Platform.gmk	2010-11-21 00:39:18.000000000 +0100
@@ -272,6 +272,12 @@
 
   # Darwin builds may be 32-bit or 64-bit data model.
   ifeq (\$(SYSTEM_UNAME), Darwin)
+    ifeq (\$(ARCH), amd64)
+      # force i586 if 32bits VM asked
+      ifeq (\$(ARCH_DATA_MODEL), 32)
+        ARCH=i586
+      endif
+    endif
     ifeq (\$(ARCH), i586)
       ifeq (\$(ARCH_DATA_MODEL), 64)
         ARCH=amd64
EOF1
fi

env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \
 LANG=C \
 CC=gcc-4.0 \
 CXX=g++-4.0 \
 make \
 ALT_DROPS_DIR=$DROP_DIR \
 ALT_BOOTDIR=$SOYLATTE \
 ALT_JDK_IMPORT_PATH=$SOYLATTE \
 ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \
 ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \
 ALT_CUPS_HEADERS_PATH=/usr/include \
 ALLOW_DOWNLOADS=true \
 ANT_HOME=/usr/share/ant \
 NO_DOCS=true \
 HOTSPOT_BUILD_JOBS=2 \
 ARCH_DATA_MODEL=32 \
 ALT_COMPILER_PATH=$(pwd -P)/ALT_COMPILER_PATH/ \
 LD_LIBRARY_PATH=

echo "testing build: ./build/bsd-i586/j2sdk-image/bin/java -version"

./build/bsd-i586/j2sdk-image/bin/java -version

Execute shell for openjdk-1.7-x86_64

Code Block

#!/bin/sh
#

if [ ! -z "$HUDSON_HOME" ]; then
  DROP_DIR=$HUDSON_HOME/DROP_DIR
else
  DROP_DIR=`pwd/DROP_DIR`
fi

DROP_DIR=$HUDSON_HOME/DROP_DIR

if [ ! -d $DROP_DIR ]; then
  echo "creating DROP_DIR"
  mkdir -p DROP_DIR
fi

SOYLATTE=$DROP_DIR/soylatte16-amd64-1.0.3

if [ ! -d $SOYLATTE ]; then

  if [ ! -f $DROP_DIR/soylatte16-amd64-1.0.3.tar.bz2 ]; then
    echo "downloading soylatte16-amd64-1.0.3 into DROP_DIR"
    curl --user jrl:"I am a Licensee in good standing" http://hg.bikemonkey.org/archive/javasrc_1_6_jrl_darwin/soylatte16-amd64-1.0.3.tar.bz2 -o $DROP_DIR/soylatte16-amd64-1.0.3.tar.bz2
  fi

  pushd $DROP_DIR
  tar xjf $DROP_DIR/soylatte16-amd64-1.0.3.tar.bz2 
  popd
fi

if [ ! -f $DROP_DIR/jaxp-1_4_4.zip ]; then
  echo "downloading jaxp-1_4_4.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jaxp-1_4_4.zip -o $DROP_DIR/jaxp-1_4_4.zip
fi

if [ ! -f $DROP_DIR/jdk7-jaf-2010_08_19.zip ]; then
  echo "downloading jdk7-jaf-2010_08_19.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jdk7-jaf-2010_08_19.zip -o $DROP_DIR/jdk7-jaf-2010_08_19.zip
fi

if [ ! -f $DROP_DIR/jdk7-jaxws2_2-2010_08_19.zip ]; then
  echo "downloading jdk7-jaxws2_2-2010_08_19.zip into DROP_DIR"
  curl http://icedtea.classpath.org/download/drops/jdk7-jaxws2_2-2010_08_19.zip -o $DROP_DIR/jdk7-jaxws2_2-2010_08_19.zip
fi

if [ ! -d ALT_COMPILER_PATH ]; then
  echo "setup compiler dirs"
  mkdir ALT_COMPILER_PATH
  pushd ALT_COMPILER_PATH
  ln -s /usr/bin .SOURCE
  ln -s .SOURCE/g++-4.0 g++
  ln -s .SOURCE/gcc-4.0 gcc
  popd
fi

echo "cleaning previous build"

rm -rf build

unset CLASSPATH
unset JAVA_HOME
unset LD_LIBRARY_PATH

# patching defs.make for build on 64bits machine if required
grep -q x86_64 hotspot/make/bsd/makefiles/defs.make
if [ $? -eq 1 ] ; then
echo "patching defs.make for build on 64bits machine"
patch -p0 <<EOF
--- hotspot/make/bsd/makefiles/defs.make.orig   2010-11-20 16:09:49.000000000 +0100
+++ hotspot/make/bsd/makefiles/defs.make        2010-11-20 16:10:29.000000000 +0100
@@ -90,6 +90,24 @@
   endif
 endif
 
+# x86_64 OS/X
+ifeq (\$(ARCH), x86_64)
+  ifeq (\$(ARCH_DATA_MODEL), 64)
+    ARCH_DATA_MODEL = 64
+    MAKE_ARGS       += LP64=1
+    PLATFORM        = bsd-amd64
+    VM_PLATFORM     = bsd_amd64
+    HS_ARCH         = x86
+  else
+    ARCH_DATA_MODEL = 32
+    PLATFORM        = bsd-i586
+    VM_PLATFORM     = bsd_i486
+    HS_ARCH         = x86
+    # We have to reset ARCH to i386 since SRCARCH relies on it
+    ARCH            = i386
+  endif
+endif
+
 # i386
 ifeq (\$(ARCH), i386)
   ifeq (\$(ARCH_DATA_MODEL), 64)
EOF
fi

# patching Platform.gmk for 32bits VM build on 64bits machine
grep -q "force i586 if 32bits VM asked" jdk/make/common/shared/Platform.gmk
if [ $? -eq 1 ] ; then
echo "patching Platform.gmk for 32bits VM on 64bits machine"
patch -p0 <<EOF1
--- jdk/make/common/shared/Platform.gmk.orig	2010-11-20 19:33:19.000000000 +0100
+++ jdk/make/common/shared/Platform.gmk	2010-11-21 00:39:18.000000000 +0100
@@ -272,6 +272,12 @@
 
   # Darwin builds may be 32-bit or 64-bit data model.
   ifeq (\$(SYSTEM_UNAME), Darwin)
+    ifeq (\$(ARCH), amd64)
+      # force i586 if 32bits VM asked
+      ifeq (\$(ARCH_DATA_MODEL), 32)
+        ARCH=i586
+      endif
+    endif
     ifeq (\$(ARCH), i586)
       ifeq (\$(ARCH_DATA_MODEL), 64)
         ARCH=amd64
EOF1
fi

env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \
 LANG=C \
 CC=gcc-4.0 \
 CXX=g++-4.0 \
 make \
 ALT_DROPS_DIR=$DROP_DIR \
 ALT_BOOTDIR=$SOYLATTE \
 ALT_JDK_IMPORT_PATH=$SOYLATTE \
 ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \
 ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \
 ALT_CUPS_HEADERS_PATH=/usr/include \
 ALLOW_DOWNLOADS=true \
 ANT_HOME=/usr/share/ant \
 NO_DOCS=true \
 HOTSPOT_BUILD_JOBS=2 \
 ARCH_DATA_MODEL=64 \
 ALT_COMPILER_PATH=$(pwd -P)/ALT_COMPILER_PATH/ \
 LD_LIBRARY_PATH=

echo "testing build: ./build/bsd-amd64/j2sdk-image/bin/java -version"

./build/bsd-amd64/j2sdk-image/bin/java -version