From 57e069cde6617f00ca8834a82c6f360af43d5067 Mon Sep 17 00:00:00 2001 From: Henning Heinold Date: Sat, 12 Nov 2011 20:58:34 +0100 Subject: meta-java: initial commit * taken over mostly stuff from oe classic * cleaned up recipes * added license checksums * bump icedtea6-native to 1.8.11 * use jamvm from git as native --- recipes-core/jamvm/files/java-initial | 17 ++++++ .../jamvm/jamvm-initial/jamvm-initial.patch | 63 ++++++++++++++++++++ recipes-core/jamvm/jamvm-initial/libffi.patch | 68 +++++++++++++++++++++ recipes-core/jamvm/jamvm-initial_1.4.5.bb | 47 +++++++++++++++ recipes-core/jamvm/jamvm.inc | 47 +++++++++++++++ recipes-core/jamvm/jamvm/jamvm-jni_h-noinst.patch | 13 ++++ recipes-core/jamvm/jamvm/libffi.patch | 69 ++++++++++++++++++++++ recipes-core/jamvm/jamvm_git.bb | 15 +++++ 8 files changed, 339 insertions(+) create mode 100755 recipes-core/jamvm/files/java-initial create mode 100644 recipes-core/jamvm/jamvm-initial/jamvm-initial.patch create mode 100644 recipes-core/jamvm/jamvm-initial/libffi.patch create mode 100644 recipes-core/jamvm/jamvm-initial_1.4.5.bb create mode 100644 recipes-core/jamvm/jamvm.inc create mode 100644 recipes-core/jamvm/jamvm/jamvm-jni_h-noinst.patch create mode 100644 recipes-core/jamvm/jamvm/libffi.patch create mode 100644 recipes-core/jamvm/jamvm_git.bb (limited to 'recipes-core/jamvm') diff --git a/recipes-core/jamvm/files/java-initial b/recipes-core/jamvm/files/java-initial new file mode 100755 index 0000000..1b27f81 --- /dev/null +++ b/recipes-core/jamvm/files/java-initial @@ -0,0 +1,17 @@ +#!/bin/sh +# +# Wrapper which (almost) silently restarts the VM in case of segfaults. + +error_counter=0; +error_occured=139 +while [ ${error_counter} -le 50 -a ${error_occured} -eq 139 ]; do + echo "Running JamVM-initial: ${@}" + jamvm-initial ${1+"$@"} + error_occured=$? + if [ ${error_occured} -eq 139 ]; then + echo "JamVM-initial crashed - silently trying again" + error_counter=$(( $error_counter + 1 )) + fi +done + +exit ${error_occured} diff --git a/recipes-core/jamvm/jamvm-initial/jamvm-initial.patch b/recipes-core/jamvm/jamvm-initial/jamvm-initial.patch new file mode 100644 index 0000000..fb069f8 --- /dev/null +++ b/recipes-core/jamvm/jamvm-initial/jamvm-initial.patch @@ -0,0 +1,63 @@ +Index: jamvm-1.4.5/configure.ac +=================================================================== +--- jamvm-1.4.5.orig/configure.ac ++++ jamvm-1.4.5/configure.ac +@@ -1,6 +1,6 @@ + dnl Process this file with autoconf to produce a configure script. + AC_INIT(src/jam.c) +-AM_INIT_AUTOMAKE(jamvm, 1.4.5) ++AM_INIT_AUTOMAKE(jamvm-initial, 1.4.5) + AC_CONFIG_HEADERS([src/config.h]) + AC_PREFIX_DEFAULT(/usr/local/jamvm) + +Index: jamvm-1.4.5/lib/Makefile.am +=================================================================== +--- jamvm-1.4.5.orig/lib/Makefile.am ++++ jamvm-1.4.5/lib/Makefile.am +@@ -1,4 +1,4 @@ +-@use_zip_yes@ GLIBJ_ZIP = ${with_classpath_install_dir}/share/classpath/glibj.zip ++@use_zip_yes@ GLIBJ_ZIP = ${with_classpath_install_dir}/share/classpath-initial/glibj.zip + @use_zip_no@ GLIBJ_ZIP = ${with_classpath_install_dir}/share/classpath/ + + SUBDIRS = jamvm java gnu sun +Index: jamvm-1.4.5/src/dll.c +=================================================================== +--- jamvm-1.4.5.orig/src/dll.c ++++ jamvm-1.4.5/src/dll.c +@@ -294,7 +294,7 @@ char *getDllPath() { + } + + char *getBootDllPath() { +- return CLASSPATH_INSTALL_DIR"/lib/classpath"; ++ return CLASSPATH_INSTALL_DIR"/lib/classpath-initial"; + } + + char *getDllName(char *name) { +Index: jamvm-1.4.5/src/Makefile.am +=================================================================== +--- jamvm-1.4.5.orig/src/Makefile.am ++++ jamvm-1.4.5/src/Makefile.am +@@ -2,7 +2,7 @@ SUBDIRS = os + DIST_SUBDIRS = os arch + + bin_PROGRAMS = jamvm +-include_HEADERS = jni.h ++noinst_HEADERS = jni.h + + lib_LTLIBRARIES = libjvm.la + noinst_LTLIBRARIES = libcore.la +Index: jamvm-1.4.5/src/class.c +=================================================================== +--- jamvm-1.4.5.orig/src/class.c ++++ jamvm-1.4.5/src/class.c +@@ -1653,8 +1653,8 @@ void scanDirsForJars(char *directories) + } + + #ifdef USE_ZIP +-#define JAMVM_CLASSES INSTALL_DIR"/share/jamvm/classes.zip" +-#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath/glibj.zip" ++#define JAMVM_CLASSES INSTALL_DIR"/share/jamvm-initial/classes.zip" ++#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath-initial/glibj.zip" + #else + #define JAMVM_CLASSES INSTALL_DIR"/share/jamvm/classes" + #define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath" diff --git a/recipes-core/jamvm/jamvm-initial/libffi.patch b/recipes-core/jamvm/jamvm-initial/libffi.patch new file mode 100644 index 0000000..216f03c --- /dev/null +++ b/recipes-core/jamvm/jamvm-initial/libffi.patch @@ -0,0 +1,68 @@ +Index: jamvm-1.4.5/configure.ac +=================================================================== +--- jamvm-1.4.5.orig/configure.ac 2007-02-05 04:18:05.000000000 +0100 ++++ jamvm-1.4.5/configure.ac 2011-11-25 19:34:58.473683844 +0100 +@@ -166,10 +166,25 @@ + enable_zip=no + fi]) + +-AC_CHECK_LIB(ffi,ffi_call,, +- [if test "$enable_ffi" != no; then +- AC_MSG_ERROR(cannot find libffi) +- fi]) ++LIBFFI_FOUND=no ++if test "$enable_ffi" = yes ++then ++PKG_CHECK_MODULES([LIBFFI], [libffi], [LIBFFI_FOUND=yes], [LIBFFI_FOUND=no]) ++if test "x${LIBFFI_FOUND}" = xno ++then ++ LIBFFI_FOUND= ++ AC_CHECK_HEADER([ffi.h],[LIBFFI_CFLAGS=],[LIBFFI_FOUND=no]) ++ AC_SEARCH_LIBS([ffi_call], [ffi],[LIBFFI_LIBS=-lffi],[LIBFFI_FOUND=no]) ++ if test "x${LIBFFI_FOUND}" = xno ++ then ++ AC_MSG_ERROR([Could not find libffi headers - \ ++ Instal libffi-devel or libffi-dev.]) ++ fi ++fi ++fi ++AC_SUBST(LIBFFI_CFLAGS) ++AC_SUBST(LIBFFI_LIBS) ++ + + dnl Checks for header files. + AC_HEADER_STDC +@@ -180,11 +195,6 @@ + enable_zip=no + fi]) + +-AC_CHECK_HEADER(ffi.h,, +- [if test "$enable_ffi" != no; then +- AC_MSG_ERROR(cannot find ffi.h) +- fi]) +- + if test "$enable_zip" != no; then + AC_DEFINE([USE_ZIP],1,[use zip]) + use_zip_yes= +@@ -197,7 +207,7 @@ + AC_SUBST(use_zip_yes) + AC_SUBST(use_zip_no) + +-if test "$enable_ffi" != no; then ++if test "x${LIBFFI_FOUND}" != no; then + AC_DEFINE([USE_FFI],1,[use FFI]) + fi + +Index: jamvm-1.4.5/src/Makefile.am +=================================================================== +--- jamvm-1.4.5.orig/src/Makefile.am 2006-12-25 05:10:18.000000000 +0100 ++++ jamvm-1.4.5/src/Makefile.am 2011-11-25 19:35:26.537723112 +0100 +@@ -19,6 +19,7 @@ + + jamvm_LDADD = libcore.la + libjvm_la_LIBADD = libcore.la +-libcore_la_LIBADD = os/@os@/@arch@/libnative.la os/@os@/libos.la ++libcore_la_LIBADD = os/@os@/@arch@/libnative.la os/@os@/libos.la $(LIBFFI_LIBS) ++libcore_la_CPPFLAGS = $(LIBFFI_CFLAGS) + + DISTCLEANFILES = arch.h diff --git a/recipes-core/jamvm/jamvm-initial_1.4.5.bb b/recipes-core/jamvm/jamvm-initial_1.4.5.bb new file mode 100644 index 0000000..57caa64 --- /dev/null +++ b/recipes-core/jamvm/jamvm-initial_1.4.5.bb @@ -0,0 +1,47 @@ +SUMMARY = "A compact Java Virtual Machine which conforms to the JVM specification version 2." +HOMEPAGE = "http://jamvm.sourceforge.net/" +LICENSE = "GPL" +LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3" + +DEPENDS = "zlib-native classpath-initial jikes-initial libffi-native" + +PROVIDES = "virtual/java-initial" + +S = "${WORKDIR}/jamvm-${PV}" + +SRC_URI = "${SOURCEFORGE_MIRROR}/jamvm/jamvm-${PV}.tar.gz \ + file://libffi.patch \ + file://jamvm-initial.patch \ + file://java-initial \ + " + +# This uses 32 bit arm, so force the instruction set to arm, not thumb +ARM_INSTRUCTION_SET = "arm" + +inherit native autotools + +# libdir must be modified so that jamvm-initial and -native +# do not interfere +EXTRA_OECONF = "\ + --with-classpath-install-dir=${prefix} \ + --program-suffix=-initial \ + --libdir=${STAGING_LIBDIR}/jamvm-initial \ + --enable-ffi \ + " + +# jamvm-initial has to run some binaries which need lots of memory. +CFLAGS += "-DDEFAULT_MAX_HEAP=512*MB" + +do_compile() { + oe_runmake \ + JAVAC=jikes-initial \ + GLIBJ_ZIP=${STAGING_DATADIR_NATIVE}/classpath-initial/glibj.zip +} + +do_install_append() { + install -d ${D}${bindir}/ + install -m 0755 ${WORKDIR}/java-initial ${D}${bindir}/ +} + +SRC_URI[md5sum] = "3f538bab6e1c77aed331e5e71f754f5b" +SRC_URI[sha256sum] = "f329d1c8f42c06b53a3e82763d33900b100b8e9acd7afe02f7583c51253fd6e5" diff --git a/recipes-core/jamvm/jamvm.inc b/recipes-core/jamvm/jamvm.inc new file mode 100644 index 0000000..4eab1c1 --- /dev/null +++ b/recipes-core/jamvm/jamvm.inc @@ -0,0 +1,47 @@ +DESCRIPTION = "A compact Java Virtual Machine which conforms to the JVM specification version 2." +HOMEPAGE = "http://jamvm.sourceforge.net/" +LICENSE = "GPL" +LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3" + +DEPENDS = "zlib classpath virtual/javac-native libffi" +DEPENDS_virtclass-native = "zlib-native classpath-native ecj-initial libffi-native" + +RDEPENDS_${PN} = "classpath" +RDEPENDS_${PN}_virtclass-native = "" + +PROVIDES_virtclass-native = "virtual/java-native" +RPROVIDES_${PN} = "java2-runtime" +RPROVIDES_${PN}_virtclass-native = "" + +BBCLASSEXTEND = "native" + +SRC_URI = "${SOURCEFORGE_MIRROR}/jamvm/jamvm-${PV}.tar.gz \ + file://jamvm-jni_h-noinst.patch \ + file://libffi.patch \ + " + + +inherit java autotools update-alternatives + +# This uses 32 bit arm, so force the instruction set to arm, not thumb +ARM_INSTRUCTION_SET = "arm" + + +EXTRA_OECONF = "--with-classpath-install-dir=${prefix} --libdir=${libdir}/jamvm --enable-ffi" + +# Enforce usage of ecj-initial. +EXTRA_OMAKE_virtclass-native = "JAVAC=${STAGING_BINDIR_NATIVE}/ecj-initial" + +do_install_append_virtclass-native() { + install -d ${D}${bindir} + ln -s ${bindir}/jamvm ${D}${bindir}/java +} + +PRIVATE_LIBS = "libjvm.so" + +FILES_${PN} += "${libdir}/jamvm/lib*.so" + +ALTERNATIVE_NAME = "java" +ALTERNATIVE_PATH = "${bindir}/jamvm" +ALTERNATIVE_PRIORITY = "4" + diff --git a/recipes-core/jamvm/jamvm/jamvm-jni_h-noinst.patch b/recipes-core/jamvm/jamvm/jamvm-jni_h-noinst.patch new file mode 100644 index 0000000..f0884fd --- /dev/null +++ b/recipes-core/jamvm/jamvm/jamvm-jni_h-noinst.patch @@ -0,0 +1,13 @@ +Index: jamvm-1.5.3/src/Makefile.am +=================================================================== +--- jamvm-1.5.3.orig/src/Makefile.am 2009-09-29 09:29:13.386565473 +0200 ++++ jamvm-1.5.3/src/Makefile.am 2009-09-29 09:33:47.702565852 +0200 +@@ -23,7 +23,7 @@ + DIST_SUBDIRS = os arch interp + + bin_PROGRAMS = jamvm +-include_HEADERS = jni.h ++noinst_HEADERS = jni.h + + lib_LTLIBRARIES = libjvm.la + noinst_LTLIBRARIES = libcore.la diff --git a/recipes-core/jamvm/jamvm/libffi.patch b/recipes-core/jamvm/jamvm/libffi.patch new file mode 100644 index 0000000..1f68c5e --- /dev/null +++ b/recipes-core/jamvm/jamvm/libffi.patch @@ -0,0 +1,69 @@ +Index: git/configure.ac +=================================================================== +--- git.orig/configure.ac 2011-11-18 15:47:15.339088111 +0100 ++++ git/configure.ac 2011-11-18 15:47:15.742392674 +0100 +@@ -273,9 +273,24 @@ + AC_CHECK_LIB(z,inflate,,AC_MSG_ERROR(zlib is missing)) + fi + +-if test "$enable_ffi" != no; then +- AC_CHECK_LIB(ffi,ffi_call,,AC_MSG_ERROR(libffi is missing)) ++LIBFFI_FOUND=no ++if test "$enable_ffi" = yes ++then ++PKG_CHECK_MODULES([LIBFFI], [libffi], [LIBFFI_FOUND=yes], [LIBFFI_FOUND=no]) ++if test "x${LIBFFI_FOUND}" = xno ++then ++ LIBFFI_FOUND= ++ AC_CHECK_HEADER([ffi.h],[LIBFFI_CFLAGS=],[LIBFFI_FOUND=no]) ++ AC_SEARCH_LIBS([ffi_call], [ffi],[LIBFFI_LIBS=-lffi],[LIBFFI_FOUND=no]) ++ if test "x${LIBFFI_FOUND}" = xno ++ then ++ AC_MSG_ERROR([Could not find libffi headers - \ ++ Instal libffi-devel or libffi-dev.]) ++ fi ++fi + fi ++AC_SUBST(LIBFFI_CFLAGS) ++AC_SUBST(LIBFFI_LIBS) + + dnl Checks for header files. + AC_HEADER_STDC +@@ -285,10 +300,6 @@ + AC_CHECK_HEADER(zlib.h,,AC_MSG_ERROR(zlib.h is missing)) + fi + +-if test "$enable_ffi" != no; then +- AC_CHECK_HEADER(ffi.h,,AC_MSG_ERROR(ffi.h is missing)) +-fi +- + if test "$enable_zip" != no; then + AC_DEFINE([USE_ZIP],1,[use zip]) + use_zip_yes= +@@ -302,7 +313,9 @@ + AC_SUBST(use_zip_no) + + if test "$enable_ffi" != no; then +- AC_DEFINE([USE_FFI],1,[use FFI]) ++ if test "$LIBFFI_FOUND" != no; then ++ AC_DEFINE([USE_FFI],1,[use FFI]) ++ fi + fi + + if test "$enable_md_stubs" != no; then +Index: git/src/Makefile.am +=================================================================== +--- git.orig/src/Makefile.am 2011-11-18 15:47:15.685730049 +0100 ++++ git/src/Makefile.am 2011-11-18 15:49:43.881825251 +0100 +@@ -43,8 +43,9 @@ + jamvm_LDADD = libcore.la + libjvm_la_LIBADD = libcore.la + libcore_la_LIBADD = interp/libinterp.la os/@os@/@arch@/libnative.la \ +- os/@os@/libos.la classlib/@classlib@/libclasslib.la ++ os/@os@/libos.la classlib/@classlib@/libclasslib.la \ ++ $(LIBFFI_LIBS) + +-AM_CPPFLAGS = -I$(top_srcdir)/src/interp/engine ++AM_CPPFLAGS = -I$(top_srcdir)/src/interp/engine $(LIBFFI_CFLAGS) + + DISTCLEANFILES = arch.h classlib.h classlib-defs.h classlib-symbol.h diff --git a/recipes-core/jamvm/jamvm_git.bb b/recipes-core/jamvm/jamvm_git.bb new file mode 100644 index 0000000..6d06552 --- /dev/null +++ b/recipes-core/jamvm/jamvm_git.bb @@ -0,0 +1,15 @@ +# Note: You *must* use this together with classpath-native 0.98. +# Otherwise it won't work! + +require jamvm.inc + +SRCREV = "4617da717ecb05654ea5bb9572338061106a414d" +PV = "0.0+git${SRCPV}" + +SRC_URI = "git://git.berlios.de/jamvm;protocol=git \ + file://jamvm-jni_h-noinst.patch \ + file://libffi.patch \ + " + +S = "${WORKDIR}/git" + -- cgit v1.2.3-54-g00ecf