You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by an...@apache.org on 2017/12/06 01:33:42 UTC
[4/4] mesos git commit: Moved Java build code to
`java/CMakeLists.txt`.
Moved Java build code to `java/CMakeLists.txt`.
The Java build code was slightly modified when moved:
The Protobuf version was changed from being hardcoded to using the
variable `${PROTOBUF_VERSION}` defined in
`3rdparty/cmake/Versions.cmake`.
The source file paths were updated to the new path, e.g.
`java/src/org/apache/mesos/Executor.java` ->
`src/org/apache/mesos/Executor.java`.
The `mesos-jar` target was given the dependency `mesos-protobufs`, which
is accurate but was missing.
Review: https://reviews.apache.org/r/63340
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a9943318
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a9943318
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a9943318
Branch: refs/heads/master
Commit: a9943318364e12d3d74018d8d44dd74d166ddd5d
Parents: 75ebbbe
Author: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Authored: Thu Oct 26 12:09:02 2017 -0700
Committer: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Committed: Tue Dec 5 17:32:18 2017 -0800
----------------------------------------------------------------------
src/CMakeLists.txt | 129 +------------------------------------------
src/java/CMakeLists.txt | 129 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 130 insertions(+), 128 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/a9943318/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a76ba1e..8da64e8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -105,134 +105,7 @@ endif ()
# BUILD JAVA ARTIFACTS.
#######################
if (HAS_JAVA)
- # Build the Mesos JAR.
- #
- # NOTE: We do not utilize CMake's `UseJava` module for a few reasons:
- # (1) `add_jar()` calls `javac`, but we use Maven.
- # (2) `add_jar()` does not support something like `IMPORTED`.
- # (3) `create_javah()` checks the existence of each JAR in the given class
- # path at configuration time, even though it depends on `mesos-jar` to
- # run Maven at build time. Coupled with (1) and (2) this makes it
- # impossible to use.
- set(MESOS_JAR ${CMAKE_CURRENT_BINARY_DIR}/java/target/mesos-${MESOS_PACKAGE_VERSION}.jar)
- set(PROTOBUF_JAR ${CMAKE_CURRENT_BINARY_DIR}/java/target/dependency/protobuf-java-3.5.0.jar)
-
- # This file is generated into the build tree.
- set(MESOS_JAVA_LIBRARY java/generated/org/apache/mesos/MesosNativeLibrary.java)
- configure_file(${MESOS_JAVA_LIBRARY}.in ${MESOS_JAVA_LIBRARY})
-
- set(MESOS_JAR_SRC
- java/src/org/apache/mesos/ExecutorDriver.java
- java/src/org/apache/mesos/Executor.java
- java/src/org/apache/mesos/Log.java
- java/src/org/apache/mesos/MesosExecutorDriver.java
- java/src/org/apache/mesos/MesosSchedulerDriver.java
- java/src/org/apache/mesos/SchedulerDriver.java
- java/src/org/apache/mesos/Scheduler.java
- java/src/org/apache/mesos/state/AbstractState.java
- java/src/org/apache/mesos/state/InMemoryState.java
- java/src/org/apache/mesos/state/LevelDBState.java
- java/src/org/apache/mesos/state/LogState.java
- java/src/org/apache/mesos/state/State.java
- java/src/org/apache/mesos/state/Variable.java
- java/src/org/apache/mesos/state/ZooKeeperState.java
- java/src/org/apache/mesos/v1/scheduler/V1Mesos.java
- java/src/org/apache/mesos/v1/scheduler/Mesos.java
- java/src/org/apache/mesos/v1/scheduler/Scheduler.java
- java/src/org/apache/mesos/v1/scheduler/V0Mesos.java
- ${CMAKE_CURRENT_BINARY_DIR}/${MESOS_JAVA_LIBRARY})
-
- configure_file(java/mesos.pom.in java/mesos.pom)
-
- add_custom_command(
- COMMENT "Building ${MESOS_JAR} using Maven..."
- OUTPUT ${MESOS_JAR}
- COMMAND mvn -B -f mesos.pom clean package
- DEPENDS ${MESOS_JAR_SRC} ${JAVA_PROTOBUF_SRC}
- WORKING_DIRECTORY java)
-
- add_custom_target(mesos-jar DEPENDS ${MESOS_JAR})
-
- # TODO(andschwa): Build the Example JAR.
- set(EXAMPLE_JAR_SRC
- examples/java/TestExceptionFramework.java
- examples/java/TestExecutor.java
- examples/java/TestFramework.java
- examples/java/TestLog.java
- examples/java/TestMultipleExecutorsFramework.java
- examples/java/V1TestFramework.java)
-
- set(JAVA_SRC
- java/jni/convert.cpp
- java/jni/construct.cpp
- java/jni/org_apache_mesos_Log.cpp
- java/jni/org_apache_mesos_MesosExecutorDriver.cpp
- java/jni/org_apache_mesos_MesosNativeLibrary.cpp
- java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
- java/jni/org_apache_mesos_state_AbstractState.cpp
- java/jni/org_apache_mesos_state_LevelDBState.cpp
- java/jni/org_apache_mesos_state_LogState.cpp
- java/jni/org_apache_mesos_state_Variable.cpp
- java/jni/org_apache_mesos_state_ZooKeeperState.cpp
- java/jni/org_apache_mesos_v1_scheduler_V1Mesos.cpp
- java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
- jvm/jvm.cpp
- jvm/org/apache/log4j.cpp
- jvm/org/apache/zookeeper.cpp)
-
- # These are generated and so must be included.
- set(JAVA_H
- java/jni/org_apache_mesos_Log.h
- java/jni/org_apache_mesos_MesosExecutorDriver.h
- java/jni/org_apache_mesos_MesosSchedulerDriver.h
- java/jni/org_apache_mesos_state_AbstractState.h
- java/jni/org_apache_mesos_state_LevelDBState.h
- java/jni/org_apache_mesos_state_LogState.h
- java/jni/org_apache_mesos_state_Variable.h
- java/jni/org_apache_mesos_state_ZooKeeperState.h
- java/jni/org_apache_mesos_v1_scheduler_V1Mesos.h
- java/jni/org_apache_mesos_v1_scheduler_V0Mesos.h)
-
- set(JAVA_CLASSES
- org.apache.mesos.Log
- org.apache.mesos.MesosExecutorDriver
- org.apache.mesos.MesosSchedulerDriver
- org.apache.mesos.state.AbstractState
- org.apache.mesos.state.LevelDBState
- org.apache.mesos.state.LogState
- org.apache.mesos.state.Variable
- org.apache.mesos.state.ZooKeeperState
- org.apache.mesos.v1.scheduler.V1Mesos
- org.apache.mesos.v1.scheduler.V0Mesos)
-
- # This generates the header files.
- if (WIN32)
- set(COLON ";")
- else ()
- set(COLON ":")
- endif ()
-
- add_custom_command(
- OUTPUT ${JAVA_H}
- COMMAND ${Java_JAVAH_EXECUTABLE} -d java/jni -classpath "${MESOS_JAR}${COLON}${PROTOBUF_JAR}" ${JAVA_CLASSES}
- DEPENDS mesos-jar make_bin_jni_dir)
-
- # We include the headers here to establish the dependency
- # on the above custom command.
- add_library(mesos-java ${JAVA_SRC} ${JAVA_H})
-
- target_link_libraries(
- mesos-java
- mesos-protobufs
- process
- zookeeper
- ${JNI_LIBRARIES})
-
- target_include_directories(
- mesos-java PUBLIC
- ${JNI_INCLUDE_DIRS}
- ${CMAKE_CURRENT_BINARY_DIR}/java/jni
- ${MESOS_PUBLIC_INCLUDE_DIR})
+ add_subdirectory(java)
endif ()
http://git-wip-us.apache.org/repos/asf/mesos/blob/a9943318/src/java/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt
new file mode 100644
index 0000000..29422e9
--- /dev/null
+++ b/src/java/CMakeLists.txt
@@ -0,0 +1,129 @@
+# BUILD JAVA ARTIFACTS.
+#######################
+# Build the Mesos JAR.
+#
+# NOTE: We do not utilize CMake's `UseJava` module for a few reasons:
+# (1) `add_jar()` calls `javac`, but we use Maven.
+# (2) `add_jar()` does not support something like `IMPORTED`.
+# (3) `create_javah()` checks the existence of each JAR in the given class
+# path at configuration time, even though it depends on `mesos-jar` to
+# run Maven at build time. Coupled with (1) and (2) this makes it
+# impossible to use.
+set(MESOS_JAR ${CMAKE_CURRENT_BINARY_DIR}/target/mesos-${MESOS_PACKAGE_VERSION}.jar)
+set(PROTOBUF_JAR ${CMAKE_CURRENT_BINARY_DIR}/target/dependency/protobuf-java-${PROTOBUF_VERSION}.jar)
+
+# This file is generated into the build tree.
+set(MESOS_JAVA_LIBRARY generated/org/apache/mesos/MesosNativeLibrary.java)
+configure_file(${MESOS_JAVA_LIBRARY}.in ${MESOS_JAVA_LIBRARY})
+
+set(MESOS_JAR_SRC
+ src/org/apache/mesos/ExecutorDriver.java
+ src/org/apache/mesos/Executor.java
+ src/org/apache/mesos/Log.java
+ src/org/apache/mesos/MesosExecutorDriver.java
+ src/org/apache/mesos/MesosSchedulerDriver.java
+ src/org/apache/mesos/SchedulerDriver.java
+ src/org/apache/mesos/Scheduler.java
+ src/org/apache/mesos/state/AbstractState.java
+ src/org/apache/mesos/state/InMemoryState.java
+ src/org/apache/mesos/state/LevelDBState.java
+ src/org/apache/mesos/state/LogState.java
+ src/org/apache/mesos/state/State.java
+ src/org/apache/mesos/state/Variable.java
+ src/org/apache/mesos/state/ZooKeeperState.java
+ src/org/apache/mesos/v1/scheduler/V1Mesos.java
+ src/org/apache/mesos/v1/scheduler/Mesos.java
+ src/org/apache/mesos/v1/scheduler/Scheduler.java
+ src/org/apache/mesos/v1/scheduler/V0Mesos.java
+ ${CMAKE_CURRENT_BINARY_DIR}/${MESOS_JAVA_LIBRARY})
+
+configure_file(mesos.pom.in mesos.pom)
+
+add_custom_command(
+ COMMENT "Building ${MESOS_JAR} using Maven..."
+ OUTPUT ${MESOS_JAR}
+ COMMAND mvn -B -f mesos.pom clean package
+ DEPENDS ${MESOS_JAR_SRC} ${JAVA_PROTOBUF_SRC})
+
+add_custom_target(mesos-jar DEPENDS ${MESOS_JAR} mesos-protobufs)
+
+# TODO(andschwa): Build the Example JAR.
+set(EXAMPLE_JAR_SRC
+ ../examples/java/TestExceptionFramework.java
+ ../examples/java/TestExecutor.java
+ ../examples/java/TestFramework.java
+ ../examples/java/TestLog.java
+ ../examples/java/TestMultipleExecutorsFramework.java
+ ../examples/java/V1TestFramework.java)
+
+set(JAVA_SRC
+ jni/convert.cpp
+ jni/construct.cpp
+ jni/org_apache_mesos_Log.cpp
+ jni/org_apache_mesos_MesosExecutorDriver.cpp
+ jni/org_apache_mesos_MesosNativeLibrary.cpp
+ jni/org_apache_mesos_MesosSchedulerDriver.cpp
+ jni/org_apache_mesos_state_AbstractState.cpp
+ jni/org_apache_mesos_state_LevelDBState.cpp
+ jni/org_apache_mesos_state_LogState.cpp
+ jni/org_apache_mesos_state_Variable.cpp
+ jni/org_apache_mesos_state_ZooKeeperState.cpp
+ jni/org_apache_mesos_v1_scheduler_V1Mesos.cpp
+ jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
+ ../jvm/jvm.cpp
+ ../jvm/org/apache/log4j.cpp
+ ../jvm/org/apache/zookeeper.cpp)
+
+# These are generated and so must be included.
+set(JAVA_H
+ jni/org_apache_mesos_Log.h
+ jni/org_apache_mesos_MesosExecutorDriver.h
+ jni/org_apache_mesos_MesosSchedulerDriver.h
+ jni/org_apache_mesos_state_AbstractState.h
+ jni/org_apache_mesos_state_LevelDBState.h
+ jni/org_apache_mesos_state_LogState.h
+ jni/org_apache_mesos_state_Variable.h
+ jni/org_apache_mesos_state_ZooKeeperState.h
+ jni/org_apache_mesos_v1_scheduler_V1Mesos.h
+ jni/org_apache_mesos_v1_scheduler_V0Mesos.h)
+
+set(JAVA_CLASSES
+ org.apache.mesos.Log
+ org.apache.mesos.MesosExecutorDriver
+ org.apache.mesos.MesosSchedulerDriver
+ org.apache.mesos.state.AbstractState
+ org.apache.mesos.state.LevelDBState
+ org.apache.mesos.state.LogState
+ org.apache.mesos.state.Variable
+ org.apache.mesos.state.ZooKeeperState
+ org.apache.mesos.v1.scheduler.V1Mesos
+ org.apache.mesos.v1.scheduler.V0Mesos)
+
+# This generates the header files.
+if (WIN32)
+ set(COLON ";")
+else ()
+ set(COLON ":")
+endif ()
+
+add_custom_command(
+ OUTPUT ${JAVA_H}
+ COMMAND ${Java_JAVAH_EXECUTABLE} -d jni -classpath "${MESOS_JAR}${COLON}${PROTOBUF_JAR}" ${JAVA_CLASSES}
+ DEPENDS mesos-jar make_bin_jni_dir)
+
+# We include the headers here to establish the dependency
+# on the above custom command.
+add_library(mesos-java ${JAVA_SRC} ${JAVA_H})
+
+target_link_libraries(
+ mesos-java
+ mesos-protobufs
+ process
+ zookeeper
+ ${JNI_LIBRARIES})
+
+target_include_directories(
+ mesos-java PUBLIC
+ ${JNI_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}/jni
+ ${MESOS_PUBLIC_INCLUDE_DIR})