diff options
author | Henning Heinold <h.heinold@tarent.de> | 2010-07-12 13:29:16 +0200 |
---|---|---|
committer | Henning Heinold <h.heinold@tarent.de> | 2010-08-02 10:23:46 +0200 |
commit | b78fc95424b5f0fb28246e8c61bb8b4d6a9d733a (patch) | |
tree | f65f5609aabafe474f1f35bb7e284aa733be1081 /recipes/openjdk/openjdk-6-common.inc | |
parent | 9e043b45ceba7e65565722c7dc14910547b04d17 (diff) | |
download | openembedded-b78fc95424b5f0fb28246e8c61bb8b4d6a9d733a.tar.gz |
openjdk: backport from openembedded-devstable/2009
Acked-by: Stefan Schmidt <stefan@buglabs.net>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Diffstat (limited to 'recipes/openjdk/openjdk-6-common.inc')
-rw-r--r-- | recipes/openjdk/openjdk-6-common.inc | 530 |
1 files changed, 530 insertions, 0 deletions
diff --git a/recipes/openjdk/openjdk-6-common.inc b/recipes/openjdk/openjdk-6-common.inc new file mode 100644 index 0000000000..cbf7468013 --- /dev/null +++ b/recipes/openjdk/openjdk-6-common.inc @@ -0,0 +1,530 @@ +DESCRIPTION = "Java runtime based upon the OpenJDK- and Icedtea Project" +HOMEPAGE = "http://icedtea.classpath.org" +LICENSE = "GPL with Classpath Exception" +PRIORITY = "optional" +SECTION = "libs" + +# Name of the icedtea tarball and top-level directory. +ICEDTEA = "NEEDS TO BE SET" + +S = "${WORKDIR}/${ICEDTEA}" +B = "${S}/build" + +INC_PR = "r10" + +SRC_URI = "\ + ${ICEDTEA_URI} \ + ${OPENJDK_URI} \ + ${JAXWS_URI} \ + ${JAF_URI} \ + ${JAXP_URI} \ + ${CACAO_URI} \ + ${OEPATCHES} \ + ${ICEDTEAPATCHES} \ + file://jvm.cfg \ + " + +JDK_PN = "openjdk-6" +JDK_DIR = "java-6-openjdk" + +PN = "${JDK_PN}-jre" +PROVIDES = "${JDK_PN}" + +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 \ + " + +# 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 " + + +FILESPATHPKG = "openjdk-6-${PV}" + +# For compatibility with Poky: +FILESPATH_append = ":${FILE_DIRNAME}/openjdk-6-${PV}" + +FILESPATHPKG_append = ":files" + +# No package should directly depend on this (it should require +# java2-runtime instead). +PRIVATE_LIBS = "\ + libunpack.so libverify.so libjava.so libzip.so libnpt.so \ + libjava_crw_demo.so libhprof.so libnet.so libnio.so \ + libmanagement.so libinstrument.so libjsound.so libjsoundalsa.so \ + libj2pcsc.so libj2pkcs11.so libj2gss.so libmlib_image.so \ + libawt.so libsplashscreen.so libfreetype.so.6 libfontmanager.so \ + libjpeg.so liblcms.so librmi.so libjawt.so libjaas_unix.so \ + libattach.so libjdwp.so libdt_socket.so libhpi.so libjli.so \ + libmawt.so libjvm.so \ + libversionCheck.so libcompiledMethodLoad.so libgctest.so \ + libheapViewer.so libheapTracker.so libminst.so libmtrace.so \ + libwaiters.so libhprof.so \ +" + + +inherit java autotools + +export ALT_CUPS_HEADERS_PATH = "${STAGING_INCDIR}" +export ALT_FREETYPE_HEADERS_PATH = "${STAGING_INCDIR}/freetype2" +export ALT_FREETYPE_LIB_PATH = "${STAGING_LIBDIR}" +export CACAO_CONFIGURE_ARGS = "\ + ${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \ + --with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh-openjdk-0.99.4" + +JAVA_HOME[unexport] = "1" + +EXTRA_OECONF = "\ + --disable-docs \ + --disable-pulse-java \ + --disable-plugin \ + \ + --with-ecj=${STAGING_BINDIR_NATIVE}/foo \ + --with-ecj-jar=${STAGING_DATADIR_JAVA_NATIVE}/ecj-bootstrap.jar \ + --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-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 \ + --with-xerces2-jar=${STAGING_DATADIR_JAVA}/xercesImpl.jar \ + --with-rhino=${STAGING_DATADIR_JAVA}/rhino.jar \ + --with-openjdk-src-dir=${WORKDIR}/openjdk-src-dir \ + --with-gcj-home=${WORKDIR}/fake-jdk \ + --with-parallel-jobs=${JDK_JOBS} \ + \ + --with-libgcj-jar=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/jre/lib/rt.jar \ + \ + --with-pkgversion=${PV} \ + --with-cc-for-build=${BUILD_CC} \ + --enable-zero \ + --with-additional-vms=shark,cacao \ + --enable-openjdk-cross-compilation \ + " + + +# OpenJDK uses slightly different names for certain arches. We need to know +# this to create some files which are expected by the build. +def get_jdk_arch(d): + import bb + + 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" + + return jdk_arch + +JDK_ARCH = "${@get_jdk_arch(d)}" +JDK_HOME = "${libdir_jvm}/${JDK_DIR}" + +# OpenJDK supports parallel compilation but uses a plain number for this. +# In OE we have PARALLEL_MAKE which is the actual option passed to make, +# e.g. "-j 4". +def get_jdk_jobs(d): + import bb + + pm = bb.data.getVar('PARALLEL_MAKE', d, 1); + if not pm: + return "1" + + pm = pm.split(" "); + if (len(pm) == 2): + return pm[1] + + # Whatever found in PARALLEL_MAKE was not suitable. + return "1" + +JDK_JOBS = "${@get_jdk_jobs(d)}" + +# A function that is needed in the Shark builds. +def get_llvm_configure_arch(d): + import bb; + + arch = bb.data.getVar('TARGET_ARCH', d, 1) + if arch == "x86_64" or arch == "i486" or arch == "i586" or arch == "i686": + arch = "x86" + elif arch == "arm": + arch = "arm" + elif arch == "mipsel": + arch = "mips" + elif arch == "powerpc": + arch = "powerpc" + else: + oefatal("Your target architecture is not supported by this recipe"); + + return arch + +# Custom preparation of the sources which: +# - cleans up the sources +# - copies the patches into the proper directory +# - prepares the FakeJDK directory structure +#DISABLED because of incompatibility with oe stable 2009: do_prepareconfigure () { +do_configure_prepend() { + chmod -R ug+w ${WORKDIR}/openjdk-src-dir + (cd ${WORKDIR}/openjdk-src-dir && sh ${S}/fsg.sh) + + # Automatically copy everything that starts with "icedtea" (or "cacao") and ends with + # ".patch" into the patches directory. + find ${WORKDIR} -maxdepth 1 -name "icedtea*.patch" -exec cp {} ${S}/patches \; + find ${WORKDIR} -maxdepth 1 -name "cacao*.patch" -exec cp {} ${S}/patches \; + + # use now the rt.jar from icedtea6-native + mkdir -p ${WORKDIR}/fake-jdk/jre/lib + 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" + mkdir -p ${WORKDIR}/fake-jdk/include + for i in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/include` ;do + bn=`basename $i` + oenote "Symlinking: $bn" + ln -sf $i ${WORKDIR}/fake-jdk/include/$bn; + symlinked=true + done + + # If the symlinks have not been created the built cannot continue. This + # can happen if icedtea6-native is not ready at this point. The recipe + # should make sure this is not the case but a little sanity checking + # in such a complicated build can't be wrong. + if [ x$symlinked == xfalse ] + then + oefatal "Build b0rken! Have not created any symlinks for fake-jdk!" + else + oenote "fake-jdk setup appears sane." + fi +} + +# Note: The following lines only work for OE.dev branch but cause an exception +# in oe stable's 2009 bitbake. As such the function is prepended to do_configure instead. +#addtask prepareconfigure after do_patch before do_configure +# Makes prepareconfigure depend on icedtea6-native having being staged. +#do_prepareconfigure[depends] += "icedtea6-native:do_populate_sysroot" + + +do_configure_append() { + oe_runmake patch-ecj +} + +# Work around broken variable quoting in oe-stable 2009 and provide the variable +# via the environment which then overrides the erroneous value that was written +# into '${ICETDEA}/Makefile'. +# Icedtea's makefile is not compatible to parallelization so we cannot allow +# passing a valid ${PARALLEL_MAKE} to it. OTOH OpenJDK's makefiles are +# parallelizable and we need ${PARALLEL_MAKE} to derive the proper value. +# The base for this quirk is that GNU Make only considers the last "-j" option. +EXTRA_OEMAKE = '-j 1 CC="${CC}" CCC="${CXX}" CPP="${CPP}" CXX="${CXX}" CC_FOR_BUILD="${BUILD_CC}"' + +EXTRA_OEMAKE += ' \ + OE_CFLAGS="${TARGET_CFLAGS}" \ + OE_CPPFLAGS="${TARGET_CPPFLAGS}" \ + OE_CXXFLAGS="${TARGET_CXXFLAGS}" \ + OE_LDFLAGS="${TARGET_LDFLAGS}" \ + ' + +# Puts an OE specific string into the binary making it possible for the user +# to know where it comes from (and blame the right people ...). +DIST_ID = "Built for ${DISTRO}" +DIST_NAME = "${DISTRO}" +EXTRA_OEMAKE += 'DIST_NAME="${DIST_NAME}" DIST_ID="${DIST_ID}"' + + +# llvm configure and compiles stuff + +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" + +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}" + +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) +# 2. compile openjdk-ecj (to have libraries as libjvm.so and libjava.so which are needed later) +# 3. compile openjdk (the final result) + +do_compilestepone() { + oe_runmake bootstrap-directory-ecj + + # now we need to override the tools.jar to point to the normal jdk's tools.jar + rm bootstrap/ecj/lib/tools.jar + ln -s ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/lib/tools.jar bootstrap/ecj/lib/tools.jar + + # First build hotspot to get a libjvm.so (to link corba in the icedtea-ecj build) + echo "1/3 Building Hotspot" + oe_runmake hotspot + + # Remove spurious libarch directory/symlink + 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} + + # 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 +} +addtask compilestepone after do_qa_configure before do_compilesteptwo + +# This part can be shared between cacao and hotspot-zero builds. +do_compilesteptwo() { + echo "2/3 Building bootstrap JDK" + + # Take pre-generated binaries from -native build + install -d generated/sun/awt/X11/generator + ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/generated/sizer.32 generated/sun/awt/X11/generator/sizer.32 + install -d openjdk/${BUILD_DIR}/gensrc/sun/awt/X11/generator + ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/generated/sizer.32 openjdk/${BUILD_DIR}/gensrc/sun/awt/X11/generator/sizer.32 + + # Now cross-compile bootstrap JDK + 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 + + # Replace all executables with symlinks to their native equivalents. + for F in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin -type f` + do + bf=`basename $F` + echo "Creating symlink for:" $bf + ln -sf $F bootstrap/icedtea/bin/$bf + done +} +addtask compilesteptwo after do_compilestepone before do_compile + +do_compile() { + + echo "3/3 Building final JDK" + + # Build the final Hotspot + OpenJDK + oe_runmake icedtea-against-icedtea \ +} + +do_install() { + install -d ${D}${libdir_jvm} + cp -R ${S}/build/openjdk/${BUILD_DIR}/j2sdk-image ${D}${JDK_HOME} + + chmod u+rw -R ${D}${JDK_HOME} + + # Fix symlink which would point into staging in the binary package. + ln -sf ${datadir_java}/rhino.jar ${D}${JDK_HOME}/jre/lib/rhino.jar + + # JRE is a subset of JDK. So to save space and resemble what the BIG distros + # do we create symlinks from the JDK binaries to their counterparts in the + # JRE folder (which have to exist by that time b/c of dependencies). + for F in `find ${D}${JDK_HOME}/jre/bin -type f` + do + bf=`basename $F` + echo "replace:" $bf + rm ${D}${JDK_HOME}/bin/$bf + ln -s ${JDK_HOME}/jre/bin/$bf ${D}${JDK_HOME}/bin/$bf + done + + 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 +# -> openjdk-6-vm-shark|openjdk-6-vm-zero|openjdk-6-vm-cacao -> openjdk-6-common +# +# With opkg the zero VM is chosen which is good b/c that is the best known (= compatible) +# runtime. Installing other runtimes side-by-side is possible. Through jvm.cfg the following +# order of precedence is enforced: zero, shark, cacao. User can chose a different runtime +# by adding '-shark' or '-cacao' to the Java command (or by deinstalling an otherwise preferred +# runtime) +# 3) All other packages, including -jdk, are optional and not needed for normal Java apps. +PACKAGES = " \ + ${JDK_PN}-jre \ + ${JDK_PN}-dbg \ + ${JDK_PN}-demo-dbg \ + ${JDK_PN}-demo \ + ${JDK_PN}-source \ + ${JDK_PN}-doc \ + ${JDK_PN}-jdk \ + ${JDK_PN}-java \ + ${JDK_PN}-vm-shark \ + ${JDK_PN}-vm-zero \ + ${JDK_PN}-vm-cacao \ + ${JDK_PN}-common \ + " + +FILES_${JDK_PN}-dbg = "\ + ${JDK_HOME}/bin/.debug \ + ${JDK_HOME}/lib/.debug \ + ${JDK_HOME}/jre/bin/.debug \ + ${JDK_HOME}/jre/lib/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/jli/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/native_threads/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/server/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/shark/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/headless/.debug \ + ${JDK_HOME}/jre/lib/${JDK_ARCH}/xawt/.debug \ + " + +FILES_${JDK_PN}-demo = "${JDK_HOME}/demo ${JDK_HOME}/sample" +RDEPENDS_${JDK_PN}-demo = "java2-runtime" +FILES_${JDK_PN}-demo-dbg = "\ + ${JDK_HOME}/demo/jvmti/gctest/lib/.debug \ + ${JDK_HOME}/demo/jvmti/heapTracker/lib/.debug \ + ${JDK_HOME}/demo/jvmti/heapViewer/lib/.debug \ + ${JDK_HOME}/demo/jvmti/hprof/lib/.debug \ + ${JDK_HOME}/demo/jvmti/minst/lib/.debug \ + ${JDK_HOME}/demo/jvmti/mtrace/lib/.debug \ + ${JDK_HOME}/demo/jvmti/versionCheck/lib/.debug \ + ${JDK_HOME}/demo/jvmti/waiters/lib/.debug \ + ${JDK_HOME}/demo/jvmti/compiledMethodLoad/lib/.debug \ + " + +FILES_${JDK_PN}-source = "${JDK_HOME}/src.zip" + +FILES_${JDK_PN}-java = "${JDK_HOME}/jre/bin/java" + +FILES_${JDK_PN}-vm-zero = "${JDK_HOME}/jre/lib/arm/server/" + +FILES_${JDK_PN}-vm-shark = "${JDK_HOME}/jre/lib/arm/shark/" + +FILES_${JDK_PN}-vm-cacao = "${JDK_HOME}/jre/lib/arm/cacao/" + +FILES_${JDK_PN}-common = "${JDK_HOME}/jre/ASSEMBLY_EXCEPTION \ + ${JDK_HOME}/jre/THIRD_PARTY_README \ + ${JDK_HOME}/jre/LICENSE \ + ${JDK_HOME}/jre/lib \ + " + +FILES_openjdk-6-jre_append = " \ + ${JDK_HOME}/jre/bin/keytool \ + ${JDK_HOME}/jre/bin/orbd \ + ${JDK_HOME}/jre/bin/pack200 \ + ${JDK_HOME}/jre/bin/rmid \ + ${JDK_HOME}/jre/bin/rmiregistry \ + ${JDK_HOME}/jre/bin/servertool \ + ${JDK_HOME}/jre/bin/tnameserv \ + ${JDK_HOME}/jre/bin/unpack200 \ + ${JDK_HOME}/jre/bin/policytool \ + ${JDK_HOME}/jre/bin/javaws \ + " + +RDEPENDS_${JDK_PN}-common = "librhino-java" + +RPROVIDES_${JDK_PN}-vm-shark = "java2-vm" +RPROVIDES_${JDK_PN}-vm-zero = "java2-vm" +RPROVIDES_${JDK_PN}-vm-cacao = "java2-vm" + +RDEPENDS_${JDK_PN}-java = "java2-vm" + +# For some reason shark and cacao do not automatically depends on -common. +# So we add that manually. +RDEPENDS_${JDK_PN}-vm-shark = "${JDK_PN}-common" +RDEPENDS_${JDK_PN}-vm-cacao = "${JDK_PN}-common" + +# There is a symlink to a .so but this one is valid. +INSANE_SKIP_${JDK_PN}-vm-shark = "1" +INSANE_SKIP_${JDK_PN}-vm-zero = "1" +INSANE_SKIP_${JDK_PN}-vm-cacao = "1" +INSANE_SKIP_${JDK_PN}-common = "1" + +FILES_${JDK_PN}-jdk = " \ + ${JDK_HOME}/bin \ + ${JDK_HOME}/lib \ + ${JDK_HOME}/include \ + " +RDEPENDS_${JDK_PN}-jre = "${JDK_PN}-java" +RPROVIDES_${JDK_PN}-jre = "java2-runtime" + +RDEPENDS_${JDK_PN}-jdk = "${JDK_PN}-jre" + +FILES_${JDK_PN}-doc = "${JDK_HOME}/man" + +pkg_postinst_${JDK_PN}-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 + fi + + sed -i -e "/\-shark.*/d" -e "s|\(^\-server*\)|\-shark KNOWN\n\1|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg +} + +pkg_prerm_${JDK_PN}-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 + fi +} + +pkg_postinst_${JDK_PN}-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 + fi +} + +pkg_prerm_${JDK_PN}-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 +} + +pkg_postinst_${JDK_PN}-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 + + sed -i -e "s|^\-server.*|\-server KNOWN|" -e "/^$/d" ${JDK_HOME}/jre/lib/arm/jvm.cfg +} + +pkg_prerm_${JDK_PN}-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 +} + +pkg_postinst_${JDK_PN}-jre () { + update-alternatives --install ${bindir}/java java ${JDK_HOME}/jre/bin/java 15 +} + +pkg_prerm_${JDK_PN}-jre () { + update-alternatives --remove java ${JDK_HOME}/jre/bin/java +} + +pkg_postinst_${JDK_PN}-jdk () { + update-alternatives --install ${bindir}/javac javac ${JDK_HOME}/bin/javac 15 +} + +pkg_prerm_${JDK_PN}-jdk () { + update-alternatives --remove javac ${JDK_HOME}/bin/javac +} |