diff options
Diffstat (limited to 'recipes/openjdk/openjdk-6-common.inc')
-rw-r--r-- | recipes/openjdk/openjdk-6-common.inc | 163 |
1 files changed, 97 insertions, 66 deletions
diff --git a/recipes/openjdk/openjdk-6-common.inc b/recipes/openjdk/openjdk-6-common.inc index 54c45f84de..f00a6babe2 100644 --- a/recipes/openjdk/openjdk-6-common.inc +++ b/recipes/openjdk/openjdk-6-common.inc @@ -10,7 +10,7 @@ ICEDTEA = "NEEDS TO BE SET" S = "${WORKDIR}/${ICEDTEA}" B = "${S}/build" -INC_PR = "r11" +INC_PR = "r13" SRC_URI = "\ ${ICEDTEA_URI} \ @@ -24,6 +24,8 @@ SRC_URI = "\ file://jvm.cfg \ " +FILESPATHPKG =. "openjdk-6-${PV}:" + JDKPN = "openjdk-6" JDK_DIR = "java-6-openjdk" @@ -33,21 +35,23 @@ PROVIDES += "${JDKPN} ${PACKAGES}" DEPENDS = "giflib libpng jpeg cups \ xalan-j xerces-j rhino \ freetype libxinerama libxt libxp libxrender libxtst libxi \ - ant-native alsa-lib libffi \ - icedtea6-native fastjar \ - llvm2.7 cacaoh-openjdk-native \ + alsa-lib libffi llvm2.7 \ + ant-native \ + fastjar-native \ + icedtea6-native \ + cacaoh-openjdk-native \ zip-native \ - " + " + +DEPENDS_append_libc-uclibc = " libiconv " # The OpenJDK build with interpreter optimizations for ARM depends on a binary # that generates constants for an assembler source file. There is no other # way than to generate this on a pseudo machine. Cross-compiling would not help # because structure sizes and/or alignment may differ. -DEPENDS_append_arm = " qemu-native " +DEPENDS_append = " qemu-native " -FILESPATHPKG =. "openjdk-6-${PV}:" - # No package should directly depend on this (it should require # java2-runtime instead). PRIVATE_LIBS = "\ @@ -62,10 +66,10 @@ PRIVATE_LIBS = "\ libversionCheck.so libcompiledMethodLoad.so libgctest.so \ libheapViewer.so libheapTracker.so libminst.so libmtrace.so \ libwaiters.so libhprof.so \ -" + " -inherit java autotools +inherit java autotools gettext qemu export ALT_CUPS_HEADERS_PATH = "${STAGING_INCDIR}" export ALT_FREETYPE_HEADERS_PATH = "${STAGING_INCDIR}/freetype2" @@ -86,7 +90,7 @@ EXTRA_OECONF = "\ --with-java=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/java \ --with-javac=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/javac \ --with-javah=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/javah \ - --with-jar=${STAGING_BINDIR_NATIVE}/fastjar \ + --with-jar=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/jar \ --with-rmic=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/rmic \ --with-xalan2-jar=${STAGING_DATADIR_JAVA}/xalan2.jar \ --with-xalan2-serializer-jar=${STAGING_DATADIR_JAVA}/serializer.jar \ @@ -101,7 +105,7 @@ EXTRA_OECONF = "\ --with-pkgversion=${PV} \ --with-cc-for-build=${BUILD_CC} \ --enable-zero \ - --with-additional-vms=shark,cacao \ + --with-additional-vms=${WITH_ADDITIONAL_VMS} \ --enable-openjdk-cross-compilation \ " @@ -114,8 +118,8 @@ def get_jdk_arch(d): jdk_arch = bb.data.getVar('TARGET_ARCH', d, 1) if jdk_arch == "x86_64": jdk_arch = "amd64" - elif (jdk_arch == "i586" or jdk_arch == "i686"): - jdk_arch = "i586" + elif (jdk_arch == "i486" or jdk_arch == "i586" or jdk_arch == "i686"): + jdk_arch = "i386" return jdk_arch @@ -150,12 +154,12 @@ def get_llvm_configure_arch(d): arch = "x86" elif arch == "arm": arch = "arm" - elif arch == "mipsel": + elif arch == "mipsel" or arch == "mips": arch = "mips" elif arch == "powerpc": arch = "powerpc" else: - oefatal("Your target architecture is not supported by this recipe"); + oefatal("%s does not support %s yet" % (bb.data.getVar('PN', d, 1), arch) ); return arch @@ -178,7 +182,7 @@ do_configure_prepend() { ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/jre/lib/rt.jar ${WORKDIR}/fake-jdk/jre/lib/rt.jar symlinked=false - oenote "Creating symlinks for fake-jdk" + echo "Creating symlinks for fake-jdk" mkdir -p ${WORKDIR}/fake-jdk/include for i in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/include` ;do bn=`basename $i` @@ -195,7 +199,7 @@ do_configure_prepend() { then oefatal "Build b0rken! Have not created any symlinks for fake-jdk!" else - oenote "fake-jdk setup appears sane." + oenote "fake-jdk setup appears sane." fi } @@ -241,19 +245,16 @@ export WANT_LLVM_RELEASE = "2.7" # Provides the target architecture to the configure script. export LLVM_CONFIGURE_ARCH="${@get_llvm_configure_arch(d)}" -OE_LAUNCHER_LDFLAGS = "-Wl,-rpath-link,${STAGING_LIBDIR}/llvm2.7" +OE_LAUNCHER_LDFLAGS = "-Wl,-rpath-link,${STAGING_LIBDIR}/llvm${WANT_LLVM_RELEASE} -Wl,-rpath,/usr/lib/llvm${WANT_LLVM_RELEASE}" EXTRA_OEMAKE += 'OE_LAUNCHER_LDFLAGS="${OE_LAUNCHER_LDFLAGS}"' # Large stack is required at least on x86_64 host, otherwise random segfaults appear: -QEMU = "qemu-${TARGET_ARCH} ${QEMU_OPTIONS} -s 1048576 -L ${STAGING_DIR_TARGET}" +QEMU = "${@qemu_target_binary(d)} ${QEMU_OPTIONS} -s 1048576 -L ${STAGING_DIR_TARGET}" EXTRA_OEMAKE += 'QEMU="${QEMU}"' -# Name of the directory containing the compiled output -BUILD_DIR = "build/linux-${JDK_ARCH}" - # The build of OpenJDK is a 3-part process. For better restartability and overrideability they have been split into # three functions. # 1. compile Hotspot or Cacao (this one is supposed to be implemented according to wanted VM) @@ -275,12 +276,12 @@ do_compilestepone() { rm -rf bootstrap/ecj/jre/lib/${JDK_ARCH} || true # Provide a symlink to the target arch's libjvm.so (to link against) - ln -s `pwd`/openjdk-ecj/${BUILD_DIR}/j2sdk-image/jre/lib/${JDK_ARCH} bootstrap/jdk1.6.0/jre/lib/${JDK_ARCH} + ln -s `pwd`/${BUILD_DIR_ECJ}/j2sdk-image/jre/lib/${JDK_ARCH} bootstrap/jdk1.6.0/jre/lib/${JDK_ARCH} # fake j2sdk-image - rm openjdk-ecj/${BUILD_DIR}/j2sdk-image/include || true - cp -ar openjdk-ecj/${BUILD_DIR}/hotspot/import/include openjdk-ecj/${BUILD_DIR}/j2sdk-image/ - install -d openjdk-ecj/${BUILD_DIR}/j2sdk-image/bin + rm ${BUILD_DIR_ECJ}/j2sdk-image/include || true + cp -ar ${BUILD_DIR_ECJ}/hotspot/import/include ${BUILD_DIR_ECJ}/j2sdk-image/ + install -d ${BUILD_DIR_ECJ}/j2sdk-image/bin } addtask compilestepone after do_configure before do_compilesteptwo @@ -292,7 +293,7 @@ do_compilesteptwo() { rm stamps/icedtea-against-ecj.stamp stamps/icedtea-ecj.stamp || true oe_runmake icedtea-against-ecj - ln -sf ../openjdk-ecj/${BUILD_DIR}/j2sdk-image bootstrap/icedtea + ln -sf ../${BUILD_DIR_ECJ}/j2sdk-image bootstrap/icedtea # Replace all executables with symlinks to their native equivalents. for F in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin -type f` @@ -314,7 +315,7 @@ do_compile() { do_install() { install -d ${D}${libdir_jvm} - cp -R ${S}/build/openjdk/${BUILD_DIR}/j2sdk-image ${D}${JDK_HOME} + cp -R ${S}/build/${BUILD_DIR}/j2sdk-image ${D}${JDK_HOME} chmod u+rw -R ${D}${JDK_HOME} @@ -335,11 +336,6 @@ do_install() { install -m644 ${WORKDIR}/jvm.cfg ${D}${JDK_HOME}/jre/lib/${JDK_ARCH}/ } -# Manual staging step that is only needed for oe-stable. -do_stage() { - : -} - # Notes about the ideas behind packaging: # 1) User should install openjdk-6-jre. This is a provider of 'java2-runtime'. # 2) This lets package mgmt install: openjdk-6-java @@ -363,6 +359,7 @@ PACKAGES = " \ ${JDKPN}-vm-shark \ ${JDKPN}-vm-zero \ ${JDKPN}-vm-cacao \ + ${JDKPN}-vm-jamvm \ ${JDKPN}-common \ " @@ -398,11 +395,13 @@ FILES_${JDKPN}-source = "${JDK_HOME}/src.zip" FILES_${JDKPN}-java = "${JDK_HOME}/jre/bin/java" -FILES_${JDKPN}-vm-zero = "${JDK_HOME}/jre/lib/arm/server/" +FILES_${JDKPN}-vm-zero = "${JDK_HOME}/jre/lib/${JDK_ARCH}/server/" -FILES_${JDKPN}-vm-shark = "${JDK_HOME}/jre/lib/arm/shark/" +FILES_${JDKPN}-vm-shark = "${JDK_HOME}/jre/lib/${JDK_ARCH}/shark/" -FILES_${JDKPN}-vm-cacao = "${JDK_HOME}/jre/lib/arm/cacao/" +FILES_${JDKPN}-vm-cacao = "${JDK_HOME}/jre/lib/${JDK_ARCH}/cacao/" + +FILES_${JDKPN}-vm-jamvm = "${JDK_HOME}/jre/lib/${JDK_ARCH}/jamvm/" FILES_${JDKPN}-common = "${JDK_HOME}/jre/ASSEMBLY_EXCEPTION \ ${JDK_HOME}/jre/THIRD_PARTY_README \ @@ -428,18 +427,28 @@ RDEPENDS_${JDKPN}-common = "librhino-java" RPROVIDES_${JDKPN}-vm-shark = "java2-vm" RPROVIDES_${JDKPN}-vm-zero = "java2-vm" RPROVIDES_${JDKPN}-vm-cacao = "java2-vm" +RPROVIDES_${JDKPN}-vm-jamvm = "java2-vm" -RDEPENDS_${JDKPN}-java = "java2-vm" +# Even though a vm is a hard dependency it is set as RRECOMMENDS so a single vm can get uninstalled: +# root@beaglebone:~/java# opkg remove openjdk-6-vm-shark +# No packages removed. +# Collected errors: +# * print_dependents_warning: Package openjdk-6-vm-shark is depended upon by packages: +# * print_dependents_warning: openjdk-6-java +# * print_dependents_warning: These might cease to work if package openjdk-6-vm-shark is removed. +RRECOMMENDS_${JDKPN}-java = "java2-vm" # For some reason shark and cacao do not automatically depends on -common. # So we add that manually. RDEPENDS_${JDKPN}-vm-shark = "${JDKPN}-common" RDEPENDS_${JDKPN}-vm-cacao = "${JDKPN}-common" +RDEPENDS_${JDKPN}-vm-jamvm = "${JDKPN}-common" # There is a symlink to a .so but this one is valid. INSANE_SKIP_${JDKPN}-vm-shark = "1" INSANE_SKIP_${JDKPN}-vm-zero = "1" INSANE_SKIP_${JDKPN}-vm-cacao = "1" +INSANE_SKIP_${JDKPN}-vm-jamvm = "1" INSANE_SKIP_${JDKPN}-common = "1" FILES_${JDKPN}-jdk = " \ @@ -455,53 +464,75 @@ RDEPENDS_${JDKPN}-jdk = "${JDKPN}-jre" FILES_${JDKPN}-doc = "${JDK_HOME}/man" pkg_postinst_${JDKPN}-vm-shark () { - if grep -q "\-cacao KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao KNOWN/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - echo "-cacao KNOWN" >> ${JDK_HOME}/jre/lib/arm/jvm.cfg + if grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && ! grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + sed -i -e "/\-shark.*/d" -e "s|\(^\-server*\)|\-shark KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + else + sed -i -e "s/\-shark.*/\-shark KNOWN/" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg fi - - sed -i -e "/\-shark.*/d" -e "s|\(^\-server*\)|\-shark KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg } pkg_prerm_${JDKPN}-vm-shark () { - sed -i -e "/^\-shark.*/d" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - if grep -q "\-cacao KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao KNOWN/d" -e "s|\(^\-server*\)|\-cacao KNOWN\n\1|" ${JDK_HOME}/jre/lib/arm/jvm.cfg + sed -i -e "/^\-shark.*/d" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + if grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + FIRST_KNOWN=`grep "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg | head -1` + sed -i -e "/${FIRST_KNOWN}/d" -e "s|\(^\-server*\)|${FIRST_KNOWN}\n\1|" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg fi + + echo "-shark ERROR" >> ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg } pkg_postinst_${JDKPN}-vm-cacao () { - if grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/arm/jvm.cfg && ! grep -q "\-shark KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao.*/d" -e "s|\(^\-server*\)|\-cacao KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - else - sed -i -e "s|^\-cacao.*|\-cacao KNOWN|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg + if grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && ! grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + sed -i -e "/\-cacao.*/d" -e "s|\(^\-server*\)|\-cacao KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + else + sed -i -e "s/\-cacao.*/\-cacao KNOWN/" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg fi } pkg_prerm_${JDKPN}-vm-cacao () { - if grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/arm/jvm.cfg && ! grep -q "\-shark KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao.*/d" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - echo "-cacao ERROR" >> ${JDK_HOME}/jre/lib/arm/jvm.cfg - else - sed -i -e "s|^\-cacao.*|\-cacao ERROR|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - fi + sed -i -e "/^\-cacao.*/d" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + if grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + FIRST_KNOWN=`grep "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg | head -1` + sed -i -e "/${FIRST_KNOWN}/d" -e "s|\(^\-server*\)|${FIRST_KNOWN}\n\1|" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + fi + + echo "-cacao ERROR" >> ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg +} + +pkg_postinst_${JDKPN}-vm-jamvm () { + if grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && ! grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + sed -i -e "/\-jamvm.*/d" -e "s|\(^\-server*\)|\-jamvm KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + else + sed -i -e "s/\-jamvm.*/\-jamvm KNOWN/" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + fi +} + +pkg_prerm_${JDKPN}-vm-jamvm () { + sed -i -e "/^\-jamvm.*/d" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + if grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + FIRST_KNOWN=`grep "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg | head -1` + sed -i -e "/${FIRST_KNOWN}/d" -e "s|\(^\-server*\)|${FIRST_KNOWN}\n\1|" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + fi + + echo "-jamvm ERROR" >> ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg } pkg_postinst_${JDKPN}-vm-zero () { - if grep -q "\-cacao KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg && ! grep -q "\-shark KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao KNOWN/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg - echo "-cacao KNOWN" >> ${JDK_HOME}/jre/lib/arm/jvm.cfg - fi + if grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg && grep -q "\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + FIRST_KNOWN=`grep "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg | head -1` + sed -i -e "/${FIRST_KNOWN}/d" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + echo ${FIRST_KNOWN} >> ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + fi - sed -i -e "s|^\-server.*|\-server KNOWN|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg + sed -i -e "s|^\-server.*|\-server KNOWN|" -e "/^$/d" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg } pkg_prerm_${JDKPN}-vm-zero () { - if grep -q "\-cacao KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg && ! grep -q "\-shark KNOWN" ${JDK_HOME}/jre/lib/arm/jvm.cfg; then - sed -i -e "/\-cacao KNOWN/d" -e "s|\(^\-server*\)|\-cacao KNOWN\n\1|" ${JDK_HOME}/jre/lib/arm/jvm.cfg - fi - - sed -i -e "s|^\-server.*|\-server ERROR|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg + sed -i -e "/^\-server.*/\-server ERROR" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + if grep -q "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg; then + FIRST_KNOWN=`grep "KNOWN" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg | head -1` + sed -i -e "/${FIRST_KNOWN}/d" -e "s|\(^\-server*\)|${FIRST_KNOWN}\n\1|" ${JDK_HOME}/jre/lib/${JDK_ARCH}/jvm.cfg + fi } pkg_postinst_${JDKPN}-jre () { |