Building java VM

Да се разработи Linux/OSGi базирана разпределена сензорна система за събиране на метеорологични данни, състояща се от сензорна, сервизна и приложна части. Съставните части на системата да са гъвкаво конфигурируеми и с възможност да работят върху различни платформи. Функционалността, свързана с всеки отделен сензор да е йерархично разпределена и да може да се преконфигурира по време на работа на системата. Всеки отделен сензор или група, както и поддържаните от тях услуги да се регистрират в системата автоматично след инсталирането и пускането им в действие. Интерфейса към потребителя и персонала по поддръжката да е унифициран и достъпен чрез специализирано приложение или Интернет. Да се дефинират критерии за оценка на системата и съставните и части. Да се извърши анализ на възможни решения съобразно дефинираните критерии.

Building java VM

Postby mladen » Wed Aug 17, 2011 4:42 pm

JamVM is a new Java Virtual Machine which conforms to the JVM specification version 2 (blue book). In comparison to most other VM's (free and commercial) it is extremely small. Last available JamVM version in OpenEmbedded repository is 1.5.3, but we want to build last available version which is 1.5.4. Jamvm version is obtained at distribution level and it’s impossible to provide it at local configuration level. That’s why we will make our copy of distribution. Next few commands will copy all necessary files
Code: Select all
mkdir –p /angstrom/sources/local/conf/distro/include
cp /angstrom/sources/openembedded/conf/distro/angstrom-2008.1.conf /angstrom/sources/local/conf/distro/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-2008-preferred-versions.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-codec-engine-latest-preferred-versions.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-glibc.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-jalimo.conf /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-ldflags.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/angstrom-package-ipk.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/arm-thumb.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/glibc-internal.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/preferred-opie-versions-1.2.4.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/sane-toolchain-java.inc /angstrom/sources/local/conf/distro/include/
cp /angstrom/sources/openembedded/conf/distro/include/toolchain-internal.inc /angstrom/sources/local/conf/distro/include/

Edit file
Code: Select all
nano /angstrom/sources/local/conf/distro/include/angstrom-jalimo.conf

and change the content of file with the following
Code: Select all
# Put a 'require conf/distro/include/angstrom-jalimo.conf' in your local.conf if you want to build from the jalimo overlay

# initial stuff
PREFERRED_VERSION_jamvm-initial = "1.4.5"
PREFERRED_VERSION_classpath-initial = "0.93"

# Native VM
# Cacao native
#PREFERRED_PROVIDER_virtual/java-native ?= "cacao-native"
#SRCREV_pn-cacao-native ?= "c7bf150bfa46"
#PREFERRED_VERSION_cacao-native = "0.99.3"

# Classpath native
PREFERRED_VERSION_classpath-native = "0.98"

# JamVM native
PREFERRED_PROVIDER_virtual/java-native ?= "jamvm-native"
PREFERRED_VERSION_jamvm-native = "1.5.4"

# Native compiler settings
PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"
PREFERRED_VERSION_libecj-bootstrap = "3.6"

# Target VM
PREFERRED_VERSION_cacao = "0.99.3"
PREFERRED_VERSION_cacaoh-native = "0.99.3"

PREFERRED_VERSION_jamvm = "1.5.4"
PREFERRED_PROVIDER_swt3.4-gtk = "swt3.4-gtk"
PREFERRED_PROVIDER_classpath = "classpath"

PREFERRED_VERSION_openjdk-6-jre = "6b18-1.8.5"
PREFERRED_VERSION_icedtea6-native = "1.7.10"

# Stage JAR files not into ARCH related dirs
STAGING_DIR_JAVA = "${STAGING_DIR}/java"
STAGING_DATADIR_JAVA ?= "${STAGING_DIR_JAVA}"

We are going to copy Jamvm recipe from OpenEmbedded repository
Code: Select all
mkdir –p /angstrom/sources/local/recipes/
cp –R /angstrom/sources/openembedded/recipes/jamvm /angstrom/sources/local/recipes

Next we have to create recipe for latest JamVM version by typing
Code: Select all
nano /angstrom/sources/local/recipes/jamvm /jamvm_1.5.4.bb

and finally add the following in file
Code: Select all
require jamvm.inc

SRC_URI += "file://debian-jni.patch;striplevel=0"

PR = "r3"

do_configure_prepend() {
  # Replaces the placeholder OE_LIBDIR_JNI with the JNI library directory
  # configured in OE.
  sed -i -e "s|OE_LIBDIR_JNI|${libdir_jni}|" src/dll.c
}

SRC_URI[md5sum] = "7654e9657691f5f09c4f481ed4686176"
SRC_URI[sha256sum] = "7865693698bc4322cabe1014a4b7ebdec1bc1daf45f1a4457b6e908a4446b124"

If JamVM have to be build without GUI support, edit file
Code: Select all
nano /angstrom/sources/local/recipes/jamvm /jamvm.inc

and change the lines
Code: Select all
EXTRA_OECONF = "--with-classpath-install-dir=${prefix} --libdir=${libdir}/jamvm"
CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"

with this one
Code: Select all
EXTRA_OECONF = "--without-x --without-alsa --disable-gtk-peer --disable-gconf-peer --disable-examples --with-classpath-install-dir=${prefix} --libdir=${libdir}/jamvm"
CFLAGS += "-DDEFAULT_MAX_HEAP=8*MB"

Everything about JamVM is now configured, so you can build it by
Code: Select all
bitbake jamvm
mladen
 
Posts: 10
Joined: Tue Feb 22, 2011 5:16 pm

Return to OSGi based sensor network

Who is online

Users browsing this forum: No registered users and 4 guests