[oe-commits] Stefan Schmidt : concierge: Add OSGi R3 implementation and service tracker
git version control
git at git.openembedded.org
Mon Jan 31 11:04:49 UTC 2011
Module: openembedded.git
Branch: master
Commit: 2d4c7b685c9f750e08491f5cc10c080483db855d
URL: http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=2d4c7b685c9f750e08491f5cc10c080483db855d
Author: Stefan Schmidt <stefan at buglabs.net>
Date: Thu Dec 2 15:37:18 2010 +0100
concierge: Add OSGi R3 implementation and service tracker
---
recipes/concierge/concierge_1.0.bb | 27 ++++++
recipes/concierge/files/fix-EE-string.patch | 13 +++
recipes/concierge/files/run-in-place.patch | 97 ++++++++++++++++++++
.../concierge/files/service-tracker-MANIFEST.MF | 5 +
recipes/concierge/service-tracker_1.0-rc3.bb | 34 +++++++
5 files changed, 176 insertions(+), 0 deletions(-)
diff --git a/recipes/concierge/concierge_1.0.bb b/recipes/concierge/concierge_1.0.bb
new file mode 100644
index 0000000..e4a99e0
--- /dev/null
+++ b/recipes/concierge/concierge_1.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "A fast, lightweight OSGi R3 framework implementation"
+LICENSE = "BSD"
+DEPENDS = "fastjar-native"
+
+SRCREV = "246"
+PV = "1.0+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "svn://concierge.svn.sourceforge.net/svnroot/concierge/tags/Concierge/1.0.0/trunk;module=framework;proto=http;localdir=framework \
+ file://fix-EE-string.patch \
+ file://run-in-place.patch;striplevel=1 \
+ "
+S = "${WORKDIR}/framework"
+
+inherit bug-java-library
+
+do_compile() {
+ mkdir -p build
+ javac -sourcepath src/main/java -d build `find src/main/java -name \*.java`
+ fastjar -0 -C build -c -f ${JARFILENAME} .
+}
+
+PACKAGE_ARCH = "all"
+# override java-library's naming conventions
+PACKAGES = "${PN}"
+
+FILES_${PN} += "${datadir_java}/${PN}.jar"
diff --git a/recipes/concierge/files/fix-EE-string.patch b/recipes/concierge/files/fix-EE-string.patch
new file mode 100644
index 0000000..9c04eb5
--- /dev/null
+++ b/recipes/concierge/files/fix-EE-string.patch
@@ -0,0 +1,13 @@
+Index: framework/src/main/java/ch/ethz/iks/concierge/framework/Framework.java
+===================================================================
+--- framework.orig/src/main/java/ch/ethz/iks/concierge/framework/Framework.java
++++ framework/src/main/java/ch/ethz/iks/concierge/framework/Framework.java
+@@ -624,7 +624,7 @@ public final class Framework {
+ case 7:
+ myEEs.append("J2SE-1.7,");
+ case 6:
+- myEEs.append("J2SE-1.6,");
++ myEEs.append("JavaSE-1.6,");
+ case 5:
+ myEEs.append("J2SE-1.5,");
+ case 4:
diff --git a/recipes/concierge/files/run-in-place.patch b/recipes/concierge/files/run-in-place.patch
new file mode 100644
index 0000000..04bb86c
--- /dev/null
+++ b/recipes/concierge/files/run-in-place.patch
@@ -0,0 +1,97 @@
+---
+ src/main/java/ch/ethz/iks/concierge/framework/BundleClassLoader.java | 11 +++++-
+ src/main/java/ch/ethz/iks/concierge/framework/Framework.java | 17 ++++++++--
+ 2 files changed, 24 insertions(+), 4 deletions(-)
+
+--- framework.orig/src/main/java/ch/ethz/iks/concierge/framework/BundleClassLoader.java
++++ framework/src/main/java/ch/ethz/iks/concierge/framework/BundleClassLoader.java
+@@ -172,13 +172,20 @@ final class BundleClassLoader extends Cl
+ this.bundle = bundle;
+ this.storageLocation = Framework.STORAGE_LOCATION + bundle.bundleID
+ + File.separatorChar + File.separatorChar;
+
+ try {
+- // write the JAR file to the storage
+ File file = new File(storageLocation, BUNDLE_FILE_NAME);
+- storeFile(file, stream);
++
++ if (Framework.RUN_IN_PLACE) {
++ file.getParentFile().mkdirs();
++ String fileLoc = bundle.location.indexOf(':') > -1 ? bundle.location.substring(bundle.location.indexOf(':') + 1) : bundle.location;
++ file = new File(fileLoc);
++ } else {
++ // write the JAR file to the storage
++ storeFile(file, stream);
++ }
+
+ // and open a JarFile
+ final JarFile jar = new JarFile(file);
+
+ // process the manifest
+--- framework.orig/src/main/java/ch/ethz/iks/concierge/framework/Framework.java
++++ framework/src/main/java/ch/ethz/iks/concierge/framework/Framework.java
+@@ -164,10 +164,15 @@ public final class Framework {
+
+ /**
+ * debug outputs from services ?
+ */
+ static boolean DEBUG_SERVICES;
++
++ /**
++ * run without copying classes to storage ?
++ */
++ static boolean RUN_IN_PLACE;
+
+ /**
+ * the profile.
+ */
+ private static String PROFILE;
+@@ -382,27 +387,34 @@ public final class Framework {
+ PROFILE = properties.getProperty("osgi.profile", "default");
+ launch();
+
+ // if profile set, try to restart the profile
+ target = -1;
++ restart = false;
+ boolean init = getProperty("osgi.init", false);
+- if (!init) {
++ if (RUN_IN_PLACE) {
++ System.out.println("Executing jars in place.");
++ }
++
++ if (!init && !RUN_IN_PLACE) {
+ time = System.currentTimeMillis();
+ target = restoreProfile();
+ restart = true;
+ }
+
+ if (target == -1) {
+- restart = false;
+ File storage = new File(STORAGE_LOCATION);
+ if (init) {
+ if (storage.exists()) {
+ System.out.println("purging storage ...");
+ deleteDirectory(storage);
+ }
++ } else if (RUN_IN_PLACE && storage.exists()) {
++ restart = true;
+ }
+
++
+ storage.mkdirs();
+
+ // TO THE ACTUAL WORK
+ time = System.currentTimeMillis();
+ properties.setProperty("osgi.auto.install.1", properties
+@@ -592,10 +604,11 @@ public final class Framework {
+ false);
+ DECOMPRESS_EMBEDDED = getProperty(
+ "ch.ethz.iks.concierge.decompressEmbedded", true);
+ SECURITY_ENABLED = getProperty(
+ "ch.ethz.iks.concierge.security.enabled", false);
++ RUN_IN_PLACE = getProperty("ch.ethz.iks.concierge.runInPlace", false);
+
+ final String ADDITIONAL_PACKAGES = properties
+ .getProperty("org.osgi.framework.system.packages");
+
+ if (ADDITIONAL_PACKAGES != null) {
diff --git a/recipes/concierge/files/service-tracker-MANIFEST.MF b/recipes/concierge/files/service-tracker-MANIFEST.MF
new file mode 100644
index 0000000..89d9891
--- /dev/null
+++ b/recipes/concierge/files/service-tracker-MANIFEST.MF
@@ -0,0 +1,5 @@
+Bundle-Name: Service Tracker
+Bundle-Description: Concierge Service Tracker
+Bundle-Vendor: Jan S. Rellermeyer, ETH Zurich
+Import-Package: org.osgi.framework;specification-version=1.2
+Export-Package: org.osgi.util.tracker;specification-version=1.2
diff --git a/recipes/concierge/service-tracker_1.0-rc3.bb b/recipes/concierge/service-tracker_1.0-rc3.bb
new file mode 100644
index 0000000..6899232
--- /dev/null
+++ b/recipes/concierge/service-tracker_1.0-rc3.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "OSGi R3 ServiceTracker classes"
+HOMEPAGE = "http://concierge.sourceforge.net"
+LICENSE = "BSD"
+DEPENDS = "fastjar-native concierge"
+
+SRCREV = "220"
+PV = "1.0+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "svn://concierge.svn.sourceforge.net/svnroot/concierge/tags/Concierge/1.0.0.RC3/;module=bundles/service_tracker;proto=http;localdir=${PN} \
+ file://files/service-tracker-MANIFEST.MF \
+"
+
+S = "${WORKDIR}/bundles/service_tracker"
+
+inherit bug-java-library
+
+do_compile() {
+ mkdir -p build
+ oe_makeclasspath cp -s ${DEPENDS} ${EXTRA_CP}
+ echo "JAVAC CLASSPATH ---------------"
+ echo $cp | awk 'BEGIN {FS=":"} {split($0,a,":"); for (i=1; i<=NF; i++) print a[i]; }'
+ echo "-------------------------"
+ javac -sourcepath src/main/java -cp $cp -d build `find src/main/java -name \*.java`
+ fastjar -m ${WORKDIR}/files/service-tracker-MANIFEST.MF -C build -c -f ${JARFILENAME} .
+ fastjar -C src/main/java -u -f ${JARFILENAME} .
+}
+
+PACKAGE_ARCH = "all"
+# override java-library's naming conventions
+PACKAGES = "${PN}"
+
+FILES_${PN} += "${datadir_java}/${PN}.jar"
+FILES_${PN} += "${datadir_java}/${P}.jar"
More information about the Openembedded-commits
mailing list