- Loading...
...
| Code Block |
|---|
$ sudo port install hg-forest $ cat ~/.hgrc [extensions] forest= fetch= |
If you get an error from trying to clone the tree at this point (AttributeError: 'httprepository' object has no attribute 'do_read'), you should edit the forest.py files under /opt and change the occurrences of "do_read" to "_call".
...
I added the script build.sh to keep track of the correct build invocation. The version below is adapted from Kurt Millers email here. Edit the paths to fit your dir structure. This script needs to be run with the source command.
...
build.sh
| Code Block |
|---|
# source build.sh #!!/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 \ 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 \ ALLOW_DOWNLOADS=true \ ANT_HOME=/usr/share/ant \ NO_DOCS=true \ HOTSPOT_BUILD_JOBS=1 |
Notes:
| 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 -ienv -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
|
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.
...
| Code Block |
|---|
cd bsd-port ; hg fpull -u |
Jeff Sinclair noted a specific error which occurs during HotSpot compilation because the gcc.make file has a flag to set WARNINGS as ERRORS. This can be fixed by commenting the line in the gcc.make file located in bsd-port/hotspot/make/bsd/makefiles/gcc.make
| Code Block |
|---|
# Compiler warnings are treated as errors #WARNINGS_ARE_ERRORS = -Werror |
...
If the build completes do a simple test by asking the JVM to print its version info. It should look something like this:
| Code Block |
|---|
$ ../build/bsd-i586/j2sdk-image/bin/java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-stephen_2009_01_25_23_54-b00)
OpenJDK Server VM (build 14.0-b10, mixed mode)
|
...
you get an error message like the one below, it is an indication that the /jre/lib/security/cacerts file is invalid, or has no entries.
| Code Block |
|---|
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
|
You can check it with the following:
| Code Block |
|---|
keytool -list -keystore /usr/local/java-1.7.0/jre/lib/security/cacerts -storepass changeit
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 43 entries
entrustclientca, Jan 9, 2003, trustedCertEntry,
Certificate fingerprint (MD5): 0C:41:2F:13:5B:A0:54:F5:96:66:2D:7E:CD:0E:03:F4
verisignclass3g2ca, Mar 25, 2004, trustedCertEntry,
Certificate fingerprint (MD5): A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9
thawtepersonalbasicca, Feb 12, 1999, trustedCertEntry,
Certificate fingerprint (MD5): E6:0B:D2:C9:CA:2D:88:DB:1A:71:0E:4B:78:EB:02:41
addtrustclass1ca, May 2, 2006, trustedCertEntry,
...
|
If there is nothing there, you can use the ALT_CACERTS_FILE= to point to a copy of the cacerts file like the one in SoyLatte.
If the build completes do a simple test by asking the JVM to print its version info. It should look something like this:
| Code Block |
|---|
$ ../build/bsd-i586/j2sdk-image/bin/java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-stephen_2009_01_25_23_54-b00)
OpenJDK Server VM (build 14.0-b10, mixed mode)
|
Then, see how to switch java versions on Mac OS X.
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 :
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
|