From: Waldemar Kozaczuk <[email protected]>
Committer: Nadav Har'El <[email protected]>
Branch: master
Move java/* to modules/java* and modularize java images build process
The main goal of this patch is to move java related artifacts and build
logic from main makefile and
folder ./java to relevant existing or new modules. Other goals are
following:
- minimize modules and corresponding artifacts that are part of default
java image
- modularize runjava to accomodate either isolated or non-isolated mode
jars (non-isolated jar is 400K smaller now)
- provide managable way to build images to run java apps in isolated and
non-isolated mode without
proliferation of new modules
- remove mgmt-related artifacts from default java image and park it in new
module/java-mgtm
- make jolokia related artifacts be added to the image only if httpserver
module is included
- make all the changes backwards compatible so that the scripts that build
capstan images and other
standard ones do not need to change
Here is a list of existing or new java related modules and apps (new marked
with *):
- modules/java-base (*) - contains common C/C++ code and runjava code
- modules/java-isolated (*) - requires(java-base), provides(java-cmd);
builds isolated mode specific java.so and runjava jar
- modules/java-non-isolated - requires(java-base), provides(java-cmd);
builds non-isolated mode specific java.so and runjava jar
- modules/java-cmd (*) - requires(java-isolated); acts to provides
necessary default for the module java
- modules/java - requires(java-isolated, openjdk7)
- modules/java-tests - requires(java-base)
- modules/java-mgmt (*) - "parking place" for cloudius jar and jni so
used by obsolete mgmt app
- modules/openjdk7 (*) - requires(java-cmd), provides(java)
- modules/httpserver -
requires(josvsym,httpserver-jolokia-plugin,httpserver-jvm-plugin) if java
module included
- apps/openjdk8-fedora - requires(java-cmd), provides(java)
- apps/openjdk8-zulu-compactN - requires(java-non-isolated),
provides(java); implictly builds in non-isolated mode
- apps/openjdk9-ea-java-base - requires(java-non-isolated), provides(java)
- apps/openjdk8-zulu-compact3-with-java-beans - requires(java-cmd),
provides(java); new module that allows building minimal java image (only
2MB bigger than compact3) to run most java apps
Examples to build example java app:
scripts/build image=java-example # builds with JRE 7 in isolated mode
scripts/build image=java-non-isolated,openjdk7,java-example # builds with
JRE 7 in non-isolated mode
scripts/build image=java-non-isolated,openjdk8-fedora,java-example # builds
with JRE 8 in non-isolated mode
scripts/build image=openjdk8-zulu-compact1,java-example # builds with JRE 8
compact 1 in non-isolated mode because compact 'java' require
java-non-isolated
Signed-off-by: Waldemar Kozaczuk <[email protected]>
Message-Id: <[email protected]>
---
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,8 @@
build/
.\#*
\#*\#
-java/*/target
+modules/java-base/*/target
+modules/java-tests/*/target
.gradle
tags
@@ -24,11 +25,22 @@ tracefile
build.out
-java/runjava/dependency-reduced-pom.xml
-java/jolokia-agent/dependency-reduced-pom.xml
+modules/java-base/**/dependency-reduced-pom.xml
+modules/java-base/**/*.iml
+modules/java-base/obj/
+modules/java-tests/**/*.iml
+modules/java-tests/obj/
+modules/java-isolated/obj/
+modules/java-non-isolated/obj/
+modules/java-mgmt/cloudius/target/
+modules/java-mgmt/obj/
+modules/httpserver/usr.manifest
modules/httpserver-jolokia-plugin/autogen/
modules/httpserver-jolokia-plugin/jolokia.so
modules/httpserver-jolokia-plugin/obj/
+modules/httpserver-jolokia-plugin/jolokia-agent/target/
+modules/httpserver-jolokia-plugin/jolokia-agent/dependency-reduced-pom.xml
modules/httpserver-jvm-plugin/autogen/
modules/httpserver-jvm-plugin/jvm.so
modules/httpserver-jvm-plugin/obj/
+.idea
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -131,17 +131,7 @@ endif
quiet = $(if $V, $1, @echo " $2"; $1)
very-quiet = $(if $V, $1, @$1)
-# TODO: These java-targets shouldn't be compiled here, but rather in
modules/java/Makefile.
-# The problem is that getting the right compilation lines there is hard :-(
-ifeq ($(arch),aarch64)
-java-targets :=
-else
-java-targets := $(out)/java/jvm/java.so
$(out)/java/jvm/java_non_isolated.so \
- $(out)/java/jni/balloon.so $(out)/java/jni/elf-loader.so
$(out)/java/jni/networking.so \
- $(out)/java/jni/stty.so $(out)/java/jni/tracepoint.so
$(out)/java/jni/power.so $(out)/java/jni/monitor.so
-endif
-
-all: $(out)/loader.img $(java-targets) links
+all: $(out)/loader.img links
.PHONY: all
links:
@@ -377,10 +367,6 @@ $(out)/%.o: %.c | generated-headers
$(makedir)
$(call quiet, $(CC) $(CFLAGS) -c -o $@ $<, CC $*.c)
-$(out)/java/jvm/java_non_isolated.o: java/jvm/java.cc | generated-headers
- $(makedir)
- $(call quiet, $(CXX) $(CXXFLAGS) -DRUN_JAVA_NON_ISOLATED -o $@ -c
java/jvm/java.cc, CXX $<)
-
$(out)/%.o: %.S
$(makedir)
$(call quiet, $(CXX) $(CXXFLAGS) $(ASFLAGS) -c -o $@ $<, AS $*.s)
diff --git a/java/jolokia-agent/pom.xml b/java/jolokia-agent/pom.xml
--- a/java/jolokia-agent/pom.xml
+++ b/java/jolokia-agent/pom.xml
@@ -1,64 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>io.osv</groupId>
- <artifactId>java-parent</artifactId>
- <version>${version}</version>
- </parent>
-
- <groupId>io.osv</groupId>
- <artifactId>jolokia-agent</artifactId>
-
-
- <dependencies>
- <dependency>
- <groupId>org.jolokia</groupId>
- <artifactId>jolokia-core</artifactId>
- <version>1.2.2</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptorRefs>
-
<descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <finalName>${artifactId}</finalName>
- <appendAssemblyId>false</appendAssemblyId>
- <classifier>jar</classifier>
- </configuration>
- <executions>
- <execution>
- <id>make-jar-with-dependencies</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
-
<minimizeJar>true</minimizeJar>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
diff --git a/modules/httpserver-jolokia-plugin/Makefile
b/modules/httpserver-jolokia-plugin/Makefile
--- a/modules/httpserver-jolokia-plugin/Makefile
+++ b/modules/httpserver-jolokia-plugin/Makefile
@@ -58,6 +58,7 @@ DEPS := $(OBJ_FILES:.o=.d)
module: all
all: $(TARGET).so
+ cd jolokia-agent && mvn package -DskipTests=true
init:
@echo " MKDIRS"
@@ -90,3 +91,5 @@ clean:
$(call very-quiet, $(RM) -f usr.manifest)
$(call very-quiet, $(RM) -rf obj)
$(call very-quiet, $(RM) -rf autogen)
+ cd jolokia-agent && mvn clean
+ -rm -f dependency-reduced-pom.xml
diff --git a/modules/httpserver-jolokia-plugin/jolokia-agent/pom.xml
b/modules/httpserver-jolokia-plugin/jolokia-agent/pom.xml
--- a/modules/httpserver-jolokia-plugin/jolokia-agent/pom.xml
+++ b/modules/httpserver-jolokia-plugin/jolokia-agent/pom.xml
@@ -0,0 +1,78 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <version>1.0-SNAPSHOT</version>
+ </properties>
+
+ <groupId>io.osv</groupId>
+ <artifactId>jolokia-agent</artifactId>
+ <version>${version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.3</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jolokia</groupId>
+ <artifactId>jolokia-core</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptorRefs>
+
<descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ <finalName>${project.artifactId}</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ <classifier>jar</classifier>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-jar-with-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.3</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <minimizeJar>true</minimizeJar>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git
a/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/Dispatcher.java
b/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/Dispatcher.java
---
a/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/Dispatcher.java
+++
b/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/Dispatcher.java
null
diff --git
a/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/RequestAndResponse.java
b/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/RequestAndResponse.java
---
a/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/RequestAndResponse.java
+++
b/modules/httpserver-jolokia-plugin/jolokia-agent/src/main/java/io/osv/jolokia/RequestAndResponse.java
null
diff --git a/modules/httpserver-jolokia-plugin/module.py
b/modules/httpserver-jolokia-plugin/module.py
--- a/modules/httpserver-jolokia-plugin/module.py
+++ b/modules/httpserver-jolokia-plugin/module.py
@@ -8,4 +8,4 @@
usr_files = FileMap()
usr_files.add(os.path.join(_module, 'jolokia.so')).to('/usr/mgmt/plugins/jolokia.so')
usr_files.add(os.path.join(_module, 'api-doc/listings/jolokia.json')).to('/usr/mgmt/api/listings/jolokia.json')
-usr_files.add('${OSV_BASE}/java/jolokia-agent/target/jolokia-agent.jar').to('/usr/mgmt/jolokia-agent.jar')
+usr_files.add(os.path.join(_module,
'jolokia-agent/target/jolokia-agent.jar')).to('/usr/mgmt/jolokia-agent.jar')
diff --git a/modules/httpserver/module.py b/modules/httpserver/module.py
--- a/modules/httpserver/module.py
+++ b/modules/httpserver/module.py
@@ -17,6 +17,11 @@
api.require('libtools')
api.require('libyaml')
+# only require next 3 modules if java (jre) is included in the list of
modules
+api.require_if_other_module_present('josvsym','java')
+api.require_if_other_module_present('httpserver-jolokia-plugin','java')
+api.require_if_other_module_present('httpserver-jvm-plugin','java')
+
# httpserver will run regardless of an explicit command line
# passed with "run.py -e".
daemon = api.run_on_init(_exe + ' &!')
diff --git a/modules/java-base/Makefile b/modules/java-base/Makefile
--- a/modules/java-base/Makefile
+++ b/modules/java-base/Makefile
@@ -0,0 +1,19 @@
+include common.gmk
+
+ifeq ($(arch),aarch64)
+java-targets :=
+else
+java-targets := obj/jni/monitor.so
+endif
+
+module: all
+
+all: $(init) $(java-targets)
+
+init:
+ @echo " MKDIRS"
+ $(call very-quiet, mkdir -p obj/jni)
+.PHONY: init
+
+clean:
+ $(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-base/common.gmk b/modules/java-base/common.gmk
--- a/modules/java-base/common.gmk
+++ b/modules/java-base/common.gmk
@@ -0,0 +1,46 @@
+
+INCLUDES = -I$(src)/arch/$(arch) -I$(src) -I$(src)/include
-I$(src)/arch/common
+INCLUDES += -I$(src)/include/glibc-compat
+INCLUDES += -isystem $(src)/external/$(arch)/acpica/source/include
+INCLUDES += $(shell $(CXX) -E -xc++ - -v </dev/null 2>&1 | awk '/^End/
{exit} /^ .*c\+\+/ {print "-isystem" $$0}')
+INCLUDES += -isystem $(src)/include/api
+INCLUDES += -isystem $(src)/include/api/$(arch)
+INCLUDES += -I$(src)/build/$(mode)/gen/include -isystem
$(miscbase)/usr/include
+INCLUDES += -I$(src)/java
+INCLUDES += -I$(jdkbase)/include -I$(jdkbase)/include/linux
+
+autodepend = -MD -MT $@ -MP
+COMMON_FLAGS = -g -Wall -fPIC $(INCLUDES) -O2 $(autodepend)
-DCONF_debug_memory=0 -D_KERNEL
+CXXFLAGS = -std=c++11 $(COMMON_FLAGS)
+CFLAGS = -std=gnu99 $(COMMON_FLAGS)
+#CXXFLAGS = -g -Wall -std=c++11 -fPIC $(INCLUDES) -O2 $(autodepend)
$(configuration)
+src = $(shell readlink -f ../..)
+
+RM := /bin/rm
+
+ifndef arch
+ arch = x64
+endif
+
+ifndef mode
+ mode = release
+endif
+
+miscbase = $(src)/external/$(arch)/misc.bin
+
+configuration-defines = conf-preempt conf-debug_memory conf-logger_debug
+
+configuration = $(foreach cf,$(configuration-defines), \
+ -D$(cf:conf-%=CONF_%)=$($(cf)))
+
+quiet = $(if $V, $1, @echo " $2"; $1)
+very-quiet = $(if $V, $1, @$1)
+
+obj/%.o: %.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -c -MMD -o $@ $<, CXX $@)
+
+obj/%.o: %.c | init
+ $(call quiet, $(CC) $(CFLAGS) -c -MMD -o $@ $<, CC $@)
+
+%.so: %.o
+ $(call quiet, $(CXX) $(CXXFLAGS) -shared -o $@ $^, LINK $@)
diff --git a/modules/java-base/java.cc b/modules/java-base/java.cc
--- a/modules/java-base/java.cc
+++ b/modules/java-base/java.cc
@@ -12,11 +12,11 @@
#include <unistd.h>
#include <regex>
#include <osv/debug.hh>
-#include "jvm_balloon.hh"
+#include <java/jvm/jvm_balloon.hh>
#include <osv/mempool.hh>
-#include "java_api.hh"
+#include <java/jvm/java_api.hh>
#include "osv/version.hh"
-#include "jni_helpers.hh"
+#include <java/jvm/jni_helpers.hh>
#include <osv/defer.hh>
#include <osv/app.hh>
@@ -30,11 +30,12 @@ extern size_t jvm_heap_size;
// parameters.
#define JVM_PATH "/usr/lib/jvm/jre/lib/amd64/server/libjvm.so"
-#define RUNJAVA_JAR_PATH "/java/runjava.jar"
#if defined(RUN_JAVA_NON_ISOLATED)
+#define RUNJAVA_JAR_PATH "/java/runjava-non-isolated.jar"
#define RUNJAVA "io/osv/nonisolated/RunNonIsolatedJvmApp" //
separated by slashes, not dots
#else
+#define RUNJAVA_JAR_PATH "/java/runjava-isolated.jar"
#define RUNJAVA "io/osv/isolated/RunIsolatedJvmApp" //
separated by slashes, not dots
#endif
diff --git a/modules/java-base/jni/monitor.cc
b/modules/java-base/jni/monitor.cc
--- a/modules/java-base/jni/monitor.cc
+++ b/modules/java-base/jni/monitor.cc
null
diff --git a/modules/java-base/jni/monitor.hh
b/modules/java-base/jni/monitor.hh
--- a/modules/java-base/jni/monitor.hh
+++ b/modules/java-base/jni/monitor.hh
null
diff --git a/modules/java-base/module.py b/modules/java-base/module.py
--- a/modules/java-base/module.py
+++ b/modules/java-base/module.py
@@ -0,0 +1,5 @@
+from osv.modules import api
+
+api.require('fonts')
+api.require('ca-certificates')
+api.require('libz')
diff --git a/modules/java-base/pom.xml b/modules/java-base/pom.xml
--- a/modules/java-base/pom.xml
+++ b/modules/java-base/pom.xml
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <version>1.0-SNAPSHOT</version>
+ </properties>
+
+ <groupId>io.osv</groupId>
+ <artifactId>java-parent</artifactId>
+ <version>${version}</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>runjava-common</module>
+ <module>runjava-isolated</module>
+ <module>runjava-non-isolated</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.3</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/modules/java-base/runjava-common/pom.xml
b/modules/java-base/runjava-common/pom.xml
--- a/modules/java-base/runjava-common/pom.xml
+++ b/modules/java-base/runjava-common/pom.xml
@@ -10,10 +10,6 @@
<version>${version}</version>
</parent>
- <artifactId>cloudius</artifactId>
+ <artifactId>runjava-common</artifactId>
<packaging>jar</packaging>
-
- <build>
- <finalName>cloudius</finalName>
- </build>
</project>
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/AppThreadTerminatedWithUncaughtException.java
b/modules/java-base/runjava-common/src/main/java/io/osv/AppThreadTerminatedWithUncaughtException.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/AppThreadTerminatedWithUncaughtException.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/AppThreadTerminatedWithUncaughtException.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/GCInfo.java
b/modules/java-base/runjava-common/src/main/java/io/osv/GCInfo.java
--- a/modules/java-base/runjava-common/src/main/java/io/osv/GCInfo.java
+++ b/modules/java-base/runjava-common/src/main/java/io/osv/GCInfo.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/JavaInfo.java
b/modules/java-base/runjava-common/src/main/java/io/osv/JavaInfo.java
--- a/modules/java-base/runjava-common/src/main/java/io/osv/JavaInfo.java
+++ b/modules/java-base/runjava-common/src/main/java/io/osv/JavaInfo.java
null
diff --git a/modules/java-base/runjava-common/src/main/java/io/osv/Jvm.java
b/modules/java-base/runjava-common/src/main/java/io/osv/Jvm.java
--- a/modules/java-base/runjava-common/src/main/java/io/osv/Jvm.java
+++ b/modules/java-base/runjava-common/src/main/java/io/osv/Jvm.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/MainClassNotFoundException.java
b/modules/java-base/runjava-common/src/main/java/io/osv/MainClassNotFoundException.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/MainClassNotFoundException.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/MainClassNotFoundException.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/OSvGCMonitor.java
b/modules/java-base/runjava-common/src/main/java/io/osv/OSvGCMonitor.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/OSvGCMonitor.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/OSvGCMonitor.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/RunJvmAppHelper.java
b/modules/java-base/runjava-common/src/main/java/io/osv/RunJvmAppHelper.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/RunJvmAppHelper.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/RunJvmAppHelper.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/util/ClassDiagnostics.java
b/modules/java-base/runjava-common/src/main/java/io/osv/util/ClassDiagnostics.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/util/ClassDiagnostics.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/util/ClassDiagnostics.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/util/json/ArrayBuilder.java
b/modules/java-base/runjava-common/src/main/java/io/osv/util/json/ArrayBuilder.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/util/json/ArrayBuilder.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/util/json/ArrayBuilder.java
null
diff --git
a/modules/java-base/runjava-common/src/main/java/io/osv/util/json/JsonGenerator.java
b/modules/java-base/runjava-common/src/main/java/io/osv/util/json/JsonGenerator.java
---
a/modules/java-base/runjava-common/src/main/java/io/osv/util/json/JsonGenerator.java
+++
b/modules/java-base/runjava-common/src/main/java/io/osv/util/json/JsonGenerator.java
null
diff --git a/modules/java-base/runjava-isolated/pom.xml
b/modules/java-base/runjava-isolated/pom.xml
--- a/modules/java-base/runjava-isolated/pom.xml
+++ b/modules/java-base/runjava-isolated/pom.xml
@@ -10,11 +10,16 @@
<version>${version}</version>
</parent>
- <artifactId>runjava</artifactId>
+ <artifactId>runjava-isolated</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
+ <groupId>io.osv</groupId>
+ <artifactId>runjava-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
@@ -29,7 +34,7 @@
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
- <finalName>runjava</finalName>
+ <finalName>runjava-isolated</finalName>
<appendAssemblyId>false</appendAssemblyId>
<classifier>jar</classifier>
</configuration>
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/Context.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/Context.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/Context.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/Context.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/ContextFailedException.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/ContextFailedException.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/ContextFailedException.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/ContextFailedException.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatedJvm.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatedJvm.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatedJvm.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatedJvm.java
@@ -188,7 +188,7 @@ public Object receive() throws InterruptedException {
@Override
protected PermissionCollection getPermissions(CodeSource
codesource) {
PermissionCollection permissions =
super.getPermissions(codesource);
- permissions.add(new
FilePermission("/java/runjava.jar", "read"));
+ permissions.add(new
FilePermission("/java/runjava-isolated.jar", "read"));
permissions.add(new RuntimePermission("exitVM"));
permissions.add(new RuntimePermission("shutdownHooks"));
permissions.add(new
RuntimePermission("setContextClassLoader"));
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatingOsvSystemClassLoader.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatingOsvSystemClassLoader.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatingOsvSystemClassLoader.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/IsolatingOsvSystemClassLoader.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/MultiJarLoader.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/MultiJarLoader.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/MultiJarLoader.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/MultiJarLoader.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/RunIsolatedJvmApp.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/RunIsolatedJvmApp.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/RunIsolatedJvmApp.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/isolated/RunIsolatedJvmApp.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/DefaultLogManager.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/DefaultLogManager.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/DefaultLogManager.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/DefaultLogManager.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/IsolatingLogManager.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/IsolatingLogManager.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/IsolatingLogManager.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/IsolatingLogManager.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/LogManagerWrapper.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/LogManagerWrapper.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/LogManagerWrapper.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/jul/LogManagerWrapper.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/util/InitializationException.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/util/InitializationException.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/util/InitializationException.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/util/InitializationException.java
null
diff --git
a/modules/java-base/runjava-isolated/src/main/java/io/osv/util/LazilyInitialized.java
b/modules/java-base/runjava-isolated/src/main/java/io/osv/util/LazilyInitialized.java
---
a/modules/java-base/runjava-isolated/src/main/java/io/osv/util/LazilyInitialized.java
+++
b/modules/java-base/runjava-isolated/src/main/java/io/osv/util/LazilyInitialized.java
null
diff --git a/modules/java-base/runjava-non-isolated/pom.xml
b/modules/java-base/runjava-non-isolated/pom.xml
--- a/modules/java-base/runjava-non-isolated/pom.xml
+++ b/modules/java-base/runjava-non-isolated/pom.xml
@@ -0,0 +1,48 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>io.osv</groupId>
+ <artifactId>java-parent</artifactId>
+ <version>${version}</version>
+ </parent>
+
+ <artifactId>runjava-non-isolated</artifactId>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.osv</groupId>
+ <artifactId>runjava-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptorRefs>
+
<descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ <finalName>runjava-non-isolated</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ <classifier>jar</classifier>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-jar-with-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatedJvm.java
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatedJvm.java
---
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatedJvm.java
+++
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatedJvm.java
null
diff --git
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatingOsvSystemClassLoader.java
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatingOsvSystemClassLoader.java
---
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatingOsvSystemClassLoader.java
+++
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/NonIsolatingOsvSystemClassLoader.java
null
diff --git
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/RunNonIsolatedJvmApp.java
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/RunNonIsolatedJvmApp.java
---
a/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/RunNonIsolatedJvmApp.java
+++
b/modules/java-base/runjava-non-isolated/src/main/java/io/osv/nonisolated/RunNonIsolatedJvmApp.java
null
diff --git a/modules/java-base/usr.manifest b/modules/java-base/usr.manifest
--- a/modules/java-base/usr.manifest
+++ b/modules/java-base/usr.manifest
@@ -0,0 +1,12 @@
+#
+# Copyright (C) 2013-2014 Cloudius Systems, Ltd.
+#
+# This work is open source software, licensed under the terms of the
+# BSD license as described in the LICENSE file in the top-level directory.
+#
+
+[manifest]
+/usr/lib/&/libexpat.so.1: %(miscbase)s/usr/lib64/&
+/usr/lib/&/libjpeg.so.62: %(miscbase)s/usr/lib64/&
+/usr/lib/jni/monitor.so: ${MODULE_DIR}/obj/jni/monitor.so
+/usr/lib/libosv.so: libosv.so
diff --git a/modules/java-cmd/module.py b/modules/java-cmd/module.py
--- a/modules/java-cmd/module.py
+++ b/modules/java-cmd/module.py
@@ -0,0 +1,3 @@
+from osv.modules import api
+
+api.require('java-isolated')
diff --git a/modules/java-isolated/.java.policy
b/modules/java-isolated/.java.policy
--- a/modules/java-isolated/.java.policy
+++ b/modules/java-isolated/.java.policy
@@ -1,3 +1,3 @@
-grant codeBase "file:/java/runjava.jar" {
+grant codeBase "file:/java/runjava-isolated.jar" {
permission java.security.AllPermission;
};
diff --git a/modules/java-isolated/Makefile b/modules/java-isolated/Makefile
--- a/modules/java-isolated/Makefile
+++ b/modules/java-isolated/Makefile
@@ -0,0 +1,24 @@
+SRC = $(shell readlink -f ../..)
+
+include $(SRC)/modules/java-base/common.gmk
+
+ifeq ($(arch),aarch64)
+java-targets :=
+else
+java-targets := obj/java.so
+endif
+
+obj/java.o: $(SRC)/modules/java-base/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c
$(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+
+init:
+ @echo " MKDIRS"
+ $(call very-quiet, mkdir -p obj)
+
+module: $(java-targets)
+ cd $(SRC)/modules/java-base && mvn
--projects :runjava-common,:runjava-isolated package -DskipTests=true
+
+clean:
+ cd $(SRC)/modules/java-base && mvn clean
+ -rm -f dependency-reduced-pom.xml
+ $(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-isolated/module.py
b/modules/java-isolated/module.py
--- a/modules/java-isolated/module.py
+++ b/modules/java-isolated/module.py
@@ -0,0 +1,4 @@
+from osv.modules import api
+
+api.require('java-base')
+provides = ['java-cmd']
diff --git a/modules/java-isolated/usr.manifest
b/modules/java-isolated/usr.manifest
--- a/modules/java-isolated/usr.manifest
+++ b/modules/java-isolated/usr.manifest
@@ -0,0 +1,11 @@
+#
+# Copyright (C) 2013-2014 Cloudius Systems, Ltd.
+#
+# This work is open source software, licensed under the terms of the
+# BSD license as described in the LICENSE file in the top-level directory.
+#
+
+[manifest]
+/java.so: ${MODULE_DIR}/obj/java.so
+/java/runjava-isolated.jar:
${OSV_BASE}/modules/java-base/runjava-isolated/target/runjava-isolated.jar
+/.java.policy: ${MODULE_DIR}/.java.policy
diff --git a/modules/java-mgmt/Makefile b/modules/java-mgmt/Makefile
--- a/modules/java-mgmt/Makefile
+++ b/modules/java-mgmt/Makefile
@@ -0,0 +1,23 @@
+SRC = $(shell readlink -f ../..)
+
+include $(SRC)/modules/java-base/common.gmk
+
+ifeq ($(arch),aarch64)
+java-targets :=
+else
+java-targets := obj/jni/balloon.so obj/jni/elf-loader.so
obj/jni/networking.so \
+ obj/jni/stty.so obj/jni/tracepoint.so obj/jni/power.so
+endif
+
+module: all
+
+all: $(java-targets)
+
+init:
+ @echo " MKDIRS"
+ $(call very-quiet, mkdir -p obj)
+ $(call very-quiet, mkdir -p obj/jni)
+
+clean:
+ $(call very-quiet, $(RM) -rf obj)
+ $(call very-quiet, $(RM) -rf obj/jni)
diff --git a/modules/java-mgmt/cloudius/pom.xml
b/modules/java-mgmt/cloudius/pom.xml
--- a/modules/java-mgmt/cloudius/pom.xml
+++ b/modules/java-mgmt/cloudius/pom.xml
@@ -0,0 +1,30 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <version>1.0-SNAPSHOT</version>
+ </properties>
+
+ <groupId>io.osv</groupId>
+ <artifactId>cloudius</artifactId>
+ <version>${version}</version>
+ <packaging>jar</packaging>
+
+ <build>
+ <finalName>cloudius</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/Config.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/Config.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/Config.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/Config.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/balloon/Balloon.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/balloon/Balloon.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/balloon/Balloon.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/balloon/Balloon.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPConcurrentDownloads.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPConcurrentDownloads.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPConcurrentDownloads.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPConcurrentDownloads.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPDownloadFile.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPDownloadFile.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPDownloadFile.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPDownloadFile.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPEchoServerTest.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPEchoServerTest.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPEchoServerTest.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPEchoServerTest.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPExternalCommunication.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPExternalCommunication.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPExternalCommunication.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TCPExternalCommunication.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/Test.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/Test.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/Test.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/Test.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestELF.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestELF.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestELF.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestELF.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestRunner.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestRunner.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestRunner.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/tests/TestRunner.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/ELFLoader.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/ELFLoader.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/ELFLoader.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/ELFLoader.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Networking.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Networking.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Networking.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Networking.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Shrew.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Shrew.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Shrew.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/cli/util/Shrew.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Arp.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Arp.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Arp.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Arp.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/DHCP.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/DHCP.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/DHCP.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/DHCP.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/IFConfig.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/IFConfig.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/IFConfig.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/IFConfig.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Route.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Route.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Route.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/net/Route.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Callstack.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Callstack.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Callstack.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Callstack.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Counter.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Counter.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Counter.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Counter.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Tracepoint.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Tracepoint.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Tracepoint.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/trace/Tracepoint.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Exec.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Exec.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Exec.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Exec.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/IStty.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/IStty.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/IStty.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/IStty.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/MD5.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/MD5.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/MD5.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/MD5.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Power.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Power.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Power.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Power.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/PrintClassPath.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/PrintClassPath.java
---
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/PrintClassPath.java
+++
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/PrintClassPath.java
null
diff --git
a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Stty.java
b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Stty.java
--- a/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Stty.java
+++ b/modules/java-mgmt/cloudius/src/main/java/com/cloudius/util/Stty.java
null
diff --git a/modules/java-mgmt/jni/balloon.c
b/modules/java-mgmt/jni/balloon.c
--- a/modules/java-mgmt/jni/balloon.c
+++ b/modules/java-mgmt/jni/balloon.c
null
diff --git a/modules/java-mgmt/jni/elf-loader.cc
b/modules/java-mgmt/jni/elf-loader.cc
--- a/modules/java-mgmt/jni/elf-loader.cc
+++ b/modules/java-mgmt/jni/elf-loader.cc
null
diff --git a/modules/java-mgmt/jni/networking.cc
b/modules/java-mgmt/jni/networking.cc
--- a/modules/java-mgmt/jni/networking.cc
+++ b/modules/java-mgmt/jni/networking.cc
null
diff --git a/modules/java-mgmt/jni/power.cc b/modules/java-mgmt/jni/power.cc
--- a/modules/java-mgmt/jni/power.cc
+++ b/modules/java-mgmt/jni/power.cc
null
diff --git a/modules/java-mgmt/jni/stty.c b/modules/java-mgmt/jni/stty.c
--- a/modules/java-mgmt/jni/stty.c
+++ b/modules/java-mgmt/jni/stty.c
null
diff --git a/modules/java-mgmt/jni/tracepoint.cc
b/modules/java-mgmt/jni/tracepoint.cc
--- a/modules/java-mgmt/jni/tracepoint.cc
+++ b/modules/java-mgmt/jni/tracepoint.cc
null
diff --git a/modules/java-mgmt/jni/tracepoint.hh
b/modules/java-mgmt/jni/tracepoint.hh
--- a/modules/java-mgmt/jni/tracepoint.hh
+++ b/modules/java-mgmt/jni/tracepoint.hh
null
diff --git a/modules/java-mgmt/usr.manifest b/modules/java-mgmt/usr.manifest
--- a/modules/java-mgmt/usr.manifest
+++ b/modules/java-mgmt/usr.manifest
@@ -0,0 +1,8 @@
+[manifest]
+/usr/lib/jni/balloon.so: ${MODULE_DIR}/obj/jni/balloon.so
+/usr/lib/jni/elf-loader.so: ${MODULE_DIR}/obj/jni/elf-loader.so
+/usr/lib/jni/networking.so: ${MODULE_DIR}/obj/jni/networking.so
+/usr/lib/jni/stty.so: ${MODULE_DIR}/obj/jni/stty.so
+/usr/lib/jni/tracepoint.so: ${MODULE_DIR}/obj/jni/stty.so
+/usr/lib/jni/power.so: ${MODULE_DIR}/obj/jni/power.so
+/java/cloudius.jar: ${MODULE_DIR}/cloudius/target/cloudius.jar
diff --git a/modules/java-non-isolated/.java.policy
b/modules/java-non-isolated/.java.policy
--- a/modules/java-non-isolated/.java.policy
+++ b/modules/java-non-isolated/.java.policy
@@ -1,3 +1,3 @@
-grant codeBase "file:/java/runjava.jar" {
+grant codeBase "file:/java/runjava-non-isolated.jar" {
permission java.security.AllPermission;
};
diff --git a/modules/java-non-isolated/Makefile
b/modules/java-non-isolated/Makefile
--- a/modules/java-non-isolated/Makefile
+++ b/modules/java-non-isolated/Makefile
@@ -1,10 +1,24 @@
-# TODO: need to move compilation of $(java-targets) from the main makefile
-# to here. Unfortunately, compiling with OSv header files is a big mess,
-# and much easier to do it in the main OSv makefile :-(
SRC = $(shell readlink -f ../..)
-module:
- cd $(SRC)/java && mvn package -DskipTests=true
+
+include $(SRC)/modules/java-base/common.gmk
+
+ifeq ($(arch),aarch64)
+java-targets :=
+else
+java-targets := obj/java_non_isolated.so
+endif
+
+obj/java_non_isolated.o: $(SRC)/modules/java-base/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -DRUN_JAVA_NON_ISOLATED -o $@ -c
$(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+
+init:
+ @echo " MKDIRS"
+ $(call very-quiet, mkdir -p obj)
+
+module: $(java-targets)
+ cd $(SRC)/modules/java-base && mvn
--projects :runjava-common,:runjava-non-isolated package -DskipTests=true
clean:
- cd $(SRC)/java && mvn clean
+ cd $(SRC)/modules/java-base && mvn clean
-rm -f dependency-reduced-pom.xml
+ $(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-non-isolated/module.py
b/modules/java-non-isolated/module.py
--- a/modules/java-non-isolated/module.py
+++ b/modules/java-non-isolated/module.py
@@ -1,28 +1,5 @@
-from osv.modules.filemap import FileMap
from osv.modules import api
-import os, os.path
-usr_files = FileMap()
-
-provides = ['java']
-
-non_isolated_jvm = True
-
-api.require('fonts')
-api.require('ca-certificates')
-api.require('libz')
-api.require('josvsym')
-api.require('httpserver-jolokia-plugin')
-api.require('httpserver-jvm-plugin')
-
-jdkdir = os.path.basename(os.path.expandvars('${jdkbase}'))
-
-usr_files.add('${jdkbase}').to('/usr/lib/jvm/java') \
- .include('lib/**') \
- .include('jre/**') \
- .exclude('jre/lib/security/cacerts') \
- .exclude('jre/lib/audio/**')
-
-usr_files.link('/usr/lib/jvm/' + jdkdir).to('java')
-usr_files.link('/usr/lib/jvm/jre').to('java/jre')
-usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts')
+java_base = api.require('java-base')
+java_base.non_isolated_jvm = True
+provides = ['java-cmd']
diff --git a/modules/java-non-isolated/usr.manifest
b/modules/java-non-isolated/usr.manifest
--- a/modules/java-non-isolated/usr.manifest
+++ b/modules/java-non-isolated/usr.manifest
@@ -6,17 +6,6 @@
#
[manifest]
-/usr/lib/&/libexpat.so.1: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libjpeg.so.62: %(miscbase)s/usr/lib64/&
-/usr/lib/jni/balloon.so: java/jni/balloon.so
-/usr/lib/jni/monitor.so: java/jni/monitor.so
-/usr/lib/&/jni/elf-loader.so: java/&
-/usr/lib/&/jni/networking.so: java/&
-/usr/lib/&/jni/stty.so: java/&
-/usr/lib/&/jni/tracepoint.so: java/&
-/usr/lib/&/jni/power.so: java/&
-/java.so: java/jvm/java_non_isolated.so
-/usr/lib/libosv.so: libosv.so
-/java/runjava.jar: ${OSV_BASE}/java/runjava/target/runjava.jar
-/java/cloudius.jar: ${OSV_BASE}/java/cloudius/target/cloudius.jar
-/.java.policy: ${OSV_BASE}/modules/java/.java.policy
+/java.so: ${MODULE_DIR}/obj/java_non_isolated.so
+/java/runjava-non-isolated.jar:
${OSV_BASE}/modules/java-base/runjava-non-isolated/target/runjava-non-isolated.jar
+/.java.policy: ${MODULE_DIR}/.java.policy
diff --git a/modules/java-tests/.java.policy
b/modules/java-tests/.java.policy
--- a/modules/java-tests/.java.policy
+++ b/modules/java-tests/.java.policy
@@ -0,0 +1,6 @@
+grant codeBase "file:/java/runjava-non-isolated.jar" {
+ permission java.security.AllPermission;
+};
+grant codeBase "file:/java/runjava-isolated.jar" {
+ permission java.security.AllPermission;
+};
\ No newline at end of file
diff --git a/modules/java-tests/Makefile b/modules/java-tests/Makefile
--- a/modules/java-tests/Makefile
+++ b/modules/java-tests/Makefile
@@ -0,0 +1,26 @@
+SRC = $(shell readlink -f ../..)
+include $(SRC)/modules/java-base/common.gmk
+
+ifeq ($(arch),aarch64)
+java-targets :=
+else
+java-targets := obj/java.so obj/java_non_isolated.so
+endif
+
+obj/java.o: $(SRC)/modules/java-base/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c
$(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+
+obj/java_non_isolated.o: $(SRC)/modules/java-base/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -DRUN_JAVA_NON_ISOLATED -o $@ -c
$(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+
+init:
+ @echo " MKDIRS"
+ $(call very-quiet, mkdir -p obj)
+
+module: $(java-targets)
+ cd $(SRC)/modules/java-tests && mvn package -DskipTests=true
+
+clean:
+ cd $(SRC)/modules/java-tests && mvn clean
+ -rm -f dependency-reduced-pom.xml
+ $(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-tests/module.py b/modules/java-tests/module.py
--- a/modules/java-tests/module.py
+++ b/modules/java-tests/module.py
@@ -1,19 +1,29 @@
from osv.modules import api
from osv.modules.filemap import FileMap
+import os, os.path
-api.require('java')
+api.require('java-base')
+
+usr_files = FileMap()
+jdkdir = os.path.basename(os.path.expandvars('${jdkbase}'))
+
+usr_files.add('${jdkbase}').to('/usr/lib/jvm/java') \
+ .include('lib/**') \
+ .include('jre/**') \
+ .exclude('jre/lib/security/cacerts') \
+ .exclude('jre/lib/audio/**')
+
+usr_files.link('/usr/lib/jvm/' + jdkdir).to('java')
+usr_files.link('/usr/lib/jvm/jre').to('java/jre')
+usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts')
_jar = '/tests/java/tests.jar'
_isolates_jar = '/tests/java/isolates.jar'
-usr_files = FileMap()
-usr_files.add('${OSV_BASE}/java/tests/target/runjava-tests.jar').to(_jar)
-usr_files.add('${OSV_BASE}/java/tests-isolates/target/tests-isolates-jar-with-dependencies.jar').to(_isolates_jar)
+usr_files.add('${OSV_BASE}/modules/java-tests/tests/target/runjava-tests.jar').to(_jar)
+usr_files.add('${OSV_BASE}/modules/java-tests/tests-isolates/target/tests-isolates-jar-with-dependencies.jar').to(_isolates_jar)
-usr_files.add('${OSV_BASE}/java/tests/target/classes/tests/ClassPutInRoot.class').to('/tests/ClassPutInRoot.class')
+usr_files.add('${OSV_BASE}/modules/java-tests/tests/target/classes/tests/ClassPutInRoot.class').to('/tests/ClassPutInRoot.class')
-usr_files.add('${OSV_BASE}/java/tests-jre-extension/target/tests-jre-extension.jar')
\
+usr_files.add('${OSV_BASE}/modules/java-tests/tests-jre-extension/target/tests-jre-extension.jar')
\
.to('/usr/lib/jvm/java/jre/lib/ext/tests-jre-extension.jar')
-
-default = api.run_java(classpath=[_jar, _isolates_jar],
- args=['-Disolates.jar=' +
_isolates_jar, 'org.junit.runner.JUnitCore', 'io.osv.AllTests'])
diff --git a/modules/java-tests/pom.xml b/modules/java-tests/pom.xml
--- a/modules/java-tests/pom.xml
+++ b/modules/java-tests/pom.xml
@@ -9,17 +9,17 @@
</properties>
<groupId>io.osv</groupId>
- <artifactId>java-parent</artifactId>
+ <artifactId>java-tests-parent</artifactId>
<version>${version}</version>
<packaging>pom</packaging>
<modules>
- <module>cloudius</module>
- <module>runjava</module>
+ <module>../java-base/runjava-common</module>
+ <module>../java-base/runjava-non-isolated</module>
+ <module>../java-base/runjava-isolated</module>
<module>tests</module>
<module>tests-isolates</module>
<module>tests-jre-extension</module>
- <module>jolokia-agent</module>
</modules>
<dependencies>
diff --git a/modules/java-tests/tests-isolates/pom.xml
b/modules/java-tests/tests-isolates/pom.xml
--- a/modules/java-tests/tests-isolates/pom.xml
+++ b/modules/java-tests/tests-isolates/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>io.osv</groupId>
- <artifactId>java-parent</artifactId>
+ <artifactId>java-tests-parent</artifactId>
<version>${version}</version>
</parent>
@@ -16,7 +16,14 @@
<dependencies>
<dependency>
<groupId>io.osv</groupId>
- <artifactId>runjava</artifactId>
+ <artifactId>runjava-isolated</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.osv</groupId>
+ <artifactId>runjava-non-isolated</artifactId>
+ <version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/ClassFinder.java
b/modules/java-tests/tests-isolates/src/main/java/tests/ClassFinder.java
--- a/modules/java-tests/tests-isolates/src/main/java/tests/ClassFinder.java
+++ b/modules/java-tests/tests-isolates/src/main/java/tests/ClassFinder.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/ClassPresentInBothContexts.java
b/modules/java-tests/tests-isolates/src/main/java/tests/ClassPresentInBothContexts.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/ClassPresentInBothContexts.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/ClassPresentInBothContexts.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/FieldTester.java
b/modules/java-tests/tests-isolates/src/main/java/tests/FieldTester.java
--- a/modules/java-tests/tests-isolates/src/main/java/tests/FieldTester.java
+++ b/modules/java-tests/tests-isolates/src/main/java/tests/FieldTester.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/LoggingProcess.java
b/modules/java-tests/tests-isolates/src/main/java/tests/LoggingProcess.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/LoggingProcess.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/LoggingProcess.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/NonIsolatedLoggingProcess.java
b/modules/java-tests/tests-isolates/src/main/java/tests/NonIsolatedLoggingProcess.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/NonIsolatedLoggingProcess.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/NonIsolatedLoggingProcess.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/PropertyReader.java
b/modules/java-tests/tests-isolates/src/main/java/tests/PropertyReader.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/PropertyReader.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/PropertyReader.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/PropertySetter.java
b/modules/java-tests/tests-isolates/src/main/java/tests/PropertySetter.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/PropertySetter.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/PropertySetter.java
null
diff --git
a/modules/java-tests/tests-isolates/src/main/java/tests/StaticFieldSetter.java
b/modules/java-tests/tests-isolates/src/main/java/tests/StaticFieldSetter.java
---
a/modules/java-tests/tests-isolates/src/main/java/tests/StaticFieldSetter.java
+++
b/modules/java-tests/tests-isolates/src/main/java/tests/StaticFieldSetter.java
null
diff --git a/modules/java-tests/tests-jre-extension/pom.xml
b/modules/java-tests/tests-jre-extension/pom.xml
--- a/modules/java-tests/tests-jre-extension/pom.xml
+++ b/modules/java-tests/tests-jre-extension/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>io.osv</groupId>
- <artifactId>java-parent</artifactId>
+ <artifactId>java-tests-parent</artifactId>
<version>${version}</version>
</parent>
diff --git
a/modules/java-tests/tests-jre-extension/src/main/java/tests/SomeExtensionClass.java
b/modules/java-tests/tests-jre-extension/src/main/java/tests/SomeExtensionClass.java
---
a/modules/java-tests/tests-jre-extension/src/main/java/tests/SomeExtensionClass.java
+++
b/modules/java-tests/tests-jre-extension/src/main/java/tests/SomeExtensionClass.java
null
diff --git a/modules/java-tests/tests/pom.xml
b/modules/java-tests/tests/pom.xml
--- a/modules/java-tests/tests/pom.xml
+++ b/modules/java-tests/tests/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>io.osv</groupId>
- <artifactId>java-parent</artifactId>
+ <artifactId>java-tests-parent</artifactId>
<version>${version}</version>
</parent>
@@ -28,7 +28,14 @@
</dependency>
<dependency>
<groupId>io.osv</groupId>
- <artifactId>runjava</artifactId>
+ <artifactId>runjava-isolated</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.osv</groupId>
+ <artifactId>runjava-non-isolated</artifactId>
+ <version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestIsolatedApp.java
b/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestIsolatedApp.java
---
a/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestIsolatedApp.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestIsolatedApp.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestNonIsolatedApp.java
b/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestNonIsolatedApp.java
---
a/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestNonIsolatedApp.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/AllTestsThatTestNonIsolatedApp.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderIsolationTest.java
b/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderIsolationTest.java
---
a/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderIsolationTest.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderIsolationTest.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderWithoutIsolationTest.java
b/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderWithoutIsolationTest.java
---
a/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderWithoutIsolationTest.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/ClassLoaderWithoutIsolationTest.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/LoggingIsolationTest.java
b/modules/java-tests/tests/src/main/java/io/osv/LoggingIsolationTest.java
---
a/modules/java-tests/tests/src/main/java/io/osv/LoggingIsolationTest.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/LoggingIsolationTest.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/LoggingWithoutIsolationTest.java
b/modules/java-tests/tests/src/main/java/io/osv/LoggingWithoutIsolationTest.java
---
a/modules/java-tests/tests/src/main/java/io/osv/LoggingWithoutIsolationTest.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/LoggingWithoutIsolationTest.java
null
diff --git a/modules/java-tests/tests/src/main/java/io/osv/OsvApiTest.java
b/modules/java-tests/tests/src/main/java/io/osv/OsvApiTest.java
--- a/modules/java-tests/tests/src/main/java/io/osv/OsvApiTest.java
+++ b/modules/java-tests/tests/src/main/java/io/osv/OsvApiTest.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/PropertyIsolationTest.java
b/modules/java-tests/tests/src/main/java/io/osv/PropertyIsolationTest.java
---
a/modules/java-tests/tests/src/main/java/io/osv/PropertyIsolationTest.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/PropertyIsolationTest.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/TemporarySecurityManager.java
b/modules/java-tests/tests/src/main/java/io/osv/TemporarySecurityManager.java
---
a/modules/java-tests/tests/src/main/java/io/osv/TemporarySecurityManager.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/TemporarySecurityManager.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/TestDomainPermissions.java
b/modules/java-tests/tests/src/main/java/io/osv/TestDomainPermissions.java
---
a/modules/java-tests/tests/src/main/java/io/osv/TestDomainPermissions.java
+++
b/modules/java-tests/tests/src/main/java/io/osv/TestDomainPermissions.java
null
diff --git
a/modules/java-tests/tests/src/main/java/io/osv/TestLaunching.java
b/modules/java-tests/tests/src/main/java/io/osv/TestLaunching.java
--- a/modules/java-tests/tests/src/main/java/io/osv/TestLaunching.java
+++ b/modules/java-tests/tests/src/main/java/io/osv/TestLaunching.java
null
diff --git
a/modules/java-tests/tests/src/main/java/tests/ClassPresentInBothContexts.java
b/modules/java-tests/tests/src/main/java/tests/ClassPresentInBothContexts.java
---
a/modules/java-tests/tests/src/main/java/tests/ClassPresentInBothContexts.java
+++
b/modules/java-tests/tests/src/main/java/tests/ClassPresentInBothContexts.java
null
diff --git
a/modules/java-tests/tests/src/main/java/tests/ClassPresentOnlyInParentContext.java
b/modules/java-tests/tests/src/main/java/tests/ClassPresentOnlyInParentContext.java
---
a/modules/java-tests/tests/src/main/java/tests/ClassPresentOnlyInParentContext.java
+++
b/modules/java-tests/tests/src/main/java/tests/ClassPresentOnlyInParentContext.java
null
diff --git
a/modules/java-tests/tests/src/main/java/tests/ClassPutInRoot.java
b/modules/java-tests/tests/src/main/java/tests/ClassPutInRoot.java
--- a/modules/java-tests/tests/src/main/java/tests/ClassPutInRoot.java
+++ b/modules/java-tests/tests/src/main/java/tests/ClassPutInRoot.java
null
diff --git a/modules/java-tests/usr.manifest
b/modules/java-tests/usr.manifest
--- a/modules/java-tests/usr.manifest
+++ b/modules/java-tests/usr.manifest
@@ -6,4 +6,8 @@
#
[manifest]
-/java_non_isolated.so: java/jvm/java_non_isolated.so
+/java.so: ${OSV_BASE}/modules/java-tests/obj/java.so
+/java/runjava-isolated.jar:
${OSV_BASE}/modules/java-base/runjava-isolated/target/runjava-isolated.jar
+/java_non_isolated.so:
${OSV_BASE}/modules/java-tests/obj/java_non_isolated.so
+/java/runjava-non-isolated.jar:
${OSV_BASE}/modules/java-base/runjava-non-isolated/target/runjava-non-isolated.jar
+/.java.policy: ${OSV_BASE}/modules/java-tests/.java.policy
diff --git a/modules/java/Makefile b/modules/java/Makefile
--- a/modules/java/Makefile
+++ b/modules/java/Makefile
@@ -1,10 +0,0 @@
-# TODO: need to move compilation of $(java-targets) from the main makefile
-# to here. Unfortunately, compiling with OSv header files is a big mess,
-# and much easier to do it in the main OSv makefile :-(
-SRC = $(shell readlink -f ../..)
-module:
- cd $(SRC)/java && mvn package -DskipTests=true
-
-clean:
- cd $(SRC)/java && mvn clean
- -rm -f dependency-reduced-pom.xml
diff --git a/modules/java/module.py b/modules/java/module.py
--- a/modules/java/module.py
+++ b/modules/java/module.py
@@ -1,24 +1,4 @@
-from osv.modules.filemap import FileMap
from osv.modules import api
-import os, os.path
-usr_files = FileMap()
-
-api.require('fonts')
-api.require('ca-certificates')
-api.require('libz')
-api.require('josvsym')
-api.require('httpserver-jolokia-plugin')
-api.require('httpserver-jvm-plugin')
-
-jdkdir = os.path.basename(os.path.expandvars('${jdkbase}'))
-
-usr_files.add('${jdkbase}').to('/usr/lib/jvm/java') \
- .include('lib/**') \
- .include('jre/**') \
- .exclude('jre/lib/security/cacerts') \
- .exclude('jre/lib/audio/**')
-
-usr_files.link('/usr/lib/jvm/' + jdkdir).to('java')
-usr_files.link('/usr/lib/jvm/jre').to('java/jre')
-usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts')
+api.require('java-isolated')
+api.require('openjdk7')
diff --git a/modules/java/usr.manifest b/modules/java/usr.manifest
--- a/modules/java/usr.manifest
+++ b/modules/java/usr.manifest
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2013-2014 Cloudius Systems, Ltd.
-#
-# This work is open source software, licensed under the terms of the
-# BSD license as described in the LICENSE file in the top-level directory.
-#
-
-[manifest]
-/usr/lib/&/libexpat.so.1: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libjpeg.so.62: %(miscbase)s/usr/lib64/&
-/usr/lib/jni/balloon.so: java/jni/balloon.so
-/usr/lib/jni/monitor.so: java/jni/monitor.so
-/usr/lib/&/jni/elf-loader.so: java/&
-/usr/lib/&/jni/networking.so: java/&
-/usr/lib/&/jni/stty.so: java/&
-/usr/lib/&/jni/tracepoint.so: java/&
-/usr/lib/&/jni/power.so: java/&
-/java.so: java/jvm/java.so
-/usr/lib/libosv.so: libosv.so
-/java/runjava.jar: ${OSV_BASE}/java/runjava/target/runjava.jar
-/java/cloudius.jar: ${OSV_BASE}/java/cloudius/target/cloudius.jar
-/.java.policy: ${OSV_BASE}/modules/java/.java.policy
diff --git a/modules/openjdk7/module.py b/modules/openjdk7/module.py
--- a/modules/openjdk7/module.py
+++ b/modules/openjdk7/module.py
@@ -0,0 +1,20 @@
+from osv.modules.filemap import FileMap
+from osv.modules import api
+import os, os.path
+
+api.require('java-cmd')
+provides = ['java']
+
+usr_files = FileMap()
+
+jdkdir = os.path.basename(os.path.expandvars('${jdkbase}'))
+
+usr_files.add('${jdkbase}').to('/usr/lib/jvm/java') \
+ .include('lib/**') \
+ .include('jre/**') \
+ .exclude('jre/lib/security/cacerts') \
+ .exclude('jre/lib/audio/**')
+
+usr_files.link('/usr/lib/jvm/' + jdkdir).to('java')
+usr_files.link('/usr/lib/jvm/jre').to('java/jre')
+usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts')
diff --git a/scripts/module.py b/scripts/module.py
--- a/scripts/module.py
+++ b/scripts/module.py
@@ -132,7 +132,7 @@ def flatten_list(elememnts):
def get_basic_apps(apps):
basic_apps = []
- java = resolve.require('java')
+ java = resolve.require('java-base')
if hasattr(java,'non_isolated_jvm') and java.non_isolated_jvm:
_jvm = non_isolated_jvm()
else:
@@ -203,6 +203,9 @@ def build(args):
else:
api.require_running(name)
+ # Add moduless thare are implictly required if others are present
+ resolve.resolve_required_modules_if_other_is_present()
+
modules = resolve.get_required_modules()
modules_to_run = resolve.get_modules_to_run()
diff --git a/scripts/osv/modules/api.py b/scripts/osv/modules/api.py
--- a/scripts/osv/modules/api.py
+++ b/scripts/osv/modules/api.py
@@ -3,6 +3,7 @@
require = resolve.require
require_running = resolve.require_running
+require_if_other_module_present = resolve.require_if_other_module_present
class basic_app:
def prepare_manifest(self, build_dir, manifest_type, manifest):
diff --git a/scripts/osv/modules/resolve.py b/scripts/osv/modules/resolve.py
--- a/scripts/osv/modules/resolve.py
+++ b/scripts/osv/modules/resolve.py
@@ -7,6 +7,7 @@
_modules = collections.OrderedDict()
_loading_modules = list()
_modules_to_run = dict()
+_modules_to_be_added_if_other_module_present = dict()
class Module(object):
def __init__(self, name, config, properties):
@@ -117,6 +118,27 @@ def fetch_module(module_config, target_dir):
if returncode:
raise Exception("Command failed with exit code: %d" % returncode)
+def require_if_other_module_present(module_name,other_module_name):
+ list_of_modules =
_modules_to_be_added_if_other_module_present.get(other_module_name,None)
+ if(list_of_modules):
+ list_of_modules.append(module_name)
+ else:
+ _modules_to_be_added_if_other_module_present[other_module_name] =
[module_name]
+
+def resolve_required_modules_if_other_is_present():
+ required_module_names = set()
+ for module_name in _modules_to_be_added_if_other_module_present.keys():
+ # If module is present then add modules that should be required
implictly
+ if( _modules.get(module_name)):
+ modules_to_be_added =
_modules_to_be_added_if_other_module_present[module_name]
+ for required_module_name in modules_to_be_added:
+ if(not _modules.get(required_module_name)): # If required
module is not in the list already
+ print("Adding module '%s' because module '%s' is
present" % (required_module_name, module_name))
+ required_module_names.add(required_module_name)
+
+ for required_module_name in required_module_names:
+ require(required_module_name)
+
def require(module_name):
if module_name in _loading_modules:
raise Exception("Recursive loading of '%s' module" % module_name)
@@ -152,7 +174,10 @@ def require(module_name):
_modules[module_name] = module
if hasattr(module, 'provides'):
for name in getattr(module, 'provides'):
- _modules[name] = module
+ if(_modules.get(name)):
+ raise Exception("There is more than one module included
that provides: '%s'" % name )
+ else:
+ _modules[name] = module
return module
def require_running(module_name, run_config='*'):
--
You received this message because you are subscribed to the Google Groups "OSv
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.